!function (e) {
    var t = {};

    function n(i) {
        if (t[i]) return t[i].exports;
        var r = t[i] = {i: i, l: !1, exports: {}};
        return e[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports
    }

    n.m = e, n.c = t, n.d = function (e, t, i) {
        n.o(e, t) || Object.defineProperty(e, t, {enumerable: !0, get: i})
    }, n.r = function (e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})
    }, n.t = function (e, t) {
        if (1 & t && (e = n(e)), 8 & t) return e;
        if (4 & t && "object" == typeof e && e && e.__esModule) return e;
        var i = Object.create(null);
        if (n.r(i), Object.defineProperty(i, "default", {
            enumerable: !0,
            value: e
        }), 2 & t && "string" != typeof e) for (var r in e) n.d(i, r, function (t) {
            return e[t]
        }.bind(null, r));
        return i
    }, n.n = function (e) {
        var t = e && e.__esModule ? function () {
            return e.default
        } : function () {
            return e
        };
        return n.d(t, "a", t), t
    }, n.o = function (e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }, n.p = "", n(n.s = 568)
}([function (e, t, n) {
    "use strict";

    function i(e) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return r(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return r(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function r(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function o(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function a(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    n.d(t, "a", (function () {
        return s
    })), n.d(t, "b", (function () {
        return l
    }));
    var s = function () {
        function e(t) {
            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
            o(this, e), "string" == typeof t ? (this.el = document.createElement(t), this.el.className = n) : this.el = t, this.data = {}
        }

        var t, n, r;
        return t = e, (n = [{
            key: "data", value: function (e, t) {
                return void 0 !== t ? (this.data[e] = t, this) : this.data[e]
            }
        }, {
            key: "on", value: function (e, t) {
                var n = i(e.split(".")), r = n[0], o = n.slice(1), a = r;
                return "mousewheel" === a && /Firefox/i.test(window.navigator.userAgent) && (a = "DOMMouseScroll"), this.el.addEventListener(a, (function (e) {
                    t(e);
                    for (var n = 0; n < o.length; n += 1) {
                        var i = o[n];
                        if ("left" === i && 0 !== e.button) return;
                        if ("right" === i && 2 !== e.button) return;
                        "stop" === i && e.stopPropagation()
                    }
                })), this
            }
        }, {
            key: "offset", value: function (e) {
                var t = this;
                if (void 0 !== e) return Object.keys(e).forEach((function (n) {
                    t.css(n, "".concat(e[n], "px"))
                })), this;
                var n = this.el;
                return {top: n.offsetTop, left: n.offsetLeft, height: n.offsetHeight, width: n.offsetWidth}
            }
        }, {
            key: "scroll", value: function (e) {
                var t = this.el;
                return void 0 !== e && (void 0 !== e.left && (t.scrollLeft = e.left), void 0 !== e.top && (t.scrollTop = e.top)), {
                    left: t.scrollLeft,
                    top: t.scrollTop
                }
            }
        }, {
            key: "box", value: function () {
                return this.el.getBoundingClientRect()
            }
        }, {
            key: "parent", value: function () {
                return new e(this.el.parentNode)
            }
        }, {
            key: "children", value: function () {
                for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
                return 0 === arguments.length ? this.el.childNodes : (n.forEach((function (t) {
                    return e.child(t)
                })), this)
            }
        }, {
            key: "prepend", value: function (e) {
                var t = this.el;
                return t.children.length > 0 ? t.insertBefore(e.el, t.firstChild) : t.appendChild(e.el), this
            }
        }, {
            key: "removeEl", value: function (e) {
                return this.el.removeChild(e.el), this
            }
        }, {
            key: "child", value: function (t) {
                var n = t;
                return "string" == typeof t ? n = document.createTextNode(t) : t instanceof e && (n = t.el), this.el.appendChild(n), this
            }
        }, {
            key: "contains", value: function (e) {
                return this.el.contains(e)
            }
        }, {
            key: "className", value: function (e) {
                return void 0 !== e ? (this.el.className = e, this) : this.el.className
            }
        }, {
            key: "addClass", value: function (e) {
                return this.el.classList.add(e), this
            }
        }, {
            key: "hasClass", value: function (e) {
                return this.el.classList.contains(e)
            }
        }, {
            key: "removeClass", value: function (e) {
                return this.el.classList.remove(e), this
            }
        }, {
            key: "toggle", value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "active";
                return this.toggleClass(e)
            }
        }, {
            key: "toggleClass", value: function (e) {
                return this.el.classList.toggle(e)
            }
        }, {
            key: "active", value: function () {
                var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0],
                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "active";
                return e ? this.addClass(t) : this.removeClass(t), this
            }
        }, {
            key: "checked", value: function () {
                var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
                return this.active(e, "checked"), this
            }
        }, {
            key: "disabled", value: function () {
                var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
                return e ? this.addClass("disabled") : this.removeClass("disabled"), this
            }
        }, {
            key: "attr", value: function (e, t) {
                var n = this;
                if (void 0 !== t) this.el.setAttribute(e, t); else {
                    if ("string" == typeof e) return this.el.getAttribute(e);
                    Object.keys(e).forEach((function (t) {
                        n.el.setAttribute(t, e[t])
                    }))
                }
                return this
            }
        }, {
            key: "removeAttr", value: function (e) {
                return this.el.removeAttribute(e), this
            }
        }, {
            key: "html", value: function (e) {
                return void 0 !== e ? (this.el.innerHTML = e, this) : this.el.innerHTML
            }
        }, {
            key: "val", value: function (e) {
                return void 0 !== e ? (this.el.value = e, this) : this.el.value
            }
        }, {
            key: "cssRemoveKeys", value: function () {
                for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
                return n.forEach((function (t) {
                    return e.el.style.removeProperty(t)
                })), this
            }
        }, {
            key: "css", value: function (e, t) {
                var n = this;
                return void 0 === t && "string" != typeof e ? (Object.keys(e).forEach((function (t) {
                    n.el.style[t] = e[t]
                })), this) : void 0 !== t ? (this.el.style[e] = t, this) : this.el.style[e]
            }
        }, {
            key: "computedStyle", value: function () {
                return window.getComputedStyle(this.el, null)
            }
        }, {
            key: "show", value: function () {
                return this.css("display", "block"), this
            }
        }, {
            key: "hide", value: function () {
                return this.css("display", "none"), this
            }
        }]) && a(t.prototype, n), r && a(t, r), e
    }(), l = function (e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
        return new s(e, t)
    }
}, function (e, t) {
    var n = {
            "[object Function]": 1,
            "[object RegExp]": 1,
            "[object Date]": 1,
            "[object Error]": 1,
            "[object CanvasGradient]": 1,
            "[object CanvasPattern]": 1,
            "[object Image]": 1,
            "[object Canvas]": 1
        }, i = {
            "[object Int8Array]": 1,
            "[object Uint8Array]": 1,
            "[object Uint8ClampedArray]": 1,
            "[object Int16Array]": 1,
            "[object Uint16Array]": 1,
            "[object Int32Array]": 1,
            "[object Uint32Array]": 1,
            "[object Float32Array]": 1,
            "[object Float64Array]": 1
        }, r = Object.prototype.toString, o = Array.prototype, a = o.forEach, s = o.filter, l = o.slice, c = o.map,
        u = o.reduce, h = {};

    function d(e) {
        if (null == e || "object" != typeof e) return e;
        var t = e, o = r.call(e);
        if ("[object Array]" === o) {
            if (!x(e)) {
                t = [];
                for (var a = 0, s = e.length; a < s; a++) t[a] = d(e[a])
            }
        } else if (i[o]) {
            if (!x(e)) {
                var l = e.constructor;
                if (e.constructor.from) t = l.from(e); else {
                    t = new l(e.length);
                    for (a = 0, s = e.length; a < s; a++) t[a] = d(e[a])
                }
            }
        } else if (!n[o] && !x(e) && !I(e)) for (var c in t = {}, e) e.hasOwnProperty(c) && (t[c] = d(e[c]));
        return t
    }

    function f(e, t, n) {
        if (!C(t) || !C(e)) return n ? d(t) : e;
        for (var i in t) if (t.hasOwnProperty(i)) {
            var r = e[i], o = t[i];
            !C(o) || !C(r) || b(o) || b(r) || I(o) || I(r) || w(o) || w(r) || x(o) || x(r) ? !n && i in e || (e[i] = d(t[i])) : f(r, o, n)
        }
        return e
    }

    function g(e, t, n) {
        for (var i in t) t.hasOwnProperty(i) && (n ? null != t[i] : null == e[i]) && (e[i] = t[i]);
        return e
    }

    var p, m = function () {
        return h.createCanvas()
    };

    function v(e, t, n) {
        if (e && t) if (e.forEach && e.forEach === a) e.forEach(t, n); else if (e.length === +e.length) for (var i = 0, r = e.length; i < r; i++) t.call(n, e[i], i, e); else for (var o in e) e.hasOwnProperty(o) && t.call(n, e[o], o, e)
    }

    function y(e, t) {
        var n = l.call(arguments, 2);
        return function () {
            return e.apply(t, n.concat(l.call(arguments)))
        }
    }

    function b(e) {
        return "[object Array]" === r.call(e)
    }

    function C(e) {
        var t = typeof e;
        return "function" === t || !!e && "object" === t
    }

    function w(e) {
        return !!n[r.call(e)]
    }

    function I(e) {
        return "object" == typeof e && "number" == typeof e.nodeType && "object" == typeof e.ownerDocument
    }

    h.createCanvas = function () {
        return document.createElement("canvas")
    };

    function x(e) {
        return e.__ec_primitive__
    }

    function A(e) {
        var t = b(e);
        this.data = {};
        var n = this;

        function i(e, i) {
            t ? n.set(e, i) : n.set(i, e)
        }

        e instanceof A ? e.each(i) : e && v(e, i)
    }

    A.prototype = {
        constructor: A, get: function (e) {
            return this.data.hasOwnProperty(e) ? this.data[e] : null
        }, set: function (e, t) {
            return this.data[e] = t
        }, each: function (e, t) {
            for (var n in void 0 !== t && (e = y(e, t)), this.data) this.data.hasOwnProperty(n) && e(this.data[n], n)
        }, removeKey: function (e) {
            delete this.data[e]
        }
    }, t.$override = function (e, t) {
        "createCanvas" === e && (p = null), h[e] = t
    }, t.clone = d, t.merge = f, t.mergeAll = function (e, t) {
        for (var n = e[0], i = 1, r = e.length; i < r; i++) n = f(n, e[i], t);
        return n
    }, t.extend = function (e, t) {
        for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
        return e
    }, t.defaults = g, t.createCanvas = m, t.getContext = function () {
        return p || (p = m().getContext("2d")), p
    }, t.indexOf = function (e, t) {
        if (e) {
            if (e.indexOf) return e.indexOf(t);
            for (var n = 0, i = e.length; n < i; n++) if (e[n] === t) return n
        }
        return -1
    }, t.inherits = function (e, t) {
        var n = e.prototype;

        function i() {
        }

        for (var r in i.prototype = t.prototype, e.prototype = new i, n) n.hasOwnProperty(r) && (e.prototype[r] = n[r]);
        e.prototype.constructor = e, e.superClass = t
    }, t.mixin = function (e, t, n) {
        g(e = "prototype" in e ? e.prototype : e, t = "prototype" in t ? t.prototype : t, n)
    }, t.isArrayLike = function (e) {
        if (e) return "string" != typeof e && "number" == typeof e.length
    }, t.each = v, t.map = function (e, t, n) {
        if (e && t) {
            if (e.map && e.map === c) return e.map(t, n);
            for (var i = [], r = 0, o = e.length; r < o; r++) i.push(t.call(n, e[r], r, e));
            return i
        }
    }, t.reduce = function (e, t, n, i) {
        if (e && t) {
            if (e.reduce && e.reduce === u) return e.reduce(t, n, i);
            for (var r = 0, o = e.length; r < o; r++) n = t.call(i, n, e[r], r, e);
            return n
        }
    }, t.filter = function (e, t, n) {
        if (e && t) {
            if (e.filter && e.filter === s) return e.filter(t, n);
            for (var i = [], r = 0, o = e.length; r < o; r++) t.call(n, e[r], r, e) && i.push(e[r]);
            return i
        }
    }, t.find = function (e, t, n) {
        if (e && t) for (var i = 0, r = e.length; i < r; i++) if (t.call(n, e[i], i, e)) return e[i]
    }, t.bind = y, t.curry = function (e) {
        var t = l.call(arguments, 1);
        return function () {
            return e.apply(this, t.concat(l.call(arguments)))
        }
    }, t.isArray = b, t.isFunction = function (e) {
        return "function" == typeof e
    }, t.isString = function (e) {
        return "[object String]" === r.call(e)
    }, t.isObject = C, t.isBuiltInObject = w, t.isTypedArray = function (e) {
        return !!i[r.call(e)]
    }, t.isDom = I, t.eqNaN = function (e) {
        return e != e
    }, t.retrieve = function (e) {
        for (var t = 0, n = arguments.length; t < n; t++) if (null != arguments[t]) return arguments[t]
    }, t.retrieve2 = function (e, t) {
        return null != e ? e : t
    }, t.retrieve3 = function (e, t, n) {
        return null != e ? e : null != t ? t : n
    }, t.slice = function () {
        return Function.call.apply(l, arguments)
    }, t.normalizeCssArray = function (e) {
        if ("number" == typeof e) return [e, e, e, e];
        var t = e.length;
        return 2 === t ? [e[0], e[1], e[0], e[1]] : 3 === t ? [e[0], e[1], e[2], e[1]] : e
    }, t.assert = function (e, t) {
        if (!e) throw new Error(t)
    }, t.trim = function (e) {
        return null == e ? null : "function" == typeof e.trim ? e.trim() : e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
    }, t.setAsPrimitive = function (e) {
        e.__ec_primitive__ = !0
    }, t.isPrimitive = x, t.createHashMap = function (e) {
        return new A(e)
    }, t.concatArray = function (e, t) {
        for (var n = new e.constructor(e.length + t.length), i = 0; i < e.length; i++) n[i] = e[i];
        var r = e.length;
        for (i = 0; i < t.length; i++) n[i + r] = t[i];
        return n
    }, t.noop = function () {
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(80), r = n(1), o = n(25), a = n(12), s = n(102), l = n(37), c = n(154), u = n(167), h = n(21), d = n(296),
        f = n(297), g = n(299), p = n(14), m = n(15), v = n(86), y = n(26), b = n(3), C = n(5), w = n(32).throttle,
        I = n(300), x = n(301), A = n(302), _ = n(303), S = n(304), k = n(305);
    n(168);
    var L = n(111), T = r.assert, O = r.each, R = r.isFunction, E = r.isObject, P = p.parseClassType, M = {
        PROCESSOR: {FILTER: 1e3, SERIES_FILTER: 800, STATISTIC: 5e3},
        VISUAL: {
            LAYOUT: 1e3,
            PROGRESSIVE_LAYOUT: 1100,
            GLOBAL: 2e3,
            CHART: 3e3,
            POST_CHART_LAYOUT: 3500,
            COMPONENT: 4e3,
            BRUSH: 5e3
        }
    }, N = "__flagInMainProcess", D = /^[a-zA-Z0-9_]+$/;

    function B(e, t) {
        return function (n, i, r) {
            t || !this._disposed ? (n = n && n.toLowerCase(), l.prototype[e].call(this, n, i, r)) : this.id
        }
    }

    function j() {
        l.call(this)
    }

    function F(e, t, n) {
        n = n || {}, "string" == typeof t && (t = ce[t]), this.id, this.group, this._dom = e;
        var o = this._zr = i.init(e, {
            renderer: n.renderer || "canvas",
            devicePixelRatio: n.devicePixelRatio,
            width: n.width,
            height: n.height
        });
        this._throttledZrFlush = w(r.bind(o.flush, o), 17), (t = r.clone(t)) && f(t, !0), this._theme = t, this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], this._componentsMap = {}, this._coordSysMgr = new h;
        var a, c, d = this._api = (c = (a = this)._coordSysMgr, r.extend(new u(a), {
            getCoordinateSystems: r.bind(c.getCoordinateSystems, c),
            getComponentByElement: function (e) {
                for (; e;) {
                    var t = e.__ecComponentInfo;
                    if (null != t) return a._model.getComponent(t.mainType, t.index);
                    e = e.parent
                }
            }
        }));

        function g(e, t) {
            return e.__prio - t.__prio
        }

        s(le, g), s(oe, g), this._scheduler = new _(this, d, oe, le), l.call(this, this._ecEventProcessor = new ne), this._messageCenter = new j, this._initEvents(), this.resize = r.bind(this.resize, this), this._pendingActions = [], o.animation.on("frame", this._onframe, this), function (e, t) {
            e.on("rendered", (function () {
                t.trigger("rendered"), !e.animation.isFinished() || t.__optionUpdated || t._scheduler.unfinished || t._pendingActions.length || t.trigger("finished")
            }))
        }(o, this), r.setAsPrimitive(this)
    }

    j.prototype.on = B("on", !0), j.prototype.off = B("off", !0), j.prototype.one = B("one", !0), r.mixin(j, l);
    var H = F.prototype;

    function W(e, t, n) {
        if (this._disposed) this.id; else {
            var i, r = this._model, o = this._coordSysMgr.getCoordinateSystems();
            t = C.parseFinder(r, t);
            for (var a = 0; a < o.length; a++) {
                var s = o[a];
                if (s[e] && null != (i = s[e](r, t, n))) return i
            }
        }
    }

    H._onframe = function () {
        if (!this._disposed) {
            var e = this._scheduler;
            if (this.__optionUpdated) {
                var t = this.__optionUpdated.silent;
                this[N] = !0, G(this), V.update.call(this), this[N] = !1, this.__optionUpdated = !1, K.call(this, t), X.call(this, t)
            } else if (e.unfinished) {
                var n = 1, i = this._model, r = this._api;
                e.unfinished = !1;
                do {
                    var o = +new Date;
                    e.performSeriesTasks(i), e.performDataProcessorTasks(i), Z(this, i), e.performVisualTasks(i), q(this, this._model, r, "remain"), n -= +new Date - o
                } while (n > 0 && e.unfinished);
                e.unfinished || this._zr.flush()
            }
        }
    }, H.getDom = function () {
        return this._dom
    }, H.getZr = function () {
        return this._zr
    }, H.setOption = function (e, t, n) {
        if (this._disposed) this.id; else {
            var i;
            if (E(t) && (n = t.lazyUpdate, i = t.silent, t = t.notMerge), this[N] = !0, !this._model || t) {
                var r = new d(this._api), o = this._theme, a = this._model = new c;
                a.scheduler = this._scheduler, a.init(null, null, o, r)
            }
            this._model.setOption(e, ae), n ? (this.__optionUpdated = {silent: i}, this[N] = !1) : (G(this), V.update.call(this), this._zr.flush(), this.__optionUpdated = !1, this[N] = !1, K.call(this, i), X.call(this, i))
        }
    }, H.setTheme = function () {
        console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")
    }, H.getModel = function () {
        return this._model
    }, H.getOption = function () {
        return this._model && this._model.getOption()
    }, H.getWidth = function () {
        return this._zr.getWidth()
    }, H.getHeight = function () {
        return this._zr.getHeight()
    }, H.getDevicePixelRatio = function () {
        return this._zr.painter.dpr || window.devicePixelRatio || 1
    }, H.getRenderedCanvas = function (e) {
        if (a.canvasSupported) return (e = e || {}).pixelRatio = e.pixelRatio || 1, e.backgroundColor = e.backgroundColor || this._model.get("backgroundColor"), this._zr.painter.getRenderedCanvas(e)
    }, H.getSvgDataURL = function () {
        if (a.svgSupported) {
            var e = this._zr, t = e.storage.getDisplayList();
            return r.each(t, (function (e) {
                e.stopAnimation(!0)
            })), e.painter.toDataURL()
        }
    }, H.getDataURL = function (e) {
        if (!this._disposed) {
            var t = (e = e || {}).excludeComponents, n = this._model, i = [], r = this;
            O(t, (function (e) {
                n.eachComponent({mainType: e}, (function (e) {
                    var t = r._componentsMap[e.__viewId];
                    t.group.ignore || (i.push(t), t.group.ignore = !0)
                }))
            }));
            var o = "svg" === this._zr.painter.getType() ? this.getSvgDataURL() : this.getRenderedCanvas(e).toDataURL("image/" + (e && e.type || "png"));
            return O(i, (function (e) {
                e.group.ignore = !1
            })), o
        }
        this.id
    }, H.getConnectedDataURL = function (e) {
        if (this._disposed) this.id; else if (a.canvasSupported) {
            var t = "svg" === e.type, n = this.group, o = Math.min, s = Math.max;
            if (de[n]) {
                var l = 1 / 0, c = 1 / 0, u = -1 / 0, h = -1 / 0, d = [], f = e && e.pixelRatio || 1;
                r.each(he, (function (i, a) {
                    if (i.group === n) {
                        var f = t ? i.getZr().painter.getSvgDom().innerHTML : i.getRenderedCanvas(r.clone(e)),
                            g = i.getDom().getBoundingClientRect();
                        l = o(g.left, l), c = o(g.top, c), u = s(g.right, u), h = s(g.bottom, h), d.push({
                            dom: f,
                            left: g.left,
                            top: g.top
                        })
                    }
                }));
                var g = (u *= f) - (l *= f), p = (h *= f) - (c *= f), m = r.createCanvas(),
                    v = i.init(m, {renderer: t ? "svg" : "canvas"});
                if (v.resize({width: g, height: p}), t) {
                    var y = "";
                    return O(d, (function (e) {
                        var t = e.left - l, n = e.top - c;
                        y += '<g transform="translate(' + t + "," + n + ')">' + e.dom + "</g>"
                    })), v.painter.getSvgRoot().innerHTML = y, e.connectedBackgroundColor && v.painter.setBackgroundColor(e.connectedBackgroundColor), v.refreshImmediately(), v.painter.toDataURL()
                }
                return e.connectedBackgroundColor && v.add(new b.Rect({
                    shape: {x: 0, y: 0, width: g, height: p},
                    style: {fill: e.connectedBackgroundColor}
                })), O(d, (function (e) {
                    var t = new b.Image({style: {x: e.left * f - l, y: e.top * f - c, image: e.dom}});
                    v.add(t)
                })), v.refreshImmediately(), m.toDataURL("image/" + (e && e.type || "png"))
            }
            return this.getDataURL(e)
        }
    }, H.convertToPixel = r.curry(W, "convertToPixel"), H.convertFromPixel = r.curry(W, "convertFromPixel"), H.containPixel = function (e, t) {
        if (!this._disposed) {
            var n, i = this._model;
            return e = C.parseFinder(i, e), r.each(e, (function (e, i) {
                i.indexOf("Models") >= 0 && r.each(e, (function (e) {
                    var r = e.coordinateSystem;
                    if (r && r.containPoint) n |= !!r.containPoint(t); else if ("seriesModels" === i) {
                        var o = this._chartsMap[e.__viewId];
                        o && o.containPoint && (n |= o.containPoint(t, e))
                    }
                }), this)
            }), this), !!n
        }
        this.id
    }, H.getVisual = function (e, t) {
        var n = this._model, i = (e = C.parseFinder(n, e, {defaultMainType: "series"})).seriesModel.getData(),
            r = e.hasOwnProperty("dataIndexInside") ? e.dataIndexInside : e.hasOwnProperty("dataIndex") ? i.indexOfRawIndex(e.dataIndex) : null;
        return null != r ? i.getItemVisual(r, t) : i.getVisual(t)
    }, H.getViewOfComponentModel = function (e) {
        return this._componentsMap[e.__viewId]
    }, H.getViewOfSeriesModel = function (e) {
        return this._chartsMap[e.__viewId]
    };
    var V = {
        prepareAndUpdate: function (e) {
            G(this), V.update.call(this, e)
        }, update: function (e) {
            var t = this._model, n = this._api, i = this._zr, r = this._coordSysMgr, s = this._scheduler;
            if (t) {
                s.restoreData(t, e), s.performSeriesTasks(t), r.create(t, n), s.performDataProcessorTasks(t, e), Z(this, t), r.update(t, n), U(t), s.performVisualTasks(t, e), J(this, t, n, e);
                var l = t.get("backgroundColor") || "transparent";
                if (a.canvasSupported) i.setBackgroundColor(l); else {
                    var c = o.parse(l);
                    l = o.stringify(c, "rgb"), 0 === c[3] && (l = "transparent")
                }
                Q(t, n)
            }
        }, updateTransform: function (e) {
            var t = this._model, n = this, i = this._api;
            if (t) {
                var o = [];
                t.eachComponent((function (r, a) {
                    var s = n.getViewOfComponentModel(a);
                    if (s && s.__alive) if (s.updateTransform) {
                        var l = s.updateTransform(a, t, i, e);
                        l && l.update && o.push(s)
                    } else o.push(s)
                }));
                var a = r.createHashMap();
                t.eachSeries((function (r) {
                    var o = n._chartsMap[r.__viewId];
                    if (o.updateTransform) {
                        var s = o.updateTransform(r, t, i, e);
                        s && s.update && a.set(r.uid, 1)
                    } else a.set(r.uid, 1)
                })), U(t), this._scheduler.performVisualTasks(t, e, {
                    setDirty: !0,
                    dirtyMap: a
                }), q(n, t, i, e, a), Q(t, this._api)
            }
        }, updateView: function (e) {
            var t = this._model;
            t && (y.markUpdateMethod(e, "updateView"), U(t), this._scheduler.performVisualTasks(t, e, {setDirty: !0}), J(this, this._model, this._api, e), Q(t, this._api))
        }, updateVisual: function (e) {
            V.update.call(this, e)
        }, updateLayout: function (e) {
            V.update.call(this, e)
        }
    };

    function G(e) {
        var t = e._model, n = e._scheduler;
        n.restorePipelines(t), n.prepareStageTasks(), Y(e, "component", t, n), Y(e, "chart", t, n), n.plan()
    }

    function z(e, t, n, i, o) {
        var a = e._model;
        if (i) {
            var s = {};
            s[i + "Id"] = n[i + "Id"], s[i + "Index"] = n[i + "Index"], s[i + "Name"] = n[i + "Name"];
            var l = {mainType: i, query: s};
            o && (l.subType = o);
            var c = n.excludeSeriesId;
            null != c && (c = r.createHashMap(C.normalizeToArray(c))), a && a.eachComponent(l, (function (t) {
                c && null != c.get(t.id) || u(e["series" === i ? "_chartsMap" : "_componentsMap"][t.__viewId])
            }), e)
        } else O(e._componentsViews.concat(e._chartsViews), u);

        function u(i) {
            i && i.__alive && i[t] && i[t](i.__model, a, e._api, n)
        }
    }

    function Z(e, t) {
        var n = e._chartsMap, i = e._scheduler;
        t.eachSeries((function (e) {
            i.updateStreamModes(e, n[e.__viewId])
        }))
    }

    function $(e, t) {
        var n = e.type, i = e.escapeConnect, o = ie[n], a = o.actionInfo, s = (a.update || "update").split(":"),
            l = s.pop();
        s = null != s[0] && P(s[0]), this[N] = !0;
        var c = [e], u = !1;
        e.batch && (u = !0, c = r.map(e.batch, (function (t) {
            return (t = r.defaults(r.extend({}, t), e)).batch = null, t
        })));
        var h, d = [], f = "highlight" === n || "downplay" === n;
        O(c, (function (e) {
            (h = (h = o.action(e, this._model, this._api)) || r.extend({}, e)).type = a.event || h.type, d.push(h), f ? z(this, l, e, "series") : s && z(this, l, e, s.main, s.sub)
        }), this), "none" === l || f || s || (this.__optionUpdated ? (G(this), V.update.call(this, e), this.__optionUpdated = !1) : V[l].call(this, e)), h = u ? {
            type: a.event || n,
            escapeConnect: i,
            batch: d
        } : d[0], this[N] = !1, !t && this._messageCenter.trigger(h.type, h)
    }

    function K(e) {
        for (var t = this._pendingActions; t.length;) {
            var n = t.shift();
            $.call(this, n, e)
        }
    }

    function X(e) {
        !e && this.trigger("updated")
    }

    function Y(e, t, n, i) {
        for (var r = "component" === t, o = r ? e._componentsViews : e._chartsViews, a = r ? e._componentsMap : e._chartsMap, s = e._zr, l = e._api, c = 0; c < o.length; c++) o[c].__alive = !1;

        function u(e) {
            var t = "_ec_" + e.id + "_" + e.type, c = a[t];
            if (!c) {
                var u = P(e.type);
                (c = new (r ? v.getClass(u.main, u.sub) : y.getClass(u.sub))).init(n, l), a[t] = c, o.push(c), s.add(c.group)
            }
            e.__viewId = c.__id = t, c.__alive = !0, c.__model = e, c.group.__ecComponentInfo = {
                mainType: e.mainType,
                index: e.componentIndex
            }, !r && i.prepareView(c, e, n, l)
        }

        r ? n.eachComponent((function (e, t) {
            "series" !== e && u(t)
        })) : n.eachSeries(u);
        for (c = 0; c < o.length;) {
            var h = o[c];
            h.__alive ? c++ : (!r && h.renderTask.dispose(), s.remove(h.group), h.dispose(n, l), o.splice(c, 1), delete a[h.__id], h.__id = h.group.__ecComponentInfo = null)
        }
    }

    function U(e) {
        e.clearColorPalette(), e.eachSeries((function (e) {
            e.clearColorPalette()
        }))
    }

    function J(e, t, n, i) {
        !function (e, t, n, i, r) {
            O(r || e._componentsViews, (function (e) {
                var r = e.__model;
                e.render(r, t, n, i), te(r, e)
            }))
        }(e, t, n, i), O(e._chartsViews, (function (e) {
            e.__alive = !1
        })), q(e, t, n, i), O(e._chartsViews, (function (e) {
            e.__alive || e.remove(t, n)
        }))
    }

    function q(e, t, n, i, r) {
        var o, s = e._scheduler;
        t.eachSeries((function (t) {
            var n = e._chartsMap[t.__viewId];
            n.__alive = !0;
            var a = n.renderTask;
            s.updatePayload(a, i), r && r.get(t.uid) && a.dirty(), o |= a.perform(s.getPerformArgs(a)), n.group.silent = !!t.get("silent"), te(t, n), function (e, t) {
                var n = e.get("blendMode") || null;
                t.group.traverse((function (e) {
                    e.isGroup || e.style.blend !== n && e.setStyle("blend", n), e.eachPendingDisplayable && e.eachPendingDisplayable((function (e) {
                        e.setStyle("blend", n)
                    }))
                }))
            }(t, n)
        })), s.unfinished |= o, function (e, t) {
            var n = e._zr.storage, i = 0;
            n.traverse((function (e) {
                i++
            })), i > t.get("hoverLayerThreshold") && !a.node && t.eachSeries((function (t) {
                if (!t.preventUsingHoverLayer) {
                    var n = e._chartsMap[t.__viewId];
                    n.__alive && n.group.traverse((function (e) {
                        e.useHoverLayer = !0
                    }))
                }
            }))
        }(e, t), x(e._zr.dom, t)
    }

    function Q(e, t) {
        O(se, (function (n) {
            n(e, t)
        }))
    }

    H.resize = function (e) {
        if (this._disposed) this.id; else {
            this._zr.resize(e);
            var t = this._model;
            if (this._loadingFX && this._loadingFX.resize(), t) {
                var n = t.resetOption("media"), i = e && e.silent;
                this[N] = !0, n && G(this), V.update.call(this), this[N] = !1, K.call(this, i), X.call(this, i)
            }
        }
    }, H.showLoading = function (e, t) {
        if (this._disposed) this.id; else if (E(e) && (t = e, e = ""), e = e || "default", this.hideLoading(), ue[e]) {
            var n = ue[e](this._api, t), i = this._zr;
            this._loadingFX = n, i.add(n)
        }
    }, H.hideLoading = function () {
        this._disposed ? this.id : (this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null)
    }, H.makeActionFromEvent = function (e) {
        var t = r.extend({}, e);
        return t.type = re[e.type], t
    }, H.dispatchAction = function (e, t) {
        this._disposed ? this.id : (E(t) || (t = {silent: !!t}), ie[e.type] && this._model && (this[N] ? this._pendingActions.push(e) : ($.call(this, e, t.silent), t.flush ? this._zr.flush(!0) : !1 !== t.flush && a.browser.weChat && this._throttledZrFlush(), K.call(this, t.silent), X.call(this, t.silent))))
    }, H.appendData = function (e) {
        if (this._disposed) this.id; else {
            var t = e.seriesIndex;
            this.getModel().getSeriesByIndex(t).appendData(e), this._scheduler.unfinished = !0
        }
    }, H.on = B("on", !1), H.off = B("off", !1), H.one = B("one", !1);
    var ee = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"];

    function te(e, t) {
        var n = e.get("z"), i = e.get("zlevel");
        t.group.traverse((function (e) {
            "group" !== e.type && (null != n && (e.z = n), null != i && (e.zlevel = i))
        }))
    }

    function ne() {
        this.eventInfo
    }

    H._initEvents = function () {
        O(ee, (function (e) {
            var t = function (t) {
                var n, i = this.getModel(), o = t.target;
                if ("globalout" === e) n = {}; else if (o && null != o.dataIndex) {
                    var a = o.dataModel || i.getSeriesByIndex(o.seriesIndex);
                    n = a && a.getDataParams(o.dataIndex, o.dataType, o) || {}
                } else o && o.eventData && (n = r.extend({}, o.eventData));
                if (n) {
                    var s = n.componentType, l = n.componentIndex;
                    "markLine" !== s && "markPoint" !== s && "markArea" !== s || (s = "series", l = n.seriesIndex);
                    var c = s && null != l && i.getComponent(s, l),
                        u = c && this["series" === c.mainType ? "_chartsMap" : "_componentsMap"][c.__viewId];
                    n.event = t, n.type = e, this._ecEventProcessor.eventInfo = {
                        targetEl: o,
                        packedEvent: n,
                        model: c,
                        view: u
                    }, this.trigger(e, n)
                }
            };
            t.zrEventfulCallAtLast = !0, this._zr.on(e, t, this)
        }), this), O(re, (function (e, t) {
            this._messageCenter.on(t, (function (e) {
                this.trigger(t, e)
            }), this)
        }), this)
    }, H.isDisposed = function () {
        return this._disposed
    }, H.clear = function () {
        this._disposed ? this.id : this.setOption({series: []}, !0)
    }, H.dispose = function () {
        if (this._disposed) this.id; else {
            this._disposed = !0, C.setAttribute(this.getDom(), pe, "");
            var e = this._api, t = this._model;
            O(this._componentsViews, (function (n) {
                n.dispose(t, e)
            })), O(this._chartsViews, (function (n) {
                n.dispose(t, e)
            })), this._zr.dispose(), delete he[this.id]
        }
    }, r.mixin(F, l), ne.prototype = {
        constructor: ne, normalizeQuery: function (e) {
            var t = {}, n = {}, i = {};
            if (r.isString(e)) {
                var o = P(e);
                t.mainType = o.main || null, t.subType = o.sub || null
            } else {
                var a = ["Index", "Name", "Id"], s = {name: 1, dataIndex: 1, dataType: 1};
                r.each(e, (function (e, r) {
                    for (var o = !1, l = 0; l < a.length; l++) {
                        var c = a[l], u = r.lastIndexOf(c);
                        if (u > 0 && u === r.length - c.length) {
                            var h = r.slice(0, u);
                            "data" !== h && (t.mainType = h, t[c.toLowerCase()] = e, o = !0)
                        }
                    }
                    s.hasOwnProperty(r) && (n[r] = e, o = !0), o || (i[r] = e)
                }))
            }
            return {cptQuery: t, dataQuery: n, otherQuery: i}
        }, filter: function (e, t, n) {
            var i = this.eventInfo;
            if (!i) return !0;
            var r = i.targetEl, o = i.packedEvent, a = i.model, s = i.view;
            if (!a || !s) return !0;
            var l = t.cptQuery, c = t.dataQuery;
            return u(l, a, "mainType") && u(l, a, "subType") && u(l, a, "index", "componentIndex") && u(l, a, "name") && u(l, a, "id") && u(c, o, "name") && u(c, o, "dataIndex") && u(c, o, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(e, t.otherQuery, r, o));

            function u(e, t, n, i) {
                return null == e[n] || t[i || n] === e[n]
            }
        }, afterTrigger: function () {
            this.eventInfo = null
        }
    };
    var ie = {}, re = {}, oe = [], ae = [], se = [], le = [], ce = {}, ue = {}, he = {}, de = {}, fe = new Date - 0,
        ge = new Date - 0, pe = "_echarts_instance_";

    function me(e) {
        de[e] = !1
    }

    var ve = me;

    function ye(e) {
        return he[C.getAttribute(e, pe)]
    }

    function be(e, t) {
        ce[e] = t
    }

    function Ce(e) {
        ae.push(e)
    }

    function we(e, t) {
        Ae(oe, e, t, 1e3)
    }

    function Ie(e, t, n) {
        "function" == typeof t && (n = t, t = "");
        var i = E(e) ? e.type : [e, e = {event: t}][0];
        e.event = (e.event || i).toLowerCase(), t = e.event, T(D.test(i) && D.test(t)), ie[i] || (ie[i] = {
            action: n,
            actionInfo: e
        }), re[t] = i
    }

    function xe(e, t) {
        Ae(le, e, t, 3e3, "visual")
    }

    function Ae(e, t, n, i, r) {
        (R(t) || E(t)) && (n = t, t = i);
        var o = _.wrapStageHandler(n, r);
        return o.__prio = t, o.__raw = n, e.push(o), o
    }

    function _e(e, t) {
        ue[e] = t
    }

    xe(2e3, I), Ce(f), we(900, g), _e("default", A), Ie({
        type: "highlight",
        event: "highlight",
        update: "highlight"
    }, r.noop), Ie({type: "downplay", event: "downplay", update: "downplay"}, r.noop), be("light", S), be("dark", k);
    t.version = "4.8.0", t.dependencies = {zrender: "4.3.1"}, t.PRIORITY = M, t.init = function (e, t, n) {
        var i = ye(e);
        if (i) return i;
        var r = new F(e, t, n);
        return r.id = "ec_" + fe++, he[r.id] = r, C.setAttribute(e, pe, r.id), function (e) {
            var t = "__connectUpdateStatus";

            function n(e, n) {
                for (var i = 0; i < e.length; i++) {
                    e[i][t] = n
                }
            }

            O(re, (function (i, r) {
                e._messageCenter.on(r, (function (i) {
                    if (de[e.group] && 0 !== e[t]) {
                        if (i && i.escapeConnect) return;
                        var r = e.makeActionFromEvent(i), o = [];
                        O(he, (function (t) {
                            t !== e && t.group === e.group && o.push(t)
                        })), n(o, 0), O(o, (function (e) {
                            1 !== e[t] && e.dispatchAction(r)
                        })), n(o, 2)
                    }
                }))
            }))
        }(r), r
    }, t.connect = function (e) {
        if (r.isArray(e)) {
            var t = e;
            e = null, O(t, (function (t) {
                null != t.group && (e = t.group)
            })), e = e || "g_" + ge++, O(t, (function (t) {
                t.group = e
            }))
        }
        return de[e] = !0, e
    }, t.disConnect = me, t.disconnect = ve, t.dispose = function (e) {
        "string" == typeof e ? e = he[e] : e instanceof F || (e = ye(e)), e instanceof F && !e.isDisposed() && e.dispose()
    }, t.getInstanceByDom = ye, t.getInstanceById = function (e) {
        return he[e]
    }, t.registerTheme = be, t.registerPreprocessor = Ce, t.registerProcessor = we, t.registerPostUpdate = function (e) {
        se.push(e)
    }, t.registerAction = Ie, t.registerCoordinateSystem = function (e, t) {
        h.register(e, t)
    }, t.getCoordinateSystemDimensions = function (e) {
        var t = h.get(e);
        if (t) return t.getDimensionsInfo ? t.getDimensionsInfo() : t.dimensions.slice()
    }, t.registerLayout = function (e, t) {
        Ae(le, e, t, 1e3, "layout")
    }, t.registerVisual = xe, t.registerLoading = _e, t.extendComponentModel = function (e) {
        return p.extend(e)
    }, t.extendComponentView = function (e) {
        return v.extend(e)
    }, t.extendSeriesModel = function (e) {
        return m.extend(e)
    }, t.extendChartView = function (e) {
        return y.extend(e)
    }, t.setCanvasCreator = function (e) {
        r.$override("createCanvas", e)
    }, t.registerMap = function (e, t, n) {
        L.registerMap(e, t, n)
    }, t.getMap = function (e) {
        var t = L.retrieveMap(e);
        return t && t[0] && {geoJson: t[0].geoJSON, specialAreas: t[0].specialAreas}
    }, t.dataTool = {};
    var Se = n(170);
    !function () {
        for (var e in Se) Se.hasOwnProperty(e) && (t[e] = Se[e])
    }()
}, function (e, t, n) {
    var i = n(1), r = n(155), o = n(25), a = n(16), s = n(9), l = n(11), c = n(81), u = n(46);
    t.Image = u;
    var h = n(38);
    t.Group = h;
    var d = n(39);
    t.Text = d;
    var f = n(160);
    t.Circle = f;
    var g = n(285);
    t.Sector = g;
    var p = n(286);
    t.Ring = p;
    var m = n(162);
    t.Polygon = m;
    var v = n(164);
    t.Polyline = v;
    var y = n(105);
    t.Rect = y;
    var b = n(165);
    t.Line = b;
    var C = n(289);
    t.BezierCurve = C;
    var w = n(290);
    t.Arc = w;
    var I = n(291);
    t.CompoundPath = I;
    var x = n(107);
    t.LinearGradient = x;
    var A = n(292);
    t.RadialGradient = A;
    var _ = n(10);
    t.BoundingRect = _;
    var S = n(108);
    t.IncrementalDisplayable = S;
    var k = n(106), L = Math.max, T = Math.min, O = {}, R = 1, E = {}, P = {};

    function M(e, t) {
        P[e] = t
    }

    function N(e, t, n, i) {
        var o = r.createFromString(e, t);
        return n && ("center" === i && (n = D(n, o.getBoundingRect())), j(o, n)), o
    }

    function D(e, t) {
        var n, i = t.width / t.height, r = e.height * i;
        return n = r <= e.width ? e.height : (r = e.width) / i, {
            x: e.x + e.width / 2 - r / 2,
            y: e.y + e.height / 2 - n / 2,
            width: r,
            height: n
        }
    }

    var B = r.mergePath;

    function j(e, t) {
        if (e.applyTransform) {
            var n = e.getBoundingRect().calculateTransform(t);
            e.applyTransform(n)
        }
    }

    var F = k.subPixelOptimize;

    function H(e) {
        return null != e && "none" !== e
    }

    var W = i.createHashMap(), V = 0;

    function G(e) {
        var t = e.__hoverStl;
        if (t && !e.__highlighted) {
            var n = e.__zr, i = e.useHoverLayer && n && "canvas" === n.painter.type;
            if (e.__highlighted = i ? "layer" : "plain", !(e.isGroup || !n && e.useHoverLayer)) {
                var r = e, o = e.style;
                i && (o = (r = n.addHover(e)).style), oe(o), i || function (e) {
                    if (e.__hoverStlDirty) {
                        e.__hoverStlDirty = !1;
                        var t = e.__hoverStl;
                        if (t) {
                            var n = e.__cachedNormalStl = {};
                            e.__cachedNormalZ2 = e.z2;
                            var i = e.style;
                            for (var r in t) null != t[r] && (n[r] = i[r]);
                            n.fill = i.fill, n.stroke = i.stroke
                        } else e.__cachedNormalStl = e.__cachedNormalZ2 = null
                    }
                }(r), o.extendFrom(t), z(o, t, "fill"), z(o, t, "stroke"), re(o), i || (e.dirty(!1), e.z2 += 1)
            }
        }
    }

    function z(e, t, n) {
        !H(t[n]) && H(e[n]) && (e[n] = function (e) {
            if ("string" != typeof e) return e;
            var t = W.get(e);
            return t || (t = o.lift(e, -.1), V < 1e4 && (W.set(e, t), V++)), t
        }(e[n]))
    }

    function Z(e) {
        var t = e.__highlighted;
        if (t && (e.__highlighted = !1, !e.isGroup)) if ("layer" === t) e.__zr && e.__zr.removeHover(e); else {
            var n = e.style, i = e.__cachedNormalStl;
            i && (oe(n), e.setStyle(i), re(n));
            var r = e.__cachedNormalZ2;
            null != r && e.z2 - r == 1 && (e.z2 = r)
        }
    }

    function $(e, t, n) {
        var i, r = "normal", o = "normal";
        e.__highlighted && (r = "emphasis", i = !0), t(e, n), e.__highlighted && (o = "emphasis", i = !0), e.isGroup && e.traverse((function (e) {
            !e.isGroup && t(e, n)
        })), i && e.__highDownOnUpdate && e.__highDownOnUpdate(r, o)
    }

    function K(e, t) {
        t = e.__hoverStl = !1 !== t && (e.hoverStyle || t || {}), e.__hoverStlDirty = !0, e.__highlighted && (e.__cachedNormalStl = null, Z(e), G(e))
    }

    function X(e) {
        !q(this, e) && !this.__highByOuter && $(this, G)
    }

    function Y(e) {
        !q(this, e) && !this.__highByOuter && $(this, Z)
    }

    function U(e) {
        this.__highByOuter |= 1 << (e || 0), $(this, G)
    }

    function J(e) {
        !(this.__highByOuter &= ~(1 << (e || 0))) && $(this, Z)
    }

    function q(e, t) {
        return e.__highDownSilentOnTouch && t.zrByTouch
    }

    function Q(e, t) {
        var n = !1 === t;
        if (e.__highDownSilentOnTouch = e.highDownSilentOnTouch, e.__highDownOnUpdate = e.highDownOnUpdate, !n || e.__highDownDispatcher) {
            var i = n ? "off" : "on";
            e[i]("mouseover", X)[i]("mouseout", Y), e[i]("emphasis", U)[i]("normal", J), e.__highByOuter = e.__highByOuter || 0, e.__highDownDispatcher = !n
        }
    }

    function ee(e, t, n, r, o) {
        return te(e, t, r, o), n && i.extend(e, n), e
    }

    function te(e, t, n, r) {
        if ((n = n || O).isRectText) {
            var o;
            n.getTextPosition ? o = n.getTextPosition(t, r) : "outside" === (o = t.getShallow("position") || (r ? null : "inside")) && (o = "top"), e.textPosition = o, e.textOffset = t.getShallow("offset");
            var a = t.getShallow("rotate");
            null != a && (a *= Math.PI / 180), e.textRotation = a, e.textDistance = i.retrieve2(t.getShallow("distance"), r ? null : 5)
        }
        var s, l = t.ecModel, c = l && l.option.textStyle, u = function (e) {
            var t;
            for (; e && e !== e.ecModel;) {
                var n = (e.option || O).rich;
                if (n) for (var i in t = t || {}, n) n.hasOwnProperty(i) && (t[i] = 1);
                e = e.parentModel
            }
            return t
        }(t);
        if (u) for (var h in s = {}, u) if (u.hasOwnProperty(h)) {
            var d = t.getModel(["rich", h]);
            ne(s[h] = {}, d, c, n, r)
        }
        return e.rich = s, ne(e, t, c, n, r, !0), n.forceRich && !n.textStyle && (n.textStyle = {}), e
    }

    function ne(e, t, n, r, o, a) {
        n = !o && n || O, e.textFill = ie(t.getShallow("color"), r) || n.color, e.textStroke = ie(t.getShallow("textBorderColor"), r) || n.textBorderColor, e.textStrokeWidth = i.retrieve2(t.getShallow("textBorderWidth"), n.textBorderWidth), o || (a && (e.insideRollbackOpt = r, re(e)), null == e.textFill && (e.textFill = r.autoColor)), e.fontStyle = t.getShallow("fontStyle") || n.fontStyle, e.fontWeight = t.getShallow("fontWeight") || n.fontWeight, e.fontSize = t.getShallow("fontSize") || n.fontSize, e.fontFamily = t.getShallow("fontFamily") || n.fontFamily, e.textAlign = t.getShallow("align"), e.textVerticalAlign = t.getShallow("verticalAlign") || t.getShallow("baseline"), e.textLineHeight = t.getShallow("lineHeight"), e.textWidth = t.getShallow("width"), e.textHeight = t.getShallow("height"), e.textTag = t.getShallow("tag"), a && r.disableBox || (e.textBackgroundColor = ie(t.getShallow("backgroundColor"), r), e.textPadding = t.getShallow("padding"), e.textBorderColor = ie(t.getShallow("borderColor"), r), e.textBorderWidth = t.getShallow("borderWidth"), e.textBorderRadius = t.getShallow("borderRadius"), e.textBoxShadowColor = t.getShallow("shadowColor"), e.textBoxShadowBlur = t.getShallow("shadowBlur"), e.textBoxShadowOffsetX = t.getShallow("shadowOffsetX"), e.textBoxShadowOffsetY = t.getShallow("shadowOffsetY")), e.textShadowColor = t.getShallow("textShadowColor") || n.textShadowColor, e.textShadowBlur = t.getShallow("textShadowBlur") || n.textShadowBlur, e.textShadowOffsetX = t.getShallow("textShadowOffsetX") || n.textShadowOffsetX, e.textShadowOffsetY = t.getShallow("textShadowOffsetY") || n.textShadowOffsetY
    }

    function ie(e, t) {
        return "auto" !== e ? e : t && t.autoColor ? t.autoColor : null
    }

    function re(e) {
        var t, n = e.textPosition, i = e.insideRollbackOpt;
        if (i && null == e.textFill) {
            var r = i.autoColor, o = i.isRectText, a = i.useInsideStyle,
                s = !1 !== a && (!0 === a || o && n && "string" == typeof n && n.indexOf("inside") >= 0),
                l = !s && null != r;
            (s || l) && (t = {
                textFill: e.textFill,
                textStroke: e.textStroke,
                textStrokeWidth: e.textStrokeWidth
            }), s && (e.textFill = "#fff", null == e.textStroke && (e.textStroke = r, null == e.textStrokeWidth && (e.textStrokeWidth = 2))), l && (e.textFill = r)
        }
        e.insideRollback = t
    }

    function oe(e) {
        var t = e.insideRollback;
        t && (e.textFill = t.textFill, e.textStroke = t.textStroke, e.textStrokeWidth = t.textStrokeWidth, e.insideRollback = null)
    }

    function ae(e, t, n, i, r, o) {
        if ("function" == typeof r && (o = r, r = null), i && i.isAnimationEnabled()) {
            var a = e ? "Update" : "", s = i.getShallow("animationDuration" + a),
                l = i.getShallow("animationEasing" + a), c = i.getShallow("animationDelay" + a);
            "function" == typeof c && (c = c(r, i.getAnimationDelayParams ? i.getAnimationDelayParams(t, r) : null)), "function" == typeof s && (s = s(r)), s > 0 ? t.animateTo(n, s, c || 0, l, o, !!o) : (t.stopAnimation(), t.attr(n), o && o())
        } else t.stopAnimation(), t.attr(n), o && o()
    }

    function se(e, t, n, i, r) {
        ae(!0, e, t, n, i, r)
    }

    function le(e, t, n) {
        return t && !i.isArrayLike(t) && (t = c.getLocalTransform(t)), n && (t = a.invert([], t)), s.applyTransform([], e, t)
    }

    function ce(e, t, n, i, r, o, a, s) {
        var l, c = n - e, u = i - t, h = a - r, d = s - o, f = ue(h, d, c, u);
        if ((l = f) <= 1e-6 && l >= -1e-6) return !1;
        var g = e - r, p = t - o, m = ue(g, p, c, u) / f;
        if (m < 0 || m > 1) return !1;
        var v = ue(g, p, h, d) / f;
        return !(v < 0 || v > 1)
    }

    function ue(e, t, n, i) {
        return e * i - n * t
    }

    M("circle", f), M("sector", g), M("ring", p), M("polygon", m), M("polyline", v), M("rect", y), M("line", b), M("bezierCurve", C), M("arc", w), t.Z2_EMPHASIS_LIFT = 1, t.CACHED_LABEL_STYLE_PROPERTIES = {
        color: "textFill",
        textBorderColor: "textStroke",
        textBorderWidth: "textStrokeWidth"
    }, t.extendShape = function (e) {
        return l.extend(e)
    }, t.extendPath = function (e, t) {
        return r.extendFromString(e, t)
    }, t.registerShape = M, t.getShapeClass = function (e) {
        if (P.hasOwnProperty(e)) return P[e]
    }, t.makePath = N, t.makeImage = function (e, t, n) {
        var i = new u({
            style: {image: e, x: t.x, y: t.y, width: t.width, height: t.height}, onload: function (e) {
                if ("center" === n) {
                    var r = {width: e.width, height: e.height};
                    i.setStyle(D(t, r))
                }
            }
        });
        return i
    }, t.mergePath = B, t.resizePath = j, t.subPixelOptimizeLine = function (e) {
        return k.subPixelOptimizeLine(e.shape, e.shape, e.style), e
    }, t.subPixelOptimizeRect = function (e) {
        return k.subPixelOptimizeRect(e.shape, e.shape, e.style), e
    }, t.subPixelOptimize = F, t.setElementHoverStyle = K, t.setHoverStyle = function (e, t) {
        Q(e, !0), $(e, K, t)
    }, t.setAsHighDownDispatcher = Q, t.isHighDownDispatcher = function (e) {
        return !(!e || !e.__highDownDispatcher)
    }, t.getHighlightDigit = function (e) {
        var t = E[e];
        return null == t && R <= 32 && (t = E[e] = R++), t
    }, t.setLabelStyle = function (e, t, n, r, o, a, s) {
        var l, c = (o = o || O).labelFetcher, u = o.labelDataIndex, h = o.labelDimIndex, d = o.labelProp,
            f = n.getShallow("show"), g = r.getShallow("show");
        (f || g) && (c && (l = c.getFormattedLabel(u, "normal", null, h, d)), null == l && (l = i.isFunction(o.defaultText) ? o.defaultText(u, o) : o.defaultText));
        var p = f ? l : null, m = g ? i.retrieve2(c ? c.getFormattedLabel(u, "emphasis", null, h, d) : null, l) : null;
        null == p && null == m || (ee(e, n, a, o), ee(t, r, s, o, !0)), e.text = p, t.text = m
    }, t.modifyLabelStyle = function (e, t, n) {
        var r = e.style;
        t && (oe(r), e.setStyle(t), re(r)), r = e.__hoverStl, n && r && (oe(r), i.extend(r, n), re(r))
    }, t.setTextStyle = ee, t.setText = function (e, t, n) {
        var i, r = {isRectText: !0};
        !1 === n ? i = !0 : r.autoColor = n, te(e, t, r, i)
    }, t.getFont = function (e, t) {
        var n = t && t.getModel("textStyle");
        return i.trim([e.fontStyle || n && n.getShallow("fontStyle") || "", e.fontWeight || n && n.getShallow("fontWeight") || "", (e.fontSize || n && n.getShallow("fontSize") || 12) + "px", e.fontFamily || n && n.getShallow("fontFamily") || "sans-serif"].join(" "))
    }, t.updateProps = se, t.initProps = function (e, t, n, i, r) {
        ae(!1, e, t, n, i, r)
    }, t.getTransform = function (e, t) {
        for (var n = a.identity([]); e && e !== t;) a.mul(n, e.getLocalTransform(), n), e = e.parent;
        return n
    }, t.applyTransform = le, t.transformDirection = function (e, t, n) {
        var i = 0 === t[4] || 0 === t[5] || 0 === t[0] ? 1 : Math.abs(2 * t[4] / t[0]),
            r = 0 === t[4] || 0 === t[5] || 0 === t[2] ? 1 : Math.abs(2 * t[4] / t[2]),
            o = ["left" === e ? -i : "right" === e ? i : 0, "top" === e ? -r : "bottom" === e ? r : 0];
        return o = le(o, t, n), Math.abs(o[0]) > Math.abs(o[1]) ? o[0] > 0 ? "right" : "left" : o[1] > 0 ? "bottom" : "top"
    }, t.groupTransition = function (e, t, n, r) {
        if (e && t) {
            var o, a = (o = {}, e.traverse((function (e) {
                !e.isGroup && e.anid && (o[e.anid] = e)
            })), o);
            t.traverse((function (e) {
                if (!e.isGroup && e.anid) {
                    var t = a[e.anid];
                    if (t) {
                        var i = l(e);
                        e.attr(l(t)), se(e, i, n, e.dataIndex)
                    }
                }
            }))
        }

        function l(e) {
            var t = {position: s.clone(e.position), rotation: e.rotation};
            return e.shape && (t.shape = i.extend({}, e.shape)), t
        }
    }, t.clipPointsByRect = function (e, t) {
        return i.map(e, (function (e) {
            var n = e[0];
            n = L(n, t.x), n = T(n, t.x + t.width);
            var i = e[1];
            return i = L(i, t.y), [n, i = T(i, t.y + t.height)]
        }))
    }, t.clipRectByRect = function (e, t) {
        var n = L(e.x, t.x), i = T(e.x + e.width, t.x + t.width), r = L(e.y, t.y),
            o = T(e.y + e.height, t.y + t.height);
        if (i >= n && o >= r) return {x: n, y: r, width: i - n, height: o - r}
    }, t.createIcon = function (e, t, n) {
        var r = (t = i.extend({rectHover: !0}, t)).style = {strokeNoScale: !0};
        if (n = n || {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }, e) return 0 === e.indexOf("image://") ? (r.image = e.slice(8), i.defaults(r, n), new u(t)) : N(e.replace("path://", ""), t, n, "center")
    }, t.linePolygonIntersect = function (e, t, n, i, r) {
        for (var o = 0, a = r[r.length - 1]; o < r.length; o++) {
            var s = r[o];
            if (ce(e, t, n, i, s[0], s[1], a[0], a[1])) return !0;
            a = s
        }
    }, t.lineLineIntersect = ce
}, function (e, t, n) {
    var i = n(1);
    var r = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;

    function o(e) {
        if (0 === e) return 0;
        var t = Math.floor(Math.log(e) / Math.LN10);
        return e / Math.pow(10, t) >= 10 && t++, t
    }

    t.linearMap = function (e, t, n, i) {
        var r = t[1] - t[0], o = n[1] - n[0];
        if (0 === r) return 0 === o ? n[0] : (n[0] + n[1]) / 2;
        if (i) if (r > 0) {
            if (e <= t[0]) return n[0];
            if (e >= t[1]) return n[1]
        } else {
            if (e >= t[0]) return n[0];
            if (e <= t[1]) return n[1]
        } else {
            if (e === t[0]) return n[0];
            if (e === t[1]) return n[1]
        }
        return (e - t[0]) / r * o + n[0]
    }, t.parsePercent = function (e, t) {
        switch (e) {
            case"center":
            case"middle":
                e = "50%";
                break;
            case"left":
            case"top":
                e = "0%";
                break;
            case"right":
            case"bottom":
                e = "100%"
        }
        return "string" == typeof e ? (n = e, n.replace(/^\s+|\s+$/g, "")).match(/%$/) ? parseFloat(e) / 100 * t : parseFloat(e) : null == e ? NaN : +e;
        var n
    }, t.round = function (e, t, n) {
        return null == t && (t = 10), t = Math.min(Math.max(0, t), 20), e = (+e).toFixed(t), n ? e : +e
    }, t.asc = function (e) {
        return e.sort((function (e, t) {
            return e - t
        })), e
    }, t.getPrecision = function (e) {
        if (e = +e, isNaN(e)) return 0;
        for (var t = 1, n = 0; Math.round(e * t) / t !== e;) t *= 10, n++;
        return n
    }, t.getPrecisionSafe = function (e) {
        var t = e.toString(), n = t.indexOf("e");
        if (n > 0) {
            var i = +t.slice(n + 1);
            return i < 0 ? -i : 0
        }
        var r = t.indexOf(".");
        return r < 0 ? 0 : t.length - 1 - r
    }, t.getPixelPrecision = function (e, t) {
        var n = Math.log, i = Math.LN10, r = Math.floor(n(e[1] - e[0]) / i),
            o = Math.round(n(Math.abs(t[1] - t[0])) / i), a = Math.min(Math.max(-r + o, 0), 20);
        return isFinite(a) ? a : 20
    }, t.getPercentWithPrecision = function (e, t, n) {
        if (!e[t]) return 0;
        var r = i.reduce(e, (function (e, t) {
            return e + (isNaN(t) ? 0 : t)
        }), 0);
        if (0 === r) return 0;
        for (var o = Math.pow(10, n), a = i.map(e, (function (e) {
            return (isNaN(e) ? 0 : e) / r * o * 100
        })), s = 100 * o, l = i.map(a, (function (e) {
            return Math.floor(e)
        })), c = i.reduce(l, (function (e, t) {
            return e + t
        }), 0), u = i.map(a, (function (e, t) {
            return e - l[t]
        })); c < s;) {
            for (var h = Number.NEGATIVE_INFINITY, d = null, f = 0, g = u.length; f < g; ++f) u[f] > h && (h = u[f], d = f);
            ++l[d], u[d] = 0, ++c
        }
        return l[t] / o
    }, t.MAX_SAFE_INTEGER = 9007199254740991, t.remRadian = function (e) {
        var t = 2 * Math.PI;
        return (e % t + t) % t
    }, t.isRadianAroundZero = function (e) {
        return e > -1e-4 && e < 1e-4
    }, t.parseDate = function (e) {
        if (e instanceof Date) return e;
        if ("string" == typeof e) {
            var t = r.exec(e);
            if (!t) return new Date(NaN);
            if (t[8]) {
                var n = +t[4] || 0;
                return "Z" !== t[8].toUpperCase() && (n -= t[8].slice(0, 3)), new Date(Date.UTC(+t[1], +(t[2] || 1) - 1, +t[3] || 1, n, +(t[5] || 0), +t[6] || 0, +t[7] || 0))
            }
            return new Date(+t[1], +(t[2] || 1) - 1, +t[3] || 1, +t[4] || 0, +(t[5] || 0), +t[6] || 0, +t[7] || 0)
        }
        return null == e ? new Date(NaN) : new Date(Math.round(e))
    }, t.quantity = function (e) {
        return Math.pow(10, o(e))
    }, t.quantityExponent = o, t.nice = function (e, t) {
        var n = o(e), i = Math.pow(10, n), r = e / i;
        return e = (t ? r < 1.5 ? 1 : r < 2.5 ? 2 : r < 4 ? 3 : r < 7 ? 5 : 10 : r < 1 ? 1 : r < 2 ? 2 : r < 3 ? 3 : r < 5 ? 5 : 10) * i, n >= -20 ? +e.toFixed(n < 0 ? -n : 0) : e
    }, t.quantile = function (e, t) {
        var n = (e.length - 1) * t + 1, i = Math.floor(n), r = +e[i - 1], o = n - i;
        return o ? r + o * (e[i] - r) : r
    }, t.reformIntervals = function (e) {
        e.sort((function (e, t) {
            return function e(t, n, i) {
                return t.interval[i] < n.interval[i] || t.interval[i] === n.interval[i] && (t.close[i] - n.close[i] == (i ? -1 : 1) || !i && e(t, n, 1))
            }(e, t, 0) ? -1 : 1
        }));
        for (var t = -1 / 0, n = 1, i = 0; i < e.length;) {
            for (var r = e[i].interval, o = e[i].close, a = 0; a < 2; a++) r[a] <= t && (r[a] = t, o[a] = a ? 1 : 1 - n), t = r[a], n = o[a];
            r[0] === r[1] && o[0] * o[1] != 1 ? e.splice(i, 1) : i++
        }
        return e
    }, t.isNumeric = function (e) {
        return e - parseFloat(e) >= 0
    }
}, function (e, t, n) {
    var i = n(1), r = n(12), o = i.each, a = i.isObject, s = i.isArray;

    function l(e) {
        return e instanceof Array ? e : null == e ? [] : [e]
    }

    function c(e) {
        return a(e) && e.id && 0 === (e.id + "").indexOf("\0_ec_\0")
    }

    var u = 0;

    function h(e, t) {
        return e && e.hasOwnProperty(t)
    }

    t.normalizeToArray = l, t.defaultEmphasis = function (e, t, n) {
        if (e) {
            e[t] = e[t] || {}, e.emphasis = e.emphasis || {}, e.emphasis[t] = e.emphasis[t] || {};
            for (var i = 0, r = n.length; i < r; i++) {
                var o = n[i];
                !e.emphasis[t].hasOwnProperty(o) && e[t].hasOwnProperty(o) && (e.emphasis[t][o] = e[t][o])
            }
        }
    }, t.TEXT_STYLE_OPTIONS = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"], t.getDataItemValue = function (e) {
        return !a(e) || s(e) || e instanceof Date ? e : e.value
    }, t.isDataItemOption = function (e) {
        return a(e) && !(e instanceof Array)
    }, t.mappingToExists = function (e, t) {
        t = (t || []).slice();
        var n = i.map(e || [], (function (e, t) {
            return {exist: e}
        }));
        return o(t, (function (e, i) {
            if (a(e)) {
                for (var r = 0; r < n.length; r++) if (!n[r].option && null != e.id && n[r].exist.id === e.id + "") return n[r].option = e, void (t[i] = null);
                for (r = 0; r < n.length; r++) {
                    var o = n[r].exist;
                    if (!(n[r].option || null != o.id && null != e.id || null == e.name || c(e) || c(o) || o.name !== e.name + "")) return n[r].option = e, void (t[i] = null)
                }
            }
        })), o(t, (function (e, t) {
            if (a(e)) {
                for (var i = 0; i < n.length; i++) {
                    var r = n[i].exist;
                    if (!n[i].option && !c(r) && null == e.id) {
                        n[i].option = e;
                        break
                    }
                }
                i >= n.length && n.push({option: e})
            }
        })), n
    }, t.makeIdAndName = function (e) {
        var t = i.createHashMap();
        o(e, (function (e, n) {
            var i = e.exist;
            i && t.set(i.id, e)
        })), o(e, (function (e, n) {
            var r = e.option;
            i.assert(!r || null == r.id || !t.get(r.id) || t.get(r.id) === e, "id duplicates: " + (r && r.id)), r && null != r.id && t.set(r.id, e), !e.keyInfo && (e.keyInfo = {})
        })), o(e, (function (e, n) {
            var i = e.exist, r = e.option, o = e.keyInfo;
            if (a(r)) {
                if (o.name = null != r.name ? r.name + "" : i ? i.name : "series\0" + n, i) o.id = i.id; else if (null != r.id) o.id = r.id + ""; else {
                    var s = 0;
                    do {
                        o.id = "\0" + o.name + "\0" + s++
                    } while (t.get(o.id))
                }
                t.set(o.id, e)
            }
        }))
    }, t.isNameSpecified = function (e) {
        var t = e.name;
        return !(!t || !t.indexOf("series\0"))
    }, t.isIdInner = c, t.compressBatches = function (e, t) {
        var n = {}, i = {};
        return r(e || [], n), r(t || [], i, n), [o(n), o(i)];

        function r(e, t, n) {
            for (var i = 0, r = e.length; i < r; i++) for (var o = e[i].seriesId, a = l(e[i].dataIndex), s = n && n[o], c = 0, u = a.length; c < u; c++) {
                var h = a[c];
                s && s[h] ? s[h] = null : (t[o] || (t[o] = {}))[h] = 1
            }
        }

        function o(e, t) {
            var n = [];
            for (var i in e) if (e.hasOwnProperty(i) && null != e[i]) if (t) n.push(+i); else {
                var r = o(e[i], !0);
                r.length && n.push({seriesId: i, dataIndex: r})
            }
            return n
        }
    }, t.queryDataIndex = function (e, t) {
        return null != t.dataIndexInside ? t.dataIndexInside : null != t.dataIndex ? i.isArray(t.dataIndex) ? i.map(t.dataIndex, (function (t) {
            return e.indexOfRawIndex(t)
        })) : e.indexOfRawIndex(t.dataIndex) : null != t.name ? i.isArray(t.name) ? i.map(t.name, (function (t) {
            return e.indexOfName(t)
        })) : e.indexOfName(t.name) : void 0
    }, t.makeInner = function () {
        var e = "__\0ec_inner_" + u++ + "_" + Math.random().toFixed(5);
        return function (t) {
            return t[e] || (t[e] = {})
        }
    }, t.parseFinder = function (e, t, n) {
        if (i.isString(t)) {
            var r = {};
            r[t + "Index"] = 0, t = r
        }
        var a = n && n.defaultMainType;
        !a || h(t, a + "Index") || h(t, a + "Id") || h(t, a + "Name") || (t[a + "Index"] = 0);
        var s = {};
        return o(t, (function (r, o) {
            r = t[o];
            if ("dataIndex" !== o && "dataIndexInside" !== o) {
                var a = o.match(/^(\w+)(Index|Id|Name)$/) || [], l = a[1], c = (a[2] || "").toLowerCase();
                if (!(!l || !c || null == r || "index" === c && "none" === r || n && n.includeMainTypes && i.indexOf(n.includeMainTypes, l) < 0)) {
                    var u = {mainType: l};
                    "index" === c && "all" === r || (u[c] = r);
                    var h = e.queryComponents(u);
                    s[l + "Models"] = h, s[l + "Model"] = h[0]
                }
            } else s[o] = r
        })), s
    }, t.setAttribute = function (e, t, n) {
        e.setAttribute ? e.setAttribute(t, n) : e[t] = n
    }, t.getAttribute = function (e, t) {
        return e.getAttribute ? e.getAttribute(t) : e[t]
    }, t.getTooltipRenderMode = function (e) {
        return "auto" === e ? r.domSupported ? "html" : "richText" : e || "html"
    }, t.groupData = function (e, t) {
        var n = i.createHashMap(), r = [];
        return i.each(e, (function (e) {
            var i = t(e);
            (n.get(i) || (r.push(i), n.set(i, []))).push(e)
        })), {keys: r, buckets: n}
    }
}, function (e, t, n) {
    (function (e) {
        var n;
        "undefined" != typeof window ? n = window.__DEV__ : void 0 !== e && (n = e.__DEV__), void 0 === n && (n = !0);
        var i = n;
        t.__DEV__ = i
    }).call(this, n(136))
}, function (e, t, n) {
    var i = n(1), r = n(10), o = n(4).parsePercent, a = n(8), s = i.each,
        l = ["left", "right", "top", "bottom", "width", "height"],
        c = [["width", "left", "right"], ["height", "top", "bottom"]];

    function u(e, t, n, i, r) {
        var o = 0, a = 0;
        null == i && (i = 1 / 0), null == r && (r = 1 / 0);
        var s = 0;
        t.eachChild((function (l, c) {
            var u, h, d = l.position, f = l.getBoundingRect(), g = t.childAt(c + 1), p = g && g.getBoundingRect();
            if ("horizontal" === e) {
                var m = f.width + (p ? -p.x + f.x : 0);
                (u = o + m) > i || l.newline ? (o = 0, u = m, a += s + n, s = f.height) : s = Math.max(s, f.height)
            } else {
                var v = f.height + (p ? -p.y + f.y : 0);
                (h = a + v) > r || l.newline ? (o += s + n, a = 0, h = v, s = f.width) : s = Math.max(s, f.width)
            }
            l.newline || (d[0] = o, d[1] = a, "horizontal" === e ? o = u + n : a = h + n)
        }))
    }

    var h = u, d = i.curry(u, "vertical"), f = i.curry(u, "horizontal");

    function g(e, t, n) {
        n = a.normalizeCssArray(n || 0);
        var i = t.width, s = t.height, l = o(e.left, i), c = o(e.top, s), u = o(e.right, i), h = o(e.bottom, s),
            d = o(e.width, i), f = o(e.height, s), g = n[2] + n[0], p = n[1] + n[3], m = e.aspect;
        switch (isNaN(d) && (d = i - u - p - l), isNaN(f) && (f = s - h - g - c), null != m && (isNaN(d) && isNaN(f) && (m > i / s ? d = .8 * i : f = .8 * s), isNaN(d) && (d = m * f), isNaN(f) && (f = d / m)), isNaN(l) && (l = i - u - d - p), isNaN(c) && (c = s - h - f - g), e.left || e.right) {
            case"center":
                l = i / 2 - d / 2 - n[3];
                break;
            case"right":
                l = i - d - p
        }
        switch (e.top || e.bottom) {
            case"middle":
            case"center":
                c = s / 2 - f / 2 - n[0];
                break;
            case"bottom":
                c = s - f - g
        }
        l = l || 0, c = c || 0, isNaN(d) && (d = i - p - l - (u || 0)), isNaN(f) && (f = s - g - c - (h || 0));
        var v = new r(l + n[3], c + n[0], d, f);
        return v.margin = n, v
    }

    function p(e, t) {
        return t && e && s(l, (function (n) {
            t.hasOwnProperty(n) && (e[n] = t[n])
        })), e
    }

    t.LOCATION_PARAMS = l, t.HV_NAMES = c, t.box = h, t.vbox = d, t.hbox = f, t.getAvailableSize = function (e, t, n) {
        var i = t.width, r = t.height, s = o(e.x, i), l = o(e.y, r), c = o(e.x2, i), u = o(e.y2, r);
        return (isNaN(s) || isNaN(parseFloat(e.x))) && (s = 0), (isNaN(c) || isNaN(parseFloat(e.x2))) && (c = i), (isNaN(l) || isNaN(parseFloat(e.y))) && (l = 0), (isNaN(u) || isNaN(parseFloat(e.y2))) && (u = r), n = a.normalizeCssArray(n || 0), {
            width: Math.max(c - s - n[1] - n[3], 0),
            height: Math.max(u - l - n[0] - n[2], 0)
        }
    }, t.getLayoutRect = g, t.positionElement = function (e, t, n, o, a) {
        var s = !a || !a.hv || a.hv[0], l = !a || !a.hv || a.hv[1], c = a && a.boundingMode || "all";
        if (s || l) {
            var u;
            if ("raw" === c) u = "group" === e.type ? new r(0, 0, +t.width || 0, +t.height || 0) : e.getBoundingRect(); else if (u = e.getBoundingRect(), e.needLocalTransform()) {
                var h = e.getLocalTransform();
                (u = u.clone()).applyTransform(h)
            }
            t = g(i.defaults({width: u.width, height: u.height}, t), n, o);
            var d = e.position, f = s ? t.x - u.x : 0, p = l ? t.y - u.y : 0;
            e.attr("position", "raw" === c ? [f, p] : [d[0] + f, d[1] + p])
        }
    }, t.sizeCalculable = function (e, t) {
        return null != e[c[t][0]] || null != e[c[t][1]] && null != e[c[t][2]]
    }, t.mergeLayoutParam = function (e, t, n) {
        !i.isObject(n) && (n = {});
        var r = n.ignoreSize;
        !i.isArray(r) && (r = [r, r]);
        var o = l(c[0], 0), a = l(c[1], 1);

        function l(n, i) {
            var o = {}, a = 0, l = {}, c = 0;
            if (s(n, (function (t) {
                l[t] = e[t]
            })), s(n, (function (e) {
                u(t, e) && (o[e] = l[e] = t[e]), h(o, e) && a++, h(l, e) && c++
            })), r[i]) return h(t, n[1]) ? l[n[2]] = null : h(t, n[2]) && (l[n[1]] = null), l;
            if (2 !== c && a) {
                if (a >= 2) return o;
                for (var d = 0; d < n.length; d++) {
                    var f = n[d];
                    if (!u(o, f) && u(e, f)) {
                        o[f] = e[f];
                        break
                    }
                }
                return o
            }
            return l
        }

        function u(e, t) {
            return e.hasOwnProperty(t)
        }

        function h(e, t) {
            return null != e[t] && "auto" !== e[t]
        }

        function d(e, t, n) {
            s(e, (function (e) {
                t[e] = n[e]
            }))
        }

        d(c[0], e, o), d(c[1], e, a)
    }, t.getLayoutParams = function (e) {
        return p({}, e)
    }, t.copyLayoutParams = p
}, function (e, t, n) {
    var i = n(1), r = n(17), o = n(4);
    var a = i.normalizeCssArray, s = /([&<>"'])/g,
        l = {"&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;"};

    function c(e) {
        return null == e ? "" : (e + "").replace(s, (function (e, t) {
            return l[t]
        }))
    }

    var u = ["a", "b", "c", "d", "e", "f", "g"], h = function (e, t) {
        return "{" + e + (null == t ? "" : t) + "}"
    };

    function d(e, t) {
        return "0000".substr(0, t - (e += "").length) + e
    }

    var f = r.truncateText;
    t.addCommas = function (e) {
        return isNaN(e) ? "-" : (e = (e + "").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (e.length > 1 ? "." + e[1] : "")
    }, t.toCamelCase = function (e, t) {
        return e = (e || "").toLowerCase().replace(/-(.)/g, (function (e, t) {
            return t.toUpperCase()
        })), t && e && (e = e.charAt(0).toUpperCase() + e.slice(1)), e
    }, t.normalizeCssArray = a, t.encodeHTML = c, t.formatTpl = function (e, t, n) {
        i.isArray(t) || (t = [t]);
        var r = t.length;
        if (!r) return "";
        for (var o = t[0].$vars || [], a = 0; a < o.length; a++) {
            var s = u[a];
            e = e.replace(h(s), h(s, 0))
        }
        for (var l = 0; l < r; l++) for (var d = 0; d < o.length; d++) {
            var f = t[l][o[d]];
            e = e.replace(h(u[d], l), n ? c(f) : f)
        }
        return e
    }, t.formatTplSimple = function (e, t, n) {
        return i.each(t, (function (t, i) {
            e = e.replace("{" + i + "}", n ? c(t) : t)
        })), e
    }, t.getTooltipMarker = function (e, t) {
        var n = (e = i.isString(e) ? {color: e, extraCssText: t} : e || {}).color, r = e.type,
            o = (t = e.extraCssText, e.renderMode || "html"), a = e.markerId || "X";
        return n ? "html" === o ? "subItem" === r ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + c(n) + ";" + (t || "") + '"></span>' : '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + c(n) + ";" + (t || "") + '"></span>' : {
            renderMode: o,
            content: "{marker" + a + "|}  ",
            style: {color: n}
        } : ""
    }, t.formatTime = function (e, t, n) {
        "week" !== e && "month" !== e && "quarter" !== e && "half-year" !== e && "year" !== e || (e = "MM-dd\nyyyy");
        var i = o.parseDate(t), r = n ? "UTC" : "", a = i["get" + r + "FullYear"](), s = i["get" + r + "Month"]() + 1,
            l = i["get" + r + "Date"](), c = i["get" + r + "Hours"](), u = i["get" + r + "Minutes"](),
            h = i["get" + r + "Seconds"](), f = i["get" + r + "Milliseconds"]();
        return e = e.replace("MM", d(s, 2)).replace("M", s).replace("yyyy", a).replace("yy", a % 100).replace("dd", d(l, 2)).replace("d", l).replace("hh", d(c, 2)).replace("h", c).replace("mm", d(u, 2)).replace("m", u).replace("ss", d(h, 2)).replace("s", h).replace("SSS", d(f, 3))
    }, t.capitalFirst = function (e) {
        return e ? e.charAt(0).toUpperCase() + e.substr(1) : e
    }, t.truncateText = f, t.getTextBoundingRect = function (e) {
        return r.getBoundingRect(e.text, e.font, e.textAlign, e.textVerticalAlign, e.textPadding, e.textLineHeight, e.rich, e.truncate)
    }, t.getTextRect = function (e, t, n, i, o, a, s, l) {
        return r.getBoundingRect(e, t, n, i, o, l, a, s)
    }, t.windowOpen = function (e, t) {
        if ("_blank" === t || "blank" === t) {
            var n = window.open();
            n.opener = null, n.location = e
        } else window.open(e, t)
    }
}, function (e, t) {
    var n = "undefined" == typeof Float32Array ? Array : Float32Array;

    function i(e) {
        return Math.sqrt(o(e))
    }

    var r = i;

    function o(e) {
        return e[0] * e[0] + e[1] * e[1]
    }

    var a = o;

    function s(e, t) {
        return Math.sqrt((e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1]))
    }

    var l = s;

    function c(e, t) {
        return (e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1])
    }

    var u = c;
    t.create = function (e, t) {
        var i = new n(2);
        return null == e && (e = 0), null == t && (t = 0), i[0] = e, i[1] = t, i
    }, t.copy = function (e, t) {
        return e[0] = t[0], e[1] = t[1], e
    }, t.clone = function (e) {
        var t = new n(2);
        return t[0] = e[0], t[1] = e[1], t
    }, t.set = function (e, t, n) {
        return e[0] = t, e[1] = n, e
    }, t.add = function (e, t, n) {
        return e[0] = t[0] + n[0], e[1] = t[1] + n[1], e
    }, t.scaleAndAdd = function (e, t, n, i) {
        return e[0] = t[0] + n[0] * i, e[1] = t[1] + n[1] * i, e
    }, t.sub = function (e, t, n) {
        return e[0] = t[0] - n[0], e[1] = t[1] - n[1], e
    }, t.len = i, t.length = r, t.lenSquare = o, t.lengthSquare = a, t.mul = function (e, t, n) {
        return e[0] = t[0] * n[0], e[1] = t[1] * n[1], e
    }, t.div = function (e, t, n) {
        return e[0] = t[0] / n[0], e[1] = t[1] / n[1], e
    }, t.dot = function (e, t) {
        return e[0] * t[0] + e[1] * t[1]
    }, t.scale = function (e, t, n) {
        return e[0] = t[0] * n, e[1] = t[1] * n, e
    }, t.normalize = function (e, t) {
        var n = i(t);
        return 0 === n ? (e[0] = 0, e[1] = 0) : (e[0] = t[0] / n, e[1] = t[1] / n), e
    }, t.distance = s, t.dist = l, t.distanceSquare = c, t.distSquare = u, t.negate = function (e, t) {
        return e[0] = -t[0], e[1] = -t[1], e
    }, t.lerp = function (e, t, n, i) {
        return e[0] = t[0] + i * (n[0] - t[0]), e[1] = t[1] + i * (n[1] - t[1]), e
    }, t.applyTransform = function (e, t, n) {
        var i = t[0], r = t[1];
        return e[0] = n[0] * i + n[2] * r + n[4], e[1] = n[1] * i + n[3] * r + n[5], e
    }, t.min = function (e, t, n) {
        return e[0] = Math.min(t[0], n[0]), e[1] = Math.min(t[1], n[1]), e
    }, t.max = function (e, t, n) {
        return e[0] = Math.max(t[0], n[0]), e[1] = Math.max(t[1], n[1]), e
    }
}, function (e, t, n) {
    var i, r, o, a, s = n(9), l = n(16), c = s.applyTransform, u = Math.min, h = Math.max;

    function d(e, t, n, i) {
        n < 0 && (e += n, n = -n), i < 0 && (t += i, i = -i), this.x = e, this.y = t, this.width = n, this.height = i
    }

    d.prototype = {
        constructor: d, union: function (e) {
            var t = u(e.x, this.x), n = u(e.y, this.y);
            this.width = h(e.x + e.width, this.x + this.width) - t, this.height = h(e.y + e.height, this.y + this.height) - n, this.x = t, this.y = n
        }, applyTransform: (i = [], r = [], o = [], a = [], function (e) {
            if (e) {
                i[0] = o[0] = this.x, i[1] = a[1] = this.y, r[0] = a[0] = this.x + this.width, r[1] = o[1] = this.y + this.height, c(i, i, e), c(r, r, e), c(o, o, e), c(a, a, e), this.x = u(i[0], r[0], o[0], a[0]), this.y = u(i[1], r[1], o[1], a[1]);
                var t = h(i[0], r[0], o[0], a[0]), n = h(i[1], r[1], o[1], a[1]);
                this.width = t - this.x, this.height = n - this.y
            }
        }), calculateTransform: function (e) {
            var t = this, n = e.width / t.width, i = e.height / t.height, r = l.create();
            return l.translate(r, r, [-t.x, -t.y]), l.scale(r, r, [n, i]), l.translate(r, r, [e.x, e.y]), r
        }, intersect: function (e) {
            if (!e) return !1;
            e instanceof d || (e = d.create(e));
            var t = this, n = t.x, i = t.x + t.width, r = t.y, o = t.y + t.height, a = e.x, s = e.x + e.width, l = e.y,
                c = e.y + e.height;
            return !(i < a || s < n || o < l || c < r)
        }, contain: function (e, t) {
            return e >= this.x && e <= this.x + this.width && t >= this.y && t <= this.y + this.height
        }, clone: function () {
            return new d(this.x, this.y, this.width, this.height)
        }, copy: function (e) {
            this.x = e.x, this.y = e.y, this.width = e.width, this.height = e.height
        }, plain: function () {
            return {x: this.x, y: this.y, width: this.width, height: this.height}
        }
    }, d.create = function (e) {
        return new d(e.x, e.y, e.width, e.height)
    };
    var f = d;
    e.exports = f
}, function (e, t, n) {
    var i = n(62), r = n(1), o = n(48), a = n(281), s = n(150).prototype.getCanvasPattern, l = Math.abs, c = new o(!0);

    function u(e) {
        i.call(this, e), this.path = null
    }

    u.prototype = {
        constructor: u,
        type: "path",
        __dirtyPath: !0,
        strokeContainThreshold: 5,
        segmentIgnoreThreshold: 0,
        subPixelOptimize: !1,
        brush: function (e, t) {
            var n, i = this.style, r = this.path || c, o = i.hasStroke(), a = i.hasFill(), l = i.fill, u = i.stroke,
                h = a && !!l.colorStops, d = o && !!u.colorStops, f = a && !!l.image, g = o && !!u.image;
            (i.bind(e, this, t), this.setTransform(e), this.__dirty) && (h && (n = n || this.getBoundingRect(), this._fillGradient = i.getGradient(e, l, n)), d && (n = n || this.getBoundingRect(), this._strokeGradient = i.getGradient(e, u, n)));
            h ? e.fillStyle = this._fillGradient : f && (e.fillStyle = s.call(l, e)), d ? e.strokeStyle = this._strokeGradient : g && (e.strokeStyle = s.call(u, e));
            var p = i.lineDash, m = i.lineDashOffset, v = !!e.setLineDash, y = this.getGlobalScale();
            if (r.setScale(y[0], y[1], this.segmentIgnoreThreshold), this.__dirtyPath || p && !v && o ? (r.beginPath(e), p && !v && (r.setLineDash(p), r.setLineDashOffset(m)), this.buildPath(r, this.shape, !1), this.path && (this.__dirtyPath = !1)) : (e.beginPath(), this.path.rebuildPath(e)), a) if (null != i.fillOpacity) {
                var b = e.globalAlpha;
                e.globalAlpha = i.fillOpacity * i.opacity, r.fill(e), e.globalAlpha = b
            } else r.fill(e);
            if (p && v && (e.setLineDash(p), e.lineDashOffset = m), o) if (null != i.strokeOpacity) {
                b = e.globalAlpha;
                e.globalAlpha = i.strokeOpacity * i.opacity, r.stroke(e), e.globalAlpha = b
            } else r.stroke(e);
            p && v && e.setLineDash([]), null != i.text && (this.restoreTransform(e), this.drawRectText(e, this.getBoundingRect()))
        },
        buildPath: function (e, t, n) {
        },
        createPathProxy: function () {
            this.path = new o
        },
        getBoundingRect: function () {
            var e = this._rect, t = this.style, n = !e;
            if (n) {
                var i = this.path;
                i || (i = this.path = new o), this.__dirtyPath && (i.beginPath(), this.buildPath(i, this.shape, !1)), e = i.getBoundingRect()
            }
            if (this._rect = e, t.hasStroke()) {
                var r = this._rectWithStroke || (this._rectWithStroke = e.clone());
                if (this.__dirty || n) {
                    r.copy(e);
                    var a = t.lineWidth, s = t.strokeNoScale ? this.getLineScale() : 1;
                    t.hasFill() || (a = Math.max(a, this.strokeContainThreshold || 4)), s > 1e-10 && (r.width += a / s, r.height += a / s, r.x -= a / s / 2, r.y -= a / s / 2)
                }
                return r
            }
            return e
        },
        contain: function (e, t) {
            var n = this.transformCoordToLocal(e, t), i = this.getBoundingRect(), r = this.style;
            if (e = n[0], t = n[1], i.contain(e, t)) {
                var o = this.path.data;
                if (r.hasStroke()) {
                    var s = r.lineWidth, l = r.strokeNoScale ? this.getLineScale() : 1;
                    if (l > 1e-10 && (r.hasFill() || (s = Math.max(s, this.strokeContainThreshold)), a.containStroke(o, s / l, e, t))) return !0
                }
                if (r.hasFill()) return a.contain(o, e, t)
            }
            return !1
        },
        dirty: function (e) {
            null == e && (e = !0), e && (this.__dirtyPath = e, this._rect = null), this.__dirty = this.__dirtyText = !0, this.__zr && this.__zr.refresh(), this.__clipTarget && this.__clipTarget.dirty()
        },
        animateShape: function (e) {
            return this.animate("shape", e)
        },
        attrKV: function (e, t) {
            "shape" === e ? (this.setShape(t), this.__dirtyPath = !0, this._rect = null) : i.prototype.attrKV.call(this, e, t)
        },
        setShape: function (e, t) {
            var n = this.shape;
            if (n) {
                if (r.isObject(e)) for (var i in e) e.hasOwnProperty(i) && (n[i] = e[i]); else n[e] = t;
                this.dirty(!0)
            }
            return this
        },
        getLineScale: function () {
            var e = this.transform;
            return e && l(e[0] - 1) > 1e-10 && l(e[3] - 1) > 1e-10 ? Math.sqrt(l(e[0] * e[3] - e[2] * e[1])) : 1
        }
    }, u.extend = function (e) {
        var t = function (t) {
            u.call(this, t), e.style && this.style.extendFrom(e.style, !1);
            var n = e.shape;
            if (n) {
                this.shape = this.shape || {};
                var i = this.shape;
                for (var r in n) !i.hasOwnProperty(r) && n.hasOwnProperty(r) && (i[r] = n[r])
            }
            e.init && e.init.call(this, t)
        };
        for (var n in r.inherits(t, u), e) "style" !== n && "shape" !== n && (t.prototype[n] = e[n]);
        return t
    }, r.inherits(u, i);
    var h = u;
    e.exports = h
}, function (e, t) {
    var n = "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? {
        browser: {},
        os: {},
        node: !1,
        wxa: !0,
        canvasSupported: !0,
        svgSupported: !1,
        touchEventsSupported: !0,
        domSupported: !1
    } : "undefined" == typeof document && "undefined" != typeof self ? {
        browser: {},
        os: {},
        node: !1,
        worker: !0,
        canvasSupported: !0,
        domSupported: !1
    } : "undefined" == typeof navigator ? {
        browser: {},
        os: {},
        node: !0,
        worker: !1,
        canvasSupported: !0,
        svgSupported: !0,
        domSupported: !1
    } : function (e) {
        var t = {}, n = e.match(/Firefox\/([\d.]+)/),
            i = e.match(/MSIE\s([\d.]+)/) || e.match(/Trident\/.+?rv:(([\d.]+))/), r = e.match(/Edge\/([\d.]+)/),
            o = /micromessenger/i.test(e);
        n && (t.firefox = !0, t.version = n[1]);
        i && (t.ie = !0, t.version = i[1]);
        r && (t.edge = !0, t.version = r[1]);
        o && (t.weChat = !0);
        return {
            browser: t,
            os: {},
            node: !1,
            canvasSupported: !!document.createElement("canvas").getContext,
            svgSupported: "undefined" != typeof SVGRect,
            touchEventsSupported: "ontouchstart" in window && !t.ie && !t.edge,
            pointerEventsSupported: "onpointerdown" in window && (t.edge || t.ie && t.version >= 11),
            domSupported: "undefined" != typeof document
        }
    }(navigator.userAgent);
    e.exports = n
}, function (e, t, n) {
    var i = n(1), r = n(12), o = n(5).makeInner, a = n(28), s = a.enableClassExtend, l = a.enableClassCheck, c = n(278),
        u = n(279), h = n(280), d = n(293), f = i.mixin, g = o();

    function p(e, t, n) {
        this.parentModel = t, this.ecModel = n, this.option = e
    }

    function m(e, t, n) {
        for (var i = 0; i < t.length && (!t[i] || null != (e = e && "object" == typeof e ? e[t[i]] : null)); i++) ;
        return null == e && n && (e = n.get(t)), e
    }

    function v(e, t) {
        var n = g(e).getParent;
        return n ? n.call(e, t) : e.parentModel
    }

    p.prototype = {
        constructor: p, init: null, mergeOption: function (e) {
            i.merge(this.option, e, !0)
        }, get: function (e, t) {
            return null == e ? this.option : m(this.option, this.parsePath(e), !t && v(this, e))
        }, getShallow: function (e, t) {
            var n = this.option, i = null == n ? n : n[e], r = !t && v(this, e);
            return null == i && r && (i = r.getShallow(e)), i
        }, getModel: function (e, t) {
            var n;
            return new p(null == e ? this.option : m(this.option, e = this.parsePath(e)), t = t || (n = v(this, e)) && n.getModel(e), this.ecModel)
        }, isEmpty: function () {
            return null == this.option
        }, restoreData: function () {
        }, clone: function () {
            return new (0, this.constructor)(i.clone(this.option))
        }, setReadOnly: function (e) {
        }, parsePath: function (e) {
            return "string" == typeof e && (e = e.split(".")), e
        }, customizeGetParent: function (e) {
            g(this).getParent = e
        }, isAnimationEnabled: function () {
            if (!r.node) {
                if (null != this.option.animation) return !!this.option.animation;
                if (this.parentModel) return this.parentModel.isAnimationEnabled()
            }
        }
    }, s(p), l(p), f(p, c), f(p, u), f(p, h), f(p, d);
    var y = p;
    e.exports = y
}, function (e, t, n) {
    var i = n(1), r = n(13), o = n(64), a = n(28), s = a.enableClassManagement, l = a.parseClassType,
        c = n(5).makeInner, u = n(7), h = n(294), d = c(), f = r.extend({
            type: "component",
            id: "",
            name: "",
            mainType: "",
            subType: "",
            componentIndex: 0,
            defaultOption: null,
            ecModel: null,
            dependentModels: [],
            uid: null,
            layoutMode: null,
            $constructor: function (e, t, n, i) {
                r.call(this, e, t, n, i), this.uid = o.getUID("ec_cpt_model")
            },
            init: function (e, t, n, i) {
                this.mergeDefaultAndTheme(e, n)
            },
            mergeDefaultAndTheme: function (e, t) {
                var n = this.layoutMode, r = n ? u.getLayoutParams(e) : {}, o = t.getTheme();
                i.merge(e, o.get(this.mainType)), i.merge(e, this.getDefaultOption()), n && u.mergeLayoutParam(e, r, n)
            },
            mergeOption: function (e, t) {
                i.merge(this.option, e, !0);
                var n = this.layoutMode;
                n && u.mergeLayoutParam(this.option, e, n)
            },
            optionUpdated: function (e, t) {
            },
            getDefaultOption: function () {
                var e = d(this);
                if (!e.defaultOption) {
                    for (var t = [], n = this.constructor; n;) {
                        var r = n.prototype.defaultOption;
                        r && t.push(r), n = n.superClass
                    }
                    for (var o = {}, a = t.length - 1; a >= 0; a--) o = i.merge(o, t[a], !0);
                    e.defaultOption = o
                }
                return e.defaultOption
            },
            getReferringComponents: function (e) {
                return this.ecModel.queryComponents({
                    mainType: e,
                    index: this.get(e + "Index", !0),
                    id: this.get(e + "Id", !0)
                })
            }
        });
    s(f, {registerWhenExtend: !0}), o.enableSubTypeDefaulter(f), o.enableTopologicalTravel(f, (function (e) {
        var t = [];
        i.each(f.getClassesByMainType(e), (function (e) {
            t = t.concat(e.prototype.dependencies || [])
        })), t = i.map(t, (function (e) {
            return l(e).main
        })), "dataset" !== e && i.indexOf(t, "dataset") <= 0 && t.unshift("dataset");
        return t
    })), i.mixin(f, h);
    var g = f;
    e.exports = g
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(12), o = n(8), a = o.formatTime, s = o.encodeHTML, l = o.addCommas, c = o.getTooltipMarker,
        u = n(5), h = n(14), d = n(166), f = n(109), g = n(7), p = g.getLayoutParams, m = g.mergeLayoutParam,
        v = n(110).createTask, y = n(29), b = y.prepareSource, C = y.getSource, w = n(40).retrieveRawValue,
        I = u.makeInner(), x = h.extend({
            type: "series.__base__",
            seriesIndex: 0,
            coordinateSystem: null,
            defaultOption: null,
            legendVisualProvider: null,
            visualColorAccessPath: "itemStyle.color",
            visualBorderColorAccessPath: "itemStyle.borderColor",
            layoutMode: null,
            init: function (e, t, n, i) {
                this.seriesIndex = this.componentIndex, this.dataTask = v({
                    count: _,
                    reset: S
                }), this.dataTask.context = {model: this}, this.mergeDefaultAndTheme(e, n), b(this);
                var r = this.getInitialData(e, n);
                L(r, this), this.dataTask.context.data = r, I(this).dataBeforeProcessed = r, A(this)
            },
            mergeDefaultAndTheme: function (e, t) {
                var n = this.layoutMode, r = n ? p(e) : {}, o = this.subType;
                h.hasClass(o) && (o += "Series"), i.merge(e, t.getTheme().get(this.subType)), i.merge(e, this.getDefaultOption()), u.defaultEmphasis(e, "label", ["show"]), this.fillDataTextStyle(e.data), n && m(e, r, n)
            },
            mergeOption: function (e, t) {
                e = i.merge(this.option, e, !0), this.fillDataTextStyle(e.data);
                var n = this.layoutMode;
                n && m(this.option, e, n), b(this);
                var r = this.getInitialData(e, t);
                L(r, this), this.dataTask.dirty(), this.dataTask.context.data = r, I(this).dataBeforeProcessed = r, A(this)
            },
            fillDataTextStyle: function (e) {
                if (e && !i.isTypedArray(e)) for (var t = ["show"], n = 0; n < e.length; n++) e[n] && e[n].label && u.defaultEmphasis(e[n], "label", t)
            },
            getInitialData: function () {
            },
            appendData: function (e) {
                this.getRawData().appendData(e.data)
            },
            getData: function (e) {
                var t = O(this);
                if (t) {
                    var n = t.context.data;
                    return null == e ? n : n.getLinkedData(e)
                }
                return I(this).data
            },
            setData: function (e) {
                var t = O(this);
                if (t) {
                    var n = t.context;
                    n.data !== e && t.modifyOutputEnd && t.setOutputEnd(e.count()), n.outputData = e, t !== this.dataTask && (n.data = e)
                }
                I(this).data = e
            },
            getSource: function () {
                return C(this)
            },
            getRawData: function () {
                return I(this).dataBeforeProcessed
            },
            getBaseAxis: function () {
                var e = this.coordinateSystem;
                return e && e.getBaseAxis && e.getBaseAxis()
            },
            formatTooltip: function (e, t, n, r) {
                var o = this, h = "html" === (r = r || "html") ? "<br/>" : "\n", d = "richText" === r, f = {}, g = 0;

                function p(e) {
                    return {renderMode: r, content: s(l(e)), style: f}
                }

                var m = this.getData(), v = m.mapDimension("defaultedTooltip", !0), y = v.length, b = this.getRawValue(e),
                    C = i.isArray(b), I = m.getItemVisual(e, "color");
                i.isObject(I) && I.colorStops && (I = (I.colorStops[0] || {}).color), I = I || "transparent";
                var x = (y > 1 || C && !y ? function (n) {
                        var u = i.reduce(n, (function (e, t, n) {
                            var i = m.getDimensionInfo(n);
                            return e | (i && !1 !== i.tooltip && null != i.displayName)
                        }), 0), h = [];

                        function p(e, n) {
                            var i = m.getDimensionInfo(n);
                            if (i && !1 !== i.otherDims.tooltip) {
                                var p = i.type, v = "sub" + o.seriesIndex + "at" + g,
                                    y = c({color: I, type: "subItem", renderMode: r, markerId: v}),
                                    b = "string" == typeof y ? y : y.content,
                                    C = (u ? b + s(i.displayName || "-") + ": " : "") + s("ordinal" === p ? e + "" : "time" === p ? t ? "" : a("yyyy/MM/dd hh:mm:ss", e) : l(e));
                                C && h.push(C), d && (f[v] = I, ++g)
                            }
                        }

                        v.length ? i.each(v, (function (t) {
                            p(w(m, e, t), t)
                        })) : i.each(n, p);
                        var y = u ? d ? "\n" : "<br/>" : "", b = y + h.join(y || ", ");
                        return {renderMode: r, content: b, style: f}
                    }(b) : p(y ? w(m, e, v[0]) : C ? b[0] : b)).content, A = o.seriesIndex + "at" + g,
                    _ = c({color: I, type: "item", renderMode: r, markerId: A});
                f[A] = I, ++g;
                var S = m.getName(e), k = this.name;
                u.isNameSpecified(this) || (k = ""), k = k ? s(k) + (t ? ": " : h) : "";
                var L = "string" == typeof _ ? _ : _.content;
                return {html: t ? L + k + x : k + L + (S ? s(S) + ": " + x : x), markers: f}
            },
            isAnimationEnabled: function () {
                if (r.node) return !1;
                var e = this.getShallow("animation");
                return e && this.getData().count() > this.getShallow("animationThreshold") && (e = !1), e
            },
            restoreData: function () {
                this.dataTask.dirty()
            },
            getColorFromPalette: function (e, t, n) {
                var i = this.ecModel, r = d.getColorFromPalette.call(this, e, t, n);
                return r || (r = i.getColorFromPalette(e, t, n)), r
            },
            coordDimToDataDim: function (e) {
                return this.getRawData().mapDimension(e, !0)
            },
            getProgressive: function () {
                return this.get("progressive")
            },
            getProgressiveThreshold: function () {
                return this.get("progressiveThreshold")
            },
            getAxisTooltipData: null,
            getTooltipPosition: null,
            pipeTask: null,
            preventIncremental: null,
            pipelineContext: null
        });

    function A(e) {
        var t = e.name;
        u.isNameSpecified(e) || (e.name = function (e) {
            var t = e.getRawData(), n = t.mapDimension("seriesName", !0), r = [];
            return i.each(n, (function (e) {
                var n = t.getDimensionInfo(e);
                n.displayName && r.push(n.displayName)
            })), r.join(" ")
        }(e) || t)
    }

    function _(e) {
        return e.model.getRawData().count()
    }

    function S(e) {
        var t = e.model;
        return t.setData(t.getRawData().cloneShallow()), k
    }

    function k(e, t) {
        t.outputData && e.end > t.outputData.count() && t.model.getRawData().cloneShallow(t.outputData)
    }

    function L(e, t) {
        i.each(e.CHANGABLE_METHODS, (function (n) {
            e.wrapMethod(n, i.curry(T, t))
        }))
    }

    function T(e) {
        var t = O(e);
        t && t.setOutputEnd(this.count())
    }

    function O(e) {
        var t = (e.ecModel || {}).scheduler, n = t && t.getPipeline(e.uid);
        if (n) {
            var i = n.currentTask;
            if (i) {
                var r = i.agentStubMap;
                r && (i = r.get(e.uid))
            }
            return i
        }
    }

    i.mixin(x, f), i.mixin(x, d);
    var R = x;
    e.exports = R
}, function (e, t) {
    var n = "undefined" == typeof Float32Array ? Array : Float32Array;

    function i() {
        var e = new n(6);
        return r(e), e
    }

    function r(e) {
        return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 1, e[4] = 0, e[5] = 0, e
    }

    function o(e, t) {
        return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4], e[5] = t[5], e
    }

    t.create = i, t.identity = r, t.copy = o, t.mul = function (e, t, n) {
        var i = t[0] * n[0] + t[2] * n[1], r = t[1] * n[0] + t[3] * n[1], o = t[0] * n[2] + t[2] * n[3],
            a = t[1] * n[2] + t[3] * n[3], s = t[0] * n[4] + t[2] * n[5] + t[4], l = t[1] * n[4] + t[3] * n[5] + t[5];
        return e[0] = i, e[1] = r, e[2] = o, e[3] = a, e[4] = s, e[5] = l, e
    }, t.translate = function (e, t, n) {
        return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4] + n[0], e[5] = t[5] + n[1], e
    }, t.rotate = function (e, t, n) {
        var i = t[0], r = t[2], o = t[4], a = t[1], s = t[3], l = t[5], c = Math.sin(n), u = Math.cos(n);
        return e[0] = i * u + a * c, e[1] = -i * c + a * u, e[2] = r * u + s * c, e[3] = -r * c + u * s, e[4] = u * o + c * l, e[5] = u * l - c * o, e
    }, t.scale = function (e, t, n) {
        var i = n[0], r = n[1];
        return e[0] = t[0] * i, e[1] = t[1] * r, e[2] = t[2] * i, e[3] = t[3] * r, e[4] = t[4] * i, e[5] = t[5] * r, e
    }, t.invert = function (e, t) {
        var n = t[0], i = t[2], r = t[4], o = t[1], a = t[3], s = t[5], l = n * a - o * i;
        return l ? (l = 1 / l, e[0] = a * l, e[1] = -o * l, e[2] = -i * l, e[3] = n * l, e[4] = (i * s - a * r) * l, e[5] = (o * r - n * s) * l, e) : null
    }, t.clone = function (e) {
        var t = i();
        return o(t, e), t
    }
}, function (e, t, n) {
    var i = n(10), r = n(104), o = n(1), a = o.getContext, s = o.extend, l = o.retrieve2, c = o.retrieve3, u = o.trim,
        h = {}, d = 0, f = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g, g = {};

    function p(e, t) {
        var n = e + ":" + (t = t || "12px sans-serif");
        if (h[n]) return h[n];
        for (var i = (e + "").split("\n"), r = 0, o = 0, a = i.length; o < a; o++) r = Math.max(A(i[o], t).width, r);
        return d > 5e3 && (d = 0, h = {}), d++, h[n] = r, r
    }

    function m(e, t, n) {
        return "right" === n ? e -= t : "center" === n && (e -= t / 2), e
    }

    function v(e, t, n) {
        return "middle" === n ? e -= t / 2 : "bottom" === n && (e -= t), e
    }

    function y(e, t, n) {
        var i = t.textPosition, r = t.textDistance, o = n.x, a = n.y;
        r = r || 0;
        var s = n.height, l = n.width, c = s / 2, u = "left", h = "top";
        switch (i) {
            case"left":
                o -= r, a += c, u = "right", h = "middle";
                break;
            case"right":
                o += r + l, a += c, h = "middle";
                break;
            case"top":
                o += l / 2, a -= r, u = "center", h = "bottom";
                break;
            case"bottom":
                o += l / 2, a += s + r, u = "center";
                break;
            case"inside":
                o += l / 2, a += c, u = "center", h = "middle";
                break;
            case"insideLeft":
                o += r, a += c, h = "middle";
                break;
            case"insideRight":
                o += l - r, a += c, u = "right", h = "middle";
                break;
            case"insideTop":
                o += l / 2, a += r, u = "center";
                break;
            case"insideBottom":
                o += l / 2, a += s - r, u = "center", h = "bottom";
                break;
            case"insideTopLeft":
                o += r, a += r;
                break;
            case"insideTopRight":
                o += l - r, a += r, u = "right";
                break;
            case"insideBottomLeft":
                o += r, a += s - r, h = "bottom";
                break;
            case"insideBottomRight":
                o += l - r, a += s - r, u = "right", h = "bottom"
        }
        return (e = e || {}).x = o, e.y = a, e.textAlign = u, e.textVerticalAlign = h, e
    }

    function b(e, t, n, i, r) {
        if (!t) return "";
        var o = (e + "").split("\n");
        r = C(t, n, i, r);
        for (var a = 0, s = o.length; a < s; a++) o[a] = w(o[a], r);
        return o.join("\n")
    }

    function C(e, t, n, i) {
        (i = s({}, i)).font = t;
        n = l(n, "...");
        i.maxIterations = l(i.maxIterations, 2);
        var r = i.minChar = l(i.minChar, 0);
        i.cnCharWidth = p("国", t);
        var o = i.ascCharWidth = p("a", t);
        i.placeholder = l(i.placeholder, "");
        for (var a = e = Math.max(0, e - 1), c = 0; c < r && a >= o; c++) a -= o;
        var u = p(n, t);
        return u > a && (n = "", u = 0), a = e - u, i.ellipsis = n, i.ellipsisWidth = u, i.contentWidth = a, i.containerWidth = e, i
    }

    function w(e, t) {
        var n = t.containerWidth, i = t.font, r = t.contentWidth;
        if (!n) return "";
        var o = p(e, i);
        if (o <= n) return e;
        for (var a = 0; ; a++) {
            if (o <= r || a >= t.maxIterations) {
                e += t.ellipsis;
                break
            }
            var s = 0 === a ? I(e, r, t.ascCharWidth, t.cnCharWidth) : o > 0 ? Math.floor(e.length * r / o) : 0;
            o = p(e = e.substr(0, s), i)
        }
        return "" === e && (e = t.placeholder), e
    }

    function I(e, t, n, i) {
        for (var r = 0, o = 0, a = e.length; o < a && r < t; o++) {
            var s = e.charCodeAt(o);
            r += 0 <= s && s <= 127 ? n : i
        }
        return o
    }

    function x(e) {
        return p("国", e)
    }

    function A(e, t) {
        return g.measureText(e, t)
    }

    function _(e, t, n, i, r) {
        null != e && (e += "");
        var o = l(i, x(t)), a = e ? e.split("\n") : [], s = a.length * o, c = s, u = !0;
        if (n && (c += n[0] + n[2]), e && r) {
            u = !1;
            var h = r.outerHeight, d = r.outerWidth;
            if (null != h && c > h) e = "", a = []; else if (null != d) for (var f = C(d - (n ? n[1] + n[3] : 0), t, r.ellipsis, {
                minChar: r.minChar,
                placeholder: r.placeholder
            }), g = 0, p = a.length; g < p; g++) a[g] = w(a[g], f)
        }
        return {lines: a, height: s, outerHeight: c, lineHeight: o, canCacheByTextString: u}
    }

    function S(e, t) {
        var n = {lines: [], width: 0, height: 0};
        if (null != e && (e += ""), !e) return n;
        for (var i, o = f.lastIndex = 0; null != (i = f.exec(e));) {
            var a = i.index;
            a > o && k(n, e.substring(o, a)), k(n, i[2], i[1]), o = f.lastIndex
        }
        o < e.length && k(n, e.substring(o, e.length));
        var s = n.lines, u = 0, h = 0, d = [], g = t.textPadding, m = t.truncate, v = m && m.outerWidth,
            y = m && m.outerHeight;
        g && (null != v && (v -= g[1] + g[3]), null != y && (y -= g[0] + g[2]));
        for (var C = 0; C < s.length; C++) {
            for (var w = s[C], I = 0, A = 0, _ = 0; _ < w.tokens.length; _++) {
                var S = (B = w.tokens[_]).styleName && t.rich[B.styleName] || {}, L = B.textPadding = S.textPadding,
                    T = B.font = S.font || t.font, O = B.textHeight = l(S.textHeight, x(T));
                if (L && (O += L[0] + L[2]), B.height = O, B.lineHeight = c(S.textLineHeight, t.textLineHeight, O), B.textAlign = S && S.textAlign || t.textAlign, B.textVerticalAlign = S && S.textVerticalAlign || "middle", null != y && u + B.lineHeight > y) return {
                    lines: [],
                    width: 0,
                    height: 0
                };
                B.textWidth = p(B.text, T);
                var R = S.textWidth, E = null == R || "auto" === R;
                if ("string" == typeof R && "%" === R.charAt(R.length - 1)) B.percentWidth = R, d.push(B), R = 0; else {
                    if (E) {
                        R = B.textWidth;
                        var P = S.textBackgroundColor, M = P && P.image;
                        M && (M = r.findExistImage(M), r.isImageReady(M) && (R = Math.max(R, M.width * O / M.height)))
                    }
                    var N = L ? L[1] + L[3] : 0;
                    R += N;
                    var D = null != v ? v - A : null;
                    null != D && D < R && (!E || D < N ? (B.text = "", B.textWidth = R = 0) : (B.text = b(B.text, D - N, T, m.ellipsis, {minChar: m.minChar}), B.textWidth = p(B.text, T), R = B.textWidth + N))
                }
                A += B.width = R, S && (I = Math.max(I, B.lineHeight))
            }
            w.width = A, w.lineHeight = I, u += I, h = Math.max(h, A)
        }
        n.outerWidth = n.width = l(t.textWidth, h), n.outerHeight = n.height = l(t.textHeight, u), g && (n.outerWidth += g[1] + g[3], n.outerHeight += g[0] + g[2]);
        for (C = 0; C < d.length; C++) {
            var B, j = (B = d[C]).percentWidth;
            B.width = parseInt(j, 10) / 100 * h
        }
        return n
    }

    function k(e, t, n) {
        for (var i = "" === t, r = t.split("\n"), o = e.lines, a = 0; a < r.length; a++) {
            var s = r[a], l = {styleName: n, text: s, isLineHolder: !s && !i};
            if (a) o.push({tokens: [l]}); else {
                var c = (o[o.length - 1] || (o[0] = {tokens: []})).tokens, u = c.length;
                1 === u && c[0].isLineHolder ? c[0] = l : (s || !u || i) && c.push(l)
            }
        }
    }

    g.measureText = function (e, t) {
        var n = a();
        return n.font = t || "12px sans-serif", n.measureText(e)
    }, t.DEFAULT_FONT = "12px sans-serif", t.$override = function (e, t) {
        g[e] = t
    }, t.getWidth = p, t.getBoundingRect = function (e, t, n, r, o, a, s, l) {
        return s ? function (e, t, n, r, o, a, s, l) {
            var c = S(e, {rich: s, truncate: l, font: t, textAlign: n, textPadding: o, textLineHeight: a}),
                u = c.outerWidth, h = c.outerHeight, d = m(0, u, n), f = v(0, h, r);
            return new i(d, f, u, h)
        }(e, t, n, r, o, a, s, l) : function (e, t, n, r, o, a, s) {
            var l = _(e, t, o, a, s), c = p(e, t);
            o && (c += o[1] + o[3]);
            var u = l.outerHeight, h = m(0, c, n), d = v(0, u, r), f = new i(h, d, c, u);
            return f.lineHeight = l.lineHeight, f
        }(e, t, n, r, o, a, l)
    }, t.adjustTextX = m, t.adjustTextY = v, t.calculateTextPosition = y, t.adjustTextPositionOnRect = function (e, t, n) {
        return y({}, {textPosition: e, textDistance: n}, t)
    }, t.truncateText = b, t.getLineHeight = x, t.measureText = A, t.parsePlainText = _, t.parseRichText = S, t.makeFont = function (e) {
        var t = (e.fontSize || e.fontFamily) && [e.fontStyle, e.fontWeight, (e.fontSize || 12) + "px", e.fontFamily || "sans-serif"].join(" ");
        return t && u(t) || e.textFont || e.font
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    t.default = function e(t, n) {
        !function (e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }(this, e), this.data = t, this.text = n.text || t, this.options = n
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(13), o = n(41), a = n(65), s = n(40), l = s.defaultDimValueGetters, c = s.DefaultDataProvider,
        u = n(67).summarizeDimensions, h = n(171), d = i.isObject, f = {
            float: "undefined" == typeof Float64Array ? Array : Float64Array,
            int: "undefined" == typeof Int32Array ? Array : Int32Array,
            ordinal: Array,
            number: Array,
            time: Array
        }, g = "undefined" == typeof Uint32Array ? Array : Uint32Array,
        p = "undefined" == typeof Int32Array ? Array : Int32Array,
        m = "undefined" == typeof Uint16Array ? Array : Uint16Array;

    function v(e) {
        return e._rawCount > 65535 ? g : m
    }

    var y = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx"],
        b = ["_extent", "_approximateExtent", "_rawExtent"];

    function C(e, t) {
        i.each(y.concat(t.__wrappedMethods || []), (function (n) {
            t.hasOwnProperty(n) && (e[n] = t[n])
        })), e.__wrappedMethods = t.__wrappedMethods, i.each(b, (function (n) {
            e[n] = i.clone(t[n])
        })), e._calculationInfo = i.extend(t._calculationInfo)
    }

    var w = function (e, t) {
        e = e || ["x", "y"];
        for (var n = {}, r = [], o = {}, a = 0; a < e.length; a++) {
            var s = e[a];
            i.isString(s) ? s = new h({name: s}) : s instanceof h || (s = new h(s));
            var l = s.name;
            s.type = s.type || "float", s.coordDim || (s.coordDim = l, s.coordDimIndex = 0), s.otherDims = s.otherDims || {}, r.push(l), n[l] = s, s.index = a, s.createInvertedIndices && (o[l] = [])
        }
        this.dimensions = r, this._dimensionInfos = n, this.hostModel = t, this.dataType, this._indices = null, this._count = 0, this._rawCount = 0, this._storage = {}, this._nameList = [], this._idList = [], this._optionModels = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this.hasItemVisual = {}, this._itemLayouts = [], this._graphicEls = [], this._chunkSize = 1e5, this._chunkCount = 0, this._rawData, this._rawExtent = {}, this._extent = {}, this._approximateExtent = {}, this._dimensionsSummary = u(this), this._invertedIndicesMap = o, this._calculationInfo = {}, this.userOutput = this._dimensionsSummary.userOutput
    }, I = w.prototype;

    function x(e, t, n, i, r) {
        var o = f[t.type], a = i - 1, s = t.name, l = e[s][a];
        if (l && l.length < n) {
            for (var c = new o(Math.min(r - a * n, n)), u = 0; u < l.length; u++) c[u] = l[u];
            e[s][a] = c
        }
        for (var h = i * n; h < r; h += n) e[s].push(new o(Math.min(r - h, n)))
    }

    function A(e) {
        var t = e._invertedIndicesMap;
        i.each(t, (function (n, i) {
            var r = e._dimensionInfos[i].ordinalMeta;
            if (r) {
                n = t[i] = new p(r.categories.length);
                for (var o = 0; o < n.length; o++) n[o] = -1;
                for (o = 0; o < e._count; o++) n[e.get(i, o)] = o
            }
        }))
    }

    function _(e, t, n) {
        var i;
        if (null != t) {
            var r = e._chunkSize, o = Math.floor(n / r), a = n % r, s = e.dimensions[t], l = e._storage[s][o];
            if (l) {
                i = l[a];
                var c = e._dimensionInfos[s].ordinalMeta;
                c && c.categories.length && (i = c.categories[i])
            }
        }
        return i
    }

    function S(e) {
        return e
    }

    function k(e) {
        return e < this._count && e >= 0 ? this._indices[e] : -1
    }

    function L(e, t) {
        var n = e._idList[t];
        return null == n && (n = _(e, e._idDimIdx, t)), null == n && (n = "e\0\0" + t), n
    }

    function T(e) {
        return i.isArray(e) || (e = [e]), e
    }

    function O(e, t) {
        var n = e.dimensions, r = new w(i.map(n, e.getDimensionInfo, e), e.hostModel);
        C(r, e);
        for (var o = r._storage = {}, a = e._storage, s = 0; s < n.length; s++) {
            var l = n[s];
            a[l] && (i.indexOf(t, l) >= 0 ? (o[l] = R(a[l]), r._rawExtent[l] = E(), r._extent[l] = null) : o[l] = a[l])
        }
        return r
    }

    function R(e) {
        for (var t, n, i = new Array(e.length), r = 0; r < e.length; r++) i[r] = (t = e[r], n = void 0, (n = t.constructor) === Array ? t.slice() : new n(t));
        return i
    }

    function E() {
        return [1 / 0, -1 / 0]
    }

    I.type = "list", I.hasItemOption = !0, I.getDimension = function (e) {
        return "number" != typeof e && (isNaN(e) || this._dimensionInfos.hasOwnProperty(e)) || (e = this.dimensions[e]), e
    }, I.getDimensionInfo = function (e) {
        return this._dimensionInfos[this.getDimension(e)]
    }, I.getDimensionsOnCoord = function () {
        return this._dimensionsSummary.dataDimsOnCoord.slice()
    }, I.mapDimension = function (e, t) {
        var n = this._dimensionsSummary;
        if (null == t) return n.encodeFirstDimNotExtra[e];
        var i = n.encode[e];
        return !0 === t ? (i || []).slice() : i && i[t]
    }, I.initData = function (e, t, n) {
        (a.isInstance(e) || i.isArrayLike(e)) && (e = new c(e, this.dimensions.length)), this._rawData = e, this._storage = {}, this._indices = null, this._nameList = t || [], this._idList = [], this._nameRepeatCount = {}, n || (this.hasItemOption = !1), this.defaultDimValueGetter = l[this._rawData.getSource().sourceFormat], this._dimValueGetter = n = n || this.defaultDimValueGetter, this._dimValueGetterArrayRows = l.arrayRows, this._rawExtent = {}, this._initDataFromProvider(0, e.count()), e.pure && (this.hasItemOption = !1)
    }, I.getProvider = function () {
        return this._rawData
    }, I.appendData = function (e) {
        var t = this._rawData, n = this.count();
        t.appendData(e);
        var i = t.count();
        t.persistent || (i += n), this._initDataFromProvider(n, i)
    }, I.appendValues = function (e, t) {
        for (var n = this._chunkSize, i = this._storage, r = this.dimensions, o = r.length, a = this._rawExtent, s = this.count(), l = s + Math.max(e.length, t ? t.length : 0), c = this._chunkCount, u = 0; u < o; u++) {
            a[v = r[u]] || (a[v] = E()), i[v] || (i[v] = []), x(i, this._dimensionInfos[v], n, c, l), this._chunkCount = i[v].length
        }
        for (var h = new Array(o), d = s; d < l; d++) {
            for (var f = d - s, g = Math.floor(d / n), p = d % n, m = 0; m < o; m++) {
                var v = r[m], y = this._dimValueGetterArrayRows(e[f] || h, v, f, m);
                i[v][g][p] = y;
                var b = a[v];
                y < b[0] && (b[0] = y), y > b[1] && (b[1] = y)
            }
            t && (this._nameList[d] = t[f])
        }
        this._rawCount = this._count = l, this._extent = {}, A(this)
    }, I._initDataFromProvider = function (e, t) {
        if (!(e >= t)) {
            for (var n, i = this._chunkSize, r = this._rawData, o = this._storage, a = this.dimensions, s = a.length, l = this._dimensionInfos, c = this._nameList, u = this._idList, h = this._rawExtent, d = this._nameRepeatCount = {}, f = this._chunkCount, g = 0; g < s; g++) {
                h[w = a[g]] || (h[w] = E());
                var p = l[w];
                0 === p.otherDims.itemName && (n = this._nameDimIdx = g), 0 === p.otherDims.itemId && (this._idDimIdx = g), o[w] || (o[w] = []), x(o, p, i, f, t), this._chunkCount = o[w].length
            }
            for (var m = new Array(s), v = e; v < t; v++) {
                m = r.getItem(v, m);
                for (var y = Math.floor(v / i), b = v % i, C = 0; C < s; C++) {
                    var w, I = o[w = a[C]][y], _ = this._dimValueGetter(m, w, v, C);
                    I[b] = _;
                    var S = h[w];
                    _ < S[0] && (S[0] = _), _ > S[1] && (S[1] = _)
                }
                if (!r.pure) {
                    var k = c[v];
                    if (m && null == k) if (null != m.name) c[v] = k = m.name; else if (null != n) {
                        var L = a[n], T = o[L][y];
                        if (T) {
                            k = T[b];
                            var O = l[L].ordinalMeta;
                            O && O.categories.length && (k = O.categories[k])
                        }
                    }
                    var R = null == m ? null : m.id;
                    null == R && null != k && (d[k] = d[k] || 0, R = k, d[k] > 0 && (R += "__ec__" + d[k]), d[k]++), null != R && (u[v] = R)
                }
            }
            !r.persistent && r.clean && r.clean(), this._rawCount = this._count = t, this._extent = {}, A(this)
        }
    }, I.count = function () {
        return this._count
    }, I.getIndices = function () {
        var e = this._indices;
        if (e) {
            var t = e.constructor, n = this._count;
            if (t === Array) {
                r = new t(n);
                for (var i = 0; i < n; i++) r[i] = e[i]
            } else r = new t(e.buffer, 0, n)
        } else {
            var r = new (t = v(this))(this.count());
            for (i = 0; i < r.length; i++) r[i] = i
        }
        return r
    }, I.get = function (e, t) {
        if (!(t >= 0 && t < this._count)) return NaN;
        var n = this._storage;
        if (!n[e]) return NaN;
        t = this.getRawIndex(t);
        var i = Math.floor(t / this._chunkSize), r = t % this._chunkSize;
        return n[e][i][r]
    }, I.getByRawIndex = function (e, t) {
        if (!(t >= 0 && t < this._rawCount)) return NaN;
        var n = this._storage[e];
        if (!n) return NaN;
        var i = Math.floor(t / this._chunkSize), r = t % this._chunkSize;
        return n[i][r]
    }, I._getFast = function (e, t) {
        var n = Math.floor(t / this._chunkSize), i = t % this._chunkSize;
        return this._storage[e][n][i]
    }, I.getValues = function (e, t) {
        var n = [];
        i.isArray(e) || (t = e, e = this.dimensions);
        for (var r = 0, o = e.length; r < o; r++) n.push(this.get(e[r], t));
        return n
    }, I.hasValue = function (e) {
        for (var t = this._dimensionsSummary.dataDimsOnCoord, n = 0, i = t.length; n < i; n++) if (isNaN(this.get(t[n], e))) return !1;
        return !0
    }, I.getDataExtent = function (e) {
        e = this.getDimension(e);
        var t = this._storage[e], n = E();
        if (!t) return n;
        var i, r = this.count();
        if (!this._indices) return this._rawExtent[e].slice();
        if (i = this._extent[e]) return i.slice();
        for (var o = (i = n)[0], a = i[1], s = 0; s < r; s++) {
            var l = this._getFast(e, this.getRawIndex(s));
            l < o && (o = l), l > a && (a = l)
        }
        return i = [o, a], this._extent[e] = i, i
    }, I.getApproximateExtent = function (e) {
        return e = this.getDimension(e), this._approximateExtent[e] || this.getDataExtent(e)
    }, I.setApproximateExtent = function (e, t) {
        t = this.getDimension(t), this._approximateExtent[t] = e.slice()
    }, I.getCalculationInfo = function (e) {
        return this._calculationInfo[e]
    }, I.setCalculationInfo = function (e, t) {
        d(e) ? i.extend(this._calculationInfo, e) : this._calculationInfo[e] = t
    }, I.getSum = function (e) {
        var t = 0;
        if (this._storage[e]) for (var n = 0, i = this.count(); n < i; n++) {
            var r = this.get(e, n);
            isNaN(r) || (t += r)
        }
        return t
    }, I.getMedian = function (e) {
        var t = [];
        this.each(e, (function (e, n) {
            isNaN(e) || t.push(e)
        }));
        var n = [].concat(t).sort((function (e, t) {
            return e - t
        })), i = this.count();
        return 0 === i ? 0 : i % 2 == 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2
    }, I.rawIndexOf = function (e, t) {
        var n = (e && this._invertedIndicesMap[e])[t];
        return null == n || isNaN(n) ? -1 : n
    }, I.indexOfName = function (e) {
        for (var t = 0, n = this.count(); t < n; t++) if (this.getName(t) === e) return t;
        return -1
    }, I.indexOfRawIndex = function (e) {
        if (e >= this._rawCount || e < 0) return -1;
        if (!this._indices) return e;
        var t = this._indices, n = t[e];
        if (null != n && n < this._count && n === e) return e;
        for (var i = 0, r = this._count - 1; i <= r;) {
            var o = (i + r) / 2 | 0;
            if (t[o] < e) i = o + 1; else {
                if (!(t[o] > e)) return o;
                r = o - 1
            }
        }
        return -1
    }, I.indicesOfNearest = function (e, t, n) {
        var i = [];
        if (!this._storage[e]) return i;
        null == n && (n = 1 / 0);
        for (var r = 1 / 0, o = -1, a = 0, s = 0, l = this.count(); s < l; s++) {
            var c = t - this.get(e, s), u = Math.abs(c);
            u <= n && ((u < r || u === r && c >= 0 && o < 0) && (r = u, o = c, a = 0), c === o && (i[a++] = s))
        }
        return i.length = a, i
    }, I.getRawIndex = S, I.getRawDataItem = function (e) {
        if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(e));
        for (var t = [], n = 0; n < this.dimensions.length; n++) {
            var i = this.dimensions[n];
            t.push(this.get(i, e))
        }
        return t
    }, I.getName = function (e) {
        var t = this.getRawIndex(e);
        return this._nameList[t] || _(this, this._nameDimIdx, t) || ""
    }, I.getId = function (e) {
        return L(this, this.getRawIndex(e))
    }, I.each = function (e, t, n, r) {
        "use strict";
        if (this._count) {
            "function" == typeof e && (r = n, n = t, t = e, e = []), n = n || r || this;
            for (var o = (e = i.map(T(e), this.getDimension, this)).length, a = 0; a < this.count(); a++) switch (o) {
                case 0:
                    t.call(n, a);
                    break;
                case 1:
                    t.call(n, this.get(e[0], a), a);
                    break;
                case 2:
                    t.call(n, this.get(e[0], a), this.get(e[1], a), a);
                    break;
                default:
                    for (var s = 0, l = []; s < o; s++) l[s] = this.get(e[s], a);
                    l[s] = a, t.apply(n, l)
            }
        }
    }, I.filterSelf = function (e, t, n, r) {
        "use strict";
        if (this._count) {
            "function" == typeof e && (r = n, n = t, t = e, e = []), n = n || r || this, e = i.map(T(e), this.getDimension, this);
            for (var o = this.count(), a = new (v(this))(o), s = [], l = e.length, c = 0, u = e[0], h = 0; h < o; h++) {
                var d, f = this.getRawIndex(h);
                if (0 === l) d = t.call(n, h); else if (1 === l) {
                    var g = this._getFast(u, f);
                    d = t.call(n, g, h)
                } else {
                    for (var p = 0; p < l; p++) s[p] = this._getFast(u, f);
                    s[p] = h, d = t.apply(n, s)
                }
                d && (a[c++] = f)
            }
            return c < o && (this._indices = a), this._count = c, this._extent = {}, this.getRawIndex = this._indices ? k : S, this
        }
    }, I.selectRange = function (e) {
        "use strict";
        if (this._count) {
            var t = [];
            for (var n in e) e.hasOwnProperty(n) && t.push(n);
            var i = t.length;
            if (i) {
                var r = this.count(), o = new (v(this))(r), a = 0, s = t[0], l = e[s][0], c = e[s][1], u = !1;
                if (!this._indices) {
                    var h = 0;
                    if (1 === i) {
                        for (var d = this._storage[t[0]], f = 0; f < this._chunkCount; f++) for (var g = d[f], p = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; m < p; m++) {
                            ((I = g[m]) >= l && I <= c || isNaN(I)) && (o[a++] = h), h++
                        }
                        u = !0
                    } else if (2 === i) {
                        d = this._storage[s];
                        var y = this._storage[t[1]], b = e[t[1]][0], C = e[t[1]][1];
                        for (f = 0; f < this._chunkCount; f++) {
                            g = d[f];
                            var w = y[f];
                            for (p = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; m < p; m++) {
                                var I = g[m], x = w[m];
                                (I >= l && I <= c || isNaN(I)) && (x >= b && x <= C || isNaN(x)) && (o[a++] = h), h++
                            }
                        }
                        u = !0
                    }
                }
                if (!u) if (1 === i) for (m = 0; m < r; m++) {
                    var A = this.getRawIndex(m);
                    ((I = this._getFast(s, A)) >= l && I <= c || isNaN(I)) && (o[a++] = A)
                } else for (m = 0; m < r; m++) {
                    var _ = !0;
                    for (A = this.getRawIndex(m), f = 0; f < i; f++) {
                        var L = t[f];
                        ((I = this._getFast(n, A)) < e[L][0] || I > e[L][1]) && (_ = !1)
                    }
                    _ && (o[a++] = this.getRawIndex(m))
                }
                return a < r && (this._indices = o), this._count = a, this._extent = {}, this.getRawIndex = this._indices ? k : S, this
            }
        }
    }, I.mapArray = function (e, t, n, i) {
        "use strict";
        "function" == typeof e && (i = n, n = t, t = e, e = []), n = n || i || this;
        var r = [];
        return this.each(e, (function () {
            r.push(t && t.apply(this, arguments))
        }), n), r
    }, I.map = function (e, t, n, r) {
        "use strict";
        n = n || r || this;
        var o = O(this, e = i.map(T(e), this.getDimension, this));
        o._indices = this._indices, o.getRawIndex = o._indices ? k : S;
        for (var a = o._storage, s = [], l = this._chunkSize, c = e.length, u = this.count(), h = [], d = o._rawExtent, f = 0; f < u; f++) {
            for (var g = 0; g < c; g++) h[g] = this.get(e[g], f);
            h[c] = f;
            var p = t && t.apply(n, h);
            if (null != p) {
                "object" != typeof p && (s[0] = p, p = s);
                for (var m = this.getRawIndex(f), v = Math.floor(m / l), y = m % l, b = 0; b < p.length; b++) {
                    var C = e[b], w = p[b], I = d[C], x = a[C];
                    x && (x[v][y] = w), w < I[0] && (I[0] = w), w > I[1] && (I[1] = w)
                }
            }
        }
        return o
    }, I.downSample = function (e, t, n, i) {
        for (var r = O(this, [e]), o = r._storage, a = [], s = Math.floor(1 / t), l = o[e], c = this.count(), u = this._chunkSize, h = r._rawExtent[e], d = new (v(this))(c), f = 0, g = 0; g < c; g += s) {
            s > c - g && (s = c - g, a.length = s);
            for (var p = 0; p < s; p++) {
                var m = this.getRawIndex(g + p), y = Math.floor(m / u), b = m % u;
                a[p] = l[y][b]
            }
            var C = n(a), w = this.getRawIndex(Math.min(g + i(a, C) || 0, c - 1)), I = w % u;
            l[Math.floor(w / u)][I] = C, C < h[0] && (h[0] = C), C > h[1] && (h[1] = C), d[f++] = w
        }
        return r._count = f, r._indices = d, r.getRawIndex = k, r
    }, I.getItemModel = function (e) {
        var t = this.hostModel;
        return new r(this.getRawDataItem(e), t, t && t.ecModel)
    }, I.diff = function (e) {
        var t = this;
        return new o(e ? e.getIndices() : [], this.getIndices(), (function (t) {
            return L(e, t)
        }), (function (e) {
            return L(t, e)
        }))
    }, I.getVisual = function (e) {
        var t = this._visual;
        return t && t[e]
    }, I.setVisual = function (e, t) {
        if (d(e)) for (var n in e) e.hasOwnProperty(n) && this.setVisual(n, e[n]); else this._visual = this._visual || {}, this._visual[e] = t
    }, I.setLayout = function (e, t) {
        if (d(e)) for (var n in e) e.hasOwnProperty(n) && this.setLayout(n, e[n]); else this._layout[e] = t
    }, I.getLayout = function (e) {
        return this._layout[e]
    }, I.getItemLayout = function (e) {
        return this._itemLayouts[e]
    }, I.setItemLayout = function (e, t, n) {
        this._itemLayouts[e] = n ? i.extend(this._itemLayouts[e] || {}, t) : t
    }, I.clearItemLayouts = function () {
        this._itemLayouts.length = 0
    }, I.getItemVisual = function (e, t, n) {
        var i = this._itemVisuals[e], r = i && i[t];
        return null != r || n ? r : this.getVisual(t)
    }, I.setItemVisual = function (e, t, n) {
        var i = this._itemVisuals[e] || {}, r = this.hasItemVisual;
        if (this._itemVisuals[e] = i, d(t)) for (var o in t) t.hasOwnProperty(o) && (i[o] = t[o], r[o] = !0); else i[t] = n, r[t] = !0
    }, I.clearAllVisual = function () {
        this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {}
    };
    var P = function (e) {
        e.seriesIndex = this.seriesIndex, e.dataIndex = this.dataIndex, e.dataType = this.dataType
    };
    I.setItemGraphicEl = function (e, t) {
        var n = this.hostModel;
        t && (t.dataIndex = e, t.dataType = this.dataType, t.seriesIndex = n && n.seriesIndex, "group" === t.type && t.traverse(P, t)), this._graphicEls[e] = t
    }, I.getItemGraphicEl = function (e) {
        return this._graphicEls[e]
    }, I.eachItemGraphicEl = function (e, t) {
        i.each(this._graphicEls, (function (n, i) {
            n && e && e.call(t, n, i)
        }))
    }, I.cloneShallow = function (e) {
        if (!e) {
            var t = i.map(this.dimensions, this.getDimensionInfo, this);
            e = new w(t, this.hostModel)
        }
        if (e._storage = this._storage, C(e, this), this._indices) {
            var n = this._indices.constructor;
            e._indices = new n(this._indices)
        } else e._indices = null;
        return e.getRawIndex = e._indices ? k : S, e
    }, I.wrapMethod = function (e, t) {
        var n = this[e];
        "function" == typeof n && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(e), this[e] = function () {
            var e = n.apply(this, arguments);
            return t.apply(this, [e].concat(i.slice(arguments)))
        })
    }, I.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "map"], I.CHANGABLE_METHODS = ["filterSelf", "selectRange"];
    var M = w;
    e.exports = M
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(10), a = n(17).calculateTextPosition, s = r.extendShape({
        type: "triangle", shape: {cx: 0, cy: 0, width: 0, height: 0}, buildPath: function (e, t) {
            var n = t.cx, i = t.cy, r = t.width / 2, o = t.height / 2;
            e.moveTo(n, i - o), e.lineTo(n + r, i + o), e.lineTo(n - r, i + o), e.closePath()
        }
    }), l = r.extendShape({
        type: "diamond", shape: {cx: 0, cy: 0, width: 0, height: 0}, buildPath: function (e, t) {
            var n = t.cx, i = t.cy, r = t.width / 2, o = t.height / 2;
            e.moveTo(n, i - o), e.lineTo(n + r, i), e.lineTo(n, i + o), e.lineTo(n - r, i), e.closePath()
        }
    }), c = r.extendShape({
        type: "pin", shape: {x: 0, y: 0, width: 0, height: 0}, buildPath: function (e, t) {
            var n = t.x, i = t.y, r = t.width / 5 * 3, o = Math.max(r, t.height), a = r / 2, s = a * a / (o - a),
                l = i - o + a + s, c = Math.asin(s / a), u = Math.cos(c) * a, h = Math.sin(c), d = Math.cos(c),
                f = .6 * a, g = .7 * a;
            e.moveTo(n - u, l + s), e.arc(n, l, a, Math.PI - c, 2 * Math.PI + c), e.bezierCurveTo(n + u - h * f, l + s + d * f, n, i - g, n, i), e.bezierCurveTo(n, i - g, n - u + h * f, l + s + d * f, n - u, l + s), e.closePath()
        }
    }), u = r.extendShape({
        type: "arrow", shape: {x: 0, y: 0, width: 0, height: 0}, buildPath: function (e, t) {
            var n = t.height, i = t.width, r = t.x, o = t.y, a = i / 3 * 2;
            e.moveTo(r, o), e.lineTo(r + a, o + n), e.lineTo(r, o + n / 4 * 3), e.lineTo(r - a, o + n), e.lineTo(r, o), e.closePath()
        }
    }), h = {
        line: r.Line,
        rect: r.Rect,
        roundRect: r.Rect,
        square: r.Rect,
        circle: r.Circle,
        diamond: l,
        pin: c,
        arrow: u,
        triangle: s
    }, d = {
        line: function (e, t, n, i, r) {
            r.x1 = e, r.y1 = t + i / 2, r.x2 = e + n, r.y2 = t + i / 2
        }, rect: function (e, t, n, i, r) {
            r.x = e, r.y = t, r.width = n, r.height = i
        }, roundRect: function (e, t, n, i, r) {
            r.x = e, r.y = t, r.width = n, r.height = i, r.r = Math.min(n, i) / 4
        }, square: function (e, t, n, i, r) {
            var o = Math.min(n, i);
            r.x = e, r.y = t, r.width = o, r.height = o
        }, circle: function (e, t, n, i, r) {
            r.cx = e + n / 2, r.cy = t + i / 2, r.r = Math.min(n, i) / 2
        }, diamond: function (e, t, n, i, r) {
            r.cx = e + n / 2, r.cy = t + i / 2, r.width = n, r.height = i
        }, pin: function (e, t, n, i, r) {
            r.x = e + n / 2, r.y = t + i / 2, r.width = n, r.height = i
        }, arrow: function (e, t, n, i, r) {
            r.x = e + n / 2, r.y = t + i / 2, r.width = n, r.height = i
        }, triangle: function (e, t, n, i, r) {
            r.cx = e + n / 2, r.cy = t + i / 2, r.width = n, r.height = i
        }
    }, f = {};
    i.each(h, (function (e, t) {
        f[t] = new e
    }));
    var g = r.extendShape({
        type: "symbol",
        shape: {symbolType: "", x: 0, y: 0, width: 0, height: 0},
        calculateTextPosition: function (e, t, n) {
            var i = a(e, t, n), r = this.shape;
            return r && "pin" === r.symbolType && "inside" === t.textPosition && (i.y = n.y + .4 * n.height), i
        },
        buildPath: function (e, t, n) {
            var i = t.symbolType;
            if ("none" !== i) {
                var r = f[i];
                r || (r = f[i = "rect"]), d[i](t.x, t.y, t.width, t.height, r.shape), r.buildPath(e, r.shape, n)
            }
        }
    });

    function p(e, t) {
        if ("image" !== this.type) {
            var n = this.style, i = this.shape;
            i && "line" === i.symbolType ? n.stroke = e : this.__isEmptyBrush ? (n.stroke = e, n.fill = t || "#fff") : (n.fill && (n.fill = e), n.stroke && (n.stroke = e)), this.dirty(!1)
        }
    }

    t.createSymbol = function (e, t, n, i, a, s, l) {
        var c, u = 0 === e.indexOf("empty");
        return u && (e = e.substr(5, 1).toLowerCase() + e.substr(6)), (c = 0 === e.indexOf("image://") ? r.makeImage(e.slice(8), new o(t, n, i, a), l ? "center" : "cover") : 0 === e.indexOf("path://") ? r.makePath(e.slice(7), {}, new o(t, n, i, a), l ? "center" : "cover") : new g({
            shape: {
                symbolType: e,
                x: t,
                y: n,
                width: i,
                height: a
            }
        })).__isEmptyBrush = u, c.setColor = p, c.setColor(s), c
    }
}, function (e, t, n) {
    var i = n(1), r = {};

    function o() {
        this._coordinateSystems = []
    }

    o.prototype = {
        constructor: o, create: function (e, t) {
            var n = [];
            i.each(r, (function (i, r) {
                var o = i.create(e, t);
                n = n.concat(o || [])
            })), this._coordinateSystems = n
        }, update: function (e, t) {
            i.each(this._coordinateSystems, (function (n) {
                n.update && n.update(e, t)
            }))
        }, getCoordinateSystems: function () {
            return this._coordinateSystems.slice()
        }
    }, o.register = function (e, t) {
        r[e] = t
    }, o.get = function (e) {
        return r[e]
    };
    var a = o;
    e.exports = a
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(309), o = n(88), a = n(87), s = n(4), l = n(89), c = l.prepareLayoutBarSeries,
        u = l.makeColumnLayout, h = l.retrieveColumnLayout, d = n(10);

    function f(e, t) {
        var n, r, o, a = e.type, l = t.getMin(), d = t.getMax(), f = e.getExtent();
        "ordinal" === a ? n = t.getCategories().length : (r = t.get("boundaryGap"), i.isArray(r) || (r = [r || 0, r || 0]), "boolean" == typeof r[0] && (r = [0, 0]), r[0] = s.parsePercent(r[0], 1), r[1] = s.parsePercent(r[1], 1), o = f[1] - f[0] || Math.abs(f[0])), "dataMin" === l ? l = f[0] : "function" == typeof l && (l = l({
            min: f[0],
            max: f[1]
        })), "dataMax" === d ? d = f[1] : "function" == typeof d && (d = d({min: f[0], max: f[1]}));
        var g = null != l, p = null != d;
        null == l && (l = "ordinal" === a ? n ? 0 : NaN : f[0] - r[0] * o), null == d && (d = "ordinal" === a ? n ? n - 1 : NaN : f[1] + r[1] * o), (null == l || !isFinite(l)) && (l = NaN), (null == d || !isFinite(d)) && (d = NaN), e.setBlank(i.eqNaN(l) || i.eqNaN(d) || "ordinal" === a && !e.getOrdinalMeta().categories.length), t.getNeedCrossZero() && (l > 0 && d > 0 && !g && (l = 0), l < 0 && d < 0 && !p && (d = 0));
        var m = t.ecModel;
        if (m && "time" === a) {
            var v, y = c("bar", m);
            if (i.each(y, (function (e) {
                v |= e.getBaseAxis() === t.axis
            })), v) {
                var b = u(y), C = function (e, t, n, r) {
                    var o = n.axis.getExtent(), a = o[1] - o[0], s = h(r, n.axis);
                    if (void 0 === s) return {min: e, max: t};
                    var l = 1 / 0;
                    i.each(s, (function (e) {
                        l = Math.min(e.offset, l)
                    }));
                    var c = -1 / 0;
                    i.each(s, (function (e) {
                        c = Math.max(e.offset + e.width, c)
                    })), l = Math.abs(l), c = Math.abs(c);
                    var u = l + c, d = t - e, f = d / (1 - (l + c) / a) - d;
                    return {min: e -= f * (l / u), max: t += f * (c / u)}
                }(l, d, t, b);
                l = C.min, d = C.max
            }
        }
        return {extent: [l, d], fixMin: g, fixMax: p}
    }

    function g(e) {
        var t, n = e.getLabelModel().get("formatter"), i = "category" === e.type ? e.scale.getExtent()[0] : null;
        return "string" == typeof n ? (t = n, n = function (n) {
            return n = e.scale.getLabel(n), t.replace("{value}", null != n ? n : "")
        }) : "function" == typeof n ? function (t, r) {
            return null != i && (r = t - i), n(p(e, t), r)
        } : function (t) {
            return e.scale.getLabel(t)
        }
    }

    function p(e, t) {
        return "category" === e.type ? e.scale.getLabel(t) : t
    }

    function m(e) {
        var t = e.get("interval");
        return null == t ? "auto" : t
    }

    n(310), n(175), t.getScaleExtent = f, t.niceScaleExtent = function (e, t) {
        var n = f(e, t), i = n.extent, r = t.get("splitNumber");
        "log" === e.type && (e.base = t.get("logBase"));
        var o = e.type;
        e.setExtent(i[0], i[1]), e.niceExtent({
            splitNumber: r,
            fixMin: n.fixMin,
            fixMax: n.fixMax,
            minInterval: "interval" === o || "time" === o ? t.get("minInterval") : null,
            maxInterval: "interval" === o || "time" === o ? t.get("maxInterval") : null
        });
        var a = t.get("interval");
        null != a && e.setInterval && e.setInterval(a)
    }, t.createScaleByModel = function (e, t) {
        if (t = t || e.get("type")) switch (t) {
            case"category":
                return new r(e.getOrdinalMeta ? e.getOrdinalMeta() : e.getCategories(), [1 / 0, -1 / 0]);
            case"value":
                return new o;
            default:
                return (a.getClass(t) || o).create(e)
        }
    }, t.ifAxisCrossZero = function (e) {
        var t = e.scale.getExtent(), n = t[0], i = t[1];
        return !(n > 0 && i > 0 || n < 0 && i < 0)
    }, t.makeLabelFormatter = g, t.getAxisRawValue = p, t.estimateLabelUnionRect = function (e) {
        var t = e.model, n = e.scale;
        if (t.get("axisLabel.show") && !n.isBlank()) {
            var i, r, o = "category" === e.type, a = n.getExtent();
            r = o ? n.count() : (i = n.getTicks()).length;
            var s, l, c, u, h, f, p, m, v, y = e.getLabelModel(), b = g(e), C = 1;
            r > 40 && (C = Math.ceil(r / 40));
            for (var w = 0; w < r; w += C) {
                var I = b(i ? i[w] : a[0] + w), x = y.getTextRect(I),
                    A = (l = x, c = y.get("rotate") || 0, u = void 0, h = void 0, f = void 0, p = void 0, m = void 0, v = void 0, void 0, u = c * Math.PI / 180, h = l.plain(), f = h.width, p = h.height, m = f * Math.cos(u) + p * Math.sin(u), v = f * Math.sin(u) + p * Math.cos(u), new d(h.x, h.y, m, v));
                s ? s.union(A) : s = A
            }
            return s
        }
    }, t.getOptionCategoryInterval = m, t.shouldShowAllLabels = function (e) {
        return "category" === e.type && 0 === m(e.getLabelModel())
    }
}, function (e, t) {
    e.exports = "./icons/2b9b4872cd25494093c1eb14f0264a0b.svg"
}, function (e, t, n) {
    var i = n(37);
    t.Dispatcher = i;
    var r = n(12), o = n(145), a = o.isCanvasEl, s = o.transformCoordWithViewport,
        l = "undefined" != typeof window && !!window.addEventListener,
        c = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, u = [];

    function h(e, t, n, i) {
        return n = n || {}, i || !r.canvasSupported ? d(e, t, n) : r.browser.firefox && null != t.layerX && t.layerX !== t.offsetX ? (n.zrX = t.layerX, n.zrY = t.layerY) : null != t.offsetX ? (n.zrX = t.offsetX, n.zrY = t.offsetY) : d(e, t, n), n
    }

    function d(e, t, n) {
        if (r.domSupported && e.getBoundingClientRect) {
            var i = t.clientX, o = t.clientY;
            if (a(e)) {
                var l = e.getBoundingClientRect();
                return n.zrX = i - l.left, void (n.zrY = o - l.top)
            }
            if (s(u, e, i, o)) return n.zrX = u[0], void (n.zrY = u[1])
        }
        n.zrX = n.zrY = 0
    }

    function f(e) {
        return e || window.event
    }

    var g = l ? function (e) {
        e.preventDefault(), e.stopPropagation(), e.cancelBubble = !0
    } : function (e) {
        e.returnValue = !1, e.cancelBubble = !0
    };
    t.clientToLocal = h, t.getNativeEvent = f, t.normalizeEvent = function (e, t, n) {
        if (null != (t = f(t)).zrX) return t;
        var i = t.type;
        if (i && i.indexOf("touch") >= 0) {
            var r = "touchend" !== i ? t.targetTouches[0] : t.changedTouches[0];
            r && h(e, r, t, n)
        } else h(e, t, t, n), t.zrDelta = t.wheelDelta ? t.wheelDelta / 120 : -(t.detail || 0) / 3;
        var o = t.button;
        return null == t.which && void 0 !== o && c.test(t.type) && (t.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), t
    }, t.addEventListener = function (e, t, n, i) {
        l ? e.addEventListener(t, n, i) : e.attachEvent("on" + t, n)
    }, t.removeEventListener = function (e, t, n, i) {
        l ? e.removeEventListener(t, n, i) : e.detachEvent("on" + t, n)
    }, t.stop = g, t.isMiddleOrRightButtonOnMouseUpDown = function (e) {
        return 2 === e.which || 3 === e.which
    }, t.notLeftMouse = function (e) {
        return e.which > 1
    }
}, function (e, t, n) {
    var i = n(148), r = {
        transparent: [0, 0, 0, 0],
        aliceblue: [240, 248, 255, 1],
        antiquewhite: [250, 235, 215, 1],
        aqua: [0, 255, 255, 1],
        aquamarine: [127, 255, 212, 1],
        azure: [240, 255, 255, 1],
        beige: [245, 245, 220, 1],
        bisque: [255, 228, 196, 1],
        black: [0, 0, 0, 1],
        blanchedalmond: [255, 235, 205, 1],
        blue: [0, 0, 255, 1],
        blueviolet: [138, 43, 226, 1],
        brown: [165, 42, 42, 1],
        burlywood: [222, 184, 135, 1],
        cadetblue: [95, 158, 160, 1],
        chartreuse: [127, 255, 0, 1],
        chocolate: [210, 105, 30, 1],
        coral: [255, 127, 80, 1],
        cornflowerblue: [100, 149, 237, 1],
        cornsilk: [255, 248, 220, 1],
        crimson: [220, 20, 60, 1],
        cyan: [0, 255, 255, 1],
        darkblue: [0, 0, 139, 1],
        darkcyan: [0, 139, 139, 1],
        darkgoldenrod: [184, 134, 11, 1],
        darkgray: [169, 169, 169, 1],
        darkgreen: [0, 100, 0, 1],
        darkgrey: [169, 169, 169, 1],
        darkkhaki: [189, 183, 107, 1],
        darkmagenta: [139, 0, 139, 1],
        darkolivegreen: [85, 107, 47, 1],
        darkorange: [255, 140, 0, 1],
        darkorchid: [153, 50, 204, 1],
        darkred: [139, 0, 0, 1],
        darksalmon: [233, 150, 122, 1],
        darkseagreen: [143, 188, 143, 1],
        darkslateblue: [72, 61, 139, 1],
        darkslategray: [47, 79, 79, 1],
        darkslategrey: [47, 79, 79, 1],
        darkturquoise: [0, 206, 209, 1],
        darkviolet: [148, 0, 211, 1],
        deeppink: [255, 20, 147, 1],
        deepskyblue: [0, 191, 255, 1],
        dimgray: [105, 105, 105, 1],
        dimgrey: [105, 105, 105, 1],
        dodgerblue: [30, 144, 255, 1],
        firebrick: [178, 34, 34, 1],
        floralwhite: [255, 250, 240, 1],
        forestgreen: [34, 139, 34, 1],
        fuchsia: [255, 0, 255, 1],
        gainsboro: [220, 220, 220, 1],
        ghostwhite: [248, 248, 255, 1],
        gold: [255, 215, 0, 1],
        goldenrod: [218, 165, 32, 1],
        gray: [128, 128, 128, 1],
        green: [0, 128, 0, 1],
        greenyellow: [173, 255, 47, 1],
        grey: [128, 128, 128, 1],
        honeydew: [240, 255, 240, 1],
        hotpink: [255, 105, 180, 1],
        indianred: [205, 92, 92, 1],
        indigo: [75, 0, 130, 1],
        ivory: [255, 255, 240, 1],
        khaki: [240, 230, 140, 1],
        lavender: [230, 230, 250, 1],
        lavenderblush: [255, 240, 245, 1],
        lawngreen: [124, 252, 0, 1],
        lemonchiffon: [255, 250, 205, 1],
        lightblue: [173, 216, 230, 1],
        lightcoral: [240, 128, 128, 1],
        lightcyan: [224, 255, 255, 1],
        lightgoldenrodyellow: [250, 250, 210, 1],
        lightgray: [211, 211, 211, 1],
        lightgreen: [144, 238, 144, 1],
        lightgrey: [211, 211, 211, 1],
        lightpink: [255, 182, 193, 1],
        lightsalmon: [255, 160, 122, 1],
        lightseagreen: [32, 178, 170, 1],
        lightskyblue: [135, 206, 250, 1],
        lightslategray: [119, 136, 153, 1],
        lightslategrey: [119, 136, 153, 1],
        lightsteelblue: [176, 196, 222, 1],
        lightyellow: [255, 255, 224, 1],
        lime: [0, 255, 0, 1],
        limegreen: [50, 205, 50, 1],
        linen: [250, 240, 230, 1],
        magenta: [255, 0, 255, 1],
        maroon: [128, 0, 0, 1],
        mediumaquamarine: [102, 205, 170, 1],
        mediumblue: [0, 0, 205, 1],
        mediumorchid: [186, 85, 211, 1],
        mediumpurple: [147, 112, 219, 1],
        mediumseagreen: [60, 179, 113, 1],
        mediumslateblue: [123, 104, 238, 1],
        mediumspringgreen: [0, 250, 154, 1],
        mediumturquoise: [72, 209, 204, 1],
        mediumvioletred: [199, 21, 133, 1],
        midnightblue: [25, 25, 112, 1],
        mintcream: [245, 255, 250, 1],
        mistyrose: [255, 228, 225, 1],
        moccasin: [255, 228, 181, 1],
        navajowhite: [255, 222, 173, 1],
        navy: [0, 0, 128, 1],
        oldlace: [253, 245, 230, 1],
        olive: [128, 128, 0, 1],
        olivedrab: [107, 142, 35, 1],
        orange: [255, 165, 0, 1],
        orangered: [255, 69, 0, 1],
        orchid: [218, 112, 214, 1],
        palegoldenrod: [238, 232, 170, 1],
        palegreen: [152, 251, 152, 1],
        paleturquoise: [175, 238, 238, 1],
        palevioletred: [219, 112, 147, 1],
        papayawhip: [255, 239, 213, 1],
        peachpuff: [255, 218, 185, 1],
        peru: [205, 133, 63, 1],
        pink: [255, 192, 203, 1],
        plum: [221, 160, 221, 1],
        powderblue: [176, 224, 230, 1],
        purple: [128, 0, 128, 1],
        red: [255, 0, 0, 1],
        rosybrown: [188, 143, 143, 1],
        royalblue: [65, 105, 225, 1],
        saddlebrown: [139, 69, 19, 1],
        salmon: [250, 128, 114, 1],
        sandybrown: [244, 164, 96, 1],
        seagreen: [46, 139, 87, 1],
        seashell: [255, 245, 238, 1],
        sienna: [160, 82, 45, 1],
        silver: [192, 192, 192, 1],
        skyblue: [135, 206, 235, 1],
        slateblue: [106, 90, 205, 1],
        slategray: [112, 128, 144, 1],
        slategrey: [112, 128, 144, 1],
        snow: [255, 250, 250, 1],
        springgreen: [0, 255, 127, 1],
        steelblue: [70, 130, 180, 1],
        tan: [210, 180, 140, 1],
        teal: [0, 128, 128, 1],
        thistle: [216, 191, 216, 1],
        tomato: [255, 99, 71, 1],
        turquoise: [64, 224, 208, 1],
        violet: [238, 130, 238, 1],
        wheat: [245, 222, 179, 1],
        white: [255, 255, 255, 1],
        whitesmoke: [245, 245, 245, 1],
        yellow: [255, 255, 0, 1],
        yellowgreen: [154, 205, 50, 1]
    };

    function o(e) {
        return (e = Math.round(e)) < 0 ? 0 : e > 255 ? 255 : e
    }

    function a(e) {
        return e < 0 ? 0 : e > 1 ? 1 : e
    }

    function s(e) {
        return e.length && "%" === e.charAt(e.length - 1) ? o(parseFloat(e) / 100 * 255) : o(parseInt(e, 10))
    }

    function l(e) {
        return e.length && "%" === e.charAt(e.length - 1) ? a(parseFloat(e) / 100) : a(parseFloat(e))
    }

    function c(e, t, n) {
        return n < 0 ? n += 1 : n > 1 && (n -= 1), 6 * n < 1 ? e + (t - e) * n * 6 : 2 * n < 1 ? t : 3 * n < 2 ? e + (t - e) * (2 / 3 - n) * 6 : e
    }

    function u(e, t, n) {
        return e + (t - e) * n
    }

    function h(e, t, n, i, r) {
        return e[0] = t, e[1] = n, e[2] = i, e[3] = r, e
    }

    function d(e, t) {
        return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e
    }

    var f = new i(20), g = null;

    function p(e, t) {
        g && d(g, t), g = f.put(e, g || t.slice())
    }

    function m(e, t) {
        if (e) {
            t = t || [];
            var n = f.get(e);
            if (n) return d(t, n);
            var i, o = (e += "").replace(/ /g, "").toLowerCase();
            if (o in r) return d(t, r[o]), p(e, t), t;
            if ("#" === o.charAt(0)) return 4 === o.length ? (i = parseInt(o.substr(1), 16)) >= 0 && i <= 4095 ? (h(t, (3840 & i) >> 4 | (3840 & i) >> 8, 240 & i | (240 & i) >> 4, 15 & i | (15 & i) << 4, 1), p(e, t), t) : void h(t, 0, 0, 0, 1) : 7 === o.length ? (i = parseInt(o.substr(1), 16)) >= 0 && i <= 16777215 ? (h(t, (16711680 & i) >> 16, (65280 & i) >> 8, 255 & i, 1), p(e, t), t) : void h(t, 0, 0, 0, 1) : void 0;
            var a = o.indexOf("("), c = o.indexOf(")");
            if (-1 !== a && c + 1 === o.length) {
                var u = o.substr(0, a), g = o.substr(a + 1, c - (a + 1)).split(","), m = 1;
                switch (u) {
                    case"rgba":
                        if (4 !== g.length) return void h(t, 0, 0, 0, 1);
                        m = l(g.pop());
                    case"rgb":
                        return 3 !== g.length ? void h(t, 0, 0, 0, 1) : (h(t, s(g[0]), s(g[1]), s(g[2]), m), p(e, t), t);
                    case"hsla":
                        return 4 !== g.length ? void h(t, 0, 0, 0, 1) : (g[3] = l(g[3]), v(g, t), p(e, t), t);
                    case"hsl":
                        return 3 !== g.length ? void h(t, 0, 0, 0, 1) : (v(g, t), p(e, t), t);
                    default:
                        return
                }
            }
            h(t, 0, 0, 0, 1)
        }
    }

    function v(e, t) {
        var n = (parseFloat(e[0]) % 360 + 360) % 360 / 360, i = l(e[1]), r = l(e[2]),
            a = r <= .5 ? r * (i + 1) : r + i - r * i, s = 2 * r - a;
        return h(t = t || [], o(255 * c(s, a, n + 1 / 3)), o(255 * c(s, a, n)), o(255 * c(s, a, n - 1 / 3)), 1), 4 === e.length && (t[3] = e[3]), t
    }

    function y(e, t, n) {
        if (t && t.length && e >= 0 && e <= 1) {
            n = n || [];
            var i = e * (t.length - 1), r = Math.floor(i), s = Math.ceil(i), l = t[r], c = t[s], h = i - r;
            return n[0] = o(u(l[0], c[0], h)), n[1] = o(u(l[1], c[1], h)), n[2] = o(u(l[2], c[2], h)), n[3] = a(u(l[3], c[3], h)), n
        }
    }

    var b = y;

    function C(e, t, n) {
        if (t && t.length && e >= 0 && e <= 1) {
            var i = e * (t.length - 1), r = Math.floor(i), s = Math.ceil(i), l = m(t[r]), c = m(t[s]), h = i - r,
                d = I([o(u(l[0], c[0], h)), o(u(l[1], c[1], h)), o(u(l[2], c[2], h)), a(u(l[3], c[3], h))], "rgba");
            return n ? {color: d, leftIndex: r, rightIndex: s, value: i} : d
        }
    }

    var w = C;

    function I(e, t) {
        if (e && e.length) {
            var n = e[0] + "," + e[1] + "," + e[2];
            return "rgba" !== t && "hsva" !== t && "hsla" !== t || (n += "," + e[3]), t + "(" + n + ")"
        }
    }

    t.parse = m, t.lift = function (e, t) {
        var n = m(e);
        if (n) {
            for (var i = 0; i < 3; i++) n[i] = t < 0 ? n[i] * (1 - t) | 0 : (255 - n[i]) * t + n[i] | 0, n[i] > 255 ? n[i] = 255 : e[i] < 0 && (n[i] = 0);
            return I(n, 4 === n.length ? "rgba" : "rgb")
        }
    }, t.toHex = function (e) {
        var t = m(e);
        if (t) return ((1 << 24) + (t[0] << 16) + (t[1] << 8) + +t[2]).toString(16).slice(1)
    }, t.fastLerp = y, t.fastMapToColor = b, t.lerp = C, t.mapToColor = w, t.modifyHSL = function (e, t, n, i) {
        if (e = m(e)) return e = function (e) {
            if (e) {
                var t, n, i = e[0] / 255, r = e[1] / 255, o = e[2] / 255, a = Math.min(i, r, o), s = Math.max(i, r, o),
                    l = s - a, c = (s + a) / 2;
                if (0 === l) t = 0, n = 0; else {
                    n = c < .5 ? l / (s + a) : l / (2 - s - a);
                    var u = ((s - i) / 6 + l / 2) / l, h = ((s - r) / 6 + l / 2) / l, d = ((s - o) / 6 + l / 2) / l;
                    i === s ? t = d - h : r === s ? t = 1 / 3 + u - d : o === s && (t = 2 / 3 + h - u), t < 0 && (t += 1), t > 1 && (t -= 1)
                }
                var f = [360 * t, n, c];
                return null != e[3] && f.push(e[3]), f
            }
        }(e), null != t && (e[0] = (r = t, (r = Math.round(r)) < 0 ? 0 : r > 360 ? 360 : r)), null != n && (e[1] = l(n)), null != i && (e[2] = l(i)), I(v(e), "rgba");
        var r
    }, t.modifyAlpha = function (e, t) {
        if ((e = m(e)) && null != t) return e[3] = a(t), I(e, "rgba")
    }, t.stringify = I
}, function (e, t, n) {
    var i = n(1).each, r = n(38), o = n(64), a = n(28), s = n(5), l = n(3), c = n(110).createTask, u = n(49),
        h = s.makeInner(), d = u();

    function f() {
        this.group = new r, this.uid = o.getUID("viewChart"), this.renderTask = c({
            plan: v,
            reset: y
        }), this.renderTask.context = {view: this}
    }

    f.prototype = {
        type: "chart", init: function (e, t) {
        }, render: function (e, t, n, i) {
        }, highlight: function (e, t, n, i) {
            m(e.getData(), i, "emphasis")
        }, downplay: function (e, t, n, i) {
            m(e.getData(), i, "normal")
        }, remove: function (e, t) {
            this.group.removeAll()
        }, dispose: function () {
        }, incrementalPrepareRender: null, incrementalRender: null, updateTransform: null, filterForExposedEvent: null
    };
    var g = f.prototype;

    function p(e, t, n) {
        if (e && (e.trigger(t, n), e.isGroup && !l.isHighDownDispatcher(e))) for (var i = 0, r = e.childCount(); i < r; i++) p(e.childAt(i), t, n)
    }

    function m(e, t, n) {
        var r = s.queryDataIndex(e, t), o = t && null != t.highlightKey ? l.getHighlightDigit(t.highlightKey) : null;
        null != r ? i(s.normalizeToArray(r), (function (t) {
            p(e.getItemGraphicEl(t), n, o)
        })) : e.eachItemGraphicEl((function (e) {
            p(e, n, o)
        }))
    }

    function v(e) {
        return d(e.model)
    }

    function y(e) {
        var t = e.model, n = e.ecModel, i = e.api, r = e.payload, o = t.pipelineContext.progressiveRender, a = e.view,
            s = r && h(r).updateMethod, l = o ? "incrementalPrepareRender" : s && a[s] ? s : "render";
        return "render" !== l && a[l](t, n, i, r), b[l]
    }

    g.updateView = g.updateLayout = g.updateVisual = function (e, t, n, i) {
        this.render(e, t, n, i)
    }, a.enableClassExtend(f, ["dispose"]), a.enableClassManagement(f, {registerWhenExtend: !0}), f.markUpdateMethod = function (e, t) {
        h(e).updateMethod = t
    };
    var b = {
        incrementalPrepareRender: {
            progress: function (e, t) {
                t.view.incrementalRender(e, t.model, t.ecModel, t.api, t.payload)
            }
        }, render: {
            forceFirstProgress: !0, progress: function (e, t) {
                t.view.render(t.model, t.ecModel, t.api, t.payload)
            }
        }
    }, C = f;
    e.exports = C
}, function (e, t, n) {
    var i = n(1), r = i.each, o = i.isString;

    function a(e, t) {
        return !!t && t === e.getCalculationInfo("stackedDimension")
    }

    t.enableDataStack = function (e, t, n) {
        var i, a, s, l, c = (n = n || {}).byIndex, u = n.stackedCoordDimension, h = !(!e || !e.get("stack"));
        if (r(t, (function (e, n) {
            o(e) && (t[n] = e = {name: e}), h && !e.isExtraCoord && (c || i || !e.ordinalMeta || (i = e), a || "ordinal" === e.type || "time" === e.type || u && u !== e.coordDim || (a = e))
        })), !a || c || i || (c = !0), a) {
            s = "__\0ecstackresult", l = "__\0ecstackedover", i && (i.createInvertedIndices = !0);
            var d = a.coordDim, f = a.type, g = 0;
            r(t, (function (e) {
                e.coordDim === d && g++
            })), t.push({
                name: s,
                coordDim: d,
                coordDimIndex: g,
                type: f,
                isExtraCoord: !0,
                isCalculationCoord: !0
            }), g++, t.push({name: l, coordDim: l, coordDimIndex: g, type: f, isExtraCoord: !0, isCalculationCoord: !0})
        }
        return {
            stackedDimension: a && a.name,
            stackedByDimension: i && i.name,
            isStackedByIndex: c,
            stackedOverDimension: l,
            stackResultDimension: s
        }
    }, t.isDimensionStacked = a, t.getStackedDimension = function (e, t) {
        return a(e, t) ? e.getCalculationInfo("stackResultDimension") : t
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = "___EC__COMPONENT__CONTAINER___";

    function o(e) {
        var t = {main: "", sub: ""};
        return e && (e = e.split("."), t.main = e[0] || "", t.sub = e[1] || ""), t
    }

    var a = 0;

    function s(e, t) {
        var n = i.slice(arguments, 2);
        return this.superClass.prototype[t].apply(e, n)
    }

    function l(e, t, n) {
        return this.superClass.prototype[t].apply(e, n)
    }

    t.parseClassType = o, t.enableClassExtend = function (e, t) {
        e.$constructor = e, e.extend = function (e) {
            var t = this, n = function () {
                e.$constructor ? e.$constructor.apply(this, arguments) : t.apply(this, arguments)
            };
            return i.extend(n.prototype, e), n.extend = this.extend, n.superCall = s, n.superApply = l, i.inherits(n, this), n.superClass = t, n
        }
    }, t.enableClassCheck = function (e) {
        var t = ["__\0is_clz", a++, Math.random().toFixed(3)].join("_");
        e.prototype[t] = !0, e.isInstance = function (e) {
            return !(!e || !e[t])
        }
    }, t.enableClassManagement = function (e, t) {
        t = t || {};
        var n = {};
        if (e.registerClass = function (e, t) {
            if (t) if (function (e) {
                i.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e), 'componentType "' + e + '" illegal')
            }(t), (t = o(t)).sub) {
                if (t.sub !== r) {
                    (function (e) {
                        var t = n[e.main];
                        t && t[r] || ((t = n[e.main] = {})[r] = !0);
                        return t
                    }(t))[t.sub] = e
                }
            } else n[t.main] = e;
            return e
        }, e.getClass = function (e, t, i) {
            var o = n[e];
            if (o && o[r] && (o = t ? o[t] : null), i && !o) throw new Error(t ? "Component " + e + "." + (t || "") + " not exists. Load it first." : e + ".type should be specified.");
            return o
        }, e.getClassesByMainType = function (e) {
            e = o(e);
            var t = [], a = n[e.main];
            return a && a[r] ? i.each(a, (function (e, n) {
                n !== r && t.push(e)
            })) : t.push(a), t
        }, e.hasClass = function (e) {
            return e = o(e), !!n[e.main]
        }, e.getAllClassMainTypes = function () {
            var e = [];
            return i.each(n, (function (t, n) {
                e.push(n)
            })), e
        }, e.hasSubTypes = function (e) {
            e = o(e);
            var t = n[e.main];
            return t && t[r]
        }, e.parseClassType = o, t.registerWhenExtend) {
            var a = e.extend;
            a && (e.extend = function (t) {
                var n = a.call(this, t);
                return e.registerClass(n, t.type)
            })
        }
        return e
    }, t.setReadOnly = function (e, t) {
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(5), r = i.makeInner, o = i.getDataItemValue, a = n(1), s = a.createHashMap, l = a.each, c = a.map,
        u = a.isArray, h = a.isString, d = a.isObject, f = a.isTypedArray, g = a.isArrayLike, p = a.extend,
        m = (a.assert, n(65)), v = n(66), y = v.SOURCE_FORMAT_ORIGINAL, b = v.SOURCE_FORMAT_ARRAY_ROWS,
        C = v.SOURCE_FORMAT_OBJECT_ROWS, w = v.SOURCE_FORMAT_KEYED_COLUMNS, I = v.SOURCE_FORMAT_UNKNOWN,
        x = v.SOURCE_FORMAT_TYPED_ARRAY, A = v.SERIES_LAYOUT_BY_ROW, _ = {Must: 1, Might: 2, Not: 3}, S = r();

    function k(e) {
        if (e) {
            var t = s();
            return c(e, (function (e, n) {
                if (null == (e = p({}, d(e) ? e : {name: e})).name) return e;
                e.name += "", null == e.displayName && (e.displayName = e.name);
                var i = t.get(e.name);
                return i ? e.name += "-" + i.count++ : t.set(e.name, {count: 1}), e
            }))
        }
    }

    function L(e, t, n, i) {
        if (null == i && (i = 1 / 0), t === A) for (var r = 0; r < n.length && r < i; r++) e(n[r] ? n[r][0] : null, r); else {
            var o = n[0] || [];
            for (r = 0; r < o.length && r < i; r++) e(o[r], r)
        }
    }

    function T(e) {
        var t = e.option;
        if (!t.data) return e.ecModel.getComponent("dataset", t.datasetIndex || 0)
    }

    function O(e, t, n, i, r, a) {
        var s, l, c;
        if (f(e)) return _.Not;
        if (i) {
            var g = i[a];
            d(g) ? (l = g.name, c = g.type) : h(g) && (l = g)
        }
        if (null != c) return "ordinal" === c ? _.Must : _.Not;
        if (t === b) if (n === A) {
            for (var p = e[a], m = 0; m < (p || []).length && m < 5; m++) if (null != (s = S(p[r + m]))) return s
        } else for (m = 0; m < e.length && m < 5; m++) {
            var v = e[r + m];
            if (v && null != (s = S(v[a]))) return s
        } else if (t === C) {
            if (!l) return _.Not;
            for (m = 0; m < e.length && m < 5; m++) {
                if ((I = e[m]) && null != (s = S(I[l]))) return s
            }
        } else if (t === w) {
            if (!l) return _.Not;
            if (!(p = e[l]) || f(p)) return _.Not;
            for (m = 0; m < p.length && m < 5; m++) if (null != (s = S(p[m]))) return s
        } else if (t === y) for (m = 0; m < e.length && m < 5; m++) {
            var I = e[m], x = o(I);
            if (!u(x)) return _.Not;
            if (null != (s = S(x[a]))) return s
        }

        function S(e) {
            var t = h(e);
            return null != e && isFinite(e) && "" !== e ? t ? _.Might : _.Not : t && "-" !== e ? _.Must : void 0
        }

        return _.Not
    }

    t.BE_ORDINAL = _, t.detectSourceFormat = function (e) {
        var t = e.option.source, n = I;
        if (f(t)) n = x; else if (u(t)) {
            0 === t.length && (n = b);
            for (var i = 0, r = t.length; i < r; i++) {
                var o = t[i];
                if (null != o) {
                    if (u(o)) {
                        n = b;
                        break
                    }
                    if (d(o)) {
                        n = C;
                        break
                    }
                }
            }
        } else if (d(t)) {
            for (var a in t) if (t.hasOwnProperty(a) && g(t[a])) {
                n = w;
                break
            }
        } else if (null != t) throw new Error("Invalid data");
        S(e).sourceFormat = n
    }, t.getSource = function (e) {
        return S(e).source
    }, t.resetSourceDefaulter = function (e) {
        S(e).datasetMap = s()
    }, t.prepareSource = function (e) {
        var t = e.option, n = t.data, i = f(n) ? x : y, r = !1, a = t.seriesLayoutBy, s = t.sourceHeader,
            c = t.dimensions, d = T(e);
        if (d) {
            var g = d.option;
            n = g.source, i = S(d).sourceFormat, r = !0, a = a || g.seriesLayoutBy, null == s && (s = g.sourceHeader), c = c || g.dimensions
        }
        var p = function (e, t, n, i, r) {
            if (!e) return {dimensionsDefine: k(r)};
            var a, s;
            if (t === b) "auto" === i || null == i ? L((function (e) {
                null != e && "-" !== e && (h(e) ? null == s && (s = 1) : s = 0)
            }), n, e, 10) : s = i ? 1 : 0, r || 1 !== s || (r = [], L((function (e, t) {
                r[t] = null != e ? e : ""
            }), n, e)), a = r ? r.length : n === A ? e.length : e[0] ? e[0].length : null; else if (t === C) r || (r = function (e) {
                var t, n = 0;
                for (; n < e.length && !(t = e[n++]);) ;
                if (t) {
                    var i = [];
                    return l(t, (function (e, t) {
                        i.push(t)
                    })), i
                }
            }(e)); else if (t === w) r || (r = [], l(e, (function (e, t) {
                r.push(t)
            }))); else if (t === y) {
                var c = o(e[0]);
                a = u(c) && c.length || 1
            }
            return {startIndex: s, dimensionsDefine: k(r), dimensionsDetectCount: a}
        }(n, i, a, s, c);
        S(e).source = new m({
            data: n,
            fromDataset: r,
            seriesLayoutBy: a,
            sourceFormat: i,
            dimensionsDefine: p.dimensionsDefine,
            startIndex: p.startIndex,
            dimensionsDetectCount: p.dimensionsDetectCount,
            encodeDefine: t.encode
        })
    }, t.makeSeriesEncodeForAxisCoordSys = function (e, t, n) {
        var i = {}, r = T(t);
        if (!r || !e) return i;
        var o, a, s = [], c = [], u = t.ecModel, h = S(u).datasetMap, f = r.uid + "_" + n.seriesLayoutBy;
        e = e.slice(), l(e, (function (t, n) {
            !d(t) && (e[n] = {name: t}), "ordinal" === t.type && null == o && (o = n, a = m(e[n])), i[t.name] = []
        }));
        var g = h.get(f) || h.set(f, {categoryWayDim: a, valueWayDim: 0});

        function p(e, t, n) {
            for (var i = 0; i < n; i++) e.push(t + i)
        }

        function m(e) {
            var t = e.dimsDef;
            return t ? t.length : 1
        }

        return l(e, (function (e, t) {
            var n = e.name, r = m(e);
            if (null == o) {
                var a = g.valueWayDim;
                p(i[n], a, r), p(c, a, r), g.valueWayDim += r
            } else if (o === t) p(i[n], 0, r), p(s, 0, r); else {
                a = g.categoryWayDim;
                p(i[n], a, r), p(c, a, r), g.categoryWayDim += r
            }
        })), s.length && (i.itemName = s), c.length && (i.seriesName = c), i
    }, t.makeSeriesEncodeForNameBased = function (e, t, n) {
        var i = {};
        if (!T(e)) return i;
        var r, o = t.sourceFormat, a = t.dimensionsDefine;
        o !== C && o !== w || l(a, (function (e, t) {
            "name" === (d(e) ? e.name : e) && (r = t)
        }));
        var s = function () {
            for (var e = {}, i = {}, s = [], l = 0, c = Math.min(5, n); l < c; l++) {
                var u = O(t.data, o, t.seriesLayoutBy, a, t.startIndex, l);
                s.push(u);
                var h = u === _.Not;
                if (h && null == e.v && l !== r && (e.v = l), (null == e.n || e.n === e.v || !h && s[e.n] === _.Not) && (e.n = l), d(e) && s[e.n] !== _.Not) return e;
                h || (u === _.Might && null == i.v && l !== r && (i.v = l), null != i.n && i.n !== i.v || (i.n = l))
            }

            function d(e) {
                return null != e.v && null != e.n
            }

            return d(e) ? e : d(i) ? i : null
        }();
        if (s) {
            i.value = s.v;
            var c = null != r ? r : s.n;
            i.itemName = [c], i.seriesName = [c]
        }
        return i
    }, t.guessOrdinal = function (e, t) {
        return O(e.data, e.sourceFormat, e.seriesLayoutBy, e.dimensionsDefine, e.startIndex, t)
    }
}, function (e, t, n) {
    var i = n(1), r = n(19), o = n(50), a = n(66).SOURCE_FORMAT_ORIGINAL, s = n(67).getDimensionTypeByAxis,
        l = n(5).getDataItemValue, c = n(21), u = n(308).getCoordSysInfoBySeries, h = n(65), d = n(27).enableDataStack,
        f = n(29).makeSeriesEncodeForAxisCoordSys;
    var g = function (e, t, n) {
        n = n || {}, h.isInstance(e) || (e = h.seriesDataToSource(e));
        var g, p = t.get("coordinateSystem"), m = c.get(p), v = u(t);
        v && (g = i.map(v.coordSysDims, (function (e) {
            var t = {name: e}, n = v.axisMap.get(e);
            if (n) {
                var i = n.get("type");
                t.type = s(i)
            }
            return t
        }))), g || (g = m && (m.getDimensionsInfo ? m.getDimensionsInfo() : m.dimensions.slice()) || ["x", "y"]);
        var y, b, C = o(e, {
            coordDimensions: g,
            generateCoord: n.generateCoord,
            encodeDefaulter: n.useEncodeDefaulter ? i.curry(f, g, t) : null
        });
        v && i.each(C, (function (e, t) {
            var n = e.coordDim, i = v.categoryAxisMap.get(n);
            i && (null == y && (y = t), e.ordinalMeta = i.getOrdinalMeta()), null != e.otherDims.itemName && (b = !0)
        })), b || null == y || (C[y].otherDims.itemName = 0);
        var w = d(t, C), I = new r(C, t);
        I.setCalculationInfo(w);
        var x = null != y && function (e) {
            if (e.sourceFormat === a) {
                var t = function (e) {
                    var t = 0;
                    for (; t < e.length && null == e[t];) t++;
                    return e[t]
                }(e.data || []);
                return null != t && !i.isArray(l(t))
            }
        }(e) ? function (e, t, n, i) {
            return i === y ? n : this.defaultDimValueGetter(e, t, n, i)
        } : null;
        return I.hasItemOption = !1, I.initData(e, null, x), I
    };
    e.exports = g
}, function (e, t, n) {
    var i = n(9), r = i.create, o = i.distSquare, a = Math.pow, s = Math.sqrt, l = s(3), c = r(), u = r(), h = r();

    function d(e) {
        return e > -1e-8 && e < 1e-8
    }

    function f(e) {
        return e > 1e-8 || e < -1e-8
    }

    function g(e, t, n, i, r) {
        var o = 1 - r;
        return o * o * (o * e + 3 * r * t) + r * r * (r * i + 3 * o * n)
    }

    function p(e, t, n, i) {
        var r = 1 - i;
        return r * (r * e + 2 * i * t) + i * i * n
    }

    t.cubicAt = g, t.cubicDerivativeAt = function (e, t, n, i, r) {
        var o = 1 - r;
        return 3 * (((t - e) * o + 2 * (n - t) * r) * o + (i - n) * r * r)
    }, t.cubicRootAt = function (e, t, n, i, r, o) {
        var c = i + 3 * (t - n) - e, u = 3 * (n - 2 * t + e), h = 3 * (t - e), f = e - r, g = u * u - 3 * c * h,
            p = u * h - 9 * c * f, m = h * h - 3 * u * f, v = 0;
        if (d(g) && d(p)) {
            if (d(u)) o[0] = 0; else (L = -h / u) >= 0 && L <= 1 && (o[v++] = L)
        } else {
            var y = p * p - 4 * g * m;
            if (d(y)) {
                var b = p / g, C = -b / 2;
                (L = -u / c + b) >= 0 && L <= 1 && (o[v++] = L), C >= 0 && C <= 1 && (o[v++] = C)
            } else if (y > 0) {
                var w = s(y), I = g * u + 1.5 * c * (-p + w), x = g * u + 1.5 * c * (-p - w);
                (L = (-u - ((I = I < 0 ? -a(-I, 1 / 3) : a(I, 1 / 3)) + (x = x < 0 ? -a(-x, 1 / 3) : a(x, 1 / 3)))) / (3 * c)) >= 0 && L <= 1 && (o[v++] = L)
            } else {
                var A = (2 * g * u - 3 * c * p) / (2 * s(g * g * g)), _ = Math.acos(A) / 3, S = s(g), k = Math.cos(_),
                    L = (-u - 2 * S * k) / (3 * c),
                    T = (C = (-u + S * (k + l * Math.sin(_))) / (3 * c), (-u + S * (k - l * Math.sin(_))) / (3 * c));
                L >= 0 && L <= 1 && (o[v++] = L), C >= 0 && C <= 1 && (o[v++] = C), T >= 0 && T <= 1 && (o[v++] = T)
            }
        }
        return v
    }, t.cubicExtrema = function (e, t, n, i, r) {
        var o = 6 * n - 12 * t + 6 * e, a = 9 * t + 3 * i - 3 * e - 9 * n, l = 3 * t - 3 * e, c = 0;
        if (d(a)) {
            if (f(o)) (h = -l / o) >= 0 && h <= 1 && (r[c++] = h)
        } else {
            var u = o * o - 4 * a * l;
            if (d(u)) r[0] = -o / (2 * a); else if (u > 0) {
                var h, g = s(u), p = (-o - g) / (2 * a);
                (h = (-o + g) / (2 * a)) >= 0 && h <= 1 && (r[c++] = h), p >= 0 && p <= 1 && (r[c++] = p)
            }
        }
        return c
    }, t.cubicSubdivide = function (e, t, n, i, r, o) {
        var a = (t - e) * r + e, s = (n - t) * r + t, l = (i - n) * r + n, c = (s - a) * r + a, u = (l - s) * r + s,
            h = (u - c) * r + c;
        o[0] = e, o[1] = a, o[2] = c, o[3] = h, o[4] = h, o[5] = u, o[6] = l, o[7] = i
    }, t.cubicProjectPoint = function (e, t, n, i, r, a, l, d, f, p, m) {
        var v, y, b, C, w, I = .005, x = 1 / 0;
        c[0] = f, c[1] = p;
        for (var A = 0; A < 1; A += .05) u[0] = g(e, n, r, l, A), u[1] = g(t, i, a, d, A), (C = o(c, u)) < x && (v = A, x = C);
        x = 1 / 0;
        for (var _ = 0; _ < 32 && !(I < 1e-4); _++) y = v - I, b = v + I, u[0] = g(e, n, r, l, y), u[1] = g(t, i, a, d, y), C = o(u, c), y >= 0 && C < x ? (v = y, x = C) : (h[0] = g(e, n, r, l, b), h[1] = g(t, i, a, d, b), w = o(h, c), b <= 1 && w < x ? (v = b, x = w) : I *= .5);
        return m && (m[0] = g(e, n, r, l, v), m[1] = g(t, i, a, d, v)), s(x)
    }, t.quadraticAt = p, t.quadraticDerivativeAt = function (e, t, n, i) {
        return 2 * ((1 - i) * (t - e) + i * (n - t))
    }, t.quadraticRootAt = function (e, t, n, i, r) {
        var o = e - 2 * t + n, a = 2 * (t - e), l = e - i, c = 0;
        if (d(o)) {
            if (f(a)) (h = -l / a) >= 0 && h <= 1 && (r[c++] = h)
        } else {
            var u = a * a - 4 * o * l;
            if (d(u)) (h = -a / (2 * o)) >= 0 && h <= 1 && (r[c++] = h); else if (u > 0) {
                var h, g = s(u), p = (-a - g) / (2 * o);
                (h = (-a + g) / (2 * o)) >= 0 && h <= 1 && (r[c++] = h), p >= 0 && p <= 1 && (r[c++] = p)
            }
        }
        return c
    }, t.quadraticExtremum = function (e, t, n) {
        var i = e + n - 2 * t;
        return 0 === i ? .5 : (e - t) / i
    }, t.quadraticSubdivide = function (e, t, n, i, r) {
        var o = (t - e) * i + e, a = (n - t) * i + t, s = (a - o) * i + o;
        r[0] = e, r[1] = o, r[2] = s, r[3] = s, r[4] = a, r[5] = n
    }, t.quadraticProjectPoint = function (e, t, n, i, r, a, l, d, f) {
        var g, m = .005, v = 1 / 0;
        c[0] = l, c[1] = d;
        for (var y = 0; y < 1; y += .05) {
            u[0] = p(e, n, r, y), u[1] = p(t, i, a, y), (I = o(c, u)) < v && (g = y, v = I)
        }
        v = 1 / 0;
        for (var b = 0; b < 32 && !(m < 1e-4); b++) {
            var C = g - m, w = g + m;
            u[0] = p(e, n, r, C), u[1] = p(t, i, a, C);
            var I = o(u, c);
            if (C >= 0 && I < v) g = C, v = I; else {
                h[0] = p(e, n, r, w), h[1] = p(t, i, a, w);
                var x = o(h, c);
                w <= 1 && x < v ? (g = w, v = x) : m *= .5
            }
        }
        return f && (f[0] = p(e, n, r, g), f[1] = p(t, i, a, g)), s(v)
    }
}, function (e, t) {
    var n = "\0__throttleOriginMethod", i = "\0__throttleRate";

    function r(e, t, n) {
        var i, r, o, a, s, l = 0, c = 0, u = null;

        function h() {
            c = (new Date).getTime(), u = null, e.apply(o, a || [])
        }

        t = t || 0;
        var d = function () {
            i = (new Date).getTime(), o = this, a = arguments;
            var e = s || t, d = s || n;
            s = null, r = i - (d ? l : c) - e, clearTimeout(u), d ? u = setTimeout(h, e) : r >= 0 ? h() : u = setTimeout(h, -r), l = i
        };
        return d.clear = function () {
            u && (clearTimeout(u), u = null)
        }, d.debounceNextCall = function (e) {
            s = e
        }, d
    }

    t.throttle = r, t.createOrUpdate = function (e, t, o, a) {
        var s = e[t];
        if (s) {
            var l = s[n] || s, c = s["\0__throttleType"];
            if (s[i] !== o || c !== a) {
                if (null == o || !a) return e[t] = l;
                (s = e[t] = r(l, o, "debounce" === a))[n] = l, s["\0__throttleType"] = a, s[i] = o
            }
            return s
        }
    }, t.clear = function (e, t) {
        var i = e[t];
        i && i[n] && (e[t] = i[n])
    }
}, function (e, t) {
    e.exports = {
        legend: {selector: {all: "全选", inverse: "反选"}},
        toolbox: {
            brush: {
                title: {
                    rect: "矩形选择",
                    polygon: "圈选",
                    lineX: "横向选择",
                    lineY: "纵向选择",
                    keep: "保持选择",
                    clear: "清除选择"
                }
            },
            dataView: {title: "数据视图", lang: ["数据视图", "关闭", "刷新"]},
            dataZoom: {title: {zoom: "区域缩放", back: "区域缩放还原"}},
            magicType: {title: {line: "切换为折线图", bar: "切换为柱状图", stack: "切换为堆叠", tiled: "切换为平铺"}},
            restore: {title: "还原"},
            saveAsImage: {title: "保存为图片", lang: ["右键另存为图片"]}
        },
        series: {
            typeNames: {
                pie: "饼图",
                bar: "柱状图",
                line: "折线图",
                scatter: "散点图",
                effectScatter: "涟漪散点图",
                radar: "雷达图",
                tree: "树图",
                treemap: "矩形树图",
                boxplot: "箱型图",
                candlestick: "K线图",
                k: "K线图",
                heatmap: "热力图",
                map: "地图",
                parallel: "平行坐标图",
                lines: "线图",
                graph: "关系图",
                sankey: "桑基图",
                funnel: "漏斗图",
                gauge: "仪表盘图",
                pictorialBar: "象形柱图",
                themeRiver: "主题河流图",
                sunburst: "旭日图"
            }
        },
        aria: {
            general: {withTitle: "这是一个关于“{title}”的图表。", withoutTitle: "这是一个图表，"},
            series: {
                single: {
                    prefix: "",
                    withName: "图表类型是{seriesType}，表示{seriesName}。",
                    withoutName: "图表类型是{seriesType}。"
                },
                multiple: {
                    prefix: "它由{seriesCount}个图表系列组成。",
                    withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType}，",
                    withoutName: "第{seriesId}个系列是一个{seriesType}，",
                    separator: {middle: "；", end: "。"}
                }
            },
            data: {
                allData: "其数据是——",
                partialData: "其中，前{displayCnt}项是——",
                withName: "{name}的数据是{value}",
                withoutName: "{value}",
                separator: {middle: "，", end: ""}
            }
        }
    }
}, function (e, t, n) {
    var i = n(1), r = i.each, o = i.map, a = n(4), s = a.linearMap, l = a.getPixelPrecision, c = a.round, u = n(311),
        h = u.createAxisTicks, d = u.createAxisLabels, f = u.calculateCategoryInterval, g = [0, 1],
        p = function (e, t, n) {
            this.dim = e, this.scale = t, this._extent = n || [0, 0], this.inverse = !1, this.onBand = !1
        };

    function m(e, t) {
        var n = (e[1] - e[0]) / t / 2;
        e[0] += n, e[1] -= n
    }

    p.prototype = {
        constructor: p, contain: function (e) {
            var t = this._extent, n = Math.min(t[0], t[1]), i = Math.max(t[0], t[1]);
            return e >= n && e <= i
        }, containData: function (e) {
            return this.scale.contain(e)
        }, getExtent: function () {
            return this._extent.slice()
        }, getPixelPrecision: function (e) {
            return l(e || this.scale.getExtent(), this._extent)
        }, setExtent: function (e, t) {
            var n = this._extent;
            n[0] = e, n[1] = t
        }, dataToCoord: function (e, t) {
            var n = this._extent, i = this.scale;
            return e = i.normalize(e), this.onBand && "ordinal" === i.type && m(n = n.slice(), i.count()), s(e, g, n, t)
        }, coordToData: function (e, t) {
            var n = this._extent, i = this.scale;
            this.onBand && "ordinal" === i.type && m(n = n.slice(), i.count());
            var r = s(e, n, g, t);
            return this.scale.scale(r)
        }, pointToData: function (e, t) {
        }, getTicksCoords: function (e) {
            var t = (e = e || {}).tickModel || this.getTickModel(), n = h(this, t).ticks, i = o(n, (function (e) {
                return {coord: this.dataToCoord(e), tickValue: e}
            }), this);
            return function (e, t, n, i) {
                var o = t.length;
                if (!e.onBand || n || !o) return;
                var a, s, l = e.getExtent();
                if (1 === o) t[0].coord = l[0], a = t[1] = {coord: l[0]}; else {
                    var u = t[o - 1].tickValue - t[0].tickValue, h = (t[o - 1].coord - t[0].coord) / u;
                    r(t, (function (e) {
                        e.coord -= h / 2
                    }));
                    var d = e.scale.getExtent();
                    s = 1 + d[1] - t[o - 1].tickValue, a = {coord: t[o - 1].coord + h * s}, t.push(a)
                }
                var f = l[0] > l[1];
                g(t[0].coord, l[0]) && (i ? t[0].coord = l[0] : t.shift());
                i && g(l[0], t[0].coord) && t.unshift({coord: l[0]});
                g(l[1], a.coord) && (i ? a.coord = l[1] : t.pop());
                i && g(a.coord, l[1]) && t.push({coord: l[1]});

                function g(e, t) {
                    return e = c(e), t = c(t), f ? e > t : e < t
                }
            }(this, i, t.get("alignWithLabel"), e.clamp), i
        }, getMinorTicksCoords: function () {
            if ("ordinal" === this.scale.type) return [];
            var e = this.model.getModel("minorTick").get("splitNumber");
            e > 0 && e < 100 || (e = 5);
            var t = this.scale.getMinorTicks(e);
            return o(t, (function (e) {
                return o(e, (function (e) {
                    return {coord: this.dataToCoord(e), tickValue: e}
                }), this)
            }), this)
        }, getViewLabels: function () {
            return d(this).labels
        }, getLabelModel: function () {
            return this.model.getModel("axisLabel")
        }, getTickModel: function () {
            return this.model.getModel("axisTick")
        }, getBandWidth: function () {
            var e = this._extent, t = this.scale.getExtent(), n = t[1] - t[0] + (this.onBand ? 1 : 0);
            0 === n && (n = 1);
            var i = Math.abs(e[1] - e[0]);
            return Math.abs(i) / n
        }, isHorizontal: null, getRotate: null, calculateCategoryInterval: function () {
            return f(this)
        }
    };
    var v = p;
    e.exports = v
}, function (e, t, n) {
    var i = n(1), r = i.retrieve, o = i.defaults, a = i.extend, s = i.each, l = n(8), c = n(3), u = n(13), h = n(4),
        d = h.isRadianAroundZero, f = h.remRadian, g = n(20).createSymbol, p = n(16), m = n(9).applyTransform,
        v = n(22).shouldShowAllLabels, y = Math.PI, b = function (e, t) {
            this.opt = t, this.axisModel = e, o(t, {
                labelOffset: 0,
                nameDirection: 1,
                tickDirection: 1,
                labelDirection: 1,
                silent: !0
            }), this.group = new c.Group;
            var n = new c.Group({position: t.position.slice(), rotation: t.rotation});
            n.updateTransform(), this._transform = n.transform, this._dumbGroup = n
        };
    b.prototype = {
        constructor: b, hasBuilder: function (e) {
            return !!C[e]
        }, add: function (e) {
            C[e].call(this)
        }, getGroup: function () {
            return this.group
        }
    };
    var C = {
        axisLine: function () {
            var e = this.opt, t = this.axisModel;
            if (t.get("axisLine.show")) {
                var n = this.axisModel.axis.getExtent(), i = this._transform, r = [n[0], 0], o = [n[1], 0];
                i && (m(r, r, i), m(o, o, i));
                var l = a({lineCap: "round"}, t.getModel("axisLine.lineStyle").getLineStyle());
                this.group.add(new c.Line({
                    anid: "line",
                    subPixelOptimize: !0,
                    shape: {x1: r[0], y1: r[1], x2: o[0], y2: o[1]},
                    style: l,
                    strokeContainThreshold: e.strokeContainThreshold || 5,
                    silent: !0,
                    z2: 1
                }));
                var u = t.get("axisLine.symbol"), h = t.get("axisLine.symbolSize"),
                    d = t.get("axisLine.symbolOffset") || 0;
                if ("number" == typeof d && (d = [d, d]), null != u) {
                    "string" == typeof u && (u = [u, u]), "string" != typeof h && "number" != typeof h || (h = [h, h]);
                    var f = h[0], p = h[1];
                    s([{rotate: e.rotation + Math.PI / 2, offset: d[0], r: 0}, {
                        rotate: e.rotation - Math.PI / 2,
                        offset: d[1],
                        r: Math.sqrt((r[0] - o[0]) * (r[0] - o[0]) + (r[1] - o[1]) * (r[1] - o[1]))
                    }], (function (t, n) {
                        if ("none" !== u[n] && null != u[n]) {
                            var i = g(u[n], -f / 2, -p / 2, f, p, l.stroke, !0), o = t.r + t.offset,
                                a = [r[0] + o * Math.cos(e.rotation), r[1] - o * Math.sin(e.rotation)];
                            i.attr({rotation: t.rotate, position: a, silent: !0, z2: 11}), this.group.add(i)
                        }
                    }), this)
                }
            }
        }, axisTickLabel: function () {
            var e = this.axisModel, t = this.opt, n = function (e, t, n) {
                var i = t.axis, r = t.getModel("axisTick");
                if (!r.get("show") || i.scale.isBlank()) return;
                for (var a = r.getModel("lineStyle"), s = n.tickDirection * r.get("length"), l = k(i.getTicksCoords(), e._transform, s, o(a.getLineStyle(), {stroke: t.get("axisLine.lineStyle.color")}), "ticks"), c = 0; c < l.length; c++) e.group.add(l[c]);
                return l
            }(this, e, t), i = function (e, t, n) {
                var i = t.axis;
                if (!r(n.axisLabelShow, t.get("axisLabel.show")) || i.scale.isBlank()) return;
                var o = t.getModel("axisLabel"), a = o.get("margin"), l = i.getViewLabels(),
                    h = (r(n.labelRotate, o.get("rotate")) || 0) * y / 180, d = I(n.rotation, h, n.labelDirection),
                    f = t.getCategories && t.getCategories(!0), g = [], p = x(t), m = t.get("triggerEvent");
                return s(l, (function (r, s) {
                    var l = r.tickValue, h = r.formattedLabel, v = r.rawLabel, y = o;
                    f && f[l] && f[l].textStyle && (y = new u(f[l].textStyle, o, t.ecModel));
                    var b = y.getTextColor() || t.get("axisLine.lineStyle.color"),
                        C = [i.dataToCoord(l), n.labelOffset + n.labelDirection * a],
                        I = new c.Text({anid: "label_" + l, position: C, rotation: d.rotation, silent: p, z2: 10});
                    c.setTextStyle(I.style, y, {
                        text: h,
                        textAlign: y.getShallow("align", !0) || d.textAlign,
                        textVerticalAlign: y.getShallow("verticalAlign", !0) || y.getShallow("baseline", !0) || d.textVerticalAlign,
                        textFill: "function" == typeof b ? b("category" === i.type ? v : "value" === i.type ? l + "" : l, s) : b
                    }), m && (I.eventData = w(t), I.eventData.targetType = "axisLabel", I.eventData.value = v), e._dumbGroup.add(I), I.updateTransform(), g.push(I), e.group.add(I), I.decomposeTransform()
                })), g
            }(this, e, t);
            !function (e, t, n) {
                if (v(e.axis)) return;
                var i = e.get("axisLabel.showMinLabel"), r = e.get("axisLabel.showMaxLabel");
                n = n || [];
                var o = (t = t || [])[0], a = t[1], s = t[t.length - 1], l = t[t.length - 2], c = n[0], u = n[1],
                    h = n[n.length - 1], d = n[n.length - 2];
                !1 === i ? (A(o), A(c)) : _(o, a) && (i ? (A(a), A(u)) : (A(o), A(c)));
                !1 === r ? (A(s), A(h)) : _(l, s) && (r ? (A(l), A(d)) : (A(s), A(h)))
            }(e, i, n), function (e, t, n) {
                var i = t.axis, r = t.getModel("minorTick");
                if (!r.get("show") || i.scale.isBlank()) return;
                var a = i.getMinorTicksCoords();
                if (!a.length) return;
                for (var s = r.getModel("lineStyle"), l = n.tickDirection * r.get("length"), c = o(s.getLineStyle(), o(t.getModel("axisTick").getLineStyle(), {stroke: t.get("axisLine.lineStyle.color")})), u = 0; u < a.length; u++) for (var h = k(a[u], e._transform, l, c, "minorticks_" + u), d = 0; d < h.length; d++) e.group.add(h[d])
            }(this, e, t)
        }, axisName: function () {
            var e = this.opt, t = this.axisModel, n = r(e.axisName, t.get("name"));
            if (n) {
                var i, o, s = t.get("nameLocation"), u = e.nameDirection, h = t.getModel("nameTextStyle"),
                    g = t.get("nameGap") || 0, p = this.axisModel.axis.getExtent(), m = p[0] > p[1] ? -1 : 1,
                    v = ["start" === s ? p[0] - m * g : "end" === s ? p[1] + m * g : (p[0] + p[1]) / 2, S(s) ? e.labelOffset + u * g : 0],
                    b = t.get("nameRotate");
                null != b && (b = b * y / 180), S(s) ? i = I(e.rotation, null != b ? b : e.rotation, u) : (i = function (e, t, n, i) {
                    var r, o, a = f(n - e.rotation), s = i[0] > i[1], l = "start" === t && !s || "start" !== t && s;
                    d(a - y / 2) ? (o = l ? "bottom" : "top", r = "center") : d(a - 1.5 * y) ? (o = l ? "top" : "bottom", r = "center") : (o = "middle", r = a < 1.5 * y && a > y / 2 ? l ? "left" : "right" : l ? "right" : "left");
                    return {rotation: a, textAlign: r, textVerticalAlign: o}
                }(e, s, b || 0, p), null != (o = e.axisNameAvailableWidth) && (o = Math.abs(o / Math.sin(i.rotation)), !isFinite(o) && (o = null)));
                var C = h.getFont(), A = t.get("nameTruncate", !0) || {}, _ = A.ellipsis,
                    k = r(e.nameTruncateMaxWidth, A.maxWidth, o),
                    L = null != _ && null != k ? l.truncateText(n, k, C, _, {
                        minChar: 2,
                        placeholder: A.placeholder
                    }) : n, T = t.get("tooltip", !0), O = t.mainType, R = {componentType: O, name: n, $vars: ["name"]};
                R[O + "Index"] = t.componentIndex;
                var E = new c.Text({
                    anid: "name",
                    __fullText: n,
                    __truncatedText: L,
                    position: v,
                    rotation: i.rotation,
                    silent: x(t),
                    z2: 1,
                    tooltip: T && T.show ? a({
                        content: n, formatter: function () {
                            return n
                        }, formatterParams: R
                    }, T) : null
                });
                c.setTextStyle(E.style, h, {
                    text: L,
                    textFont: C,
                    textFill: h.getTextColor() || t.get("axisLine.lineStyle.color"),
                    textAlign: h.get("align") || i.textAlign,
                    textVerticalAlign: h.get("verticalAlign") || i.textVerticalAlign
                }), t.get("triggerEvent") && (E.eventData = w(t), E.eventData.targetType = "axisName", E.eventData.name = n), this._dumbGroup.add(E), E.updateTransform(), this.group.add(E), E.decomposeTransform()
            }
        }
    }, w = b.makeAxisEventDataBase = function (e) {
        var t = {componentType: e.mainType, componentIndex: e.componentIndex};
        return t[e.mainType + "Index"] = e.componentIndex, t
    }, I = b.innerTextLayout = function (e, t, n) {
        var i, r, o = f(t - e);
        return d(o) ? (r = n > 0 ? "top" : "bottom", i = "center") : d(o - y) ? (r = n > 0 ? "bottom" : "top", i = "center") : (r = "middle", i = o > 0 && o < y ? n > 0 ? "right" : "left" : n > 0 ? "left" : "right"), {
            rotation: o,
            textAlign: i,
            textVerticalAlign: r
        }
    };
    var x = b.isLabelSilent = function (e) {
        var t = e.get("tooltip");
        return e.get("silent") || !(e.get("triggerEvent") || t && t.show)
    };

    function A(e) {
        e && (e.ignore = !0)
    }

    function _(e, t, n) {
        var i = e && e.getBoundingRect().clone(), r = t && t.getBoundingRect().clone();
        if (i && r) {
            var o = p.identity([]);
            return p.rotate(o, o, -e.rotation), i.applyTransform(p.mul([], o, e.getLocalTransform())), r.applyTransform(p.mul([], o, t.getLocalTransform())), i.intersect(r)
        }
    }

    function S(e) {
        return "middle" === e || "center" === e
    }

    function k(e, t, n, i, r) {
        for (var o = [], a = [], s = [], l = 0; l < e.length; l++) {
            var u = e[l].coord;
            a[0] = u, a[1] = 0, s[0] = u, s[1] = n, t && (m(a, a, t), m(s, s, t));
            var h = new c.Line({
                anid: r + "_" + e[l].tickValue,
                subPixelOptimize: !0,
                shape: {x1: a[0], y1: a[1], x2: s[0], y2: s[1]},
                style: i,
                z2: 2,
                silent: !0
            });
            o.push(h)
        }
        return o
    }

    var L = b;
    e.exports = L
}, function (e, t) {
    var n = {};
    t.register = function (e, t) {
        n[e] = t
    }, t.get = function (e) {
        return n[e]
    }
}, function (e, t) {
    var n = Array.prototype.slice, i = function (e) {
        this._$handlers = {}, this._$eventProcessor = e
    };

    function r(e, t, n, i, r, o) {
        var a = e._$handlers;
        if ("function" == typeof n && (r = i, i = n, n = null), !i || !t) return e;
        n = function (e, t) {
            var n = e._$eventProcessor;
            return null != t && n && n.normalizeQuery && (t = n.normalizeQuery(t)), t
        }(e, n), a[t] || (a[t] = []);
        for (var s = 0; s < a[t].length; s++) if (a[t][s].h === i) return e;
        var l = {h: i, one: o, query: n, ctx: r || e, callAtLast: i.zrEventfulCallAtLast}, c = a[t].length - 1,
            u = a[t][c];
        return u && u.callAtLast ? a[t].splice(c, 0, l) : a[t].push(l), e
    }

    i.prototype = {
        constructor: i, one: function (e, t, n, i) {
            return r(this, e, t, n, i, !0)
        }, on: function (e, t, n, i) {
            return r(this, e, t, n, i, !1)
        }, isSilent: function (e) {
            var t = this._$handlers;
            return !t[e] || !t[e].length
        }, off: function (e, t) {
            var n = this._$handlers;
            if (!e) return this._$handlers = {}, this;
            if (t) {
                if (n[e]) {
                    for (var i = [], r = 0, o = n[e].length; r < o; r++) n[e][r].h !== t && i.push(n[e][r]);
                    n[e] = i
                }
                n[e] && 0 === n[e].length && delete n[e]
            } else delete n[e];
            return this
        }, trigger: function (e) {
            var t = this._$handlers[e], i = this._$eventProcessor;
            if (t) {
                var r = arguments, o = r.length;
                o > 3 && (r = n.call(r, 1));
                for (var a = t.length, s = 0; s < a;) {
                    var l = t[s];
                    if (i && i.filter && null != l.query && !i.filter(e, l.query)) s++; else {
                        switch (o) {
                            case 1:
                                l.h.call(l.ctx);
                                break;
                            case 2:
                                l.h.call(l.ctx, r[1]);
                                break;
                            case 3:
                                l.h.call(l.ctx, r[1], r[2]);
                                break;
                            default:
                                l.h.apply(l.ctx, r)
                        }
                        l.one ? (t.splice(s, 1), a--) : s++
                    }
                }
            }
            return i && i.afterTrigger && i.afterTrigger(e), this
        }, triggerWithContext: function (e) {
            var t = this._$handlers[e], i = this._$eventProcessor;
            if (t) {
                var r = arguments, o = r.length;
                o > 4 && (r = n.call(r, 1, r.length - 1));
                for (var a = r[r.length - 1], s = t.length, l = 0; l < s;) {
                    var c = t[l];
                    if (i && i.filter && null != c.query && !i.filter(e, c.query)) l++; else {
                        switch (o) {
                            case 1:
                                c.h.call(a);
                                break;
                            case 2:
                                c.h.call(a, r[1]);
                                break;
                            case 3:
                                c.h.call(a, r[1], r[2]);
                                break;
                            default:
                                c.h.apply(a, r)
                        }
                        c.one ? (t.splice(l, 1), s--) : l++
                    }
                }
            }
            return i && i.afterTrigger && i.afterTrigger(e), this
        }
    };
    var o = i;
    e.exports = o
}, function (e, t, n) {
    var i = n(1), r = n(146), o = n(10), a = function (e) {
        for (var t in e = e || {}, r.call(this, e), e) e.hasOwnProperty(t) && (this[t] = e[t]);
        this._children = [], this.__storage = null, this.__dirty = !0
    };
    a.prototype = {
        constructor: a, isGroup: !0, type: "group", silent: !1, children: function () {
            return this._children.slice()
        }, childAt: function (e) {
            return this._children[e]
        }, childOfName: function (e) {
            for (var t = this._children, n = 0; n < t.length; n++) if (t[n].name === e) return t[n]
        }, childCount: function () {
            return this._children.length
        }, add: function (e) {
            return e && e !== this && e.parent !== this && (this._children.push(e), this._doAdd(e)), this
        }, addBefore: function (e, t) {
            if (e && e !== this && e.parent !== this && t && t.parent === this) {
                var n = this._children, i = n.indexOf(t);
                i >= 0 && (n.splice(i, 0, e), this._doAdd(e))
            }
            return this
        }, _doAdd: function (e) {
            e.parent && e.parent.remove(e), e.parent = this;
            var t = this.__storage, n = this.__zr;
            t && t !== e.__storage && (t.addToStorage(e), e instanceof a && e.addChildrenToStorage(t)), n && n.refresh()
        }, remove: function (e) {
            var t = this.__zr, n = this.__storage, r = this._children, o = i.indexOf(r, e);
            return o < 0 || (r.splice(o, 1), e.parent = null, n && (n.delFromStorage(e), e instanceof a && e.delChildrenFromStorage(n)), t && t.refresh()), this
        }, removeAll: function () {
            var e, t, n = this._children, i = this.__storage;
            for (t = 0; t < n.length; t++) e = n[t], i && (i.delFromStorage(e), e instanceof a && e.delChildrenFromStorage(i)), e.parent = null;
            return n.length = 0, this
        }, eachChild: function (e, t) {
            for (var n = this._children, i = 0; i < n.length; i++) {
                var r = n[i];
                e.call(t, r, i)
            }
            return this
        }, traverse: function (e, t) {
            for (var n = 0; n < this._children.length; n++) {
                var i = this._children[n];
                e.call(t, i), "group" === i.type && i.traverse(e, t)
            }
            return this
        }, addChildrenToStorage: function (e) {
            for (var t = 0; t < this._children.length; t++) {
                var n = this._children[t];
                e.addToStorage(n), n instanceof a && n.addChildrenToStorage(e)
            }
        }, delChildrenFromStorage: function (e) {
            for (var t = 0; t < this._children.length; t++) {
                var n = this._children[t];
                e.delFromStorage(n), n instanceof a && n.delChildrenFromStorage(e)
            }
        }, dirty: function () {
            return this.__dirty = !0, this.__zr && this.__zr.refresh(), this
        }, getBoundingRect: function (e) {
            for (var t = null, n = new o(0, 0, 0, 0), i = e || this._children, r = [], a = 0; a < i.length; a++) {
                var s = i[a];
                if (!s.ignore && !s.invisible) {
                    var l = s.getBoundingRect(), c = s.getLocalTransform(r);
                    c ? (n.copy(l), n.applyTransform(c), (t = t || n.clone()).union(n)) : (t = t || l.clone()).union(l)
                }
            }
            return t || n
        }
    }, i.inherits(a, r);
    var s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(62), r = n(1), o = n(17), a = n(84), s = n(83).ContextCachedBy, l = function (e) {
        i.call(this, e)
    };
    l.prototype = {
        constructor: l, type: "text", brush: function (e, t) {
            var n = this.style;
            this.__dirty && a.normalizeTextStyle(n, !0), n.fill = n.stroke = n.shadowBlur = n.shadowColor = n.shadowOffsetX = n.shadowOffsetY = null;
            var i = n.text;
            null != i && (i += ""), a.needDrawText(i, n) ? (this.setTransform(e), a.renderText(this, e, i, n, null, t), this.restoreTransform(e)) : e.__attrCachedBy = s.NONE
        }, getBoundingRect: function () {
            var e = this.style;
            if (this.__dirty && a.normalizeTextStyle(e, !0), !this._rect) {
                var t = e.text;
                null != t ? t += "" : t = "";
                var n = o.getBoundingRect(e.text + "", e.font, e.textAlign, e.textVerticalAlign, e.textPadding, e.textLineHeight, e.rich);
                if (n.x += e.x || 0, n.y += e.y || 0, a.getStroke(e.textStroke, e.textStrokeWidth)) {
                    var i = e.textStrokeWidth;
                    n.x -= i / 2, n.y -= i / 2, n.width += i, n.height += i
                }
                this._rect = n
            }
            return this._rect
        }
    }, r.inherits(l, i);
    var c = l;
    e.exports = c
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = (i.isTypedArray, i.extend), o = (i.assert, i.each), a = i.isObject, s = n(5),
        l = s.getDataItemValue, c = s.isDataItemOption, u = n(4).parseDate, h = n(65), d = n(66),
        f = d.SOURCE_FORMAT_TYPED_ARRAY, g = d.SOURCE_FORMAT_ARRAY_ROWS, p = d.SOURCE_FORMAT_ORIGINAL,
        m = d.SOURCE_FORMAT_OBJECT_ROWS;

    function v(e, t) {
        h.isInstance(e) || (e = h.seriesDataToSource(e)), this._source = e;
        var n = this._data = e.data, i = e.sourceFormat;
        i === f && (this._offset = 0, this._dimSize = t, this._data = n);
        var o = b[i === g ? i + "_" + e.seriesLayoutBy : i];
        r(this, o)
    }

    var y = v.prototype;
    y.pure = !1, y.persistent = !0, y.getSource = function () {
        return this._source
    };
    var b = {
        arrayRows_column: {
            pure: !0, count: function () {
                return Math.max(0, this._data.length - this._source.startIndex)
            }, getItem: function (e) {
                return this._data[e + this._source.startIndex]
            }, appendData: I
        }, arrayRows_row: {
            pure: !0, count: function () {
                var e = this._data[0];
                return e ? Math.max(0, e.length - this._source.startIndex) : 0
            }, getItem: function (e) {
                e += this._source.startIndex;
                for (var t = [], n = this._data, i = 0; i < n.length; i++) {
                    var r = n[i];
                    t.push(r ? r[e] : null)
                }
                return t
            }, appendData: function () {
                throw new Error('Do not support appendData when set seriesLayoutBy: "row".')
            }
        }, objectRows: {pure: !0, count: C, getItem: w, appendData: I}, keyedColumns: {
            pure: !0, count: function () {
                var e = this._source.dimensionsDefine[0].name, t = this._data[e];
                return t ? t.length : 0
            }, getItem: function (e) {
                for (var t = [], n = this._source.dimensionsDefine, i = 0; i < n.length; i++) {
                    var r = this._data[n[i].name];
                    t.push(r ? r[e] : null)
                }
                return t
            }, appendData: function (e) {
                var t = this._data;
                o(e, (function (e, n) {
                    for (var i = t[n] || (t[n] = []), r = 0; r < (e || []).length; r++) i.push(e[r])
                }))
            }
        }, original: {count: C, getItem: w, appendData: I}, typedArray: {
            persistent: !1, pure: !0, count: function () {
                return this._data ? this._data.length / this._dimSize : 0
            }, getItem: function (e, t) {
                e -= this._offset, t = t || [];
                for (var n = this._dimSize * e, i = 0; i < this._dimSize; i++) t[i] = this._data[n + i];
                return t
            }, appendData: function (e) {
                this._data = e
            }, clean: function () {
                this._offset += this.count(), this._data = null
            }
        }
    };

    function C() {
        return this._data.length
    }

    function w(e) {
        return this._data[e]
    }

    function I(e) {
        for (var t = 0; t < e.length; t++) this._data.push(e[t])
    }

    var x = {
        arrayRows: A, objectRows: function (e, t, n, i) {
            return null != n ? e[i] : e
        }, keyedColumns: A, original: function (e, t, n, i) {
            var r = l(e);
            return null != n && r instanceof Array ? r[n] : r
        }, typedArray: A
    };

    function A(e, t, n, i) {
        return null != n ? e[n] : e
    }

    var _ = {
        arrayRows: S, objectRows: function (e, t, n, i) {
            return k(e[t], this._dimensionInfos[t])
        }, keyedColumns: S, original: function (e, t, n, i) {
            var r = e && (null == e.value ? e : e.value);
            return !this._rawData.pure && c(e) && (this.hasItemOption = !0), k(r instanceof Array ? r[i] : r, this._dimensionInfos[t])
        }, typedArray: function (e, t, n, i) {
            return e[i]
        }
    };

    function S(e, t, n, i) {
        return k(e[i], this._dimensionInfos[t])
    }

    function k(e, t) {
        var n = t && t.type;
        if ("ordinal" === n) {
            var i = t && t.ordinalMeta;
            return i ? i.parseAndCollect(e) : e
        }
        return "time" === n && "number" != typeof e && null != e && "-" !== e && (e = +u(e)), null == e || "" === e ? NaN : +e
    }

    t.DefaultDataProvider = v, t.defaultDimValueGetters = _, t.retrieveRawValue = function (e, t, n) {
        if (e) {
            var i = e.getRawDataItem(t);
            if (null != i) {
                var r, o, a = e.getProvider().getSource().sourceFormat, s = e.getDimensionInfo(n);
                return s && (r = s.name, o = s.index), x[a](i, t, o, r)
            }
        }
    }, t.retrieveRawAttr = function (e, t, n) {
        if (e) {
            var i = e.getProvider().getSource().sourceFormat;
            if (i === p || i === m) {
                var r = e.getRawDataItem(t);
                return i !== p || a(r) || (r = null), r ? r[n] : void 0
            }
        }
    }
}, function (e, t) {
    function n(e) {
        return e
    }

    function i(e, t, i, r, o) {
        this._old = e, this._new = t, this._oldKeyGetter = i || n, this._newKeyGetter = r || n, this.context = o
    }

    function r(e, t, n, i, r) {
        for (var o = 0; o < e.length; o++) {
            var a = "_ec_" + r[i](e[o], o), s = t[a];
            null == s ? (n.push(a), t[a] = o) : (s.length || (t[a] = s = [s]), s.push(o))
        }
    }

    i.prototype = {
        constructor: i, add: function (e) {
            return this._add = e, this
        }, update: function (e) {
            return this._update = e, this
        }, remove: function (e) {
            return this._remove = e, this
        }, execute: function () {
            var e = this._old, t = this._new, n = {}, i = [], o = [];
            for (r(e, {}, i, "_oldKeyGetter", this), r(t, n, o, "_newKeyGetter", this), a = 0; a < e.length; a++) {
                if (null != (l = n[s = i[a]])) (u = l.length) ? (1 === u && (n[s] = null), l = l.shift()) : n[s] = null, this._update && this._update(l, a); else this._remove && this._remove(a)
            }
            for (var a = 0; a < o.length; a++) {
                var s = o[a];
                if (n.hasOwnProperty(s)) {
                    var l;
                    if (null == (l = n[s])) continue;
                    if (l.length) for (var c = 0, u = l.length; c < u; c++) this._add && this._add(l[c]); else this._add && this._add(l)
                }
            }
        }
    };
    var o = i;
    e.exports = o
}, function (e, t, n) {
    var i = n(1).isFunction;
    e.exports = function (e, t, n) {
        return {
            seriesType: e, performRawSeries: !0, reset: function (e, r, o) {
                var a = e.getData(), s = e.get("symbol"), l = e.get("symbolSize"), c = e.get("symbolKeepAspect"),
                    u = e.get("symbolRotate"), h = i(s), d = i(l), f = i(u), g = h || d || f, p = !h && s ? s : t,
                    m = d ? null : l;
                if (a.setVisual({
                    legendSymbol: n || p,
                    symbol: p,
                    symbolSize: m,
                    symbolKeepAspect: c,
                    symbolRotate: u
                }), !r.isSeriesFiltered(e)) return {
                    dataEach: a.hasItemOption || g ? function (t, n) {
                        if (g) {
                            var i = e.getRawValue(n), r = e.getDataParams(n);
                            h && t.setItemVisual(n, "symbol", s(i, r)), d && t.setItemVisual(n, "symbolSize", l(i, r)), f && t.setItemVisual(n, "symbolRotate", u(i, r))
                        }
                        if (t.hasItemOption) {
                            var o = t.getItemModel(n), a = o.getShallow("symbol", !0),
                                c = o.getShallow("symbolSize", !0), p = o.getShallow("symbolRotate", !0),
                                m = o.getShallow("symbolKeepAspect", !0);
                            null != a && t.setItemVisual(n, "symbol", a), null != c && t.setItemVisual(n, "symbolSize", c), null != p && t.setItemVisual(n, "symbolRotate", p), null != m && t.setItemVisual(n, "symbolKeepAspect", m)
                        }
                    } : null
                }
            }
        }
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(92), o = i.extendComponentView({
        type: "axis",
        _axisPointer: null,
        axisPointerClass: null,
        render: function (e, t, n, i) {
            this.axisPointerClass && r.fixValue(e), o.superApply(this, "render", arguments), a(this, e, t, n, i, !0)
        },
        updateAxisPointer: function (e, t, n, i, r) {
            a(this, e, t, n, i, !1)
        },
        remove: function (e, t) {
            var n = this._axisPointer;
            n && n.remove(t), o.superApply(this, "remove", arguments)
        },
        dispose: function (e, t) {
            s(this, t), o.superApply(this, "dispose", arguments)
        }
    });

    function a(e, t, n, i, a, l) {
        var c = o.getAxisPointerClass(e.axisPointerClass);
        if (c) {
            var u = r.getAxisPointerModel(t);
            u ? (e._axisPointer || (e._axisPointer = new c)).render(t, u, i, l) : s(e, i)
        }
    }

    function s(e, t, n) {
        var i = e._axisPointer;
        i && i.dispose(t, n), e._axisPointer = null
    }

    var l = [];
    o.registerAxisPointerClass = function (e, t) {
        l[e] = t
    }, o.getAxisPointerClass = function (e) {
        return e && l[e]
    };
    var c = o;
    e.exports = c
}, function (e, t, n) {
    var i = n(1);

    function r(e) {
        for (var t = []; e;) (e = e.parentNode) && t.push(e);
        return t.reverse()
    }

    t.retrieveTargetInfo = function (e, t, n) {
        if (e && i.indexOf(t, e.type) >= 0) {
            var r = n.getData().tree.root, o = e.targetNode;
            if ("string" == typeof o && (o = r.getNodeById(o)), o && r.contains(o)) return {node: o};
            var a = e.targetNodeId;
            if (null != a && (o = r.getNodeById(a))) return {node: o}
        }
    }, t.getPathToRoot = r, t.aboveViewRoot = function (e, t) {
        var n = r(e);
        return i.indexOf(n, t) >= 0
    }, t.wrapTreePathInfo = function (e, t) {
        for (var n = []; e;) {
            var i = e.dataIndex;
            n.push({name: e.name, dataIndex: i, value: t.getRawValue(i)}), e = e.parentNode
        }
        return n.reverse(), n
    }
}, function (e, t, n) {
    var i = n(1), r = n(25), o = n(4).linearMap, a = i.each, s = i.isObject, l = function (e) {
        var t = e.mappingMethod, n = e.type, r = this.option = i.clone(e);
        this.type = n, this.mappingMethod = t, this._normalizeData = b[t];
        var o = c[n];
        this.applyVisual = o.applyVisual, this.getColorMapper = o.getColorMapper, this._doMap = o._doMap[t], "piecewise" === t ? (u(r), function (e) {
            var t = e.pieceList;
            e.hasSpecialVisual = !1, i.each(t, (function (t, n) {
                t.originIndex = n, null != t.visual && (e.hasSpecialVisual = !0)
            }))
        }(r)) : "category" === t ? r.categories ? function (e) {
            var t = e.categories, n = e.visual, r = e.categoryMap = {};
            if (a(t, (function (e, t) {
                r[e] = t
            })), !i.isArray(n)) {
                var o = [];
                i.isObject(n) ? a(n, (function (e, t) {
                    var n = r[t];
                    o[null != n ? n : -1] = e
                })) : o[-1] = n, n = y(e, o)
            }
            for (var s = t.length - 1; s >= 0; s--) null == n[s] && (delete r[t[s]], t.pop())
        }(r) : u(r, !0) : (i.assert("linear" !== t || r.dataExtent), u(r))
    };
    l.prototype = {
        constructor: l, mapValueToVisual: function (e) {
            var t = this._normalizeData(e);
            return this._doMap(t, e)
        }, getNormalizer: function () {
            return i.bind(this._normalizeData, this)
        }
    };
    var c = l.visualHandlers = {
        color: {
            applyVisual: f("color"), getColorMapper: function () {
                var e = this.option;
                return i.bind("category" === e.mappingMethod ? function (e, t) {
                    return !t && (e = this._normalizeData(e)), g.call(this, e)
                } : function (t, n, i) {
                    var o = !!i;
                    return !n && (t = this._normalizeData(t)), i = r.fastLerp(t, e.parsedVisual, i), o ? i : r.stringify(i, "rgba")
                }, this)
            }, _doMap: {
                linear: function (e) {
                    return r.stringify(r.fastLerp(e, this.option.parsedVisual), "rgba")
                }, category: g, piecewise: function (e, t) {
                    var n = v.call(this, t);
                    return null == n && (n = r.stringify(r.fastLerp(e, this.option.parsedVisual), "rgba")), n
                }, fixed: p
            }
        },
        colorHue: h((function (e, t) {
            return r.modifyHSL(e, t)
        })),
        colorSaturation: h((function (e, t) {
            return r.modifyHSL(e, null, t)
        })),
        colorLightness: h((function (e, t) {
            return r.modifyHSL(e, null, null, t)
        })),
        colorAlpha: h((function (e, t) {
            return r.modifyAlpha(e, t)
        })),
        opacity: {applyVisual: f("opacity"), _doMap: m([0, 1])},
        liftZ: {applyVisual: f("liftZ"), _doMap: {linear: p, category: p, piecewise: p, fixed: p}},
        symbol: {
            applyVisual: function (e, t, n) {
                var r = this.mapValueToVisual(e);
                if (i.isString(r)) n("symbol", r); else if (s(r)) for (var o in r) r.hasOwnProperty(o) && n(o, r[o])
            }, _doMap: {
                linear: d, category: g, piecewise: function (e, t) {
                    var n = v.call(this, t);
                    return null == n && (n = d.call(this, e)), n
                }, fixed: p
            }
        },
        symbolSize: {applyVisual: f("symbolSize"), _doMap: m([0, 1])}
    };

    function u(e, t) {
        var n = e.visual, r = [];
        i.isObject(n) ? a(n, (function (e) {
            r.push(e)
        })) : null != n && r.push(n);
        t || 1 !== r.length || {color: 1, symbol: 1}.hasOwnProperty(e.type) || (r[1] = r[0]), y(e, r)
    }

    function h(e) {
        return {
            applyVisual: function (t, n, i) {
                t = this.mapValueToVisual(t), i("color", e(n("color"), t))
            }, _doMap: m([0, 1])
        }
    }

    function d(e) {
        var t = this.option.visual;
        return t[Math.round(o(e, [0, 1], [0, t.length - 1], !0))] || {}
    }

    function f(e) {
        return function (t, n, i) {
            i(e, this.mapValueToVisual(t))
        }
    }

    function g(e) {
        var t = this.option.visual;
        return t[this.option.loop && -1 !== e ? e % t.length : e]
    }

    function p() {
        return this.option.visual[0]
    }

    function m(e) {
        return {
            linear: function (t) {
                return o(t, e, this.option.visual, !0)
            }, category: g, piecewise: function (t, n) {
                var i = v.call(this, n);
                return null == i && (i = o(t, e, this.option.visual, !0)), i
            }, fixed: p
        }
    }

    function v(e) {
        var t = this.option, n = t.pieceList;
        if (t.hasSpecialVisual) {
            var i = n[l.findPieceIndex(e, n)];
            if (i && i.visual) return i.visual[this.type]
        }
    }

    function y(e, t) {
        return e.visual = t, "color" === e.type && (e.parsedVisual = i.map(t, (function (e) {
            return r.parse(e)
        }))), t
    }

    var b = {
        linear: function (e) {
            return o(e, this.option.dataExtent, [0, 1], !0)
        }, piecewise: function (e) {
            var t = this.option.pieceList, n = l.findPieceIndex(e, t, !0);
            if (null != n) return o(n, [0, t.length - 1], [0, 1], !0)
        }, category: function (e) {
            var t = this.option.categories ? this.option.categoryMap[e] : e;
            return null == t ? -1 : t
        }, fixed: i.noop
    };

    function C(e, t, n) {
        return e ? t <= n : t < n
    }

    l.listVisualTypes = function () {
        var e = [];
        return i.each(c, (function (t, n) {
            e.push(n)
        })), e
    }, l.addVisualHandler = function (e, t) {
        c[e] = t
    }, l.isValidType = function (e) {
        return c.hasOwnProperty(e)
    }, l.eachVisual = function (e, t, n) {
        i.isObject(e) ? i.each(e, t, n) : t.call(n, e)
    }, l.mapVisual = function (e, t, n) {
        var r, o = i.isArray(e) ? [] : i.isObject(e) ? {} : (r = !0, null);
        return l.eachVisual(e, (function (e, i) {
            var a = t.call(n, e, i);
            r ? o = a : o[i] = a
        })), o
    }, l.retrieveVisuals = function (e) {
        var t, n = {};
        return e && a(c, (function (i, r) {
            e.hasOwnProperty(r) && (n[r] = e[r], t = !0)
        })), t ? n : null
    }, l.prepareVisualTypes = function (e) {
        if (s(e)) {
            var t = [];
            a(e, (function (e, n) {
                t.push(n)
            })), e = t
        } else {
            if (!i.isArray(e)) return [];
            e = e.slice()
        }
        return e.sort((function (e, t) {
            return "color" === t && "color" !== e && 0 === e.indexOf("color") ? 1 : -1
        })), e
    }, l.dependsOn = function (e, t) {
        return "color" === t ? !(!e || 0 !== e.indexOf(t)) : e === t
    }, l.findPieceIndex = function (e, t, n) {
        for (var i, r = 1 / 0, o = 0, a = t.length; o < a; o++) {
            var s = t[o].value;
            if (null != s) {
                if (s === e || "string" == typeof s && s === e + "") return o;
                n && h(s, o)
            }
        }
        for (o = 0, a = t.length; o < a; o++) {
            var l = t[o], c = l.interval, u = l.close;
            if (c) {
                if (c[0] === -1 / 0) {
                    if (C(u[1], e, c[1])) return o
                } else if (c[1] === 1 / 0) {
                    if (C(u[0], c[0], e)) return o
                } else if (C(u[0], c[0], e) && C(u[1], e, c[1])) return o;
                n && h(c[0], o), n && h(c[1], o)
            }
        }
        if (n) return e === 1 / 0 ? t.length - 1 : e === -1 / 0 ? 0 : i;

        function h(t, n) {
            var o = Math.abs(t - e);
            o < r && (r = o, i = n)
        }
    };
    var w = l;
    e.exports = w
}, function (e, t, n) {
    var i = n(62), r = n(10), o = n(1), a = n(104);

    function s(e) {
        i.call(this, e)
    }

    s.prototype = {
        constructor: s, type: "image", brush: function (e, t) {
            var n = this.style, i = n.image;
            n.bind(e, this, t);
            var r = this._image = a.createOrUpdateImage(i, this._image, this, this.onload);
            if (r && a.isImageReady(r)) {
                var o = n.x || 0, s = n.y || 0, l = n.width, c = n.height, u = r.width / r.height;
                if (null == l && null != c ? l = c * u : null == c && null != l ? c = l / u : null == l && null == c && (l = r.width, c = r.height), this.setTransform(e), n.sWidth && n.sHeight) {
                    var h = n.sx || 0, d = n.sy || 0;
                    e.drawImage(r, h, d, n.sWidth, n.sHeight, o, s, l, c)
                } else if (n.sx && n.sy) {
                    var f = l - (h = n.sx), g = c - (d = n.sy);
                    e.drawImage(r, h, d, f, g, o, s, l, c)
                } else e.drawImage(r, o, s, l, c);
                null != n.text && (this.restoreTransform(e), this.drawRectText(e, this.getBoundingRect()))
            }
        }, getBoundingRect: function () {
            var e = this.style;
            return this._rect || (this._rect = new r(e.x || 0, e.y || 0, e.width || 0, e.height || 0)), this._rect
        }
    }, o.inherits(s, i);
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(1);
    e.exports = function (e) {
        for (var t = 0; t < e.length; t++) e[t][1] || (e[t][1] = e[t][0]);
        return function (t, n, r) {
            for (var o = {}, a = 0; a < e.length; a++) {
                var s = e[a][1];
                if (!(n && i.indexOf(n, s) >= 0 || r && i.indexOf(r, s) < 0)) {
                    var l = t.getShallow(s);
                    null != l && (o[e[a][0]] = l)
                }
            }
            return o
        }
    }
}, function (e, t, n) {
    var i = n(31), r = n(9), o = n(63), a = n(10), s = n(82).devicePixelRatio,
        l = {M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7}, c = [], u = [], h = [], d = [], f = Math.min, g = Math.max,
        p = Math.cos, m = Math.sin, v = Math.sqrt, y = Math.abs, b = "undefined" != typeof Float32Array,
        C = function (e) {
            this._saveData = !e, this._saveData && (this.data = []), this._ctx = null
        };
    C.prototype = {
        constructor: C,
        _xi: 0,
        _yi: 0,
        _x0: 0,
        _y0: 0,
        _ux: 0,
        _uy: 0,
        _len: 0,
        _lineDash: null,
        _dashOffset: 0,
        _dashIdx: 0,
        _dashSum: 0,
        setScale: function (e, t, n) {
            n = n || 0, this._ux = y(n / s / e) || 0, this._uy = y(n / s / t) || 0
        },
        getContext: function () {
            return this._ctx
        },
        beginPath: function (e) {
            return this._ctx = e, e && e.beginPath(), e && (this.dpr = e.dpr), this._saveData && (this._len = 0), this._lineDash && (this._lineDash = null, this._dashOffset = 0), this
        },
        moveTo: function (e, t) {
            return this.addData(l.M, e, t), this._ctx && this._ctx.moveTo(e, t), this._x0 = e, this._y0 = t, this._xi = e, this._yi = t, this
        },
        lineTo: function (e, t) {
            var n = y(e - this._xi) > this._ux || y(t - this._yi) > this._uy || this._len < 5;
            return this.addData(l.L, e, t), this._ctx && n && (this._needsDash() ? this._dashedLineTo(e, t) : this._ctx.lineTo(e, t)), n && (this._xi = e, this._yi = t), this
        },
        bezierCurveTo: function (e, t, n, i, r, o) {
            return this.addData(l.C, e, t, n, i, r, o), this._ctx && (this._needsDash() ? this._dashedBezierTo(e, t, n, i, r, o) : this._ctx.bezierCurveTo(e, t, n, i, r, o)), this._xi = r, this._yi = o, this
        },
        quadraticCurveTo: function (e, t, n, i) {
            return this.addData(l.Q, e, t, n, i), this._ctx && (this._needsDash() ? this._dashedQuadraticTo(e, t, n, i) : this._ctx.quadraticCurveTo(e, t, n, i)), this._xi = n, this._yi = i, this
        },
        arc: function (e, t, n, i, r, o) {
            return this.addData(l.A, e, t, n, n, i, r - i, 0, o ? 0 : 1), this._ctx && this._ctx.arc(e, t, n, i, r, o), this._xi = p(r) * n + e, this._yi = m(r) * n + t, this
        },
        arcTo: function (e, t, n, i, r) {
            return this._ctx && this._ctx.arcTo(e, t, n, i, r), this
        },
        rect: function (e, t, n, i) {
            return this._ctx && this._ctx.rect(e, t, n, i), this.addData(l.R, e, t, n, i), this
        },
        closePath: function () {
            this.addData(l.Z);
            var e = this._ctx, t = this._x0, n = this._y0;
            return e && (this._needsDash() && this._dashedLineTo(t, n), e.closePath()), this._xi = t, this._yi = n, this
        },
        fill: function (e) {
            e && e.fill(), this.toStatic()
        },
        stroke: function (e) {
            e && e.stroke(), this.toStatic()
        },
        setLineDash: function (e) {
            if (e instanceof Array) {
                this._lineDash = e, this._dashIdx = 0;
                for (var t = 0, n = 0; n < e.length; n++) t += e[n];
                this._dashSum = t
            }
            return this
        },
        setLineDashOffset: function (e) {
            return this._dashOffset = e, this
        },
        len: function () {
            return this._len
        },
        setData: function (e) {
            var t = e.length;
            this.data && this.data.length === t || !b || (this.data = new Float32Array(t));
            for (var n = 0; n < t; n++) this.data[n] = e[n];
            this._len = t
        },
        appendPath: function (e) {
            e instanceof Array || (e = [e]);
            for (var t = e.length, n = 0, i = this._len, r = 0; r < t; r++) n += e[r].len();
            b && this.data instanceof Float32Array && (this.data = new Float32Array(i + n));
            for (r = 0; r < t; r++) for (var o = e[r].data, a = 0; a < o.length; a++) this.data[i++] = o[a];
            this._len = i
        },
        addData: function (e) {
            if (this._saveData) {
                var t = this.data;
                this._len + arguments.length > t.length && (this._expandData(), t = this.data);
                for (var n = 0; n < arguments.length; n++) t[this._len++] = arguments[n];
                this._prevCmd = e
            }
        },
        _expandData: function () {
            if (!(this.data instanceof Array)) {
                for (var e = [], t = 0; t < this._len; t++) e[t] = this.data[t];
                this.data = e
            }
        },
        _needsDash: function () {
            return this._lineDash
        },
        _dashedLineTo: function (e, t) {
            var n, i, r = this._dashSum, o = this._dashOffset, a = this._lineDash, s = this._ctx, l = this._xi,
                c = this._yi, u = e - l, h = t - c, d = v(u * u + h * h), p = l, m = c, y = a.length;
            for (o < 0 && (o = r + o), p -= (o %= r) * (u /= d), m -= o * (h /= d); u > 0 && p <= e || u < 0 && p >= e || 0 === u && (h > 0 && m <= t || h < 0 && m >= t);) p += u * (n = a[i = this._dashIdx]), m += h * n, this._dashIdx = (i + 1) % y, u > 0 && p < l || u < 0 && p > l || h > 0 && m < c || h < 0 && m > c || s[i % 2 ? "moveTo" : "lineTo"](u >= 0 ? f(p, e) : g(p, e), h >= 0 ? f(m, t) : g(m, t));
            u = p - e, h = m - t, this._dashOffset = -v(u * u + h * h)
        },
        _dashedBezierTo: function (e, t, n, r, o, a) {
            var s, l, c, u, h, d = this._dashSum, f = this._dashOffset, g = this._lineDash, p = this._ctx, m = this._xi,
                y = this._yi, b = i.cubicAt, C = 0, w = this._dashIdx, I = g.length, x = 0;
            for (f < 0 && (f = d + f), f %= d, s = 0; s < 1; s += .1) l = b(m, e, n, o, s + .1) - b(m, e, n, o, s), c = b(y, t, r, a, s + .1) - b(y, t, r, a, s), C += v(l * l + c * c);
            for (; w < I && !((x += g[w]) > f); w++) ;
            for (s = (x - f) / C; s <= 1;) u = b(m, e, n, o, s), h = b(y, t, r, a, s), w % 2 ? p.moveTo(u, h) : p.lineTo(u, h), s += g[w] / C, w = (w + 1) % I;
            w % 2 != 0 && p.lineTo(o, a), l = o - u, c = a - h, this._dashOffset = -v(l * l + c * c)
        },
        _dashedQuadraticTo: function (e, t, n, i) {
            var r = n, o = i;
            n = (n + 2 * e) / 3, i = (i + 2 * t) / 3, e = (this._xi + 2 * e) / 3, t = (this._yi + 2 * t) / 3, this._dashedBezierTo(e, t, n, i, r, o)
        },
        toStatic: function () {
            var e = this.data;
            e instanceof Array && (e.length = this._len, b && (this.data = new Float32Array(e)))
        },
        getBoundingRect: function () {
            c[0] = c[1] = h[0] = h[1] = Number.MAX_VALUE, u[0] = u[1] = d[0] = d[1] = -Number.MAX_VALUE;
            for (var e = this.data, t = 0, n = 0, i = 0, s = 0, f = 0; f < e.length;) {
                var g = e[f++];
                switch (1 === f && (i = t = e[f], s = n = e[f + 1]), g) {
                    case l.M:
                        t = i = e[f++], n = s = e[f++], h[0] = i, h[1] = s, d[0] = i, d[1] = s;
                        break;
                    case l.L:
                        o.fromLine(t, n, e[f], e[f + 1], h, d), t = e[f++], n = e[f++];
                        break;
                    case l.C:
                        o.fromCubic(t, n, e[f++], e[f++], e[f++], e[f++], e[f], e[f + 1], h, d), t = e[f++], n = e[f++];
                        break;
                    case l.Q:
                        o.fromQuadratic(t, n, e[f++], e[f++], e[f], e[f + 1], h, d), t = e[f++], n = e[f++];
                        break;
                    case l.A:
                        var v = e[f++], y = e[f++], b = e[f++], C = e[f++], w = e[f++], I = e[f++] + w;
                        f += 1;
                        var x = 1 - e[f++];
                        1 === f && (i = p(w) * b + v, s = m(w) * C + y), o.fromArc(v, y, b, C, w, I, x, h, d), t = p(I) * b + v, n = m(I) * C + y;
                        break;
                    case l.R:
                        i = t = e[f++], s = n = e[f++];
                        var A = e[f++], _ = e[f++];
                        o.fromLine(i, s, i + A, s + _, h, d);
                        break;
                    case l.Z:
                        t = i, n = s
                }
                r.min(c, c, h), r.max(u, u, d)
            }
            return 0 === f && (c[0] = c[1] = u[0] = u[1] = 0), new a(c[0], c[1], u[0] - c[0], u[1] - c[1])
        },
        rebuildPath: function (e) {
            for (var t, n, i, r, o, a, s = this.data, c = this._ux, u = this._uy, h = this._len, d = 0; d < h;) {
                var f = s[d++];
                switch (1 === d && (t = i = s[d], n = r = s[d + 1]), f) {
                    case l.M:
                        t = i = s[d++], n = r = s[d++], e.moveTo(i, r);
                        break;
                    case l.L:
                        o = s[d++], a = s[d++], (y(o - i) > c || y(a - r) > u || d === h - 1) && (e.lineTo(o, a), i = o, r = a);
                        break;
                    case l.C:
                        e.bezierCurveTo(s[d++], s[d++], s[d++], s[d++], s[d++], s[d++]), i = s[d - 2], r = s[d - 1];
                        break;
                    case l.Q:
                        e.quadraticCurveTo(s[d++], s[d++], s[d++], s[d++]), i = s[d - 2], r = s[d - 1];
                        break;
                    case l.A:
                        var g = s[d++], v = s[d++], b = s[d++], C = s[d++], w = s[d++], I = s[d++], x = s[d++],
                            A = s[d++], _ = b > C ? b : C, S = b > C ? 1 : b / C, k = b > C ? C / b : 1, L = w + I;
                        Math.abs(b - C) > .001 ? (e.translate(g, v), e.rotate(x), e.scale(S, k), e.arc(0, 0, _, w, L, 1 - A), e.scale(1 / S, 1 / k), e.rotate(-x), e.translate(-g, -v)) : e.arc(g, v, _, w, L, 1 - A), 1 === d && (t = p(w) * b + g, n = m(w) * C + v), i = p(L) * b + g, r = m(L) * C + v;
                        break;
                    case l.R:
                        t = i = s[d], n = r = s[d + 1], e.rect(s[d++], s[d++], s[d++], s[d++]);
                        break;
                    case l.Z:
                        e.closePath(), i = t, r = n
                }
            }
        }
    }, C.CMD = l;
    var w = C;
    e.exports = w
}, function (e, t, n) {
    var i = n(5).makeInner;
    e.exports = function () {
        var e = i();
        return function (t) {
            var n = e(t), i = t.pipelineContext, r = n.large, o = n.progressiveRender, a = n.large = i && i.large,
                s = n.progressiveRender = i && i.progressiveRender;
            return !!(r ^ a || o ^ s) && "reset"
        }
    }
}, function (e, t, n) {
    var i = n(172);
    e.exports = function (e, t) {
        return i((t = t || {}).coordDimensions || [], e, {
            dimsDef: t.dimensionsDefine || e.dimensionsDefine,
            encodeDef: t.encodeDefine || e.encodeDefine,
            dimCount: t.dimensionsCount,
            encodeDefaulter: t.encodeDefaulter,
            generateCoord: t.generateCoord,
            generateCoordCount: t.generateCoordCount
        })
    }
}, function (e, t, n) {
    var i = n(1), r = {
        getMin: function (e) {
            var t = this.option, n = e || null == t.rangeStart ? t.min : t.rangeStart;
            return this.axis && null != n && "dataMin" !== n && "function" != typeof n && !i.eqNaN(n) && (n = this.axis.scale.parse(n)), n
        }, getMax: function (e) {
            var t = this.option, n = e || null == t.rangeEnd ? t.max : t.rangeEnd;
            return this.axis && null != n && "dataMax" !== n && "function" != typeof n && !i.eqNaN(n) && (n = this.axis.scale.parse(n)), n
        }, getNeedCrossZero: function () {
            var e = this.option;
            return null == e.rangeStart && null == e.rangeEnd && !e.scale
        }, getCoordSysModel: i.noop, setRange: function (e, t) {
            this.option.rangeStart = e, this.option.rangeEnd = t
        }, resetRange: function () {
            this.option.rangeStart = this.option.rangeEnd = null
        }
    };
    e.exports = r
}, function (e, t, n) {
    var i = n(50), r = n(19), o = n(1), a = o.extend, s = o.isArray;
    e.exports = function (e, t, n) {
        t = s(t) && {coordDimensions: t} || a({}, t);
        var o = e.getSource(), l = i(o, t), c = new r(l, e);
        return c.initData(o, n), c
    }
}, function (e, t) {
    function n(e, t) {
        var n = e[t] - e[1 - t];
        return {span: Math.abs(n), sign: n > 0 ? -1 : n < 0 ? 1 : t ? -1 : 1}
    }

    function i(e, t) {
        return Math.min(null != t[1] ? t[1] : 1 / 0, Math.max(null != t[0] ? t[0] : -1 / 0, e))
    }

    e.exports = function (e, t, r, o, a, s) {
        e = e || 0;
        var l = r[1] - r[0];
        if (null != a && (a = i(a, [0, l])), null != s && (s = Math.max(s, null != a ? a : 0)), "all" === o) {
            var c = Math.abs(t[1] - t[0]);
            c = i(c, [0, l]), a = s = i(c, [a, s]), o = 0
        }
        t[0] = i(t[0], r), t[1] = i(t[1], r);
        var u = n(t, o);
        t[o] += e;
        var h = a || 0, d = r.slice();
        u.sign < 0 ? d[0] += h : d[1] -= h, t[o] = i(t[o], d);
        var f = n(t, o);
        return null != a && (f.sign !== u.sign || f.span < a) && (t[1 - o] = t[o] + u.sign * a), f = n(t, o), null != s && f.span > s && (t[1 - o] = t[o] + f.sign * s), t
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(12), a = n(5), s = n(127), l = n(499), c = r.each, u = s.eachAxisDim;

    function h(e) {
        var t = {};
        return c(["start", "end", "startValue", "endValue", "throttle"], (function (n) {
            e.hasOwnProperty(n) && (t[n] = e[n])
        })), t
    }

    function d(e, t) {
        var n = e._rangePropMode, i = e.get("rangeMode");
        c([["start", "startValue"], ["end", "endValue"]], (function (e, r) {
            var o = null != t[e[0]], a = null != t[e[1]];
            o && !a ? n[r] = "percent" : !o && a ? n[r] = "value" : i ? n[r] = i[r] : o && (n[r] = "percent")
        }))
    }

    var f = i.extendComponentModel({
        type: "dataZoom",
        dependencies: ["xAxis", "yAxis", "zAxis", "radiusAxis", "angleAxis", "singleAxis", "series"],
        defaultOption: {
            zlevel: 0,
            z: 4,
            orient: null,
            xAxisIndex: null,
            yAxisIndex: null,
            filterMode: "filter",
            throttle: null,
            start: 0,
            end: 100,
            startValue: null,
            endValue: null,
            minSpan: null,
            maxSpan: null,
            minValueSpan: null,
            maxValueSpan: null,
            rangeMode: null
        },
        init: function (e, t, n) {
            this._dataIntervalByAxis = {}, this._dataInfo = {}, this._axisProxies = {}, this.textStyleModel, this._autoThrottle = !0, this._rangePropMode = ["percent", "percent"];
            var i = h(e);
            this.settledOption = i, this.mergeDefaultAndTheme(e, n), this.doInit(i)
        },
        mergeOption: function (e) {
            var t = h(e);
            r.merge(this.option, e, !0), r.merge(this.settledOption, t, !0), this.doInit(t)
        },
        doInit: function (e) {
            var t = this.option;
            o.canvasSupported || (t.realtime = !1), this._setDefaultThrottle(e), d(this, e);
            var n = this.settledOption;
            c([["start", "startValue"], ["end", "endValue"]], (function (e, i) {
                "value" === this._rangePropMode[i] && (t[e[0]] = n[e[0]] = null)
            }), this), this.textStyleModel = this.getModel("textStyle"), this._resetTarget(), this._giveAxisProxies()
        },
        _giveAxisProxies: function () {
            var e = this._axisProxies;
            this.eachTargetAxis((function (t, n, i, r) {
                var o = this.dependentModels[t.axis][n],
                    a = o.__dzAxisProxy || (o.__dzAxisProxy = new l(t.name, n, this, r));
                e[t.name + "_" + n] = a
            }), this)
        },
        _resetTarget: function () {
            var e = this.option, t = this._judgeAutoMode();
            u((function (t) {
                var n = t.axisIndex;
                e[n] = a.normalizeToArray(e[n])
            }), this), "axisIndex" === t ? this._autoSetAxisIndex() : "orient" === t && this._autoSetOrient()
        },
        _judgeAutoMode: function () {
            var e = this.option, t = !1;
            u((function (n) {
                null != e[n.axisIndex] && (t = !0)
            }), this);
            var n = e.orient;
            return null == n && t ? "orient" : t ? void 0 : (null == n && (e.orient = "horizontal"), "axisIndex")
        },
        _autoSetAxisIndex: function () {
            var e = !0, t = this.get("orient", !0), n = this.option, i = this.dependentModels;
            if (e) {
                var o = "vertical" === t ? "y" : "x";
                i[o + "Axis"].length ? (n[o + "AxisIndex"] = [0], e = !1) : c(i.singleAxis, (function (i) {
                    e && i.get("orient", !0) === t && (n.singleAxisIndex = [i.componentIndex], e = !1)
                }))
            }
            e && u((function (t) {
                if (e) {
                    var i = [], r = this.dependentModels[t.axis];
                    if (r.length && !i.length) for (var o = 0, a = r.length; o < a; o++) "category" === r[o].get("type") && i.push(o);
                    n[t.axisIndex] = i, i.length && (e = !1)
                }
            }), this), e && this.ecModel.eachSeries((function (e) {
                this._isSeriesHasAllAxesTypeOf(e, "value") && u((function (t) {
                    var i = n[t.axisIndex], o = e.get(t.axisIndex), a = e.get(t.axisId);
                    o = e.ecModel.queryComponents({
                        mainType: t.axis,
                        index: o,
                        id: a
                    })[0].componentIndex, r.indexOf(i, o) < 0 && i.push(o)
                }))
            }), this)
        },
        _autoSetOrient: function () {
            var e;
            this.eachTargetAxis((function (t) {
                !e && (e = t.name)
            }), this), this.option.orient = "y" === e ? "vertical" : "horizontal"
        },
        _isSeriesHasAllAxesTypeOf: function (e, t) {
            var n = !0;
            return u((function (i) {
                var r = e.get(i.axisIndex), o = this.dependentModels[i.axis][r];
                o && o.get("type") === t || (n = !1)
            }), this), n
        },
        _setDefaultThrottle: function (e) {
            if (e.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) {
                var t = this.ecModel.option;
                this.option.throttle = t.animation && t.animationDurationUpdate > 0 ? 100 : 20
            }
        },
        getFirstTargetAxisModel: function () {
            var e;
            return u((function (t) {
                if (null == e) {
                    var n = this.get(t.axisIndex);
                    n.length && (e = this.dependentModels[t.axis][n[0]])
                }
            }), this), e
        },
        eachTargetAxis: function (e, t) {
            var n = this.ecModel;
            u((function (i) {
                c(this.get(i.axisIndex), (function (r) {
                    e.call(t, i, r, this, n)
                }), this)
            }), this)
        },
        getAxisProxy: function (e, t) {
            return this._axisProxies[e + "_" + t]
        },
        getAxisModel: function (e, t) {
            var n = this.getAxisProxy(e, t);
            return n && n.getAxisModel()
        },
        setRawRange: function (e) {
            var t = this.option, n = this.settledOption;
            c([["start", "startValue"], ["end", "endValue"]], (function (i) {
                null == e[i[0]] && null == e[i[1]] || (t[i[0]] = n[i[0]] = e[i[0]], t[i[1]] = n[i[1]] = e[i[1]])
            }), this), d(this, e)
        },
        setCalculatedRange: function (e) {
            var t = this.option;
            c(["start", "startValue", "end", "endValue"], (function (n) {
                t[n] = e[n]
            }))
        },
        getPercentRange: function () {
            var e = this.findRepresentativeAxisProxy();
            if (e) return e.getDataPercentWindow()
        },
        getValueRange: function (e, t) {
            if (null != e || null != t) return this.getAxisProxy(e, t).getDataValueWindow();
            var n = this.findRepresentativeAxisProxy();
            return n ? n.getDataValueWindow() : void 0
        },
        findRepresentativeAxisProxy: function (e) {
            if (e) return e.__dzAxisProxy;
            var t = this._axisProxies;
            for (var n in t) if (t.hasOwnProperty(n) && t[n].hostedBy(this)) return t[n];
            for (var n in t) if (t.hasOwnProperty(n) && !t[n].hostedBy(this)) return t[n]
        },
        getRangePropMode: function () {
            return this._rangePropMode.slice()
        }
    });
    e.exports = f
}, function (e, t, n) {
    var i = n(86).extend({
        type: "dataZoom", render: function (e, t, n, i) {
            this.dataZoomModel = e, this.ecModel = t, this.api = n
        }, getTargetCoordInfo: function () {
            var e = this.dataZoomModel, t = this.ecModel, n = {};
            return e.eachTargetAxis((function (e, i) {
                var r = t.getComponent(e.axis, i);
                if (r) {
                    var o = r.getCoordSysModel();
                    o && function (e, t, n, i) {
                        for (var r, o = 0; o < n.length; o++) if (n[o].model === e) {
                            r = n[o];
                            break
                        }
                        r || n.push(r = {model: e, axisModels: [], coordIndex: i});
                        r.axisModels.push(t)
                    }(o, r, n[o.mainType] || (n[o.mainType] = []), o.componentIndex)
                }
            }), this), n
        }
    });
    e.exports = i
}, function (e, t, n) {
    "use strict";
    var i = d(n(232)), r = d(n(79)), o = d(n(257)), a = d(n(258)), s = d(n(259)), l = d(n(140)), c = d(n(265)),
        u = n(143), h = d(n(141));

    function d(e) {
        return e && e.__esModule ? e : {default: e}
    }

    var f = function () {
    }, g = function (e, t, n) {
        var i = new f;
        if (void 0 === e) throw Error("No element to render on was provided.");
        return i._renderProperties = (0, s.default)(e), i._encodings = [], i._options = h.default, i._errorHandler = new c.default(i), void 0 !== t && ((n = n || {}).format || (n.format = y()), i.options(n)[n.format](t, n).render()), i
    };
    for (var p in g.getModule = function (e) {
        return i.default[e]
    }, i.default) i.default.hasOwnProperty(p) && m(i.default, p);

    function m(e, t) {
        f.prototype[t] = f.prototype[t.toUpperCase()] = f.prototype[t.toLowerCase()] = function (n, i) {
            var o = this;
            return o._errorHandler.wrapBarcodeCall((function () {
                i.text = void 0 === i.text ? void 0 : "" + i.text;
                var a = (0, r.default)(o._options, i);
                a = (0, l.default)(a);
                var s = e[t], c = v(n, s, a);
                return o._encodings.push(c), o
            }))
        }
    }

    function v(e, t, n) {
        var i = new t(e = "" + e, n);
        if (!i.valid()) throw new u.InvalidInputException(i.constructor.name, e);
        var a = i.encode();
        a = (0, o.default)(a);
        for (var s = 0; s < a.length; s++) a[s].options = (0, r.default)(n, a[s].options);
        return a
    }

    function y() {
        return i.default.CODE128 ? "CODE128" : Object.keys(i.default)[0]
    }

    function b(e, t, n) {
        t = (0, o.default)(t);
        for (var i = 0; i < t.length; i++) t[i].options = (0, r.default)(n, t[i].options), (0, a.default)(t[i].options);
        (0, a.default)(n), new (0, e.renderer)(e.element, t, n).render(), e.afterRender && e.afterRender()
    }

    f.prototype.options = function (e) {
        return this._options = (0, r.default)(this._options, e), this
    }, f.prototype.blank = function (e) {
        var t = new Array(e + 1).join("0");
        return this._encodings.push({data: t}), this
    }, f.prototype.init = function () {
        var e;
        if (this._renderProperties) for (var t in Array.isArray(this._renderProperties) || (this._renderProperties = [this._renderProperties]), this._renderProperties) {
            e = this._renderProperties[t];
            var n = (0, r.default)(this._options, e.options);
            "auto" == n.format && (n.format = y()), this._errorHandler.wrapBarcodeCall((function () {
                var t = v(n.value, i.default[n.format.toUpperCase()], n);
                b(e, t, n)
            }))
        }
    }, f.prototype.render = function () {
        if (!this._renderProperties) throw new u.NoElementException;
        if (Array.isArray(this._renderProperties)) for (var e = 0; e < this._renderProperties.length; e++) b(this._renderProperties[e], this._encodings, this._options); else b(this._renderProperties, this._encodings, this._options);
        return this
    }, f.prototype._defaults = h.default, "undefined" != typeof window && (window.JsBarcode = g), "undefined" != typeof jQuery && (jQuery.fn.JsBarcode = function (e, t) {
        var n = [];
        return jQuery(this).each((function () {
            n.push(this)
        })), g(n, e, t)
    }), e.exports = g
}, function (e, t, n) {
    "use strict";
    var i;

    function r(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    Object.defineProperty(t, "__esModule", {value: !0});
    var o = t.SET_A = 0, a = t.SET_B = 1, s = t.SET_C = 2, l = (t.SHIFT = 98, t.START_A = 103), c = t.START_B = 104,
        u = t.START_C = 105;
    t.MODULO = 103, t.STOP = 106, t.FNC1 = 207, t.SET_BY_CODE = (r(i = {}, l, o), r(i, c, a), r(i, u, s), i), t.SWAP = {
        101: o,
        100: a,
        99: s
    }, t.A_START_CHAR = String.fromCharCode(208), t.B_START_CHAR = String.fromCharCode(209), t.C_START_CHAR = String.fromCharCode(210), t.A_CHARS = "[\0-_È-Ï]", t.B_CHARS = "[ -È-Ï]", t.C_CHARS = "(Ï*[0-9]{2}Ï*)", t.BARS = [11011001100, 11001101100, 11001100110, 10010011e3, 10010001100, 10001001100, 10011001e3, 10011000100, 10001100100, 11001001e3, 11001000100, 11000100100, 10110011100, 10011011100, 10011001110, 10111001100, 10011101100, 10011100110, 11001110010, 11001011100, 11001001110, 11011100100, 11001110100, 11101101110, 11101001100, 11100101100, 11100100110, 11101100100, 11100110100, 11100110010, 11011011e3, 11011000110, 11000110110, 10100011e3, 10001011e3, 10001000110, 10110001e3, 10001101e3, 10001100010, 11010001e3, 11000101e3, 11000100010, 10110111e3, 10110001110, 10001101110, 10111011e3, 10111000110, 10001110110, 11101110110, 11010001110, 11000101110, 11011101e3, 11011100010, 11011101110, 11101011e3, 11101000110, 11100010110, 11101101e3, 11101100010, 11100011010, 11101111010, 11001000010, 11110001010, 1010011e4, 10100001100, 1001011e4, 10010000110, 10000101100, 10000100110, 1011001e4, 10110000100, 1001101e4, 10011000010, 10000110100, 10000110010, 11000010010, 1100101e4, 11110111010, 11000010100, 10001111010, 10100111100, 10010111100, 10010011110, 10111100100, 10011110100, 10011110010, 11110100100, 11110010100, 11110010010, 11011011110, 11011110110, 11110110110, 10101111e3, 10100011110, 10001011110, 10111101e3, 10111100010, 11110101e3, 11110100010, 10111011110, 10111101110, 11101011110, 11110101110, 11010000100, 1101001e4, 11010011100, 1100011101011]
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    t.SIDE_BIN = "101", t.MIDDLE_BIN = "01010", t.BINARIES = {
        L: ["0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011"],
        G: ["0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111"],
        R: ["1110010", "1100110", "1101100", "1000010", "1011100", "1001110", "1010000", "1000100", "1001000", "1110100"],
        O: ["0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011"],
        E: ["0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111"]
    }, t.EAN2_STRUCTURE = ["LL", "LG", "GL", "GG"], t.EAN5_STRUCTURE = ["GGLLL", "GLGLL", "GLLGL", "GLLLG", "LGGLL", "LLGGL", "LLLGG", "LGLGL", "LGLLG", "LLGLG"], t.EAN13_STRUCTURE = ["LLLLLL", "LLGLGG", "LLGGLG", "LLGGGL", "LGLLGG", "LGGLLG", "LGGGLL", "LGLGLG", "LGLGGL", "LGGLGL"]
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = n(58);
    t.default = function (e, t, n) {
        var r = e.split("").map((function (e, n) {
            return i.BINARIES[t[n]]
        })).map((function (t, n) {
            return t ? t[e[n]] : ""
        }));
        if (n) {
            var o = e.length - 1;
            r = r.map((function (e, t) {
                return t < o ? e + n : e
            }))
        }
        return r.join("")
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(18);
    var a = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "encode", value: function () {
                for (var e = "110", t = 0; t < this.data.length; t++) {
                    var n = parseInt(this.data[t]).toString(2);
                    n = s(n, 4 - n.length);
                    for (var i = 0; i < n.length; i++) e += "0" == n[i] ? "100" : "110"
                }
                return {data: e += "1001", text: this.text}
            }
        }, {
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]+$/)
            }
        }]), t
    }(((i = o) && i.__esModule ? i : {default: i}).default);

    function s(e, t) {
        for (var n = 0; n < t; n++) e = "0" + e;
        return e
    }

    t.default = a
}, function (e, t, n) {
    var i = function () {
    };
    1 === n(82).debugMode && (i = console.error);
    var r = i;
    e.exports = r
}, function (e, t, n) {
    var i = n(1), r = n(103), o = n(146), a = n(152);

    function s(e) {
        for (var t in e = e || {}, o.call(this, e), e) e.hasOwnProperty(t) && "style" !== t && (this[t] = e[t]);
        this.style = new r(e.style, this), this._rect = null, this.__clipPaths = null
    }

    s.prototype = {
        constructor: s,
        type: "displayable",
        __dirty: !0,
        invisible: !1,
        z: 0,
        z2: 0,
        zlevel: 0,
        draggable: !1,
        dragging: !1,
        silent: !1,
        culling: !1,
        cursor: "pointer",
        rectHover: !1,
        progressive: !1,
        incremental: !1,
        globalScaleRatio: 1,
        beforeBrush: function (e) {
        },
        afterBrush: function (e) {
        },
        brush: function (e, t) {
        },
        getBoundingRect: function () {
        },
        contain: function (e, t) {
            return this.rectContain(e, t)
        },
        traverse: function (e, t) {
            e.call(t, this)
        },
        rectContain: function (e, t) {
            var n = this.transformCoordToLocal(e, t);
            return this.getBoundingRect().contain(n[0], n[1])
        },
        dirty: function () {
            this.__dirty = this.__dirtyText = !0, this._rect = null, this.__zr && this.__zr.refresh()
        },
        animateStyle: function (e) {
            return this.animate("style", e)
        },
        attrKV: function (e, t) {
            "style" !== e ? o.prototype.attrKV.call(this, e, t) : this.style.set(t)
        },
        setStyle: function (e, t) {
            return this.style.set(e, t), this.dirty(!1), this
        },
        useStyle: function (e) {
            return this.style = new r(e, this), this.dirty(!1), this
        },
        calculateTextPosition: null
    }, i.inherits(s, o), i.mixin(s, a);
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(9), r = n(31), o = Math.min, a = Math.max, s = Math.sin, l = Math.cos, c = 2 * Math.PI, u = i.create(),
        h = i.create(), d = i.create();
    var f = [], g = [];
    t.fromPoints = function (e, t, n) {
        if (0 !== e.length) {
            var i, r = e[0], s = r[0], l = r[0], c = r[1], u = r[1];
            for (i = 1; i < e.length; i++) r = e[i], s = o(s, r[0]), l = a(l, r[0]), c = o(c, r[1]), u = a(u, r[1]);
            t[0] = s, t[1] = c, n[0] = l, n[1] = u
        }
    }, t.fromLine = function (e, t, n, i, r, s) {
        r[0] = o(e, n), r[1] = o(t, i), s[0] = a(e, n), s[1] = a(t, i)
    }, t.fromCubic = function (e, t, n, i, s, l, c, u, h, d) {
        var p, m = r.cubicExtrema, v = r.cubicAt, y = m(e, n, s, c, f);
        for (h[0] = 1 / 0, h[1] = 1 / 0, d[0] = -1 / 0, d[1] = -1 / 0, p = 0; p < y; p++) {
            var b = v(e, n, s, c, f[p]);
            h[0] = o(b, h[0]), d[0] = a(b, d[0])
        }
        for (y = m(t, i, l, u, g), p = 0; p < y; p++) {
            var C = v(t, i, l, u, g[p]);
            h[1] = o(C, h[1]), d[1] = a(C, d[1])
        }
        h[0] = o(e, h[0]), d[0] = a(e, d[0]), h[0] = o(c, h[0]), d[0] = a(c, d[0]), h[1] = o(t, h[1]), d[1] = a(t, d[1]), h[1] = o(u, h[1]), d[1] = a(u, d[1])
    }, t.fromQuadratic = function (e, t, n, i, s, l, c, u) {
        var h = r.quadraticExtremum, d = r.quadraticAt, f = a(o(h(e, n, s), 1), 0), g = a(o(h(t, i, l), 1), 0),
            p = d(e, n, s, f), m = d(t, i, l, g);
        c[0] = o(e, s, p), c[1] = o(t, l, m), u[0] = a(e, s, p), u[1] = a(t, l, m)
    }, t.fromArc = function (e, t, n, r, o, a, f, g, p) {
        var m = i.min, v = i.max, y = Math.abs(o - a);
        if (y % c < 1e-4 && y > 1e-4) return g[0] = e - n, g[1] = t - r, p[0] = e + n, void (p[1] = t + r);
        if (u[0] = l(o) * n + e, u[1] = s(o) * r + t, h[0] = l(a) * n + e, h[1] = s(a) * r + t, m(g, u, h), v(p, u, h), (o %= c) < 0 && (o += c), (a %= c) < 0 && (a += c), o > a && !f ? a += c : o < a && f && (o += c), f) {
            var b = a;
            a = o, o = b
        }
        for (var C = 0; C < a; C += Math.PI / 2) C > o && (d[0] = l(C) * n + e, d[1] = s(C) * r + t, m(g, d, g), v(p, d, p))
    }
}, function (e, t, n) {
    var i = n(1), r = n(28).parseClassType, o = 0;
    t.getUID = function (e) {
        return [e || "", o++, Math.random().toFixed(5)].join("_")
    }, t.enableSubTypeDefaulter = function (e) {
        var t = {};
        return e.registerSubTypeDefaulter = function (e, n) {
            e = r(e), t[e.main] = n
        }, e.determineSubType = function (n, i) {
            var o = i.type;
            if (!o) {
                var a = r(n).main;
                e.hasSubTypes(n) && t[a] && (o = t[a](i))
            }
            return o
        }, e
    }, t.enableTopologicalTravel = function (e, t) {
        function n(e, t) {
            return e[t] || (e[t] = {predecessor: [], successor: []}), e[t]
        }

        e.topologicalTravel = function (e, r, o, a) {
            if (e.length) {
                var s = function (e) {
                    var r = {}, o = [];
                    return i.each(e, (function (a) {
                        var s = n(r, a), l = function (e, t) {
                            var n = [];
                            return i.each(e, (function (e) {
                                i.indexOf(t, e) >= 0 && n.push(e)
                            })), n
                        }(s.originalDeps = t(a), e);
                        s.entryCount = l.length, 0 === s.entryCount && o.push(a), i.each(l, (function (e) {
                            i.indexOf(s.predecessor, e) < 0 && s.predecessor.push(e);
                            var t = n(r, e);
                            i.indexOf(t.successor, e) < 0 && t.successor.push(a)
                        }))
                    })), {graph: r, noEntryList: o}
                }(r), l = s.graph, c = s.noEntryList, u = {};
                for (i.each(e, (function (e) {
                    u[e] = !0
                })); c.length;) {
                    var h = c.pop(), d = l[h], f = !!u[h];
                    f && (o.call(a, h, d.originalDeps.slice()), delete u[h]), i.each(d.successor, f ? p : g)
                }
                i.each(u, (function () {
                    throw new Error("Circle dependency may exists")
                }))
            }

            function g(e) {
                l[e].entryCount--, 0 === l[e].entryCount && c.push(e)
            }

            function p(e) {
                u[e] = !0, g(e)
            }
        }
    }
}, function (e, t, n) {
    var i = n(1), r = i.createHashMap, o = i.isTypedArray, a = n(28).enableClassCheck, s = n(66),
        l = s.SOURCE_FORMAT_ORIGINAL, c = s.SERIES_LAYOUT_BY_COLUMN, u = s.SOURCE_FORMAT_UNKNOWN,
        h = s.SOURCE_FORMAT_TYPED_ARRAY, d = s.SOURCE_FORMAT_KEYED_COLUMNS;

    function f(e) {
        this.fromDataset = e.fromDataset, this.data = e.data || (e.sourceFormat === d ? {} : []), this.sourceFormat = e.sourceFormat || u, this.seriesLayoutBy = e.seriesLayoutBy || c, this.dimensionsDefine = e.dimensionsDefine, this.encodeDefine = e.encodeDefine && r(e.encodeDefine), this.startIndex = e.startIndex || 0, this.dimensionsDetectCount = e.dimensionsDetectCount
    }

    f.seriesDataToSource = function (e) {
        return new f({data: e, sourceFormat: o(e) ? h : l, fromDataset: !1})
    }, a(f);
    var g = f;
    e.exports = g
}, function (e, t) {
    t.SOURCE_FORMAT_ORIGINAL = "original", t.SOURCE_FORMAT_ARRAY_ROWS = "arrayRows", t.SOURCE_FORMAT_OBJECT_ROWS = "objectRows", t.SOURCE_FORMAT_KEYED_COLUMNS = "keyedColumns", t.SOURCE_FORMAT_UNKNOWN = "unknown", t.SOURCE_FORMAT_TYPED_ARRAY = "typedArray", t.SERIES_LAYOUT_BY_COLUMN = "column", t.SERIES_LAYOUT_BY_ROW = "row"
}, function (e, t, n) {
    var i = n(1), r = i.each, o = i.createHashMap,
        a = (i.assert, n(6).__DEV__, o(["tooltip", "label", "itemName", "itemId", "seriesName"]));

    function s(e, t) {
        return e.hasOwnProperty(t) || (e[t] = []), e[t]
    }

    t.OTHER_DIMENSIONS = a, t.summarizeDimensions = function (e) {
        var t = {}, n = t.encode = {}, i = o(), l = [], c = [],
            u = t.userOutput = {dimensionNames: e.dimensions.slice(), encode: {}};
        r(e.dimensions, (function (t) {
            var r, o = e.getDimensionInfo(t), h = o.coordDim;
            if (h) {
                var d = o.coordDimIndex;
                s(n, h)[d] = t, o.isExtraCoord || (i.set(h, 1), "ordinal" !== (r = o.type) && "time" !== r && (l[0] = t), s(u.encode, h)[d] = o.index), o.defaultTooltip && c.push(t)
            }
            a.each((function (e, t) {
                var i = s(n, t), r = o.otherDims[t];
                null != r && !1 !== r && (i[r] = o.name)
            }))
        }));
        var h = [], d = {};
        i.each((function (e, t) {
            var i = n[t];
            d[t] = i[0], h = h.concat(i)
        })), t.dataDimsOnCoord = h, t.encodeFirstDimNotExtra = d;
        var f = n.label;
        f && f.length && (l = f.slice());
        var g = n.tooltip;
        return g && g.length ? c = g.slice() : c.length || (c = l.slice()), n.defaultedLabel = l, n.defaultedTooltip = c, t
    }, t.getDimensionTypeByAxis = function (e) {
        return "category" === e ? "ordinal" : "time" === e ? "time" : "float"
    }
}, function (e, t, n) {
    var i = n(3), r = n(90), o = n(1).isObject;

    function a(e) {
        this.group = new i.Group, this._symbolCtor = e || r
    }

    var s = a.prototype;

    function l(e, t, n, i) {
        return t && !isNaN(t[0]) && !isNaN(t[1]) && !(i.isIgnore && i.isIgnore(n)) && !(i.clipShape && !i.clipShape.contain(t[0], t[1])) && "none" !== e.getItemVisual(n, "symbol")
    }

    function c(e) {
        return null == e || o(e) || (e = {isIgnore: e}), e || {}
    }

    function u(e) {
        var t = e.hostModel;
        return {
            itemStyle: t.getModel("itemStyle").getItemStyle(["color"]),
            hoverItemStyle: t.getModel("emphasis.itemStyle").getItemStyle(),
            symbolRotate: t.get("symbolRotate"),
            symbolOffset: t.get("symbolOffset"),
            hoverAnimation: t.get("hoverAnimation"),
            labelModel: t.getModel("label"),
            hoverLabelModel: t.getModel("emphasis.label"),
            cursorStyle: t.get("cursor")
        }
    }

    s.updateData = function (e, t) {
        t = c(t);
        var n = this.group, r = e.hostModel, o = this._data, a = this._symbolCtor, s = u(e);
        o || n.removeAll(), e.diff(o).add((function (i) {
            var r = e.getItemLayout(i);
            if (l(e, r, i, t)) {
                var o = new a(e, i, s);
                o.attr("position", r), e.setItemGraphicEl(i, o), n.add(o)
            }
        })).update((function (c, u) {
            var h = o.getItemGraphicEl(u), d = e.getItemLayout(c);
            l(e, d, c, t) ? (h ? (h.updateData(e, c, s), i.updateProps(h, {position: d}, r)) : (h = new a(e, c)).attr("position", d), n.add(h), e.setItemGraphicEl(c, h)) : n.remove(h)
        })).remove((function (e) {
            var t = o.getItemGraphicEl(e);
            t && t.fadeOut((function () {
                n.remove(t)
            }))
        })).execute(), this._data = e
    }, s.isPersistent = function () {
        return !0
    }, s.updateLayout = function () {
        var e = this._data;
        e && e.eachItemGraphicEl((function (t, n) {
            var i = e.getItemLayout(n);
            t.attr("position", i)
        }))
    }, s.incrementalPrepareUpdate = function (e) {
        this._seriesScope = u(e), this._data = null, this.group.removeAll()
    }, s.incrementalUpdate = function (e, t, n) {
        function i(e) {
            e.isGroup || (e.incremental = e.useHoverLayer = !0)
        }

        n = c(n);
        for (var r = e.start; r < e.end; r++) {
            var o = t.getItemLayout(r);
            if (l(t, o, r, n)) {
                var a = new this._symbolCtor(t, r, this._seriesScope);
                a.traverse(i), a.attr("position", o), this.group.add(a), t.setItemGraphicEl(r, a)
            }
        }
    }, s.remove = function (e) {
        var t = this.group, n = this._data;
        n && e ? n.eachItemGraphicEl((function (e) {
            e.fadeOut((function () {
                t.remove(e)
            }))
        })) : t.removeAll()
    };
    var h = a;
    e.exports = h
}, function (e, t, n) {
    var i = n(3), r = n(4).round;

    function o(e, t, n) {
        var r = e.getArea(), o = e.getBaseAxis().isHorizontal(), a = r.x, s = r.y, l = r.width, c = r.height,
            u = n.get("lineStyle.width") || 2;
        a -= u / 2, s -= u / 2, l += u, c += u, a = Math.floor(a), l = Math.round(l);
        var h = new i.Rect({shape: {x: a, y: s, width: l, height: c}});
        return t && (h.shape[o ? "width" : "height"] = 0, i.initProps(h, {shape: {width: l, height: c}}, n)), h
    }

    function a(e, t, n) {
        var o = e.getArea(), a = new i.Sector({
            shape: {
                cx: r(e.cx, 1),
                cy: r(e.cy, 1),
                r0: r(o.r0, 1),
                r: r(o.r, 1),
                startAngle: o.startAngle,
                endAngle: o.endAngle,
                clockwise: o.clockwise
            }
        });
        return t && (a.shape.endAngle = o.startAngle, i.initProps(a, {shape: {endAngle: o.endAngle}}, n)), a
    }

    t.createGridClipPath = o, t.createPolarClipPath = a, t.createClipPath = function (e, t, n) {
        return e ? "polar" === e.type ? a(e, t, n) : "cartesian2d" === e.type ? o(e, t, n) : null : null
    }
}, function (e, t, n) {
    var i = n(1).map, r = n(49), o = n(27).isDimensionStacked;
    e.exports = function (e) {
        return {
            seriesType: e, plan: r(), reset: function (e) {
                var t = e.getData(), n = e.coordinateSystem, r = e.pipelineContext.large;
                if (n) {
                    var a = i(n.dimensions, (function (e) {
                        return t.mapDimension(e)
                    })).slice(0, 2), s = a.length, l = t.getCalculationInfo("stackResultDimension");
                    return o(t, a[0]) && (a[0] = l), o(t, a[1]) && (a[1] = l), s && {
                        progress: function (e, t) {
                            for (var i = e.end - e.start, o = r && new Float32Array(i * s), l = e.start, c = 0, u = [], h = []; l < e.end; l++) {
                                var d;
                                if (1 === s) {
                                    var f = t.get(a[0], l);
                                    d = !isNaN(f) && n.dataToPoint(f, null, h)
                                } else {
                                    f = u[0] = t.get(a[0], l);
                                    var g = u[1] = t.get(a[1], l);
                                    d = !isNaN(f) && !isNaN(g) && n.dataToPoint(u, null, h)
                                }
                                r ? (o[c++] = d ? d[0] : NaN, o[c++] = d ? d[1] : NaN) : t.setItemLayout(l, d && d.slice() || [NaN, NaN])
                            }
                            r && t.setLayout("symbolPoints", o)
                        }
                    }
                }
            }
        }
    }
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(3);
    n(113), n(321), i.extendComponentView({
        type: "grid", render: function (e, t) {
            this.group.removeAll(), e.get("show") && this.group.add(new o.Rect({
                shape: e.coordinateSystem.getRect(),
                style: r.defaults({fill: e.get("backgroundColor")}, e.getItemStyle()),
                silent: !0,
                z2: -1
            }))
        }
    }), i.registerPreprocessor((function (e) {
        e.xAxis && e.yAxis && !e.grid && (e.grid = {})
    }))
}, function (e, t) {
    var n = function (e, t) {
        this.getAllNames = function () {
            var e = t();
            return e.mapArray(e.getName)
        }, this.containName = function (e) {
            return t().indexOfName(e) >= 0
        }, this.indexOfName = function (t) {
            return e().indexOfName(t)
        }, this.getItemVisual = function (t, n) {
            return e().getItemVisual(t, n)
        }
    };
    e.exports = n
}, function (e, t) {
    e.exports = function (e) {
        return {
            seriesType: e, reset: function (e, t) {
                var n = t.findComponents({mainType: "legend"});
                if (n && n.length) {
                    var i = e.getData();
                    i.filterSelf((function (e) {
                        for (var t = i.getName(e), r = 0; r < n.length; r++) if (!n[r].isSelected(t)) return !1;
                        return !0
                    }))
                }
            }
        }
    }
}, function (e, t, n) {
    var i = n(1), r = n(37), o = n(24), a = n(189);

    function s(e) {
        this.pointerChecker, this._zr = e, this._opt = {};
        var t = i.bind, n = t(l, this), o = t(c, this), a = t(u, this), s = t(h, this), f = t(d, this);
        r.call(this), this.setPointerChecker = function (e) {
            this.pointerChecker = e
        }, this.enable = function (t, r) {
            this.disable(), this._opt = i.defaults(i.clone(r) || {}, {
                zoomOnMouseWheel: !0,
                moveOnMouseMove: !0,
                moveOnMouseWheel: !1,
                preventDefaultMouseMove: !0
            }), null == t && (t = !0), !0 !== t && "move" !== t && "pan" !== t || (e.on("mousedown", n), e.on("mousemove", o), e.on("mouseup", a)), !0 !== t && "scale" !== t && "zoom" !== t || (e.on("mousewheel", s), e.on("pinch", f))
        }, this.disable = function () {
            e.off("mousedown", n), e.off("mousemove", o), e.off("mouseup", a), e.off("mousewheel", s), e.off("pinch", f)
        }, this.dispose = this.disable, this.isDragging = function () {
            return this._dragging
        }, this.isPinching = function () {
            return this._pinching
        }
    }

    function l(e) {
        if (!(o.isMiddleOrRightButtonOnMouseUpDown(e) || e.target && e.target.draggable)) {
            var t = e.offsetX, n = e.offsetY;
            this.pointerChecker && this.pointerChecker(e, t, n) && (this._x = t, this._y = n, this._dragging = !0)
        }
    }

    function c(e) {
        if (this._dragging && p("moveOnMouseMove", e, this._opt) && "pinch" !== e.gestureEvent && !a.isTaken(this._zr, "globalPan")) {
            var t = e.offsetX, n = e.offsetY, i = this._x, r = this._y, s = t - i, l = n - r;
            this._x = t, this._y = n, this._opt.preventDefaultMouseMove && o.stop(e.event), g(this, "pan", "moveOnMouseMove", e, {
                dx: s,
                dy: l,
                oldX: i,
                oldY: r,
                newX: t,
                newY: n
            })
        }
    }

    function u(e) {
        o.isMiddleOrRightButtonOnMouseUpDown(e) || (this._dragging = !1)
    }

    function h(e) {
        var t = p("zoomOnMouseWheel", e, this._opt), n = p("moveOnMouseWheel", e, this._opt), i = e.wheelDelta,
            r = Math.abs(i), o = e.offsetX, a = e.offsetY;
        if (0 !== i && (t || n)) {
            if (t) {
                var s = r > 3 ? 1.4 : r > 1 ? 1.2 : 1.1;
                f(this, "zoom", "zoomOnMouseWheel", e, {scale: i > 0 ? s : 1 / s, originX: o, originY: a})
            }
            if (n) {
                var l = Math.abs(i);
                f(this, "scrollMove", "moveOnMouseWheel", e, {
                    scrollDelta: (i > 0 ? 1 : -1) * (l > 3 ? .4 : l > 1 ? .15 : .05),
                    originX: o,
                    originY: a
                })
            }
        }
    }

    function d(e) {
        a.isTaken(this._zr, "globalPan") || f(this, "zoom", null, e, {
            scale: e.pinchScale > 1 ? 1.1 : 1 / 1.1,
            originX: e.pinchX,
            originY: e.pinchY
        })
    }

    function f(e, t, n, i, r) {
        e.pointerChecker && e.pointerChecker(i, r.originX, r.originY) && (o.stop(i.event), g(e, t, n, i, r))
    }

    function g(e, t, n, r, o) {
        o.isAvailableBehavior = i.bind(p, null, n, r), e.trigger(t, o)
    }

    function p(e, t, n) {
        var r = n[e];
        return !e || r && (!i.isString(r) || t.event[r + "Key"])
    }

    i.mixin(s, r);
    var m = s;
    e.exports = m
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(92), a = n(450);
    n(451), n(452), n(208), i.registerPreprocessor((function (e) {
        if (e) {
            (!e.axisPointer || 0 === e.axisPointer.length) && (e.axisPointer = {});
            var t = e.axisPointer.link;
            t && !r.isArray(t) && (e.axisPointer.link = [t])
        }
    })), i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC, (function (e, t) {
        e.getComponent("axisPointer").coordSysAxesInfo = o.collect(e, t)
    })), i.registerAction({type: "updateAxisPointer", event: "updateAxisPointer", update: ":updateAxisPointer"}, a)
}, function (e, t, n) {
    var i = n(2);
    !function () {
        for (var e in i) {
            if (null == i || !i.hasOwnProperty(e) || "default" === e || "__esModule" === e) return;
            t[e] = i[e]
        }
    }();
    var r = n(170);
    !function () {
        for (var e in r) {
            if (null == r || !r.hasOwnProperty(e) || "default" === e || "__esModule" === e) return;
            t[e] = r[e]
        }
    }(), n(168), n(312), n(323), n(328), n(333), n(337), n(347), n(361), n(367), n(375), n(390), n(394), n(398), n(410), n(416), n(421), n(427), n(431), n(437), n(441), n(444), n(458), n(464), n(470), n(471), n(483), n(204), n(197), n(486), n(490), n(491), n(503), n(75), n(508), n(515), n(516), n(525), n(528), n(531), n(534), n(213), n(540), n(217), n(216), n(546), n(218), n(227), n(551), n(554)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(18), a = (i = o) && i.__esModule ? i : {default: i}, s = n(57);
    var l = function (e) {
        function t(e, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t);
            var i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e.substring(1), n));
            return i.bytes = e.split("").map((function (e) {
                return e.charCodeAt(0)
            })), i
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return /^[\x00-\x7F\xC8-\xD3]+$/.test(this.data)
            }
        }, {
            key: "encode", value: function () {
                var e = this.bytes, n = e.shift() - 105, i = s.SET_BY_CODE[n];
                if (void 0 === i) throw new RangeError("The encoding does not start with a start character.");
                !0 === this.shouldEncodeAsEan128() && e.unshift(s.FNC1);
                var r = t.next(e, 1, i);
                return {
                    text: this.text === this.data ? this.text.replace(/[^\x20-\x7E]/g, "") : this.text,
                    data: t.getBar(n) + r.result + t.getBar((r.checksum + n) % s.MODULO) + t.getBar(s.STOP)
                }
            }
        }, {
            key: "shouldEncodeAsEan128", value: function () {
                var e = this.options.ean128 || !1;
                return "string" == typeof e && (e = "true" === e.toLowerCase()), e
            }
        }], [{
            key: "getBar", value: function (e) {
                return s.BARS[e] ? s.BARS[e].toString() : ""
            }
        }, {
            key: "correctIndex", value: function (e, t) {
                if (t === s.SET_A) {
                    var n = e.shift();
                    return n < 32 ? n + 64 : n - 32
                }
                return t === s.SET_B ? e.shift() - 32 : 10 * (e.shift() - 48) + e.shift() - 48
            }
        }, {
            key: "next", value: function (e, n, i) {
                if (!e.length) return {result: "", checksum: 0};
                var r = void 0, o = void 0;
                if (e[0] >= 200) {
                    o = e.shift() - 105;
                    var a = s.SWAP[o];
                    void 0 !== a ? r = t.next(e, n + 1, a) : (i !== s.SET_A && i !== s.SET_B || o !== s.SHIFT || (e[0] = i === s.SET_A ? e[0] > 95 ? e[0] - 96 : e[0] : e[0] < 32 ? e[0] + 96 : e[0]), r = t.next(e, n + 1, i))
                } else o = t.correctIndex(e, i), r = t.next(e, n + 1, i);
                var l = o * n;
                return {result: t.getBar(o) + r.result, checksum: l + r.checksum}
            }
        }]), t
    }(a.default);
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.mod10 = function (e) {
        for (var t = 0, n = 0; n < e.length; n++) {
            var i = parseInt(e[n]);
            (n + e.length) % 2 == 0 ? t += i : t += 2 * i % 10 + Math.floor(2 * i / 10)
        }
        return (10 - t % 10) % 10
    }, t.mod11 = function (e) {
        for (var t = 0, n = [2, 3, 4, 5, 6, 7], i = 0; i < e.length; i++) {
            var r = parseInt(e[e.length - 1 - i]);
            t += n[i % n.length] * r
        }
        return (11 - t % 11) % 11
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = Object.assign || function (e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = arguments[t];
            for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
        }
        return e
    };
    t.default = function (e, t) {
        return i({}, e, t)
    }
}, function (e, t, n) {
    var i = n(144), r = n(12), o = n(1), a = n(266), s = n(270), l = n(274), c = n(276), u = n(277),
        h = !r.canvasSupported, d = {canvas: l}, f = {};
    var g = function (e, t, n) {
        n = n || {}, this.dom = t, this.id = e;
        var i = this, l = new s, f = n.renderer;
        if (h) {
            if (!d.vml) throw new Error("You need to require 'zrender/vml/vml' to support IE8");
            f = "vml"
        } else f && d[f] || (f = "canvas");
        var g = new d[f](t, l, n, e);
        this.storage = l, this.painter = g;
        var p = r.node || r.worker ? null : new u(g.getViewportRoot(), g.root);
        this.handler = new a(l, g, p, g.root), this.animation = new c({stage: {update: o.bind(this.flush, this)}}), this.animation.start(), this._needsRefresh;
        var m = l.delFromStorage, v = l.addToStorage;
        l.delFromStorage = function (e) {
            m.call(l, e), e && e.removeSelfFromZr(i)
        }, l.addToStorage = function (e) {
            v.call(l, e), e.addSelfToZr(i)
        }
    };
    g.prototype = {
        constructor: g, getId: function () {
            return this.id
        }, add: function (e) {
            this.storage.addRoot(e), this._needsRefresh = !0
        }, remove: function (e) {
            this.storage.delRoot(e), this._needsRefresh = !0
        }, configLayer: function (e, t) {
            this.painter.configLayer && this.painter.configLayer(e, t), this._needsRefresh = !0
        }, setBackgroundColor: function (e) {
            this.painter.setBackgroundColor && this.painter.setBackgroundColor(e), this._needsRefresh = !0
        }, refreshImmediately: function () {
            this._needsRefresh = this._needsRefreshHover = !1, this.painter.refresh(), this._needsRefresh = this._needsRefreshHover = !1
        }, refresh: function () {
            this._needsRefresh = !0
        }, flush: function () {
            var e;
            this._needsRefresh && (e = !0, this.refreshImmediately()), this._needsRefreshHover && (e = !0, this.refreshHoverImmediately()), e && this.trigger("rendered")
        }, addHover: function (e, t) {
            if (this.painter.addHover) {
                var n = this.painter.addHover(e, t);
                return this.refreshHover(), n
            }
        }, removeHover: function (e) {
            this.painter.removeHover && (this.painter.removeHover(e), this.refreshHover())
        }, clearHover: function () {
            this.painter.clearHover && (this.painter.clearHover(), this.refreshHover())
        }, refreshHover: function () {
            this._needsRefreshHover = !0
        }, refreshHoverImmediately: function () {
            this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.refreshHover()
        }, resize: function (e) {
            e = e || {}, this.painter.resize(e.width, e.height), this.handler.resize()
        }, clearAnimation: function () {
            this.animation.clear()
        }, getWidth: function () {
            return this.painter.getWidth()
        }, getHeight: function () {
            return this.painter.getHeight()
        }, pathToImage: function (e, t) {
            return this.painter.pathToImage(e, t)
        }, setCursorStyle: function (e) {
            this.handler.setCursorStyle(e)
        }, findHover: function (e, t) {
            return this.handler.findHover(e, t)
        }, on: function (e, t, n) {
            this.handler.on(e, t, n)
        }, off: function (e, t) {
            this.handler.off(e, t)
        }, trigger: function (e, t) {
            this.handler.trigger(e, t)
        }, clear: function () {
            this.storage.delRoot(), this.painter.clear()
        }, dispose: function () {
            var e;
            this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, e = this.id, delete f[e]
        }
    }, t.version = "4.3.1", t.init = function (e, t) {
        var n = new g(i(), e, t);
        return f[n.id] = n, n
    }, t.dispose = function (e) {
        if (e) e.dispose(); else {
            for (var t in f) f.hasOwnProperty(t) && f[t].dispose();
            f = {}
        }
        return this
    }, t.getInstance = function (e) {
        return f[e]
    }, t.registerPainter = function (e, t) {
        d[e] = t
    }
}, function (e, t, n) {
    var i = n(16), r = n(9), o = i.identity;

    function a(e) {
        return e > 5e-5 || e < -5e-5
    }

    var s = function (e) {
        (e = e || {}).position || (this.position = [0, 0]), null == e.rotation && (this.rotation = 0), e.scale || (this.scale = [1, 1]), this.origin = this.origin || null
    }, l = s.prototype;
    l.transform = null, l.needLocalTransform = function () {
        return a(this.rotation) || a(this.position[0]) || a(this.position[1]) || a(this.scale[0] - 1) || a(this.scale[1] - 1)
    };
    var c = [];
    l.updateTransform = function () {
        var e = this.parent, t = e && e.transform, n = this.needLocalTransform(), r = this.transform;
        if (n || t) {
            r = r || i.create(), n ? this.getLocalTransform(r) : o(r), t && (n ? i.mul(r, e.transform, r) : i.copy(r, e.transform)), this.transform = r;
            var a = this.globalScaleRatio;
            if (null != a && 1 !== a) {
                this.getGlobalScale(c);
                var s = c[0] < 0 ? -1 : 1, l = c[1] < 0 ? -1 : 1, u = ((c[0] - s) * a + s) / c[0] || 0,
                    h = ((c[1] - l) * a + l) / c[1] || 0;
                r[0] *= u, r[1] *= u, r[2] *= h, r[3] *= h
            }
            this.invTransform = this.invTransform || i.create(), i.invert(this.invTransform, r)
        } else r && o(r)
    }, l.getLocalTransform = function (e) {
        return s.getLocalTransform(this, e)
    }, l.setTransform = function (e) {
        var t = this.transform, n = e.dpr || 1;
        t ? e.setTransform(n * t[0], n * t[1], n * t[2], n * t[3], n * t[4], n * t[5]) : e.setTransform(n, 0, 0, n, 0, 0)
    }, l.restoreTransform = function (e) {
        var t = e.dpr || 1;
        e.setTransform(t, 0, 0, t, 0, 0)
    };
    var u = [], h = i.create();
    l.setLocalTransform = function (e) {
        if (e) {
            var t = e[0] * e[0] + e[1] * e[1], n = e[2] * e[2] + e[3] * e[3], i = this.position, r = this.scale;
            a(t - 1) && (t = Math.sqrt(t)), a(n - 1) && (n = Math.sqrt(n)), e[0] < 0 && (t = -t), e[3] < 0 && (n = -n), i[0] = e[4], i[1] = e[5], r[0] = t, r[1] = n, this.rotation = Math.atan2(-e[1] / n, e[0] / t)
        }
    }, l.decomposeTransform = function () {
        if (this.transform) {
            var e = this.parent, t = this.transform;
            e && e.transform && (i.mul(u, e.invTransform, t), t = u);
            var n = this.origin;
            n && (n[0] || n[1]) && (h[4] = n[0], h[5] = n[1], i.mul(u, t, h), u[4] -= n[0], u[5] -= n[1], t = u), this.setLocalTransform(t)
        }
    }, l.getGlobalScale = function (e) {
        var t = this.transform;
        return e = e || [], t ? (e[0] = Math.sqrt(t[0] * t[0] + t[1] * t[1]), e[1] = Math.sqrt(t[2] * t[2] + t[3] * t[3]), t[0] < 0 && (e[0] = -e[0]), t[3] < 0 && (e[1] = -e[1]), e) : (e[0] = 1, e[1] = 1, e)
    }, l.transformCoordToLocal = function (e, t) {
        var n = [e, t], i = this.invTransform;
        return i && r.applyTransform(n, n, i), n
    }, l.transformCoordToGlobal = function (e, t) {
        var n = [e, t], i = this.transform;
        return i && r.applyTransform(n, n, i), n
    }, s.getLocalTransform = function (e, t) {
        o(t = t || []);
        var n = e.origin, r = e.scale || [1, 1], a = e.rotation || 0, s = e.position || [0, 0];
        return n && (t[4] -= n[0], t[5] -= n[1]), i.scale(t, t, r), a && i.rotate(t, t, a), n && (t[4] += n[0], t[5] += n[1]), t[4] += s[0], t[5] += s[1], t
    };
    var d = s;
    e.exports = d
}, function (e, t) {
    var n = 1;
    "undefined" != typeof window && (n = Math.max(window.devicePixelRatio || 1, 1));
    var i = n;
    t.debugMode = 0, t.devicePixelRatio = i
}, function (e, t) {
    t.ContextCachedBy = {NONE: 0, STYLE_BIND: 1, PLAIN_TEXT: 2}, t.WILL_BE_RESTORED = 9
}, function (e, t, n) {
    var i = n(1), r = i.retrieve2, o = i.retrieve3, a = i.each, s = i.normalizeCssArray, l = i.isString, c = i.isObject,
        u = n(17), h = n(153), d = n(104), f = n(149), g = n(83), p = g.ContextCachedBy, m = g.WILL_BE_RESTORED,
        v = u.DEFAULT_FONT, y = {left: 1, right: 1, center: 1}, b = {top: 1, bottom: 1, middle: 1},
        C = [["textShadowBlur", "shadowBlur", 0], ["textShadowOffsetX", "shadowOffsetX", 0], ["textShadowOffsetY", "shadowOffsetY", 0], ["textShadowColor", "shadowColor", "transparent"]],
        w = {}, I = {};

    function x(e) {
        if (e) {
            e.font = u.makeFont(e);
            var t = e.textAlign;
            "middle" === t && (t = "center"), e.textAlign = null == t || y[t] ? t : "left";
            var n = e.textVerticalAlign || e.textBaseline;
            "center" === n && (n = "middle"), e.textVerticalAlign = null == n || b[n] ? n : "top", e.textPadding && (e.textPadding = s(e.textPadding))
        }
    }

    function A(e, t, n, i, r) {
        if (n && t.textRotation) {
            var o = t.textOrigin;
            "center" === o ? (i = n.width / 2 + n.x, r = n.height / 2 + n.y) : o && (i = o[0] + n.x, r = o[1] + n.y), e.translate(i, r), e.rotate(-t.textRotation), e.translate(-i, -r)
        }
    }

    function _(e, t, n, i, a, s, l, c) {
        var u = i.rich[n.styleName] || {};
        u.text = n.text;
        var h = n.textVerticalAlign, d = s + a / 2;
        "top" === h ? d = s + n.height / 2 : "bottom" === h && (d = s + a - n.height / 2), !n.isLineHolder && S(u) && k(e, t, u, "right" === c ? l - n.width : "center" === c ? l - n.width / 2 : l, d - n.height / 2, n.width, n.height);
        var f = n.textPadding;
        f && (l = M(l, c, f), d -= n.height / 2 - f[2] - n.textHeight / 2), O(t, "shadowBlur", o(u.textShadowBlur, i.textShadowBlur, 0)), O(t, "shadowColor", u.textShadowColor || i.textShadowColor || "transparent"), O(t, "shadowOffsetX", o(u.textShadowOffsetX, i.textShadowOffsetX, 0)), O(t, "shadowOffsetY", o(u.textShadowOffsetY, i.textShadowOffsetY, 0)), O(t, "textAlign", c), O(t, "textBaseline", "middle"), O(t, "font", n.font || v);
        var g = R(u.textStroke || i.textStroke, m), p = E(u.textFill || i.textFill),
            m = r(u.textStrokeWidth, i.textStrokeWidth);
        g && (O(t, "lineWidth", m), O(t, "strokeStyle", g), t.strokeText(n.text, l, d)), p && (O(t, "fillStyle", p), t.fillText(n.text, l, d))
    }

    function S(e) {
        return !!(e.textBackgroundColor || e.textBorderWidth && e.textBorderColor)
    }

    function k(e, t, n, i, r, o, a) {
        var s = n.textBackgroundColor, u = n.textBorderWidth, f = n.textBorderColor, g = l(s);
        if (O(t, "shadowBlur", n.textBoxShadowBlur || 0), O(t, "shadowColor", n.textBoxShadowColor || "transparent"), O(t, "shadowOffsetX", n.textBoxShadowOffsetX || 0), O(t, "shadowOffsetY", n.textBoxShadowOffsetY || 0), g || u && f) {
            t.beginPath();
            var p = n.textBorderRadius;
            p ? h.buildPath(t, {x: i, y: r, width: o, height: a, r: p}) : t.rect(i, r, o, a), t.closePath()
        }
        if (g) if (O(t, "fillStyle", s), null != n.fillOpacity) {
            var m = t.globalAlpha;
            t.globalAlpha = n.fillOpacity * n.opacity, t.fill(), t.globalAlpha = m
        } else t.fill(); else if (c(s)) {
            var v = s.image;
            (v = d.createOrUpdateImage(v, null, e, L, s)) && d.isImageReady(v) && t.drawImage(v, i, r, o, a)
        }
        if (u && f) if (O(t, "lineWidth", u), O(t, "strokeStyle", f), null != n.strokeOpacity) {
            m = t.globalAlpha;
            t.globalAlpha = n.strokeOpacity * n.opacity, t.stroke(), t.globalAlpha = m
        } else t.stroke()
    }

    function L(e, t) {
        t.image = e
    }

    function T(e, t, n, i) {
        var r = n.x || 0, o = n.y || 0, a = n.textAlign, s = n.textVerticalAlign;
        if (i) {
            var l = n.textPosition;
            if (l instanceof Array) r = i.x + P(l[0], i.width), o = i.y + P(l[1], i.height); else {
                var c = t && t.calculateTextPosition ? t.calculateTextPosition(w, n, i) : u.calculateTextPosition(w, n, i);
                r = c.x, o = c.y, a = a || c.textAlign, s = s || c.textVerticalAlign
            }
            var h = n.textOffset;
            h && (r += h[0], o += h[1])
        }
        return (e = e || {}).baseX = r, e.baseY = o, e.textAlign = a, e.textVerticalAlign = s, e
    }

    function O(e, t, n) {
        return e[t] = f(e, t, n), e[t]
    }

    function R(e, t) {
        return null == e || t <= 0 || "transparent" === e || "none" === e ? null : e.image || e.colorStops ? "#000" : e
    }

    function E(e) {
        return null == e || "none" === e ? null : e.image || e.colorStops ? "#000" : e
    }

    function P(e, t) {
        return "string" == typeof e ? e.lastIndexOf("%") >= 0 ? parseFloat(e) / 100 * t : parseFloat(e) : e
    }

    function M(e, t, n) {
        return "right" === t ? e - n[1] : "center" === t ? e + n[3] / 2 - n[1] / 2 : e + n[3]
    }

    t.normalizeTextStyle = function (e) {
        return x(e), a(e.rich, x), e
    }, t.renderText = function (e, t, n, i, r, o) {
        i.rich ? function (e, t, n, i, r, o) {
            o !== m && (t.__attrCachedBy = p.NONE);
            var a = e.__textCotentBlock;
            a && !e.__dirtyText || (a = e.__textCotentBlock = u.parseRichText(n, i));
            !function (e, t, n, i, r) {
                var o = n.width, a = n.outerWidth, s = n.outerHeight, l = i.textPadding, c = T(I, e, i, r), h = c.baseX,
                    d = c.baseY, f = c.textAlign, g = c.textVerticalAlign;
                A(t, i, r, h, d);
                var p = u.adjustTextX(h, a, f), m = u.adjustTextY(d, s, g), v = p, y = m;
                l && (v += l[3], y += l[0]);
                var b = v + o;
                S(i) && k(e, t, i, p, m, a, s);
                for (var C = 0; C < n.lines.length; C++) {
                    for (var w, x = n.lines[C], L = x.tokens, O = L.length, R = x.lineHeight, E = x.width, P = 0, M = v, N = b, D = O - 1; P < O && (!(w = L[P]).textAlign || "left" === w.textAlign);) _(e, t, w, i, R, y, M, "left"), E -= w.width, M += w.width, P++;
                    for (; D >= 0 && "right" === (w = L[D]).textAlign;) _(e, t, w, i, R, y, N, "right"), E -= w.width, N -= w.width, D--;
                    for (M += (o - (M - v) - (b - N) - E) / 2; P <= D;) w = L[P], _(e, t, w, i, R, y, M + w.width / 2, "center"), M += w.width, P++;
                    y += R
                }
            }(e, t, a, i, r)
        }(e, t, n, i, r, o) : function (e, t, n, i, r, o) {
            "use strict";
            var a, s = S(i), l = !1, c = t.__attrCachedBy === p.PLAIN_TEXT;
            o !== m ? (o && (a = o.style, l = !s && c && a), t.__attrCachedBy = s ? p.NONE : p.PLAIN_TEXT) : c && (t.__attrCachedBy = p.NONE);
            var h = i.font || v;
            l && h === (a.font || v) || (t.font = h);
            var d = e.__computedFont;
            e.__styleFont !== h && (e.__styleFont = h, d = e.__computedFont = t.font);
            var g = i.textPadding, y = i.textLineHeight, b = e.__textCotentBlock;
            b && !e.__dirtyText || (b = e.__textCotentBlock = u.parsePlainText(n, d, g, y, i.truncate));
            var w = b.outerHeight, x = b.lines, _ = b.lineHeight, L = T(I, e, i, r), O = L.baseX, P = L.baseY,
                N = L.textAlign || "left", D = L.textVerticalAlign;
            A(t, i, r, O, P);
            var B = u.adjustTextY(P, w, D), j = O, F = B;
            if (s || g) {
                var H = u.getWidth(n, d);
                g && (H += g[1] + g[3]);
                var W = u.adjustTextX(O, H, N);
                s && k(e, t, i, W, B, H, w), g && (j = M(O, N, g), F += g[0])
            }
            t.textAlign = N, t.textBaseline = "middle", t.globalAlpha = i.opacity || 1;
            for (var V = 0; V < C.length; V++) {
                var G = C[V], z = G[0], Z = G[1], $ = i[z];
                l && $ === a[z] || (t[Z] = f(t, Z, $ || G[2]))
            }
            F += _ / 2;
            var K = i.textStrokeWidth, X = l ? a.textStrokeWidth : null, Y = !l || K !== X,
                U = !l || Y || i.textStroke !== a.textStroke, J = R(i.textStroke, K), q = E(i.textFill);
            J && (Y && (t.lineWidth = K), U && (t.strokeStyle = J));
            q && (l && i.textFill === a.textFill || (t.fillStyle = q));
            if (1 === x.length) J && t.strokeText(x[0], j, F), q && t.fillText(x[0], j, F); else for (V = 0; V < x.length; V++) J && t.strokeText(x[V], j, F), q && t.fillText(x[V], j, F), F += _
        }(e, t, n, i, r, o)
    }, t.getBoxPosition = T, t.getStroke = R, t.getFill = E, t.parsePercent = P, t.needDrawText = function (e, t) {
        return null != e && (e || t.textBackgroundColor || t.textBorderWidth && t.textBorderColor || t.textPadding)
    }
}, function (e, t) {
    var n = function (e) {
        this.colorStops = e || []
    };
    n.prototype = {
        constructor: n, addColorStop: function (e, t) {
            this.colorStops.push({offset: e, color: t})
        }
    };
    var i = n;
    e.exports = i
}, function (e, t, n) {
    var i = n(38), r = n(64), o = n(28), a = function () {
        this.group = new i, this.uid = r.getUID("viewComponent")
    }, s = a.prototype = {
        constructor: a, init: function (e, t) {
        }, render: function (e, t, n, i) {
        }, dispose: function () {
        }, filterForExposedEvent: null
    };
    s.updateView = s.updateLayout = s.updateVisual = function (e, t, n, i) {
    }, o.enableClassExtend(a), o.enableClassManagement(a, {registerWhenExtend: !0});
    var l = a;
    e.exports = l
}, function (e, t, n) {
    var i = n(28);

    function r(e) {
        this._setting = e || {}, this._extent = [1 / 0, -1 / 0], this._interval = 0, this.init && this.init.apply(this, arguments)
    }

    r.prototype.parse = function (e) {
        return e
    }, r.prototype.getSetting = function (e) {
        return this._setting[e]
    }, r.prototype.contain = function (e) {
        var t = this._extent;
        return e >= t[0] && e <= t[1]
    }, r.prototype.normalize = function (e) {
        var t = this._extent;
        return t[1] === t[0] ? .5 : (e - t[0]) / (t[1] - t[0])
    }, r.prototype.scale = function (e) {
        var t = this._extent;
        return e * (t[1] - t[0]) + t[0]
    }, r.prototype.unionExtent = function (e) {
        var t = this._extent;
        e[0] < t[0] && (t[0] = e[0]), e[1] > t[1] && (t[1] = e[1])
    }, r.prototype.unionExtentFromData = function (e, t) {
        this.unionExtent(e.getApproximateExtent(t))
    }, r.prototype.getExtent = function () {
        return this._extent.slice()
    }, r.prototype.setExtent = function (e, t) {
        var n = this._extent;
        isNaN(e) || (n[0] = e), isNaN(t) || (n[1] = t)
    }, r.prototype.isBlank = function () {
        return this._isBlank
    }, r.prototype.setBlank = function (e) {
        this._isBlank = e
    }, r.prototype.getLabel = null, i.enableClassExtend(r), i.enableClassManagement(r, {registerWhenExtend: !0});
    var o = r;
    e.exports = o
}, function (e, t, n) {
    var i = n(4), r = n(8), o = n(87), a = n(174), s = i.round, l = o.extend({
        type: "interval", _interval: 0, _intervalPrecision: 2, setExtent: function (e, t) {
            var n = this._extent;
            isNaN(e) || (n[0] = parseFloat(e)), isNaN(t) || (n[1] = parseFloat(t))
        }, unionExtent: function (e) {
            var t = this._extent;
            e[0] < t[0] && (t[0] = e[0]), e[1] > t[1] && (t[1] = e[1]), l.prototype.setExtent.call(this, t[0], t[1])
        }, getInterval: function () {
            return this._interval
        }, setInterval: function (e) {
            this._interval = e, this._niceExtent = this._extent.slice(), this._intervalPrecision = a.getIntervalPrecision(e)
        }, getTicks: function (e) {
            var t = this._interval, n = this._extent, i = this._niceExtent, r = this._intervalPrecision, o = [];
            if (!t) return o;
            n[0] < i[0] && (e ? o.push(s(i[0] - t, r)) : o.push(n[0]));
            for (var a = i[0]; a <= i[1] && (o.push(a), (a = s(a + t, r)) !== o[o.length - 1]);) if (o.length > 1e4) return [];
            var l = o.length ? o[o.length - 1] : i[1];
            return n[1] > l && (e ? o.push(s(l + t, r)) : o.push(n[1])), o
        }, getMinorTicks: function (e) {
            for (var t = this.getTicks(!0), n = [], r = this.getExtent(), o = 1; o < t.length; o++) {
                for (var a = t[o], s = t[o - 1], l = 0, c = [], u = (a - s) / e; l < e - 1;) {
                    var h = i.round(s + (l + 1) * u);
                    h > r[0] && h < r[1] && c.push(h), l++
                }
                n.push(c)
            }
            return n
        }, getLabel: function (e, t) {
            if (null == e) return "";
            var n = t && t.precision;
            return null == n ? n = i.getPrecisionSafe(e) || 0 : "auto" === n && (n = this._intervalPrecision), e = s(e, n, !0), r.addCommas(e)
        }, niceTicks: function (e, t, n) {
            e = e || 5;
            var i = this._extent, r = i[1] - i[0];
            if (isFinite(r)) {
                r < 0 && (r = -r, i.reverse());
                var o = a.intervalScaleNiceTicks(i, e, t, n);
                this._intervalPrecision = o.intervalPrecision, this._interval = o.interval, this._niceExtent = o.niceTickExtent
            }
        }, niceExtent: function (e) {
            var t = this._extent;
            if (t[0] === t[1]) if (0 !== t[0]) {
                var n = t[0];
                e.fixMax || (t[1] += n / 2), t[0] -= n / 2
            } else t[1] = 1;
            var i = t[1] - t[0];
            isFinite(i) || (t[0] = 0, t[1] = 1), this.niceTicks(e.splitNumber, e.minInterval, e.maxInterval);
            var r = this._interval;
            e.fixMin || (t[0] = s(Math.floor(t[0] / r) * r)), e.fixMax || (t[1] = s(Math.ceil(t[1] / r) * r))
        }
    });
    l.create = function () {
        return new l
    };
    var c = l;
    e.exports = c
}, function (e, t, n) {
    var i = n(1), r = n(4).parsePercent, o = n(27).isDimensionStacked, a = n(49),
        s = "undefined" != typeof Float32Array ? Float32Array : Array;

    function l(e) {
        return e.get("stack") || "__ec_stack_" + e.seriesIndex
    }

    function c(e) {
        return e.dim + e.index
    }

    function u(e, t) {
        var n = [];
        return t.eachSeriesByType(e, (function (e) {
            p(e) && !m(e) && n.push(e)
        })), n
    }

    function h(e) {
        var t = function (e) {
            var t = {};
            i.each(e, (function (e) {
                var n = e.coordinateSystem.getBaseAxis();
                if ("time" === n.type || "value" === n.type) for (var i = e.getData(), r = n.dim + "_" + n.index, o = i.mapDimension(n.dim), a = 0, s = i.count(); a < s; ++a) {
                    var l = i.get(o, a);
                    t[r] ? t[r].push(l) : t[r] = [l]
                }
            }));
            var n = [];
            for (var r in t) if (t.hasOwnProperty(r)) {
                var o = t[r];
                if (o) {
                    o.sort((function (e, t) {
                        return e - t
                    }));
                    for (var a = null, s = 1; s < o.length; ++s) {
                        var l = o[s] - o[s - 1];
                        l > 0 && (a = null === a ? l : Math.min(a, l))
                    }
                    n[r] = a
                }
            }
            return n
        }(e), n = [];
        return i.each(e, (function (e) {
            var i, o = e.coordinateSystem.getBaseAxis(), a = o.getExtent();
            if ("category" === o.type) i = o.getBandWidth(); else if ("value" === o.type || "time" === o.type) {
                var s = o.dim + "_" + o.index, u = t[s], h = Math.abs(a[1] - a[0]), d = o.scale.getExtent(),
                    f = Math.abs(d[1] - d[0]);
                i = u ? h / f * u : h
            } else {
                var g = e.getData();
                i = Math.abs(a[1] - a[0]) / g.count()
            }
            var p = r(e.get("barWidth"), i), m = r(e.get("barMaxWidth"), i), v = r(e.get("barMinWidth") || 1, i),
                y = e.get("barGap"), b = e.get("barCategoryGap");
            n.push({
                bandWidth: i,
                barWidth: p,
                barMaxWidth: m,
                barMinWidth: v,
                barGap: y,
                barCategoryGap: b,
                axisKey: c(o),
                stackId: l(e)
            })
        })), d(n)
    }

    function d(e) {
        var t = {};
        i.each(e, (function (e, n) {
            var i = e.axisKey, r = e.bandWidth, o = t[i] || {
                bandWidth: r,
                remainedWidth: r,
                autoWidthCount: 0,
                categoryGap: "20%",
                gap: "30%",
                stacks: {}
            }, a = o.stacks;
            t[i] = o;
            var s = e.stackId;
            a[s] || o.autoWidthCount++, a[s] = a[s] || {width: 0, maxWidth: 0};
            var l = e.barWidth;
            l && !a[s].width && (a[s].width = l, l = Math.min(o.remainedWidth, l), o.remainedWidth -= l);
            var c = e.barMaxWidth;
            c && (a[s].maxWidth = c);
            var u = e.barMinWidth;
            u && (a[s].minWidth = u);
            var h = e.barGap;
            null != h && (o.gap = h);
            var d = e.barCategoryGap;
            null != d && (o.categoryGap = d)
        }));
        var n = {};
        return i.each(t, (function (e, t) {
            n[t] = {};
            var o = e.stacks, a = e.bandWidth, s = r(e.categoryGap, a), l = r(e.gap, 1), c = e.remainedWidth,
                u = e.autoWidthCount, h = (c - s) / (u + (u - 1) * l);
            h = Math.max(h, 0), i.each(o, (function (e) {
                var t = e.maxWidth, n = e.minWidth;
                if (e.width) {
                    i = e.width;
                    t && (i = Math.min(i, t)), n && (i = Math.max(i, n)), e.width = i, c -= i + l * i, u--
                } else {
                    var i = h;
                    t && t < i && (i = Math.min(t, c)), n && n > i && (i = n), i !== h && (e.width = i, c -= i + l * i, u--)
                }
            })), h = (c - s) / (u + (u - 1) * l), h = Math.max(h, 0);
            var d, f = 0;
            i.each(o, (function (e, t) {
                e.width || (e.width = h), d = e, f += e.width * (1 + l)
            })), d && (f -= d.width * l);
            var g = -f / 2;
            i.each(o, (function (e, i) {
                n[t][i] = n[t][i] || {bandWidth: a, offset: g, width: e.width}, g += e.width * (1 + l)
            }))
        })), n
    }

    function f(e, t, n) {
        if (e && t) {
            var i = e[c(t)];
            return null != i && null != n && (i = i[l(n)]), i
        }
    }

    var g = {
        seriesType: "bar", plan: a(), reset: function (e) {
            if (p(e) && m(e)) {
                var t = e.getData(), n = e.coordinateSystem, i = n.grid.getRect(), r = n.getBaseAxis(),
                    o = n.getOtherAxis(r), a = t.mapDimension(o.dim), l = t.mapDimension(r.dim), c = o.isHorizontal(),
                    u = c ? 0 : 1, d = f(h([e]), r, e).width;
                return d > .5 || (d = .5), {
                    progress: function (e, t) {
                        var h, f = e.count, g = new s(2 * f), p = new s(2 * f), m = new s(f), y = [], b = [], C = 0,
                            w = 0;
                        for (; null != (h = e.next());) b[u] = t.get(a, h), b[1 - u] = t.get(l, h), y = n.dataToPoint(b, null, y), p[C] = c ? i.x + i.width : y[0], g[C++] = y[0], p[C] = c ? y[1] : i.y + i.height, g[C++] = y[1], m[w++] = h;
                        t.setLayout({
                            largePoints: g,
                            largeDataIndices: m,
                            largeBackgroundPoints: p,
                            barWidth: d,
                            valueAxisStart: v(r, o, !1),
                            backgroundStart: c ? i.x : i.y,
                            valueAxisHorizontal: c
                        })
                    }
                }
            }
        }
    };

    function p(e) {
        return e.coordinateSystem && "cartesian2d" === e.coordinateSystem.type
    }

    function m(e) {
        return e.pipelineContext && e.pipelineContext.large
    }

    function v(e, t, n) {
        return t.toGlobalCoord(t.dataToCoord("log" === t.type ? 1 : 0))
    }

    t.getLayoutOnAxis = function (e) {
        var t = [], n = e.axis;
        if ("category" === n.type) {
            for (var r = n.getBandWidth(), o = 0; o < e.count; o++) t.push(i.defaults({
                bandWidth: r,
                axisKey: "axis0",
                stackId: "__ec_stack_" + o
            }, e));
            var a = d(t), s = [];
            for (o = 0; o < e.count; o++) {
                var l = a.axis0["__ec_stack_" + o];
                l.offsetCenter = l.offset + l.width / 2, s.push(l)
            }
            return s
        }
    }, t.prepareLayoutBarSeries = u, t.makeColumnLayout = h, t.retrieveColumnLayout = f, t.layout = function (e, t) {
        var n = u(e, t), r = h(n), a = {}, s = {};
        i.each(n, (function (e) {
            var t = e.getData(), n = e.coordinateSystem, i = n.getBaseAxis(), u = l(e), h = r[c(i)][u], d = h.offset,
                f = h.width, g = n.getOtherAxis(i), p = e.get("barMinHeight") || 0;
            a[u] = a[u] || [], s[u] = s[u] || [], t.setLayout({bandWidth: h.bandWidth, offset: d, size: f});
            for (var m = t.mapDimension(g.dim), y = t.mapDimension(i.dim), b = o(t, m), C = g.isHorizontal(), w = v(i, g, b), I = 0, x = t.count(); I < x; I++) {
                var A, _, S, k, L, T = t.get(m, I), O = t.get(y, I), R = T >= 0 ? "p" : "n", E = w;
                if (b && (a[u][O] || (a[u][O] = {
                    p: w,
                    n: w
                }), E = a[u][O][R]), C) A = E, _ = (L = n.dataToPoint([T, O]))[1] + d, S = L[0] - w, k = f, Math.abs(S) < p && (S = (S < 0 ? -1 : 1) * p), isNaN(S) || b && (a[u][O][R] += S); else A = (L = n.dataToPoint([O, T]))[0] + d, _ = E, S = f, k = L[1] - w, Math.abs(k) < p && (k = (k <= 0 ? -1 : 1) * p), isNaN(k) || b && (a[u][O][R] += k);
                t.setItemLayout(I, {x: A, y: _, width: S, height: k})
            }
        }), this)
    }, t.largeLayout = g
}, function (e, t, n) {
    var i = n(1), r = n(20).createSymbol, o = n(3), a = n(4).parsePercent, s = n(112).getDefaultLabel;

    function l(e, t, n) {
        o.Group.call(this), this.updateData(e, t, n)
    }

    var c = l.prototype, u = l.getSymbolSize = function (e, t) {
        var n = e.getItemVisual(t, "symbolSize");
        return n instanceof Array ? n.slice() : [+n, +n]
    };

    function h(e) {
        return [e[0] / 2, e[1] / 2]
    }

    function d(e, t) {
        this.parent.drift(e, t)
    }

    c._createSymbol = function (e, t, n, i, o) {
        this.removeAll();
        var a = t.getItemVisual(n, "color"), s = r(e, -1, -1, 2, 2, a, o);
        s.attr({z2: 100, culling: !0, scale: h(i)}), s.drift = d, this._symbolType = e, this.add(s)
    }, c.stopSymbolAnimation = function (e) {
        this.childAt(0).stopAnimation(e)
    }, c.getSymbolPath = function () {
        return this.childAt(0)
    }, c.getScale = function () {
        return this.childAt(0).scale
    }, c.highlight = function () {
        this.childAt(0).trigger("emphasis")
    }, c.downplay = function () {
        this.childAt(0).trigger("normal")
    }, c.setZ = function (e, t) {
        var n = this.childAt(0);
        n.zlevel = e, n.z = t
    }, c.setDraggable = function (e) {
        var t = this.childAt(0);
        t.draggable = e, t.cursor = e ? "move" : t.cursor
    }, c.updateData = function (e, t, n) {
        this.silent = !1;
        var i = e.getItemVisual(t, "symbol") || "circle", r = e.hostModel, a = u(e, t), s = i !== this._symbolType;
        if (s) {
            var l = e.getItemVisual(t, "symbolKeepAspect");
            this._createSymbol(i, e, t, a, l)
        } else {
            (c = this.childAt(0)).silent = !1, o.updateProps(c, {scale: h(a)}, r, t)
        }
        if (this._updateCommon(e, t, a, n), s) {
            var c = this.childAt(0), d = n && n.fadeIn, f = {scale: c.scale.slice()};
            d && (f.style = {opacity: c.style.opacity}), c.scale = [0, 0], d && (c.style.opacity = 0), o.initProps(c, f, r, t)
        }
        this._seriesModel = r
    };
    var f = ["itemStyle"], g = ["emphasis", "itemStyle"], p = ["label"], m = ["emphasis", "label"];

    function v(e, t) {
        if (!this.incremental && !this.useHoverLayer) if ("emphasis" === t) {
            var n = this.__symbolOriginalScale, i = n[1] / n[0],
                r = {scale: [Math.max(1.1 * n[0], n[0] + 3), Math.max(1.1 * n[1], n[1] + 3 * i)]};
            this.animateTo(r, 400, "elasticOut")
        } else "normal" === t && this.animateTo({scale: this.__symbolOriginalScale}, 400, "elasticOut")
    }

    c._updateCommon = function (e, t, n, r) {
        var l = this.childAt(0), c = e.hostModel, u = e.getItemVisual(t, "color");
        "image" !== l.type ? l.useStyle({strokeNoScale: !0}) : l.setStyle({
            opacity: null,
            shadowBlur: null,
            shadowOffsetX: null,
            shadowOffsetY: null,
            shadowColor: null
        });
        var d = r && r.itemStyle, y = r && r.hoverItemStyle, b = r && r.symbolOffset, C = r && r.labelModel,
            w = r && r.hoverLabelModel, I = r && r.hoverAnimation, x = r && r.cursorStyle;
        if (!r || e.hasItemOption) {
            var A = r && r.itemModel ? r.itemModel : e.getItemModel(t);
            d = A.getModel(f).getItemStyle(["color"]), y = A.getModel(g).getItemStyle(), b = A.getShallow("symbolOffset"), C = A.getModel(p), w = A.getModel(m), I = A.getShallow("hoverAnimation"), x = A.getShallow("cursor")
        } else y = i.extend({}, y);
        var _ = l.style, S = e.getItemVisual(t, "symbolRotate");
        l.attr("rotation", (S || 0) * Math.PI / 180 || 0), b && l.attr("position", [a(b[0], n[0]), a(b[1], n[1])]), x && l.attr("cursor", x), l.setColor(u, r && r.symbolInnerColor), l.setStyle(d);
        var k = e.getItemVisual(t, "opacity");
        null != k && (_.opacity = k);
        var L = e.getItemVisual(t, "liftZ"), T = l.__z2Origin;
        null != L ? null == T && (l.__z2Origin = l.z2, l.z2 += L) : null != T && (l.z2 = T, l.__z2Origin = null);
        var O = r && r.useNameLabel;
        o.setLabelStyle(_, y, C, w, {
            labelFetcher: c, labelDataIndex: t, defaultText: function (t, n) {
                return O ? e.getName(t) : s(e, t)
            }, isRectText: !0, autoColor: u
        }), l.__symbolOriginalScale = h(n), l.hoverStyle = y, l.highDownOnUpdate = I && c.isAnimationEnabled() ? v : null, o.setHoverStyle(l)
    }, c.fadeOut = function (e, t) {
        var n = this.childAt(0);
        this.silent = n.silent = !0, (!t || !t.keepLabel) && (n.style.text = null), o.updateProps(n, {
            style: {opacity: 0},
            scale: [0, 0]
        }, this._seriesModel, this.dataIndex, e)
    }, i.inherits(l, o.Group);
    var y = l;
    e.exports = y
}, function (e, t, n) {
    var i = n(1), r = n(182), o = n(14), a = n(7), s = a.getLayoutParams, l = a.mergeLayoutParam, c = n(173),
        u = ["value", "category", "time", "log"];
    e.exports = function (e, t, n, a) {
        i.each(u, (function (o) {
            t.extend({
                type: e + "Axis." + o, mergeDefaultAndTheme: function (t, r) {
                    var a = this.layoutMode, c = a ? s(t) : {}, u = r.getTheme();
                    i.merge(t, u.get(o + "Axis")), i.merge(t, this.getDefaultOption()), t.type = n(e, t), a && l(t, c, a)
                }, optionUpdated: function () {
                    "category" === this.option.type && (this.__ordinalMeta = c.createByAxisModel(this))
                }, getCategories: function (e) {
                    var t = this.option;
                    if ("category" === t.type) return e ? t.data : this.__ordinalMeta.categories
                }, getOrdinalMeta: function () {
                    return this.__ordinalMeta
                }, defaultOption: i.mergeAll([{}, r[o + "Axis"], a], !0)
            })
        })), o.registerSubTypeDefaulter(e + "Axis", i.curry(n, e))
    }
}, function (e, t, n) {
    var i = n(1), r = n(13), o = i.each, a = i.curry;

    function s(e, t) {
        return "all" === e || i.isArray(e) && i.indexOf(e, t) >= 0 || e === t
    }

    function l(e) {
        var t = (e.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
        return t && t.axesInfo[u(e)]
    }

    function c(e) {
        return !!e.get("handle.show")
    }

    function u(e) {
        return e.type + "||" + e.id
    }

    t.collect = function (e, t) {
        var n = {axesInfo: {}, seriesInvolved: !1, coordSysAxesInfo: {}, coordSysMap: {}};
        return function (e, t, n) {
            var l = t.getComponent("tooltip"), h = t.getComponent("axisPointer"), d = h.get("link", !0) || [], f = [];
            o(n.getCoordinateSystems(), (function (n) {
                if (n.axisPointerEnabled) {
                    var g = u(n.model), p = e.coordSysAxesInfo[g] = {};
                    e.coordSysMap[g] = n;
                    var m = n.model.getModel("tooltip", l);
                    if (o(n.getAxes(), a(C, !1, null)), n.getTooltipAxes && l && m.get("show")) {
                        var v = "axis" === m.get("trigger"), y = "cross" === m.get("axisPointer.type"),
                            b = n.getTooltipAxes(m.get("axisPointer.axis"));
                        (v || y) && o(b.baseAxes, a(C, !y || "cross", v)), y && o(b.otherAxes, a(C, "cross", !1))
                    }
                }

                function C(a, l, g) {
                    var v = g.model.getModel("axisPointer", h), y = v.get("show");
                    if (y && ("auto" !== y || a || c(v))) {
                        null == l && (l = v.get("triggerTooltip"));
                        var b = (v = a ? function (e, t, n, a, s, l) {
                                var c = t.getModel("axisPointer"), u = {};
                                o(["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"], (function (e) {
                                    u[e] = i.clone(c.get(e))
                                })), u.snap = "category" !== e.type && !!l, "cross" === c.get("type") && (u.type = "line");
                                var h = u.label || (u.label = {});
                                if (null == h.show && (h.show = !1), "cross" === s) {
                                    var d = c.get("label.show");
                                    if (h.show = null == d || d, !l) {
                                        var f = u.lineStyle = c.get("crossStyle");
                                        f && i.defaults(h, f.textStyle)
                                    }
                                }
                                return e.model.getModel("axisPointer", new r(u, n, a))
                            }(g, m, h, t, a, l) : v).get("snap"), C = u(g.model), w = l || b || "category" === g.type,
                            I = e.axesInfo[C] = {
                                key: C,
                                axis: g,
                                coordSys: n,
                                axisPointerModel: v,
                                triggerTooltip: l,
                                involveSeries: w,
                                snap: b,
                                useHandle: c(v),
                                seriesModels: []
                            };
                        p[C] = I, e.seriesInvolved |= w;
                        var x = function (e, t) {
                            for (var n = t.model, i = t.dim, r = 0; r < e.length; r++) {
                                var o = e[r] || {};
                                if (s(o[i + "AxisId"], n.id) || s(o[i + "AxisIndex"], n.componentIndex) || s(o[i + "AxisName"], n.name)) return r
                            }
                        }(d, g);
                        if (null != x) {
                            var A = f[x] || (f[x] = {axesInfo: {}});
                            A.axesInfo[C] = I, A.mapper = d[x].mapper, I.linkGroup = A
                        }
                    }
                }
            }))
        }(n, e, t), n.seriesInvolved && function (e, t) {
            t.eachSeries((function (t) {
                var n = t.coordinateSystem, i = t.get("tooltip.trigger", !0), r = t.get("tooltip.show", !0);
                n && "none" !== i && !1 !== i && "item" !== i && !1 !== r && !1 !== t.get("axisPointer.show", !0) && o(e.coordSysAxesInfo[u(n.model)], (function (e) {
                    var i = e.axis;
                    n.getAxis(i.dim) === i && (e.seriesModels.push(t), null == e.seriesDataCount && (e.seriesDataCount = 0), e.seriesDataCount += t.getData().count())
                }))
            }), this)
        }(n, e), n
    }, t.fixValue = function (e) {
        var t = l(e);
        if (t) {
            var n = t.axisPointerModel, i = t.axis.scale, r = n.option, o = n.get("status"), a = n.get("value");
            null != a && (a = i.parse(a));
            var s = c(n);
            null == o && (r.status = s ? "show" : "hide");
            var u = i.getExtent().slice();
            u[0] > u[1] && u.reverse(), (null == a || a > u[1]) && (a = u[1]), a < u[0] && (a = u[0]), r.value = a, s && (r.status = t.axis.scale.isBlank() ? "hide" : "show")
        }
    }, t.getAxisInfo = l, t.getAxisPointerModel = function (e) {
        var t = l(e);
        return t && t.axisPointerModel
    }, t.makeKey = u
}, function (e, t, n) {
    var i = n(1).createHashMap;
    e.exports = function (e) {
        return {
            getTargetSeries: function (t) {
                var n = {}, r = i();
                return t.eachSeriesByType(e, (function (e) {
                    e.__paletteScope = n, r.set(e.uid, e)
                })), r
            }, reset: function (e, t) {
                var n = e.getRawData(), i = {}, r = e.getData();
                r.each((function (e) {
                    var t = r.getRawIndex(e);
                    i[t] = e
                })), n.each((function (t) {
                    var o, a = i[t], s = null != a && r.getItemVisual(a, "color", !0),
                        l = null != a && r.getItemVisual(a, "borderColor", !0);
                    if (s && l || (o = n.getItemModel(t)), !s) {
                        var c = o.get("itemStyle.color") || e.getColorFromPalette(n.getName(t) || t + "", e.__paletteScope, n.count());
                        null != a && r.setItemVisual(a, "color", c)
                    }
                    if (!l) {
                        var u = o.get("itemStyle.borderColor");
                        null != a && r.setItemVisual(a, "borderColor", u)
                    }
                }))
            }
        }
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = i.each, o = i.createHashMap, a = n(111), s = n(349), l = n(354), c = n(10),
        u = {geoJSON: s, svg: l}, h = {
            load: function (e, t, n) {
                var i, a = [], s = o(), l = o(), h = f(e);
                return r(h, (function (o) {
                    var c = u[o.type].load(e, o, n);
                    r(c.regions, (function (e) {
                        var n = e.name;
                        t && t.hasOwnProperty(n) && (e = e.cloneShallow(n = t[n])), a.push(e), s.set(n, e), l.set(n, e.center)
                    }));
                    var h = c.boundingRect;
                    h && (i ? i.union(h) : i = h.clone())
                })), {regions: a, regionsMap: s, nameCoordMap: l, boundingRect: i || new c(0, 0, 0, 0)}
            }, makeGraphic: d("makeGraphic"), removeGraphic: d("removeGraphic")
        };

    function d(e) {
        return function (t, n) {
            var i = f(t), o = [];
            return r(i, (function (i) {
                var r = u[i.type][e];
                r && o.push(r(t, i, n))
            })), o
        }
    }

    function f(e) {
        return a.retrieveMap(e) || []
    }

    e.exports = h
}, function (e, t) {
    var n = {axisPointer: 1, tooltip: 1, brush: 1};
    t.onIrrelevantElement = function (e, t, i) {
        var r = t.getComponentByElement(e.topTarget), o = r && r.coordinateSystem;
        return r && r !== i && !n[r.mainType] && o && o.model !== i
    }
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(17), a = n(8), s = n(16), l = n(22), c = n(35);

    function u(e, t, n, i, r) {
        var s = h(n.get("value"), t.axis, t.ecModel, n.get("seriesDataIndices"), {
                precision: n.get("label.precision"),
                formatter: n.get("label.formatter")
            }), l = n.getModel("label"), c = a.normalizeCssArray(l.get("padding") || 0), u = l.getFont(),
            d = o.getBoundingRect(s, u), f = r.position, g = d.width + c[1] + c[3], p = d.height + c[0] + c[2],
            m = r.align;
        "right" === m && (f[0] -= g), "center" === m && (f[0] -= g / 2);
        var v = r.verticalAlign;
        "bottom" === v && (f[1] -= p), "middle" === v && (f[1] -= p / 2), function (e, t, n, i) {
            var r = i.getWidth(), o = i.getHeight();
            e[0] = Math.min(e[0] + t, r) - t, e[1] = Math.min(e[1] + n, o) - n, e[0] = Math.max(e[0], 0), e[1] = Math.max(e[1], 0)
        }(f, g, p, i);
        var y = l.get("backgroundColor");
        y && "auto" !== y || (y = t.get("axisLine.lineStyle.color")), e.label = {
            shape: {
                x: 0,
                y: 0,
                width: g,
                height: p,
                r: l.get("borderRadius")
            },
            position: f.slice(),
            style: {
                text: s,
                textFont: u,
                textFill: l.getTextColor(),
                textPosition: "inside",
                textPadding: c,
                fill: y,
                stroke: l.get("borderColor") || "transparent",
                lineWidth: l.get("borderWidth") || 0,
                shadowBlur: l.get("shadowBlur"),
                shadowColor: l.get("shadowColor"),
                shadowOffsetX: l.get("shadowOffsetX"),
                shadowOffsetY: l.get("shadowOffsetY")
            },
            z2: 10
        }
    }

    function h(e, t, n, r, o) {
        e = t.scale.parse(e);
        var a = t.scale.getLabel(e, {precision: o.precision}), s = o.formatter;
        if (s) {
            var c = {value: l.getAxisRawValue(t, e), axisDimension: t.dim, axisIndex: t.index, seriesData: []};
            i.each(r, (function (e) {
                var t = n.getSeriesByIndex(e.seriesIndex), i = e.dataIndexInside, r = t && t.getDataParams(i);
                r && c.seriesData.push(r)
            })), i.isString(s) ? a = s.replace("{value}", a) : i.isFunction(s) && (a = s(c))
        }
        return a
    }

    function d(e, t, n) {
        var i = s.create();
        return s.rotate(i, i, n.rotation), s.translate(i, i, n.position), r.applyTransform([e.dataToCoord(t), (n.labelOffset || 0) + (n.labelDirection || 1) * (n.labelMargin || 0)], i)
    }

    t.buildElStyle = function (e) {
        var t, n = e.get("type"), i = e.getModel(n + "Style");
        return "line" === n ? (t = i.getLineStyle()).fill = null : "shadow" === n && ((t = i.getAreaStyle()).stroke = null), t
    }, t.buildLabelElOption = u, t.getValueLabel = h, t.getTransformedPosition = d, t.buildCartesianSingleLabelElOption = function (e, t, n, i, r, o) {
        var a = c.innerTextLayout(n.rotation, 0, n.labelDirection);
        n.labelMargin = r.get("label.margin"), u(t, i, r, o, {
            position: d(i.axis, e, n),
            align: a.textAlign,
            verticalAlign: a.textVerticalAlign
        })
    }, t.makeLineShape = function (e, t, n) {
        return {x1: e[n = n || 0], y1: e[1 - n], x2: t[n], y2: t[1 - n]}
    }, t.makeRectShape = function (e, t, n) {
        return {x: e[n = n || 0], y: e[1 - n], width: t[n], height: t[1 - n]}
    }, t.makeSectorShape = function (e, t, n, i, r, o) {
        return {cx: e, cy: t, r0: n, r: i, startAngle: r, endAngle: o, clockwise: !0}
    }
}, function (e, t, n) {
    var i = n(1), r = n(45), o = i.each;

    function a(e) {
        if (e) for (var t in e) if (e.hasOwnProperty(t)) return !0
    }

    t.createVisualMappings = function (e, t, n) {
        var a = {};
        return o(t, (function (t) {
            var s, l = a[t] = ((s = function () {
            }).prototype.__hidden = s.prototype, new s);
            o(e[t], (function (e, o) {
                if (r.isValidType(o)) {
                    var a = {type: o, visual: e};
                    n && n(a, t), l[o] = new r(a), "opacity" === o && ((a = i.clone(a)).type = "colorAlpha", l.__hidden.__alphaForOpacity = new r(a))
                }
            }))
        })), a
    }, t.replaceVisualOption = function (e, t, n) {
        var r;
        i.each(n, (function (e) {
            t.hasOwnProperty(e) && a(t[e]) && (r = !0)
        })), r && i.each(n, (function (n) {
            t.hasOwnProperty(n) && a(t[n]) ? e[n] = i.clone(t[n]) : delete e[n]
        }))
    }, t.applyVisual = function (e, t, n, o, a, s) {
        var l, c = {};

        function u(e) {
            return n.getItemVisual(l, e)
        }

        function h(e, t) {
            n.setItemVisual(l, e, t)
        }

        function d(e, i) {
            l = null == s ? e : i;
            var r = n.getRawDataItem(l);
            if (!r || !1 !== r.visualMap) for (var d = o.call(a, e), f = t[d], g = c[d], p = 0, m = g.length; p < m; p++) {
                var v = g[p];
                f[v] && f[v].applyVisual(e, u, h)
            }
        }

        i.each(e, (function (e) {
            var n = r.prepareVisualTypes(t[e]);
            c[e] = n
        })), null == s ? n.each(d) : n.each([s], d)
    }, t.incrementalApplyVisual = function (e, t, n, o) {
        var a = {};
        return i.each(e, (function (e) {
            var n = r.prepareVisualTypes(t[e]);
            a[e] = n
        })), {
            progress: function (e, i) {
                function r(e) {
                    return i.getItemVisual(l, e)
                }

                function s(e, t) {
                    i.setItemVisual(l, e, t)
                }

                var l;
                for (null != o && (o = i.getDimension(o)); null != (l = e.next());) {
                    var c = i.getRawDataItem(l);
                    if (!c || !1 !== c.visualMap) for (var u = null != o ? i.get(o, l, !0) : l, h = n(u), d = t[h], f = a[h], g = 0, p = f.length; g < p; g++) {
                        var m = f[g];
                        d[m] && d[m].applyVisual(u, r, s)
                    }
                }
            }
        }
    }
}, function (e, t, n) {
    (function (i) {
        var r, o;
        r = function () {
            "use strict";

            /** @license
             * jsPDF - PDF Document creation from JavaScript
             * Version 1.5.3 Built on 2018-12-27T14:11:42.696Z
             *                      CommitID d93d28db14
             *
             * Copyright (c) 2010-2016 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
             *               2010 Aaron Spike, https://github.com/acspike
             *               2012 Willow Systems Corporation, willow-systems.com
             *               2012 Pablo Hess, https://github.com/pablohess
             *               2012 Florian Jenett, https://github.com/fjenett
             *               2013 Warren Weckesser, https://github.com/warrenweckesser
             *               2013 Youssef Beddad, https://github.com/lifof
             *               2013 Lee Driscoll, https://github.com/lsdriscoll
             *               2013 Stefan Slonevskiy, https://github.com/stefslon
             *               2013 Jeremy Morel, https://github.com/jmorel
             *               2013 Christoph Hartmann, https://github.com/chris-rock
             *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
             *               2014 James Makes, https://github.com/dollaruw
             *               2014 Diego Casorran, https://github.com/diegocr
             *               2014 Steven Spungin, https://github.com/Flamenco
             *               2014 Kenneth Glassey, https://github.com/Gavvers
             *
             * Licensed under the MIT License
             *
             * Contributor(s):
             *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
             *    kim3er, mfo, alnorth, Flamenco
             */function r(e) {
                return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
                    return typeof e
                } : function (e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                })(e)
            }

            !function (e) {
                if ("object" !== r(e.console)) {
                    e.console = {};
                    for (var t, n, i = e.console, o = function () {
                    }, a = ["memory"], s = "assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(","); t = a.pop();) i[t] || (i[t] = {});
                    for (; n = s.pop();) i[n] || (i[n] = o)
                }
                var l, c, u, h, d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
                void 0 === e.btoa && (e.btoa = function (e) {
                    var t, n, i, r, o, a = 0, s = 0, l = "", c = [];
                    if (!e) return e;
                    for (; t = (o = e.charCodeAt(a++) << 16 | e.charCodeAt(a++) << 8 | e.charCodeAt(a++)) >> 18 & 63, n = o >> 12 & 63, i = o >> 6 & 63, r = 63 & o, c[s++] = d.charAt(t) + d.charAt(n) + d.charAt(i) + d.charAt(r), a < e.length;) ;
                    l = c.join("");
                    var u = e.length % 3;
                    return (u ? l.slice(0, u - 3) : l) + "===".slice(u || 3)
                }), void 0 === e.atob && (e.atob = function (e) {
                    var t, n, i, r, o, a, s = 0, l = 0, c = [];
                    if (!e) return e;
                    for (e += ""; t = (a = d.indexOf(e.charAt(s++)) << 18 | d.indexOf(e.charAt(s++)) << 12 | (r = d.indexOf(e.charAt(s++))) << 6 | (o = d.indexOf(e.charAt(s++)))) >> 16 & 255, n = a >> 8 & 255, i = 255 & a, c[l++] = 64 == r ? String.fromCharCode(t) : 64 == o ? String.fromCharCode(t, n) : String.fromCharCode(t, n, i), s < e.length;) ;
                    return c.join("")
                }), Array.prototype.map || (Array.prototype.map = function (e) {
                    if (null == this || "function" != typeof e) throw new TypeError;
                    for (var t = Object(this), n = t.length >>> 0, i = new Array(n), r = 1 < arguments.length ? arguments[1] : void 0, o = 0; o < n; o++) o in t && (i[o] = e.call(r, t[o], o, t));
                    return i
                }), Array.isArray || (Array.isArray = function (e) {
                    return "[object Array]" === Object.prototype.toString.call(e)
                }), Array.prototype.forEach || (Array.prototype.forEach = function (e, t) {
                    if (null == this || "function" != typeof e) throw new TypeError;
                    for (var n = Object(this), i = n.length >>> 0, r = 0; r < i; r++) r in n && e.call(t, n[r], r, n)
                }), Array.prototype.find || Object.defineProperty(Array.prototype, "find", {
                    value: function (e) {
                        if (null == this) throw new TypeError('"this" is null or not defined');
                        var t = Object(this), n = t.length >>> 0;
                        if ("function" != typeof e) throw new TypeError("predicate must be a function");
                        for (var i = arguments[1], r = 0; r < n;) {
                            var o = t[r];
                            if (e.call(i, o, r, t)) return o;
                            r++
                        }
                    }, configurable: !0, writable: !0
                }), Object.keys || (Object.keys = (l = Object.prototype.hasOwnProperty, c = !{toString: null}.propertyIsEnumerable("toString"), h = (u = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"]).length, function (e) {
                    if ("object" !== r(e) && ("function" != typeof e || null === e)) throw new TypeError;
                    var t, n, i = [];
                    for (t in e) l.call(e, t) && i.push(t);
                    if (c) for (n = 0; n < h; n++) l.call(e, u[n]) && i.push(u[n]);
                    return i
                })), "function" != typeof Object.assign && (Object.assign = function (e) {
                    if (null == e) throw new TypeError("Cannot convert undefined or null to object");
                    e = Object(e);
                    for (var t = 1; t < arguments.length; t++) {
                        var n = arguments[t];
                        if (null != n) for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
                    }
                    return e
                }), String.prototype.trim || (String.prototype.trim = function () {
                    return this.replace(/^\s+|\s+$/g, "")
                }), String.prototype.trimLeft || (String.prototype.trimLeft = function () {
                    return this.replace(/^\s+/g, "")
                }), String.prototype.trimRight || (String.prototype.trimRight = function () {
                    return this.replace(/\s+$/g, "")
                }), Number.isInteger = Number.isInteger || function (e) {
                    return "number" == typeof e && isFinite(e) && Math.floor(e) === e
                }
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")());
            var a, s, l, c, u, h, d, f, g, p, m, v, y, b, C, w, I, x, A, _, S, k, L, T, O, R, E, P, M, N, D, B, j, F, H,
                W, V, G, z, Z, $, K, X, Y, U, J, q, Q, ee, te, ne, ie, re, oe, ae, se, le, ce, ue, he, de, fe,
                ge = function (i) {
                    function a(e) {
                        if ("object" !== r(e)) throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");
                        var t = {};
                        this.subscribe = function (e, n, i) {
                            if (i = i || !1, "string" != typeof e || "function" != typeof n || "boolean" != typeof i) throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");
                            t.hasOwnProperty(e) || (t[e] = {});
                            var r = Math.random().toString(35);
                            return t[e][r] = [n, !!i], r
                        }, this.unsubscribe = function (e) {
                            for (var n in t) if (t[n][e]) return delete t[n][e], 0 === Object.keys(t[n]).length && delete t[n], !0;
                            return !1
                        }, this.publish = function (n) {
                            if (t.hasOwnProperty(n)) {
                                var r = Array.prototype.slice.call(arguments, 1), o = [];
                                for (var a in t[n]) {
                                    var s = t[n][a];
                                    try {
                                        s[0].apply(e, r)
                                    } catch (n) {
                                        i.console && console.error("jsPDF PubSub Error", n.message, n)
                                    }
                                    s[1] && o.push(a)
                                }
                                o.length && o.forEach(this.unsubscribe)
                            }
                        }, this.getTopics = function () {
                            return t
                        }
                    }

                    function s(e, t, n, o) {
                        var l = {}, c = [], u = 1;
                        "object" === r(e) && (e = (l = e).orientation, t = l.unit || t, n = l.format || n, o = l.compress || l.compressPdf || o, c = l.filters || (!0 === o ? ["FlateEncode"] : c), u = "number" == typeof l.userUnit ? Math.abs(l.userUnit) : 1), t = t || "mm", e = ("" + (e || "P")).toLowerCase();
                        var h = l.putOnlyUsedFonts || !0, d = {}, f = {internal: {}, __private__: {}};
                        f.__private__.PubSub = a;
                        var g = "1.3", p = f.__private__.getPdfVersion = function () {
                            return g
                        }, m = (f.__private__.setPdfVersion = function (e) {
                            g = e
                        }, {
                            a0: [2383.94, 3370.39],
                            a1: [1683.78, 2383.94],
                            a2: [1190.55, 1683.78],
                            a3: [841.89, 1190.55],
                            a4: [595.28, 841.89],
                            a5: [419.53, 595.28],
                            a6: [297.64, 419.53],
                            a7: [209.76, 297.64],
                            a8: [147.4, 209.76],
                            a9: [104.88, 147.4],
                            a10: [73.7, 104.88],
                            b0: [2834.65, 4008.19],
                            b1: [2004.09, 2834.65],
                            b2: [1417.32, 2004.09],
                            b3: [1000.63, 1417.32],
                            b4: [708.66, 1000.63],
                            b5: [498.9, 708.66],
                            b6: [354.33, 498.9],
                            b7: [249.45, 354.33],
                            b8: [175.75, 249.45],
                            b9: [124.72, 175.75],
                            b10: [87.87, 124.72],
                            c0: [2599.37, 3676.54],
                            c1: [1836.85, 2599.37],
                            c2: [1298.27, 1836.85],
                            c3: [918.43, 1298.27],
                            c4: [649.13, 918.43],
                            c5: [459.21, 649.13],
                            c6: [323.15, 459.21],
                            c7: [229.61, 323.15],
                            c8: [161.57, 229.61],
                            c9: [113.39, 161.57],
                            c10: [79.37, 113.39],
                            dl: [311.81, 623.62],
                            letter: [612, 792],
                            "government-letter": [576, 756],
                            legal: [612, 1008],
                            "junior-legal": [576, 360],
                            ledger: [1224, 792],
                            tabloid: [792, 1224],
                            "credit-card": [153, 243]
                        }), v = (f.__private__.getPageFormats = function () {
                            return m
                        }, f.__private__.getPageFormat = function (e) {
                            return m[e]
                        });
                        "string" == typeof n && (n = v(n)), n = n || v("a4");
                        var y, b = f.f2 = f.__private__.f2 = function (e) {
                            if (isNaN(e)) throw new Error("Invalid argument passed to jsPDF.f2");
                            return e.toFixed(2)
                        }, C = f.__private__.f3 = function (e) {
                            if (isNaN(e)) throw new Error("Invalid argument passed to jsPDF.f3");
                            return e.toFixed(3)
                        }, w = "00000000000000000000000000000000", I = f.__private__.getFileId = function () {
                            return w
                        }, x = f.__private__.setFileId = function (e) {
                            return e = e || "12345678901234567890123456789012".split("").map((function () {
                                return "ABCDEF0123456789".charAt(Math.floor(16 * Math.random()))
                            })).join(""), w = e
                        };
                        f.setFileId = function (e) {
                            return x(e), this
                        }, f.getFileId = function () {
                            return I()
                        };
                        var A = f.__private__.convertDateToPDFDate = function (e) {
                            var t = e.getTimezoneOffset(), n = t < 0 ? "+" : "-", i = Math.floor(Math.abs(t / 60)),
                                r = Math.abs(t % 60), o = [n, D(i), "'", D(r), "'"].join("");
                            return ["D:", e.getFullYear(), D(e.getMonth() + 1), D(e.getDate()), D(e.getHours()), D(e.getMinutes()), D(e.getSeconds()), o].join("")
                        }, _ = f.__private__.convertPDFDateToDate = function (e) {
                            var t = parseInt(e.substr(2, 4), 10), n = parseInt(e.substr(6, 2), 10) - 1,
                                i = parseInt(e.substr(8, 2), 10), r = parseInt(e.substr(10, 2), 10),
                                o = parseInt(e.substr(12, 2), 10), a = parseInt(e.substr(14, 2), 10);
                            return parseInt(e.substr(16, 2), 10), parseInt(e.substr(20, 2), 10), new Date(t, n, i, r, o, a, 0)
                        }, S = f.__private__.setCreationDate = function (e) {
                            var t;
                            if (void 0 === e && (e = new Date), "object" === r(e) && "[object Date]" === Object.prototype.toString.call(e)) t = A(e); else {
                                if (!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|\-0[0-9]|\-1[0-1])\'(0[0-9]|[1-5][0-9])\'?$/.test(e)) throw new Error("Invalid argument passed to jsPDF.setCreationDate");
                                t = e
                            }
                            return y = t
                        }, k = f.__private__.getCreationDate = function (e) {
                            var t = y;
                            return "jsDate" === e && (t = _(y)), t
                        };
                        f.setCreationDate = function (e) {
                            return S(e), this
                        }, f.getCreationDate = function (e) {
                            return k(e)
                        };
                        var L, T, O, R, E, P, M, N, D = f.__private__.padd2 = function (e) {
                                return ("0" + parseInt(e)).slice(-2)
                            }, B = !1, j = [], F = [], H = 0, W = (f.__private__.setCustomOutputDestination = function (e) {
                                T = e
                            }, f.__private__.resetCustomOutputDestination = function (e) {
                                T = void 0
                            }, f.__private__.out = function (e) {
                                var t;
                                return e = "string" == typeof e ? e : e.toString(), (t = void 0 === T ? B ? j[L] : F : T).push(e), B || (H += e.length + 1), t
                            }), V = f.__private__.write = function (e) {
                                return W(1 === arguments.length ? e.toString() : Array.prototype.join.call(arguments, " "))
                            }, G = f.__private__.getArrayBuffer = function (e) {
                                for (var t = e.length, n = new ArrayBuffer(t), i = new Uint8Array(n); t--;) i[t] = e.charCodeAt(t);
                                return n
                            },
                            z = [["Helvetica", "helvetica", "normal", "WinAnsiEncoding"], ["Helvetica-Bold", "helvetica", "bold", "WinAnsiEncoding"], ["Helvetica-Oblique", "helvetica", "italic", "WinAnsiEncoding"], ["Helvetica-BoldOblique", "helvetica", "bolditalic", "WinAnsiEncoding"], ["Courier", "courier", "normal", "WinAnsiEncoding"], ["Courier-Bold", "courier", "bold", "WinAnsiEncoding"], ["Courier-Oblique", "courier", "italic", "WinAnsiEncoding"], ["Courier-BoldOblique", "courier", "bolditalic", "WinAnsiEncoding"], ["Times-Roman", "times", "normal", "WinAnsiEncoding"], ["Times-Bold", "times", "bold", "WinAnsiEncoding"], ["Times-Italic", "times", "italic", "WinAnsiEncoding"], ["Times-BoldItalic", "times", "bolditalic", "WinAnsiEncoding"], ["ZapfDingbats", "zapfdingbats", "normal", null], ["Symbol", "symbol", "normal", null]],
                            Z = (f.__private__.getStandardFonts = function (e) {
                                return z
                            }, l.fontSize || 16), $ = (f.__private__.setFontSize = f.setFontSize = function (e) {
                                return Z = e, this
                            }, f.__private__.getFontSize = f.getFontSize = function () {
                                return Z
                            }), K = l.R2L || !1, X = (f.__private__.setR2L = f.setR2L = function (e) {
                                return K = e, this
                            }, f.__private__.getR2L = f.getR2L = function (e) {
                                return K
                            }, f.__private__.setZoomMode = function (e) {
                                if (/^\d*\.?\d*\%$/.test(e)) O = e; else if (isNaN(e)) {
                                    if (-1 === [void 0, null, "fullwidth", "fullheight", "fullpage", "original"].indexOf(e)) throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "' + e + '" is not recognized.');
                                    O = e
                                } else O = parseInt(e, 10)
                            }), Y = (f.__private__.getZoomMode = function () {
                                return O
                            }, f.__private__.setPageMode = function (e) {
                                if (-1 == [void 0, null, "UseNone", "UseOutlines", "UseThumbs", "FullScreen"].indexOf(e)) throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "' + e + '" is not recognized.');
                                R = e
                            }), U = (f.__private__.getPageMode = function () {
                                return R
                            }, f.__private__.setLayoutMode = function (e) {
                                if (-1 == [void 0, null, "continuous", "single", "twoleft", "tworight", "two"].indexOf(e)) throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "' + e + '" is not recognized.');
                                E = e
                            }), J = (f.__private__.getLayoutMode = function () {
                                return E
                            }, f.__private__.setDisplayMode = f.setDisplayMode = function (e, t, n) {
                                return X(e), U(t), Y(n), this
                            }, {title: "", subject: "", author: "", keywords: "", creator: ""}),
                            q = (f.__private__.getDocumentProperty = function (e) {
                                if (-1 === Object.keys(J).indexOf(e)) throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");
                                return J[e]
                            }, f.__private__.getDocumentProperties = function (e) {
                                return J
                            }, f.__private__.setDocumentProperties = f.setProperties = f.setDocumentProperties = function (e) {
                                for (var t in J) J.hasOwnProperty(t) && e[t] && (J[t] = e[t]);
                                return this
                            }, f.__private__.setDocumentProperty = function (e, t) {
                                if (-1 === Object.keys(J).indexOf(e)) throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");
                                return J[e] = t
                            }, 0), Q = [], ee = {}, te = {}, ne = 0, ie = [], re = [], oe = new a(f),
                            ae = l.hotfixes || [], se = f.__private__.newObject = function () {
                                var e = le();
                                return ce(e, !0), e
                            }, le = f.__private__.newObjectDeferred = function () {
                                return Q[++q] = function () {
                                    return H
                                }, q
                            }, ce = function (e, t) {
                                return t = "boolean" == typeof t && t, Q[e] = H, t && W(e + " 0 obj"), e
                            }, ue = f.__private__.newAdditionalObject = function () {
                                var e = {objId: le(), content: ""};
                                return re.push(e), e
                            }, he = le(), de = le(), fe = f.__private__.decodeColorString = function (e) {
                                var t = e.split(" ");
                                if (2 === t.length && ("g" === t[1] || "G" === t[1])) {
                                    var n = parseFloat(t[0]);
                                    t = [n, n, n, "r"]
                                }
                                for (var i = "#", r = 0; r < 3; r++) i += ("0" + Math.floor(255 * parseFloat(t[r])).toString(16)).slice(-2);
                                return i
                            }, ge = f.__private__.encodeColorString = function (e) {
                                var t;
                                "string" == typeof e && (e = {ch1: e});
                                var n = e.ch1, i = e.ch2, o = e.ch3, a = e.ch4,
                                    s = (e.precision, "draw" === e.pdfColorType ? ["G", "RG", "K"] : ["g", "rg", "k"]);
                                if ("string" == typeof n && "#" !== n.charAt(0)) {
                                    var l = new RGBColor(n);
                                    if (l.ok) n = l.toHex(); else if (!/^\d*\.?\d*$/.test(n)) throw new Error('Invalid color "' + n + '" passed to jsPDF.encodeColorString.')
                                }
                                if ("string" == typeof n && /^#[0-9A-Fa-f]{3}$/.test(n) && (n = "#" + n[1] + n[1] + n[2] + n[2] + n[3] + n[3]), "string" == typeof n && /^#[0-9A-Fa-f]{6}$/.test(n)) {
                                    var c = parseInt(n.substr(1), 16);
                                    n = c >> 16 & 255, i = c >> 8 & 255, o = 255 & c
                                }
                                if (void 0 === i || void 0 === a && n === i && i === o) if ("string" == typeof n) t = n + " " + s[0]; else switch (e.precision) {
                                    case 2:
                                        t = b(n / 255) + " " + s[0];
                                        break;
                                    case 3:
                                    default:
                                        t = C(n / 255) + " " + s[0]
                                } else if (void 0 === a || "object" === r(a)) {
                                    if (a && !isNaN(a.a) && 0 === a.a) return ["1.000", "1.000", "1.000", s[1]].join(" ");
                                    if ("string" == typeof n) t = [n, i, o, s[1]].join(" "); else switch (e.precision) {
                                        case 2:
                                            t = [b(n / 255), b(i / 255), b(o / 255), s[1]].join(" ");
                                            break;
                                        default:
                                        case 3:
                                            t = [C(n / 255), C(i / 255), C(o / 255), s[1]].join(" ")
                                    }
                                } else if ("string" == typeof n) t = [n, i, o, a, s[2]].join(" "); else switch (e.precision) {
                                    case 2:
                                        t = [b(n / 255), b(i / 255), b(o / 255), b(a / 255), s[2]].join(" ");
                                        break;
                                    case 3:
                                    default:
                                        t = [C(n / 255), C(i / 255), C(o / 255), C(a / 255), s[2]].join(" ")
                                }
                                return t
                            }, pe = f.__private__.getFilters = function () {
                                return c
                            }, me = f.__private__.putStream = function (e) {
                                var t, n = (e = e || {}).data || "", i = e.filters || pe(),
                                    r = e.alreadyAppliedFilters || [], o = e.addLength1 || !1, a = n.length;
                                !0 === i && (i = ["FlateEncode"]);
                                var l = e.additionalKeyValues || [],
                                    c = (t = void 0 !== s.API.processDataByFilters ? s.API.processDataByFilters(n, i) : {
                                        data: n,
                                        reverseChain: []
                                    }).reverseChain + (Array.isArray(r) ? r.join(" ") : r.toString());
                                0 !== t.data.length && (l.push({
                                    key: "Length",
                                    value: t.data.length
                                }), !0 === o && l.push({
                                    key: "Length1",
                                    value: a
                                })), 0 != c.length && (c.split("/").length - 1 == 1 ? l.push({
                                    key: "Filter",
                                    value: c
                                }) : l.push({key: "Filter", value: "[" + c + "]"})), W("<<");
                                for (var u = 0; u < l.length; u++) W("/" + l[u].key + " " + l[u].value);
                                W(">>"), 0 !== t.data.length && (W("stream"), W(t.data), W("endstream"))
                            }, ve = f.__private__.putPage = function (e) {
                                e.mediaBox;
                                var t = e.number, n = e.data, i = e.objId, r = e.contentsObjId;
                                ce(i, !0), ie[L].mediaBox.topRightX, ie[L].mediaBox.bottomLeftX, ie[L].mediaBox.topRightY, ie[L].mediaBox.bottomLeftY, W("<</Type /Page"), W("/Parent " + e.rootDictionaryObjId + " 0 R"), W("/Resources " + e.resourceDictionaryObjId + " 0 R"), W("/MediaBox [" + parseFloat(b(e.mediaBox.bottomLeftX)) + " " + parseFloat(b(e.mediaBox.bottomLeftY)) + " " + b(e.mediaBox.topRightX) + " " + b(e.mediaBox.topRightY) + "]"), null !== e.cropBox && W("/CropBox [" + b(e.cropBox.bottomLeftX) + " " + b(e.cropBox.bottomLeftY) + " " + b(e.cropBox.topRightX) + " " + b(e.cropBox.topRightY) + "]"), null !== e.bleedBox && W("/BleedBox [" + b(e.bleedBox.bottomLeftX) + " " + b(e.bleedBox.bottomLeftY) + " " + b(e.bleedBox.topRightX) + " " + b(e.bleedBox.topRightY) + "]"), null !== e.trimBox && W("/TrimBox [" + b(e.trimBox.bottomLeftX) + " " + b(e.trimBox.bottomLeftY) + " " + b(e.trimBox.topRightX) + " " + b(e.trimBox.topRightY) + "]"), null !== e.artBox && W("/ArtBox [" + b(e.artBox.bottomLeftX) + " " + b(e.artBox.bottomLeftY) + " " + b(e.artBox.topRightX) + " " + b(e.artBox.topRightY) + "]"), "number" == typeof e.userUnit && 1 !== e.userUnit && W("/UserUnit " + e.userUnit), oe.publish("putPage", {
                                    objId: i,
                                    pageContext: ie[t],
                                    pageNumber: t,
                                    page: n
                                }), W("/Contents " + r + " 0 R"), W(">>"), W("endobj");
                                var o = n.join("\n");
                                return ce(r, !0), me({data: o, filters: pe()}), W("endobj"), i
                            }, ye = f.__private__.putPages = function () {
                                var e, t, n = [];
                                for (e = 1; e <= ne; e++) ie[e].objId = le(), ie[e].contentsObjId = le();
                                for (e = 1; e <= ne; e++) n.push(ve({
                                    number: e,
                                    data: j[e],
                                    objId: ie[e].objId,
                                    contentsObjId: ie[e].contentsObjId,
                                    mediaBox: ie[e].mediaBox,
                                    cropBox: ie[e].cropBox,
                                    bleedBox: ie[e].bleedBox,
                                    trimBox: ie[e].trimBox,
                                    artBox: ie[e].artBox,
                                    userUnit: ie[e].userUnit,
                                    rootDictionaryObjId: he,
                                    resourceDictionaryObjId: de
                                }));
                                ce(he, !0), W("<</Type /Pages");
                                var i = "/Kids [";
                                for (t = 0; t < ne; t++) i += n[t] + " 0 R ";
                                W(i + "]"), W("/Count " + ne), W(">>"), W("endobj"), oe.publish("postPutPages")
                            }, be = function (e, t, n) {
                                te.hasOwnProperty(t) || (te[t] = {}), te[t][n] = e
                            }, Ce = function (e, t, n, i, r) {
                                r = r || !1;
                                var o = "F" + (Object.keys(ee).length + 1).toString(10), a = {
                                    id: o,
                                    postScriptName: e,
                                    fontName: t,
                                    fontStyle: n,
                                    encoding: i,
                                    isStandardFont: r,
                                    metadata: {}
                                };
                                return oe.publish("addFont", {
                                    font: a,
                                    instance: this
                                }), void 0 !== o && (ee[o] = a, be(o, t, n)), o
                            }, we = f.__private__.pdfEscape = f.pdfEscape = function (e, t) {
                                return function (e, t) {
                                    var n, i, r, o, a, s, l, c, u;
                                    if (r = (t = t || {}).sourceEncoding || "Unicode", a = t.outputEncoding, (t.autoencode || a) && ee[P].metadata && ee[P].metadata[r] && ee[P].metadata[r].encoding && (o = ee[P].metadata[r].encoding, !a && ee[P].encoding && (a = ee[P].encoding), !a && o.codePages && (a = o.codePages[0]), "string" == typeof a && (a = o[a]), a)) {
                                        for (l = !1, s = [], n = 0, i = e.length; n < i; n++) (c = a[e.charCodeAt(n)]) ? s.push(String.fromCharCode(c)) : s.push(e[n]), s[n].charCodeAt(0) >> 8 && (l = !0);
                                        e = s.join("")
                                    }
                                    for (n = e.length; void 0 === l && 0 !== n;) e.charCodeAt(n - 1) >> 8 && (l = !0), n--;
                                    if (!l) return e;
                                    for (s = t.noBOM ? [] : [254, 255], n = 0, i = e.length; n < i; n++) {
                                        if ((u = (c = e.charCodeAt(n)) >> 8) >> 8) throw new Error("Character at position " + n + " of string '" + e + "' exceeds 16bits. Cannot be encoded into UCS-2 BE");
                                        s.push(u), s.push(c - (u << 8))
                                    }
                                    return String.fromCharCode.apply(void 0, s)
                                }(e, t).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)")
                            }, Ie = f.__private__.beginPage = function (e, t) {
                                var i, r = "string" == typeof t && t.toLowerCase();
                                if ("string" == typeof e && (i = v(e.toLowerCase())) && (e = i[0], t = i[1]), Array.isArray(e) && (t = e[1], e = e[0]), (isNaN(e) || isNaN(t)) && (e = n[0], t = n[1]), r) {
                                    switch (r.substr(0, 1)) {
                                        case"l":
                                            e < t && (r = "s");
                                            break;
                                        case"p":
                                            t < e && (r = "s")
                                    }
                                    "s" === r && (i = e, e = t, t = i)
                                }
                                (14400 < e || 14400 < t) && (console.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"), e = Math.min(14400, e), t = Math.min(14400, t)), n = [e, t], B = !0, j[++ne] = [], ie[ne] = {
                                    objId: 0,
                                    contentsObjId: 0,
                                    userUnit: Number(u),
                                    artBox: null,
                                    bleedBox: null,
                                    cropBox: null,
                                    trimBox: null,
                                    mediaBox: {bottomLeftX: 0, bottomLeftY: 0, topRightX: Number(e), topRightY: Number(t)}
                                }, Ae(ne)
                            }, xe = function () {
                                Ie.apply(this, arguments), ze(Ge), W(qe), 0 !== rt && W(rt + " J"), 0 !== at && W(at + " j"), oe.publish("addPage", {pageNumber: ne})
                            }, Ae = function (e) {
                                0 < e && e <= ne && (L = e)
                            }, _e = f.__private__.getNumberOfPages = f.getNumberOfPages = function () {
                                return j.length - 1
                            }, Se = function (e, t, n) {
                                var i, r = void 0;
                                return n = n || {}, e = void 0 !== e ? e : ee[P].fontName, t = void 0 !== t ? t : ee[P].fontStyle, i = e.toLowerCase(), void 0 !== te[i] && void 0 !== te[i][t] ? r = te[i][t] : void 0 !== te[e] && void 0 !== te[e][t] ? r = te[e][t] : !1 === n.disableWarning && console.warn("Unable to look up font label for font '" + e + "', '" + t + "'. Refer to getFontList() for available fonts."), r || n.noFallback || null == (r = te.times[t]) && (r = te.times.normal), r
                            }, ke = f.__private__.putInfo = function () {
                                for (var e in se(), W("<<"), W("/Producer (jsPDF " + s.version + ")"), J) J.hasOwnProperty(e) && J[e] && W("/" + e.substr(0, 1).toUpperCase() + e.substr(1) + " (" + we(J[e]) + ")");
                                W("/CreationDate (" + y + ")"), W(">>"), W("endobj")
                            }, Le = f.__private__.putCatalog = function (e) {
                                var t = (e = e || {}).rootDictionaryObjId || he;
                                switch (se(), W("<<"), W("/Type /Catalog"), W("/Pages " + t + " 0 R"), O || (O = "fullwidth"), O) {
                                    case"fullwidth":
                                        W("/OpenAction [3 0 R /FitH null]");
                                        break;
                                    case"fullheight":
                                        W("/OpenAction [3 0 R /FitV null]");
                                        break;
                                    case"fullpage":
                                        W("/OpenAction [3 0 R /Fit]");
                                        break;
                                    case"original":
                                        W("/OpenAction [3 0 R /XYZ null null 1]");
                                        break;
                                    default:
                                        var n = "" + O;
                                        "%" === n.substr(n.length - 1) && (O = parseInt(O) / 100), "number" == typeof O && W("/OpenAction [3 0 R /XYZ null null " + b(O) + "]")
                                }
                                switch (E || (E = "continuous"), E) {
                                    case"continuous":
                                        W("/PageLayout /OneColumn");
                                        break;
                                    case"single":
                                        W("/PageLayout /SinglePage");
                                        break;
                                    case"two":
                                    case"twoleft":
                                        W("/PageLayout /TwoColumnLeft");
                                        break;
                                    case"tworight":
                                        W("/PageLayout /TwoColumnRight")
                                }
                                R && W("/PageMode /" + R), oe.publish("putCatalog"), W(">>"), W("endobj")
                            }, Te = f.__private__.putTrailer = function () {
                                W("trailer"), W("<<"), W("/Size " + (q + 1)), W("/Root " + q + " 0 R"), W("/Info " + (q - 1) + " 0 R"), W("/ID [ <" + w + "> <" + w + "> ]"), W(">>")
                            }, Re = f.__private__.putHeader = function () {
                                W("%PDF-" + g), W("%ºß¬à")
                            }, Ee = f.__private__.putXRef = function () {
                                var e = 1, t = "0000000000";
                                for (W("xref"), W("0 " + (q + 1)), W("0000000000 65535 f "), e = 1; e <= q; e++) "function" == typeof Q[e] ? W((t + Q[e]()).slice(-10) + " 00000 n ") : void 0 !== Q[e] ? W((t + Q[e]).slice(-10) + " 00000 n ") : W("0000000000 00000 n ")
                            }, Pe = f.__private__.buildDocument = function () {
                                B = !1, H = q = 0, F = [], Q = [], re = [], he = le(), de = le(), oe.publish("buildDocument"), Re(), ye(), function () {
                                    oe.publish("putAdditionalObjects");
                                    for (var e = 0; e < re.length; e++) {
                                        var t = re[e];
                                        ce(t.objId, !0), W(t.content), W("endobj")
                                    }
                                    oe.publish("postPutAdditionalObjects")
                                }(), function () {
                                    for (var e in ee) ee.hasOwnProperty(e) && (!1 === h || !0 === h && d.hasOwnProperty(e)) && (t = ee[e], oe.publish("putFont", {
                                        font: t,
                                        out: W,
                                        newObject: se,
                                        putStream: me
                                    }), !0 !== t.isAlreadyPutted && (t.objectNumber = se(), W("<<"), W("/Type /Font"), W("/BaseFont /" + t.postScriptName), W("/Subtype /Type1"), "string" == typeof t.encoding && W("/Encoding /" + t.encoding), W("/FirstChar 32"), W("/LastChar 255"), W(">>"), W("endobj")));
                                    var t
                                }(), oe.publish("putResources"), ce(de, !0), W("<<"), function () {
                                    for (var e in W("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), W("/Font <<"), ee) ee.hasOwnProperty(e) && (!1 === h || !0 === h && d.hasOwnProperty(e)) && W("/" + e + " " + ee[e].objectNumber + " 0 R");
                                    W(">>"), W("/XObject <<"), oe.publish("putXobjectDict"), W(">>")
                                }(), W(">>"), W("endobj"), oe.publish("postPutResources"), ke(), Le();
                                var e = H;
                                return Ee(), Te(), W("startxref"), W("" + e), W("%%EOF"), B = !0, F.join("\n")
                            }, Me = f.__private__.getBlob = function (e) {
                                return new Blob([G(e)], {type: "application/pdf"})
                            }, Ne = f.output = f.__private__.output = ((N = function (e, t) {
                                t = t || {};
                                var n = Pe();
                                switch ("string" == typeof t ? t = {filename: t} : t.filename = t.filename || "generated.pdf", e) {
                                    case void 0:
                                        return n;
                                    case"save":
                                        f.save(t.filename);
                                        break;
                                    case"arraybuffer":
                                        return G(n);
                                    case"blob":
                                        return Me(n);
                                    case"bloburi":
                                    case"bloburl":
                                        if (void 0 !== i.URL && "function" == typeof i.URL.createObjectURL) return i.URL && i.URL.createObjectURL(Me(n)) || void 0;
                                        console.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");
                                        break;
                                    case"datauristring":
                                    case"dataurlstring":
                                        return "data:application/pdf;filename=" + t.filename + ";base64," + btoa(n);
                                    case"dataurlnewwindow":
                                        var r = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><iframe src="' + this.output("datauristring") + '"></iframe></body></html>',
                                            o = i.open();
                                        if (null !== o && o.document.write(r), o || "undefined" == typeof safari) return o;
                                    case"datauri":
                                    case"dataurl":
                                        return i.document.location.href = "data:application/pdf;filename=" + t.filename + ";base64," + btoa(n);
                                    default:
                                        return null
                                }
                            }).foo = function () {
                                try {
                                    return N.apply(this, arguments)
                                } catch (n) {
                                    var e = n.stack || "";
                                    ~e.indexOf(" at ") && (e = e.split(" at ")[1]);
                                    var t = "Error in function " + e.split("\n")[0].split("<")[0] + ": " + n.message;
                                    if (!i.console) throw new Error(t);
                                    i.console.error(t, n), i.alert && alert(t)
                                }
                            }, (N.foo.bar = N).foo), De = function (e) {
                                return !0 === Array.isArray(ae) && -1 < ae.indexOf(e)
                            };
                        switch (t) {
                            case"pt":
                                M = 1;
                                break;
                            case"mm":
                                M = 72 / 25.4;
                                break;
                            case"cm":
                                M = 72 / 2.54;
                                break;
                            case"in":
                                M = 72;
                                break;
                            case"px":
                                M = 1 == De("px_scaling") ? .75 : 96 / 72;
                                break;
                            case"pc":
                            case"em":
                                M = 12;
                                break;
                            case"ex":
                                M = 6;
                                break;
                            default:
                                throw new Error("Invalid unit: " + t)
                        }
                        S(), x();
                        var Be = f.__private__.getPageInfo = function (e) {
                            if (isNaN(e) || e % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfo");
                            return {objId: ie[e].objId, pageNumber: e, pageContext: ie[e]}
                        }, je = f.__private__.getPageInfoByObjId = function (e) {
                            for (var t in ie) if (ie[t].objId === e) break;
                            if (isNaN(e) || e % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");
                            return Be(t)
                        }, Fe = f.__private__.getCurrentPageInfo = function () {
                            return {objId: ie[L].objId, pageNumber: L, pageContext: ie[L]}
                        };
                        f.addPage = function () {
                            return xe.apply(this, arguments), this
                        }, f.setPage = function () {
                            return Ae.apply(this, arguments), this
                        }, f.insertPage = function (e) {
                            return this.addPage(), this.movePage(L, e), this
                        }, f.movePage = function (e, t) {
                            if (t < e) {
                                for (var n = j[e], i = ie[e], r = e; t < r; r--) j[r] = j[r - 1], ie[r] = ie[r - 1];
                                j[t] = n, ie[t] = i, this.setPage(t)
                            } else if (e < t) {
                                for (n = j[e], i = ie[e], r = e; r < t; r++) j[r] = j[r + 1], ie[r] = ie[r + 1];
                                j[t] = n, ie[t] = i, this.setPage(t)
                            }
                            return this
                        }, f.deletePage = function () {
                            return function (e) {
                                0 < e && e <= ne && (j.splice(e, 1), --ne < L && (L = ne), this.setPage(L))
                            }.apply(this, arguments), this
                        }, f.__private__.text = f.text = function (e, t, n, i) {
                            var o;
                            "number" != typeof e || "number" != typeof t || "string" != typeof n && !Array.isArray(n) || (o = n, n = t, t = e, e = o);
                            var a = arguments[3], s = arguments[4], l = arguments[5];
                            if ("object" === r(a) && null !== a || ("string" == typeof s && (l = s, s = null), "string" == typeof a && (l = a, a = null), "number" == typeof a && (s = a, a = null), i = {
                                flags: a,
                                angle: s,
                                align: l
                            }), (a = a || {}).noBOM = a.noBOM || !0, a.autoencode = a.autoencode || !0, isNaN(t) || isNaN(n) || null == e) throw new Error("Invalid arguments passed to jsPDF.text");
                            if (0 === e.length) return f;
                            var c, u = "", h = "number" == typeof i.lineHeightFactor ? i.lineHeightFactor : Ve,
                                f = i.scope || this;

                            function g(e) {
                                for (var t, n = e.concat(), i = [], r = n.length; r--;) "string" == typeof (t = n.shift()) ? i.push(t) : Array.isArray(e) && 1 === t.length ? i.push(t[0]) : i.push([t[0], t[1], t[2]]);
                                return i
                            }

                            function p(e, t) {
                                var n;
                                if ("string" == typeof e) n = t(e)[0]; else if (Array.isArray(e)) {
                                    for (var i, r, o = e.concat(), a = [], s = o.length; s--;) "string" == typeof (i = o.shift()) ? a.push(t(i)[0]) : Array.isArray(i) && "string" === i[0] && (r = t(i[0], i[1], i[2]), a.push([r[0], r[1], r[2]]));
                                    n = a
                                }
                                return n
                            }

                            var m = !1, v = !0;
                            if ("string" == typeof e) m = !0; else if (Array.isArray(e)) {
                                for (var y, w = e.concat(), I = [], x = w.length; x--;) ("string" != typeof (y = w.shift()) || Array.isArray(y) && "string" != typeof y[0]) && (v = !1);
                                m = v
                            }
                            if (!1 === m) throw new Error('Type of text must be string or Array. "' + e + '" is not recognized.');
                            var A = ee[P].encoding;
                            "WinAnsiEncoding" !== A && "StandardEncoding" !== A || (e = p(e, (function (e, t, n) {
                                return [(r = e, r = r.split("\t").join(Array(i.TabLen || 9).join(" ")), we(r, a)), t, n];
                                var r
                            }))), "string" == typeof e && (e = e.match(/[\r?\n]/) ? e.split(/\r\n|\r|\n/g) : [e]);
                            var _ = Z / f.internal.scaleFactor, S = _ * (Ve - 1);
                            switch (i.baseline) {
                                case"bottom":
                                    n -= S;
                                    break;
                                case"top":
                                    n += _ - S;
                                    break;
                                case"hanging":
                                    n += _ - 2 * S;
                                    break;
                                case"middle":
                                    n += _ / 2 - S
                            }
                            0 < (V = i.maxWidth || 0) && ("string" == typeof e ? e = f.splitTextToSize(e, V) : "[object Array]" === Object.prototype.toString.call(e) && (e = f.splitTextToSize(e.join(" "), V)));
                            var k = {
                                text: e,
                                x: t,
                                y: n,
                                options: i,
                                mutex: {pdfEscape: we, activeFontKey: P, fonts: ee, activeFontSize: Z}
                            };
                            oe.publish("preProcessText", k), e = k.text, s = (i = k.options).angle;
                            var L = f.internal.scaleFactor, T = [];
                            if (s) {
                                s *= Math.PI / 180;
                                var O = Math.cos(s), R = Math.sin(s);
                                T = [b(O), b(R), b(-1 * R), b(O)]
                            }
                            void 0 !== (H = i.charSpace) && (u += C(H * L) + " Tc\n"), i.lang;
                            var E = -1, M = void 0 !== i.renderingMode ? i.renderingMode : i.stroke,
                                N = f.internal.getCurrentPageInfo().pageContext;
                            switch (M) {
                                case 0:
                                case!1:
                                case"fill":
                                    E = 0;
                                    break;
                                case 1:
                                case!0:
                                case"stroke":
                                    E = 1;
                                    break;
                                case 2:
                                case"fillThenStroke":
                                    E = 2;
                                    break;
                                case 3:
                                case"invisible":
                                    E = 3;
                                    break;
                                case 4:
                                case"fillAndAddForClipping":
                                    E = 4;
                                    break;
                                case 5:
                                case"strokeAndAddPathForClipping":
                                    E = 5;
                                    break;
                                case 6:
                                case"fillThenStrokeAndAddToPathForClipping":
                                    E = 6;
                                    break;
                                case 7:
                                case"addToPathForClipping":
                                    E = 7
                            }
                            var D = void 0 !== N.usedRenderingMode ? N.usedRenderingMode : -1;
                            -1 !== E ? u += E + " Tr\n" : -1 !== D && (u += "0 Tr\n"), -1 !== E && (N.usedRenderingMode = E), l = i.align || "left";
                            var B = Z * h, j = f.internal.pageSize.getWidth(), F = (L = f.internal.scaleFactor, ee[P]),
                                H = i.charSpace || nt, V = i.maxWidth || 0, G = (a = {}, []);
                            if ("[object Array]" === Object.prototype.toString.call(e)) {
                                var z, $;
                                I = g(e), "left" !== l && ($ = I.map((function (e) {
                                    return f.getStringUnitWidth(e, {font: F, charSpace: H, fontSize: Z}) * Z / L
                                }))), Math.max.apply(Math, $);
                                var X, Y = 0;
                                if ("right" === l) {
                                    t -= $[0], e = [];
                                    var U = 0;
                                    for (x = I.length; U < x; U++) $[U], z = 0 === U ? (X = Xe(t), Ye(n)) : (X = (Y - $[U]) * L, -B), e.push([I[U], X, z]), Y = $[U]
                                } else if ("center" === l) for (t -= $[0] / 2, e = [], U = 0, x = I.length; U < x; U++) $[U], z = 0 === U ? (X = Xe(t), Ye(n)) : (X = (Y - $[U]) / 2 * L, -B), e.push([I[U], X, z]), Y = $[U]; else if ("left" === l) for (e = [], U = 0, x = I.length; U < x; U++) z = 0 === U ? Ye(n) : -B, X = 0 === U ? Xe(t) : 0, e.push(I[U]); else {
                                    if ("justify" !== l) throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');
                                    for (e = [], V = 0 !== V ? V : j, U = 0, x = I.length; U < x; U++) z = 0 === U ? Ye(n) : -B, X = 0 === U ? Xe(t) : 0, U < x - 1 && G.push(((V - $[U]) / (I[U].split(" ").length - 1) * L).toFixed(2)), e.push([I[U], X, z])
                                }
                            }
                            !0 === ("boolean" == typeof i.R2L ? i.R2L : K) && (e = p(e, (function (e, t, n) {
                                return [e.split("").reverse().join(""), t, n]
                            }))), k = {
                                text: e,
                                x: t,
                                y: n,
                                options: i,
                                mutex: {pdfEscape: we, activeFontKey: P, fonts: ee, activeFontSize: Z}
                            }, oe.publish("postProcessText", k), e = k.text, c = k.mutex.isHex, I = g(e), e = [];
                            var J, q, Q, te = 0, ne = (x = I.length, "");
                            for (U = 0; U < x; U++) ne = "", Array.isArray(I[U]) ? (J = parseFloat(I[U][1]), q = parseFloat(I[U][2]), Q = (c ? "<" : "(") + I[U][0] + (c ? ">" : ")"), te = 1) : (J = Xe(t), q = Ye(n), Q = (c ? "<" : "(") + I[U] + (c ? ">" : ")")), void 0 !== G && void 0 !== G[U] && (ne = G[U] + " Tw\n"), 0 !== T.length && 0 === U ? e.push(ne + T.join(" ") + " " + J.toFixed(2) + " " + q.toFixed(2) + " Tm\n" + Q) : 1 === te || 0 === te && 0 === U ? e.push(ne + J.toFixed(2) + " " + q.toFixed(2) + " Td\n" + Q) : e.push(ne + Q);
                            e = 0 === te ? e.join(" Tj\nT* ") : e.join(" Tj\n"), e += " Tj\n";
                            var ie = "BT\n/" + P + " " + Z + " Tf\n" + (Z * h).toFixed(2) + " TL\n" + et + "\n";
                            return ie += u, ie += e, W(ie += "ET"), d[P] = !0, f
                        }, f.__private__.lstext = f.lstext = function (e, t, n, i) {
                            return console.warn("jsPDF.lstext is deprecated"), this.text(e, t, n, {charSpace: i})
                        }, f.__private__.clip = f.clip = function (e) {
                            W("evenodd" === e ? "W*" : "W"), W("n")
                        }, f.__private__.clip_fixed = f.clip_fixed = function (e) {
                            console.log("clip_fixed is deprecated"), f.clip(e)
                        };
                        var He = f.__private__.isValidStyle = function (e) {
                            var t = !1;
                            return -1 !== [void 0, null, "S", "F", "DF", "FD", "f", "f*", "B", "B*"].indexOf(e) && (t = !0), t
                        }, We = f.__private__.getStyle = function (e) {
                            var t = "S";
                            return "F" === e ? t = "f" : "FD" === e || "DF" === e ? t = "B" : "f" !== e && "f*" !== e && "B" !== e && "B*" !== e || (t = e), t
                        };
                        f.__private__.line = f.line = function (e, t, n, i) {
                            if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i)) throw new Error("Invalid arguments passed to jsPDF.line");
                            return this.lines([[n - e, i - t]], e, t)
                        }, f.__private__.lines = f.lines = function (e, t, n, i, r, o) {
                            var a, s, l, c, u, h, d, f, g, p, m, v;
                            if ("number" == typeof e && (v = n, n = t, t = e, e = v), i = i || [1, 1], o = o || !1, isNaN(t) || isNaN(n) || !Array.isArray(e) || !Array.isArray(i) || !He(r) || "boolean" != typeof o) throw new Error("Invalid arguments passed to jsPDF.lines");
                            for (W(C(Xe(t)) + " " + C(Ye(n)) + " m "), a = i[0], s = i[1], c = e.length, p = t, m = n, l = 0; l < c; l++) 2 === (u = e[l]).length ? (p = u[0] * a + p, m = u[1] * s + m, W(C(Xe(p)) + " " + C(Ye(m)) + " l")) : (h = u[0] * a + p, d = u[1] * s + m, f = u[2] * a + p, g = u[3] * s + m, p = u[4] * a + p, m = u[5] * s + m, W(C(Xe(h)) + " " + C(Ye(d)) + " " + C(Xe(f)) + " " + C(Ye(g)) + " " + C(Xe(p)) + " " + C(Ye(m)) + " c"));
                            return o && W(" h"), null !== r && W(We(r)), this
                        }, f.__private__.rect = f.rect = function (e, t, n, i, r) {
                            if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i) || !He(r)) throw new Error("Invalid arguments passed to jsPDF.rect");
                            return W([b(Xe(e)), b(Ye(t)), b(n * M), b(-i * M), "re"].join(" ")), null !== r && W(We(r)), this
                        }, f.__private__.triangle = f.triangle = function (e, t, n, i, r, o, a) {
                            if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i) || isNaN(r) || isNaN(o) || !He(a)) throw new Error("Invalid arguments passed to jsPDF.triangle");
                            return this.lines([[n - e, i - t], [r - n, o - i], [e - r, t - o]], e, t, [1, 1], a, !0), this
                        }, f.__private__.roundedRect = f.roundedRect = function (e, t, n, i, r, o, a) {
                            if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i) || isNaN(r) || isNaN(o) || !He(a)) throw new Error("Invalid arguments passed to jsPDF.roundedRect");
                            var s = 4 / 3 * (Math.SQRT2 - 1);
                            return this.lines([[n - 2 * r, 0], [r * s, 0, r, o - o * s, r, o], [0, i - 2 * o], [0, o * s, -r * s, o, -r, o], [2 * r - n, 0], [-r * s, 0, -r, -o * s, -r, -o], [0, 2 * o - i], [0, -o * s, r * s, -o, r, -o]], e + r, t, [1, 1], a), this
                        }, f.__private__.ellipse = f.ellipse = function (e, t, n, i, r) {
                            if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i) || !He(r)) throw new Error("Invalid arguments passed to jsPDF.ellipse");
                            var o = 4 / 3 * (Math.SQRT2 - 1) * n, a = 4 / 3 * (Math.SQRT2 - 1) * i;
                            return W([b(Xe(e + n)), b(Ye(t)), "m", b(Xe(e + n)), b(Ye(t - a)), b(Xe(e + o)), b(Ye(t - i)), b(Xe(e)), b(Ye(t - i)), "c"].join(" ")), W([b(Xe(e - o)), b(Ye(t - i)), b(Xe(e - n)), b(Ye(t - a)), b(Xe(e - n)), b(Ye(t)), "c"].join(" ")), W([b(Xe(e - n)), b(Ye(t + a)), b(Xe(e - o)), b(Ye(t + i)), b(Xe(e)), b(Ye(t + i)), "c"].join(" ")), W([b(Xe(e + o)), b(Ye(t + i)), b(Xe(e + n)), b(Ye(t + a)), b(Xe(e + n)), b(Ye(t)), "c"].join(" ")), null !== r && W(We(r)), this
                        }, f.__private__.circle = f.circle = function (e, t, n, i) {
                            if (isNaN(e) || isNaN(t) || isNaN(n) || !He(i)) throw new Error("Invalid arguments passed to jsPDF.circle");
                            return this.ellipse(e, t, n, n, i)
                        }, f.setFont = function (e, t) {
                            return P = Se(e, t, {disableWarning: !1}), this
                        }, f.setFontStyle = f.setFontType = function (e) {
                            return P = Se(void 0, e), this
                        }, f.__private__.getFontList = f.getFontList = function () {
                            var e, t, n, i = {};
                            for (e in te) if (te.hasOwnProperty(e)) for (t in i[e] = n = [], te[e]) te[e].hasOwnProperty(t) && n.push(t);
                            return i
                        }, f.addFont = function (e, t, n, i) {
                            Ce.call(this, e, t, n, i = i || "Identity-H")
                        };
                        var Ve, Ge = l.lineWidth || .200025,
                            ze = f.__private__.setLineWidth = f.setLineWidth = function (e) {
                                return W((e * M).toFixed(2) + " w"), this
                            }, Ze = (f.__private__.setLineDash = s.API.setLineDash = function (e, t) {
                                if (e = e || [], t = t || 0, isNaN(t) || !Array.isArray(e)) throw new Error("Invalid arguments passed to jsPDF.setLineDash");
                                return e = e.map((function (e) {
                                    return (e * M).toFixed(3)
                                })).join(" "), t = parseFloat((t * M).toFixed(3)), W("[" + e + "] " + t + " d"), this
                            }, f.__private__.getLineHeight = f.getLineHeight = function () {
                                return Z * Ve
                            }), $e = (Ze = f.__private__.getLineHeight = f.getLineHeight = function () {
                                return Z * Ve
                            }, f.__private__.setLineHeightFactor = f.setLineHeightFactor = function (e) {
                                return "number" == typeof (e = e || 1.15) && (Ve = e), this
                            }), Ke = f.__private__.getLineHeightFactor = f.getLineHeightFactor = function () {
                                return Ve
                            };
                        $e(l.lineHeight);
                        var Xe = f.__private__.getHorizontalCoordinate = function (e) {
                                return e * M
                            }, Ye = f.__private__.getVerticalCoordinate = function (e) {
                                return ie[L].mediaBox.topRightY - ie[L].mediaBox.bottomLeftY - e * M
                            }, Ue = f.__private__.getHorizontalCoordinateString = function (e) {
                                return b(e * M)
                            }, Je = f.__private__.getVerticalCoordinateString = function (e) {
                                return b(ie[L].mediaBox.topRightY - ie[L].mediaBox.bottomLeftY - e * M)
                            }, qe = l.strokeColor || "0 G",
                            Qe = (f.__private__.getStrokeColor = f.getDrawColor = function () {
                                return fe(qe)
                            }, f.__private__.setStrokeColor = f.setDrawColor = function (e, t, n, i) {
                                return qe = ge({
                                    ch1: e,
                                    ch2: t,
                                    ch3: n,
                                    ch4: i,
                                    pdfColorType: "draw",
                                    precision: 2
                                }), W(qe), this
                            }, l.fillColor || "0 g"), et = (f.__private__.getFillColor = f.getFillColor = function () {
                                return fe(Qe)
                            }, f.__private__.setFillColor = f.setFillColor = function (e, t, n, i) {
                                return Qe = ge({
                                    ch1: e,
                                    ch2: t,
                                    ch3: n,
                                    ch4: i,
                                    pdfColorType: "fill",
                                    precision: 2
                                }), W(Qe), this
                            }, l.textColor || "0 g"), tt = f.__private__.getTextColor = f.getTextColor = function () {
                                return fe(et)
                            }, nt = (f.__private__.setTextColor = f.setTextColor = function (e, t, n, i) {
                                return et = ge({ch1: e, ch2: t, ch3: n, ch4: i, pdfColorType: "text", precision: 3}), this
                            }, l.charSpace || 0), it = f.__private__.getCharSpace = f.getCharSpace = function () {
                                return nt
                            }, rt = (f.__private__.setCharSpace = f.setCharSpace = function (e) {
                                if (isNaN(e)) throw new Error("Invalid argument passed to jsPDF.setCharSpace");
                                return nt = e, this
                            }, 0);
                        f.CapJoinStyles = {
                            0: 0,
                            butt: 0,
                            but: 0,
                            miter: 0,
                            1: 1,
                            round: 1,
                            rounded: 1,
                            circle: 1,
                            2: 2,
                            projecting: 2,
                            project: 2,
                            square: 2,
                            bevel: 2
                        }, f.__private__.setLineCap = f.setLineCap = function (e) {
                            var t = f.CapJoinStyles[e];
                            if (void 0 === t) throw new Error("Line cap style of '" + e + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
                            return W((rt = t) + " J"), this
                        };
                        var ot, at = 0;
                        for (var st in f.__private__.setLineJoin = f.setLineJoin = function (e) {
                            var t = f.CapJoinStyles[e];
                            if (void 0 === t) throw new Error("Line join style of '" + e + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
                            return W((at = t) + " j"), this
                        }, f.__private__.setMiterLimit = f.setMiterLimit = function (e) {
                            if (e = e || 0, isNaN(e)) throw new Error("Invalid argument passed to jsPDF.setMiterLimit");
                            return ot = parseFloat(b(e * M)), W(ot + " M"), this
                        }, f.save = function (e, t) {
                            if (e = e || "generated.pdf", (t = t || {}).returnPromise = t.returnPromise || !1, !1 !== t.returnPromise) return new Promise((function (t, n) {
                                try {
                                    var r = Oe(Me(Pe()), e);
                                    "function" == typeof Oe.unload && i.setTimeout && setTimeout(Oe.unload, 911), t(r)
                                } catch (t) {
                                    n(t.message)
                                }
                            }));
                            Oe(Me(Pe()), e), "function" == typeof Oe.unload && i.setTimeout && setTimeout(Oe.unload, 911)
                        }, s.API) s.API.hasOwnProperty(st) && ("events" === st && s.API.events.length ? function (e, t) {
                            var n, i, r;
                            for (r = t.length - 1; -1 !== r; r--) n = t[r][0], i = t[r][1], e.subscribe.apply(e, [n].concat("function" == typeof i ? [i] : i))
                        }(oe, s.API.events) : f[st] = s.API[st]);
                        return f.internal = {
                            pdfEscape: we,
                            getStyle: We,
                            getFont: function () {
                                return ee[Se.apply(f, arguments)]
                            },
                            getFontSize: $,
                            getCharSpace: it,
                            getTextColor: tt,
                            getLineHeight: Ze,
                            getLineHeightFactor: Ke,
                            write: V,
                            getHorizontalCoordinate: Xe,
                            getVerticalCoordinate: Ye,
                            getCoordinateString: Ue,
                            getVerticalCoordinateString: Je,
                            collections: {},
                            newObject: se,
                            newAdditionalObject: ue,
                            newObjectDeferred: le,
                            newObjectDeferredBegin: ce,
                            getFilters: pe,
                            putStream: me,
                            events: oe,
                            scaleFactor: M,
                            pageSize: {
                                getWidth: function () {
                                    return (ie[L].mediaBox.topRightX - ie[L].mediaBox.bottomLeftX) / M
                                }, setWidth: function (e) {
                                    ie[L].mediaBox.topRightX = e * M + ie[L].mediaBox.bottomLeftX
                                }, getHeight: function () {
                                    return (ie[L].mediaBox.topRightY - ie[L].mediaBox.bottomLeftY) / M
                                }, setHeight: function (e) {
                                    ie[L].mediaBox.topRightY = e * M + ie[L].mediaBox.bottomLeftY
                                }
                            },
                            output: Ne,
                            getNumberOfPages: _e,
                            pages: j,
                            out: W,
                            f2: b,
                            f3: C,
                            getPageInfo: Be,
                            getPageInfoByObjId: je,
                            getCurrentPageInfo: Fe,
                            getPDFVersion: p,
                            hasHotfix: De
                        }, Object.defineProperty(f.internal.pageSize, "width", {
                            get: function () {
                                return (ie[L].mediaBox.topRightX - ie[L].mediaBox.bottomLeftX) / M
                            }, set: function (e) {
                                ie[L].mediaBox.topRightX = e * M + ie[L].mediaBox.bottomLeftX
                            }, enumerable: !0, configurable: !0
                        }), Object.defineProperty(f.internal.pageSize, "height", {
                            get: function () {
                                return (ie[L].mediaBox.topRightY - ie[L].mediaBox.bottomLeftY) / M
                            }, set: function (e) {
                                ie[L].mediaBox.topRightY = e * M + ie[L].mediaBox.bottomLeftY
                            }, enumerable: !0, configurable: !0
                        }), function (e) {
                            for (var t = 0, n = z.length; t < n; t++) {
                                var i = Ce(e[t][0], e[t][1], e[t][2], z[t][3], !0);
                                d[i] = !0;
                                var r = e[t][0].split("-");
                                be(i, r[0], r[1] || "")
                            }
                            oe.publish("addFonts", {fonts: ee, dictionary: te})
                        }(z), P = "F1", xe(n, e), oe.publish("initialized"), f
                    }

                    return s.API = {events: []}, s.version = "1.5.3", void 0 !== (o = function () {
                        return s
                    }.call(t, n, t, e)) && (e.exports = o), s
                }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")());
            /**
             * @license
             * Copyright (c) 2016 Alexander Weidt,
             * https://github.com/BiggA94
             *
             * Licensed under the MIT License. http://opensource.org/licenses/mit-license
             */(function (e, t) {
                var n, i = 1, o = function (e) {
                    return e.replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)")
                }, a = function (e) {
                    return e.replace(/\\\\/g, "\\").replace(/\\\(/g, "(").replace(/\\\)/g, ")")
                }, s = function (e) {
                    if (isNaN(e)) throw new Error("Invalid argument passed to jsPDF.f2");
                    return e.toFixed(2)
                }, l = function (e) {
                    if (isNaN(e)) throw new Error("Invalid argument passed to jsPDF.f2");
                    return e.toFixed(5)
                };
                e.__acroform__ = {};
                var c = function (e, t) {
                    e.prototype = Object.create(t.prototype), e.prototype.constructor = e
                }, u = function (e) {
                    return e * i
                }, h = function (e) {
                    return e / i
                }, d = function (e) {
                    var t = new M, n = X.internal.getHeight(e) || 0, i = X.internal.getWidth(e) || 0;
                    return t.BBox = [0, 0, Number(s(i)), Number(s(n))], t
                }, f = e.__acroform__.setBit = function (e, t) {
                    if (e = e || 0, t = t || 0, isNaN(e) || isNaN(t)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit");
                    return e | 1 << t
                }, g = e.__acroform__.clearBit = function (e, t) {
                    if (e = e || 0, t = t || 0, isNaN(e) || isNaN(t)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit");
                    return e & ~(1 << t)
                }, p = e.__acroform__.getBit = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit");
                    return 0 == (e & 1 << t) ? 0 : 1
                }, m = e.__acroform__.getBitForPdf = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf");
                    return p(e, t - 1)
                }, v = e.__acroform__.setBitForPdf = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf");
                    return f(e, t - 1)
                }, y = e.__acroform__.clearBitForPdf = function (e, t, n) {
                    if (isNaN(e) || isNaN(t)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf");
                    return g(e, t - 1)
                }, b = e.__acroform__.calculateCoordinates = function (e) {
                    var t = this.internal.getHorizontalCoordinate, n = this.internal.getVerticalCoordinate, i = e[0],
                        r = e[1], o = e[2], a = e[3], l = {};
                    return l.lowerLeft_X = t(i) || 0, l.lowerLeft_Y = n(r + a) || 0, l.upperRight_X = t(i + o) || 0, l.upperRight_Y = n(r) || 0, [Number(s(l.lowerLeft_X)), Number(s(l.lowerLeft_Y)), Number(s(l.upperRight_X)), Number(s(l.upperRight_Y))]
                }, C = function (e) {
                    if (e.appearanceStreamContent) return e.appearanceStreamContent;
                    if (e.V || e.DV) {
                        var t = [], i = e.V || e.DV, r = w(e, i), o = n.internal.getFont(e.fontName, e.fontStyle).id;
                        t.push("/Tx BMC"), t.push("q"), t.push("BT"), t.push(n.__private__.encodeColorString(e.color)), t.push("/" + o + " " + s(r.fontSize) + " Tf"), t.push("1 0 0 1 0 0 Tm"), t.push(r.text), t.push("ET"), t.push("Q"), t.push("EMC");
                        var a = new d(e);
                        return a.stream = t.join("\n"), a
                    }
                }, w = function (e, t) {
                    var i = e.maxFontSize || 12, r = (e.fontName, {text: "", fontSize: ""}),
                        a = (t = ")" == (t = "(" == t.substr(0, 1) ? t.substr(1) : t).substr(t.length - 1) ? t.substr(0, t.length - 1) : t).split(" "),
                        l = (n.__private__.encodeColorString(e.color), i), c = X.internal.getHeight(e) || 0;
                    c = c < 0 ? -c : c;
                    var u = X.internal.getWidth(e) || 0;
                    u = u < 0 ? -u : u;
                    var h = function (t, n, i) {
                        if (t + 1 < a.length) {
                            var r = n + " " + a[t + 1];
                            return I(r, e, i).width <= u - 4
                        }
                        return !1
                    };
                    l++;
                    e:for (; ;) {
                        t = "";
                        var d = I("3", e, --l).height, f = e.multiline ? c - l : (c - d) / 2, g = -2, p = f += 2, m = 0,
                            v = 0, y = 0;
                        if (l <= 0) {
                            t = "(...) Tj\n", t += "% Width of Text: " + I(t, e, l = 12).width + ", FieldWidth:" + u + "\n";
                            break
                        }
                        y = I(a[0] + " ", e, l).width;
                        var b = "", C = 0;
                        for (var w in a) if (a.hasOwnProperty(w)) {
                            b = " " == (b += a[w] + " ").substr(b.length - 1) ? b.substr(0, b.length - 1) : b;
                            var x = parseInt(w);
                            y = I(b + " ", e, l).width;
                            var A = h(x, b, l), _ = w >= a.length - 1;
                            if (A && !_) {
                                b += " ";
                                continue
                            }
                            if (A || _) {
                                if (_) v = x; else if (e.multiline && c < (d + 2) * (C + 2) + 2) continue e
                            } else {
                                if (!e.multiline) continue e;
                                if (c < (d + 2) * (C + 2) + 2) continue e;
                                v = x
                            }
                            for (var S = "", k = m; k <= v; k++) S += a[k] + " ";
                            switch (S = " " == S.substr(S.length - 1) ? S.substr(0, S.length - 1) : S, y = I(S, e, l).width, e.textAlign) {
                                case"right":
                                    g = u - y - 2;
                                    break;
                                case"center":
                                    g = (u - y) / 2;
                                    break;
                                case"left":
                                default:
                                    g = 2
                            }
                            t += s(g) + " " + s(p) + " Td\n", t += "(" + o(S) + ") Tj\n", t += -s(g) + " 0 Td\n", p = -(l + 2), y = 0, m = v + 1, C++, b = ""
                        }
                        break
                    }
                    return r.text = t, r.fontSize = l, r
                }, I = function (e, t, i) {
                    var r = n.internal.getFont(t.fontName, t.fontStyle),
                        o = n.getStringUnitWidth(e, {font: r, fontSize: parseFloat(i), charSpace: 0}) * parseFloat(i);
                    return {
                        height: n.getStringUnitWidth("3", {
                            font: r,
                            fontSize: parseFloat(i),
                            charSpace: 0
                        }) * parseFloat(i) * 1.5, width: o
                    }
                }, x = {
                    fields: [],
                    xForms: [],
                    acroFormDictionaryRoot: null,
                    printedOut: !1,
                    internal: null,
                    isInitialized: !1
                }, A = function () {
                    n.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0;
                    var e = n.internal.acroformPlugin.acroFormDictionaryRoot.Fields;
                    for (var t in e) if (e.hasOwnProperty(t)) {
                        var i = e[t];
                        i.objId = void 0, i.hasAnnotation && _.call(n, i)
                    }
                }, _ = function (e) {
                    var t = {type: "reference", object: e};
                    void 0 === n.internal.getPageInfo(e.page).pageContext.annotations.find((function (e) {
                        return e.type === t.type && e.object === t.object
                    })) && n.internal.getPageInfo(e.page).pageContext.annotations.push(t)
                }, S = function () {
                    if (void 0 === n.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("putCatalogCallback: Root missing.");
                    n.internal.write("/AcroForm " + n.internal.acroformPlugin.acroFormDictionaryRoot.objId + " 0 R")
                }, k = function () {
                    n.internal.events.unsubscribe(n.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete n.internal.acroformPlugin.acroFormDictionaryRoot._eventID, n.internal.acroformPlugin.printedOut = !0
                }, L = function (e) {
                    var t = !e;
                    for (var i in e || (n.internal.newObjectDeferredBegin(n.internal.acroformPlugin.acroFormDictionaryRoot.objId, !0), n.internal.acroformPlugin.acroFormDictionaryRoot.putStream()), e = e || n.internal.acroformPlugin.acroFormDictionaryRoot.Kids) if (e.hasOwnProperty(i)) {
                        var o = e[i], a = [], s = o.Rect;
                        if (o.Rect && (o.Rect = b.call(this, o.Rect)), n.internal.newObjectDeferredBegin(o.objId, !0), o.DA = X.createDefaultAppearanceStream(o), "object" === r(o) && "function" == typeof o.getKeyValueListForStream && (a = o.getKeyValueListForStream()), o.Rect = s, o.hasAppearanceStream && !o.appearanceStreamContent) {
                            var l = C.call(this, o);
                            a.push({key: "AP", value: "<</N " + l + ">>"}), n.internal.acroformPlugin.xForms.push(l)
                        }
                        if (o.appearanceStreamContent) {
                            var c = "";
                            for (var u in o.appearanceStreamContent) if (o.appearanceStreamContent.hasOwnProperty(u)) {
                                var h = o.appearanceStreamContent[u];
                                if (c += "/" + u + " ", c += "<<", 1 <= Object.keys(h).length || Array.isArray(h)) for (var i in h) {
                                    var d;
                                    h.hasOwnProperty(i) && ("function" == typeof (d = h[i]) && (d = d.call(this, o)), c += "/" + i + " " + d + " ", 0 <= n.internal.acroformPlugin.xForms.indexOf(d) || n.internal.acroformPlugin.xForms.push(d))
                                } else "function" == typeof (d = h) && (d = d.call(this, o)), c += "/" + i + " " + d, 0 <= n.internal.acroformPlugin.xForms.indexOf(d) || n.internal.acroformPlugin.xForms.push(d);
                                c += ">>"
                            }
                            a.push({key: "AP", value: "<<\n" + c + ">>"})
                        }
                        n.internal.putStream({additionalKeyValues: a}), n.internal.out("endobj")
                    }
                    t && T.call(this, n.internal.acroformPlugin.xForms)
                }, T = function (e) {
                    for (var t in e) if (e.hasOwnProperty(t)) {
                        var i = t, o = e[t];
                        n.internal.newObjectDeferredBegin(o && o.objId, !0), "object" === r(o) && "function" == typeof o.putStream && o.putStream(), delete e[i]
                    }
                }, O = function () {
                    if (void 0 !== this.internal && (void 0 === this.internal.acroformPlugin || !1 === this.internal.acroformPlugin.isInitialized)) {
                        if (n = this, D.FieldNum = 0, this.internal.acroformPlugin = JSON.parse(JSON.stringify(x)), this.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("Exception while creating AcroformDictionary");
                        i = n.internal.scaleFactor, n.internal.acroformPlugin.acroFormDictionaryRoot = new N, n.internal.acroformPlugin.acroFormDictionaryRoot._eventID = n.internal.events.subscribe("postPutResources", k), n.internal.events.subscribe("buildDocument", A), n.internal.events.subscribe("putCatalog", S), n.internal.events.subscribe("postPutPages", L), n.internal.acroformPlugin.isInitialized = !0
                    }
                }, R = e.__acroform__.arrayToPdfArray = function (e) {
                    if (Array.isArray(e)) {
                        for (var t = "[", n = 0; n < e.length; n++) switch (0 !== n && (t += " "), r(e[n])) {
                            case"boolean":
                            case"number":
                            case"object":
                                t += e[n].toString();
                                break;
                            case"string":
                                "/" !== e[n].substr(0, 1) ? t += "(" + o(e[n].toString()) + ")" : t += e[n].toString()
                        }
                        return t + "]"
                    }
                    throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray")
                }, E = function (e) {
                    return (e = e || "").toString(), "(" + o(e) + ")"
                }, P = function () {
                    var e;
                    Object.defineProperty(this, "objId", {
                        configurable: !0, get: function () {
                            if (e || (e = n.internal.newObjectDeferred()), !e) throw new Error("AcroFormPDFObject: Couldn't create Object ID");
                            return e
                        }, set: function (t) {
                            e = t
                        }
                    })
                };
                P.prototype.toString = function () {
                    return this.objId + " 0 R"
                }, P.prototype.putStream = function () {
                    var e = this.getKeyValueListForStream();
                    n.internal.putStream({data: this.stream, additionalKeyValues: e}), n.internal.out("endobj")
                }, P.prototype.getKeyValueListForStream = function () {
                    return function (e) {
                        var t = [], n = Object.getOwnPropertyNames(e).filter((function (e) {
                            return "content" != e && "appearanceStreamContent" != e && "_" != e.substring(0, 1)
                        }));
                        for (var i in n) if (!1 === Object.getOwnPropertyDescriptor(e, n[i]).configurable) {
                            var r = n[i], o = e[r];
                            o && (Array.isArray(o) ? t.push({key: r, value: R(o)}) : o instanceof P ? t.push({
                                key: r,
                                value: o.objId + " 0 R"
                            }) : "function" != typeof o && t.push({key: r, value: o}))
                        }
                        return t
                    }(this)
                };
                var M = function () {
                    P.call(this), Object.defineProperty(this, "Type", {
                        value: "/XObject",
                        configurable: !1,
                        writeable: !0
                    }), Object.defineProperty(this, "Subtype", {
                        value: "/Form",
                        configurable: !1,
                        writeable: !0
                    }), Object.defineProperty(this, "FormType", {value: 1, configurable: !1, writeable: !0});
                    var e, t = [];
                    Object.defineProperty(this, "BBox", {
                        configurable: !1, writeable: !0, get: function () {
                            return t
                        }, set: function (e) {
                            t = e
                        }
                    }), Object.defineProperty(this, "Resources", {
                        value: "2 0 R",
                        configurable: !1,
                        writeable: !0
                    }), Object.defineProperty(this, "stream", {
                        enumerable: !1, configurable: !0, set: function (t) {
                            e = t.trim()
                        }, get: function () {
                            return e || null
                        }
                    })
                };
                c(M, P);
                var N = function () {
                    P.call(this);
                    var e, t = [];
                    Object.defineProperty(this, "Kids", {
                        enumerable: !1, configurable: !0, get: function () {
                            return 0 < t.length ? t : void 0
                        }
                    }), Object.defineProperty(this, "Fields", {
                        enumerable: !1, configurable: !1, get: function () {
                            return t
                        }
                    }), Object.defineProperty(this, "DA", {
                        enumerable: !1, configurable: !1, get: function () {
                            if (e) return "(" + e + ")"
                        }, set: function (t) {
                            e = t
                        }
                    })
                };
                c(N, P);
                var D = function e() {
                    P.call(this);
                    var t = 4;
                    Object.defineProperty(this, "F", {
                        enumerable: !1, configurable: !1, get: function () {
                            return t
                        }, set: function (e) {
                            if (isNaN(e)) throw new Error('Invalid value "' + e + '" for attribute F supplied.');
                            t = e
                        }
                    }), Object.defineProperty(this, "showWhenPrinted", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(t, 3))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.F = v(t, 3) : this.F = y(t, 3)
                        }
                    });
                    var n = 0;
                    Object.defineProperty(this, "Ff", {
                        enumerable: !1, configurable: !1, get: function () {
                            return n
                        }, set: function (e) {
                            if (isNaN(e)) throw new Error('Invalid value "' + e + '" for attribute Ff supplied.');
                            n = e
                        }
                    });
                    var i = [];
                    Object.defineProperty(this, "Rect", {
                        enumerable: !1, configurable: !1, get: function () {
                            if (0 !== i.length) return i
                        }, set: function (e) {
                            i = void 0 !== e ? e : []
                        }
                    }), Object.defineProperty(this, "x", {
                        enumerable: !0, configurable: !0, get: function () {
                            return !i || isNaN(i[0]) ? 0 : h(i[0])
                        }, set: function (e) {
                            i[0] = u(e)
                        }
                    }), Object.defineProperty(this, "y", {
                        enumerable: !0, configurable: !0, get: function () {
                            return !i || isNaN(i[1]) ? 0 : h(i[1])
                        }, set: function (e) {
                            i[1] = u(e)
                        }
                    }), Object.defineProperty(this, "width", {
                        enumerable: !0, configurable: !0, get: function () {
                            return !i || isNaN(i[2]) ? 0 : h(i[2])
                        }, set: function (e) {
                            i[2] = u(e)
                        }
                    }), Object.defineProperty(this, "height", {
                        enumerable: !0, configurable: !0, get: function () {
                            return !i || isNaN(i[3]) ? 0 : h(i[3])
                        }, set: function (e) {
                            i[3] = u(e)
                        }
                    });
                    var r = "";
                    Object.defineProperty(this, "FT", {
                        enumerable: !0, configurable: !1, get: function () {
                            return r
                        }, set: function (e) {
                            switch (e) {
                                case"/Btn":
                                case"/Tx":
                                case"/Ch":
                                case"/Sig":
                                    r = e;
                                    break;
                                default:
                                    throw new Error('Invalid value "' + e + '" for attribute FT supplied.')
                            }
                        }
                    });
                    var s = null;
                    Object.defineProperty(this, "T", {
                        enumerable: !0, configurable: !1, get: function () {
                            if (!s || s.length < 1) {
                                if (this instanceof z) return;
                                s = "FieldObject" + e.FieldNum++
                            }
                            return "(" + o(s) + ")"
                        }, set: function (e) {
                            s = e.toString()
                        }
                    }), Object.defineProperty(this, "fieldName", {
                        configurable: !0, enumerable: !0, get: function () {
                            return s
                        }, set: function (e) {
                            s = e
                        }
                    });
                    var l = "helvetica";
                    Object.defineProperty(this, "fontName", {
                        enumerable: !0, configurable: !0, get: function () {
                            return l
                        }, set: function (e) {
                            l = e
                        }
                    });
                    var c = "normal";
                    Object.defineProperty(this, "fontStyle", {
                        enumerable: !0, configurable: !0, get: function () {
                            return c
                        }, set: function (e) {
                            c = e
                        }
                    });
                    var d = 0;
                    Object.defineProperty(this, "fontSize", {
                        enumerable: !0, configurable: !0, get: function () {
                            return h(d)
                        }, set: function (e) {
                            d = u(e)
                        }
                    });
                    var f = 50;
                    Object.defineProperty(this, "maxFontSize", {
                        enumerable: !0, configurable: !0, get: function () {
                            return h(f)
                        }, set: function (e) {
                            f = u(e)
                        }
                    });
                    var g = "black";
                    Object.defineProperty(this, "color", {
                        enumerable: !0, configurable: !0, get: function () {
                            return g
                        }, set: function (e) {
                            g = e
                        }
                    });
                    var p = "/F1 0 Tf 0 g";
                    Object.defineProperty(this, "DA", {
                        enumerable: !0, configurable: !1, get: function () {
                            if (!(!p || this instanceof z || this instanceof $)) return E(p)
                        }, set: function (e) {
                            e = e.toString(), p = e
                        }
                    });
                    var b = null;
                    Object.defineProperty(this, "DV", {
                        enumerable: !1, configurable: !1, get: function () {
                            if (b) return this instanceof W == 0 ? E(b) : b
                        }, set: function (e) {
                            e = e.toString(), b = this instanceof W == 0 ? "(" === e.substr(0, 1) ? a(e.substr(1, e.length - 2)) : a(e) : e
                        }
                    }), Object.defineProperty(this, "defaultValue", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return this instanceof W == 1 ? a(b.substr(1, b.length - 1)) : b
                        },
                        set: function (e) {
                            e = e.toString(), b = this instanceof W == 1 ? "/" + e : e
                        }
                    });
                    var C = null;
                    Object.defineProperty(this, "V", {
                        enumerable: !1, configurable: !1, get: function () {
                            if (C) return this instanceof W == 0 ? E(C) : C
                        }, set: function (e) {
                            e = e.toString(), C = this instanceof W == 0 ? "(" === e.substr(0, 1) ? a(e.substr(1, e.length - 2)) : a(e) : e
                        }
                    }), Object.defineProperty(this, "value", {
                        enumerable: !0, configurable: !0, get: function () {
                            return this instanceof W == 1 ? a(C.substr(1, C.length - 1)) : C
                        }, set: function (e) {
                            e = e.toString(), C = this instanceof W == 1 ? "/" + e : e
                        }
                    }), Object.defineProperty(this, "hasAnnotation", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return this.Rect
                        }
                    }), Object.defineProperty(this, "Type", {
                        enumerable: !0, configurable: !1, get: function () {
                            return this.hasAnnotation ? "/Annot" : null
                        }
                    }), Object.defineProperty(this, "Subtype", {
                        enumerable: !0, configurable: !1, get: function () {
                            return this.hasAnnotation ? "/Widget" : null
                        }
                    });
                    var w, I = !1;
                    Object.defineProperty(this, "hasAppearanceStream", {
                        enumerable: !0,
                        configurable: !0,
                        writeable: !0,
                        get: function () {
                            return I
                        },
                        set: function (e) {
                            e = Boolean(e), I = e
                        }
                    }), Object.defineProperty(this, "page", {
                        enumerable: !0,
                        configurable: !0,
                        writeable: !0,
                        get: function () {
                            if (w) return w
                        },
                        set: function (e) {
                            w = e
                        }
                    }), Object.defineProperty(this, "readOnly", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 1))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 1) : this.Ff = y(this.Ff, 1)
                        }
                    }), Object.defineProperty(this, "required", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 2))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 2) : this.Ff = y(this.Ff, 2)
                        }
                    }), Object.defineProperty(this, "noExport", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 3))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 3) : this.Ff = y(this.Ff, 3)
                        }
                    });
                    var x = null;
                    Object.defineProperty(this, "Q", {
                        enumerable: !0, configurable: !1, get: function () {
                            if (null !== x) return x
                        }, set: function (e) {
                            if (-1 === [0, 1, 2].indexOf(e)) throw new Error('Invalid value "' + e + '" for attribute Q supplied.');
                            x = e
                        }
                    }), Object.defineProperty(this, "textAlign", {
                        get: function () {
                            var e = "left";
                            switch (x) {
                                case 0:
                                default:
                                    e = "left";
                                    break;
                                case 1:
                                    e = "center";
                                    break;
                                case 2:
                                    e = "right"
                            }
                            return e
                        }, configurable: !0, enumerable: !0, set: function (e) {
                            switch (e) {
                                case"right":
                                case 2:
                                    x = 2;
                                    break;
                                case"center":
                                case 1:
                                    x = 1;
                                    break;
                                case"left":
                                case 0:
                                default:
                                    x = 0
                            }
                        }
                    })
                };
                c(D, P);
                var B = function () {
                    D.call(this), this.FT = "/Ch", this.V = "()", this.fontName = "zapfdingbats";
                    var e = 0;
                    Object.defineProperty(this, "TI", {
                        enumerable: !0, configurable: !1, get: function () {
                            return e
                        }, set: function (t) {
                            e = t
                        }
                    }), Object.defineProperty(this, "topIndex", {
                        enumerable: !0, configurable: !0, get: function () {
                            return e
                        }, set: function (t) {
                            e = t
                        }
                    });
                    var t = [];
                    Object.defineProperty(this, "Opt", {
                        enumerable: !0, configurable: !1, get: function () {
                            return R(t)
                        }, set: function (e) {
                            var n, i;
                            i = [], "string" == typeof (n = e) && (i = function (e, t, n) {
                                n || (n = 1);
                                for (var i, r = []; i = t.exec(e);) r.push(i[n]);
                                return r
                            }(n, /\((.*?)\)/g)), t = i
                        }
                    }), this.getOptions = function () {
                        return t
                    }, this.setOptions = function (e) {
                        t = e, this.sort && t.sort()
                    }, this.addOption = function (e) {
                        e = (e = e || "").toString(), t.push(e), this.sort && t.sort()
                    }, this.removeOption = function (e, n) {
                        for (n = n || !1, e = (e = e || "").toString(); -1 !== t.indexOf(e) && (t.splice(t.indexOf(e), 1), !1 !== n);) ;
                    }, Object.defineProperty(this, "combo", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 18))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 18) : this.Ff = y(this.Ff, 18)
                        }
                    }), Object.defineProperty(this, "edit", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 19))
                        }, set: function (e) {
                            !0 === this.combo && (!0 === Boolean(e) ? this.Ff = v(this.Ff, 19) : this.Ff = y(this.Ff, 19))
                        }
                    }), Object.defineProperty(this, "sort", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 20))
                        }, set: function (e) {
                            !0 === Boolean(e) ? (this.Ff = v(this.Ff, 20), t.sort()) : this.Ff = y(this.Ff, 20)
                        }
                    }), Object.defineProperty(this, "multiSelect", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 22))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 22) : this.Ff = y(this.Ff, 22)
                        }
                    }), Object.defineProperty(this, "doNotSpellCheck", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 23))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 23) : this.Ff = y(this.Ff, 23)
                        }
                    }), Object.defineProperty(this, "commitOnSelChange", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 27))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 27) : this.Ff = y(this.Ff, 27)
                        }
                    }), this.hasAppearanceStream = !1
                };
                c(B, D);
                var j = function () {
                    B.call(this), this.fontName = "helvetica", this.combo = !1
                };
                c(j, B);
                var F = function () {
                    j.call(this), this.combo = !0
                };
                c(F, j);
                var H = function () {
                    F.call(this), this.edit = !0
                };
                c(H, F);
                var W = function () {
                    D.call(this), this.FT = "/Btn", Object.defineProperty(this, "noToggleToOff", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 15))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 15) : this.Ff = y(this.Ff, 15)
                        }
                    }), Object.defineProperty(this, "radio", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 16))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 16) : this.Ff = y(this.Ff, 16)
                        }
                    }), Object.defineProperty(this, "pushButton", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 17))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 17) : this.Ff = y(this.Ff, 17)
                        }
                    }), Object.defineProperty(this, "radioIsUnison", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 26))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 26) : this.Ff = y(this.Ff, 26)
                        }
                    });
                    var e, t = {};
                    Object.defineProperty(this, "MK", {
                        enumerable: !1, configurable: !1, get: function () {
                            if (0 !== Object.keys(t).length) {
                                var e, n = [];
                                for (e in n.push("<<"), t) n.push("/" + e + " (" + t[e] + ")");
                                return n.push(">>"), n.join("\n")
                            }
                        }, set: function (e) {
                            "object" === r(e) && (t = e)
                        }
                    }), Object.defineProperty(this, "caption", {
                        enumerable: !0, configurable: !0, get: function () {
                            return t.CA || ""
                        }, set: function (e) {
                            "string" == typeof e && (t.CA = e)
                        }
                    }), Object.defineProperty(this, "AS", {
                        enumerable: !1, configurable: !1, get: function () {
                            return e
                        }, set: function (t) {
                            e = t
                        }
                    }), Object.defineProperty(this, "appearanceState", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return e.substr(1, e.length - 1)
                        },
                        set: function (t) {
                            e = "/" + t
                        }
                    })
                };
                c(W, D);
                var V = function () {
                    W.call(this), this.pushButton = !0
                };
                c(V, W);
                var G = function () {
                    W.call(this), this.radio = !0, this.pushButton = !1;
                    var e = [];
                    Object.defineProperty(this, "Kids", {
                        enumerable: !0, configurable: !1, get: function () {
                            return e
                        }, set: function (t) {
                            e = void 0 !== t ? t : []
                        }
                    })
                };
                c(G, W);
                var z = function () {
                    var e, t;
                    D.call(this), Object.defineProperty(this, "Parent", {
                        enumerable: !1,
                        configurable: !1,
                        get: function () {
                            return e
                        },
                        set: function (t) {
                            e = t
                        }
                    }), Object.defineProperty(this, "optionName", {
                        enumerable: !1, configurable: !0, get: function () {
                            return t
                        }, set: function (e) {
                            t = e
                        }
                    });
                    var n, i = {};
                    Object.defineProperty(this, "MK", {
                        enumerable: !1, configurable: !1, get: function () {
                            var e, t = [];
                            for (e in t.push("<<"), i) t.push("/" + e + " (" + i[e] + ")");
                            return t.push(">>"), t.join("\n")
                        }, set: function (e) {
                            "object" === r(e) && (i = e)
                        }
                    }), Object.defineProperty(this, "caption", {
                        enumerable: !0, configurable: !0, get: function () {
                            return i.CA || ""
                        }, set: function (e) {
                            "string" == typeof e && (i.CA = e)
                        }
                    }), Object.defineProperty(this, "AS", {
                        enumerable: !1, configurable: !1, get: function () {
                            return n
                        }, set: function (e) {
                            n = e
                        }
                    }), Object.defineProperty(this, "appearanceState", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return n.substr(1, n.length - 1)
                        },
                        set: function (e) {
                            n = "/" + e
                        }
                    }), this.optionName = name, this.caption = "l", this.appearanceState = "Off", this._AppearanceType = X.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(name)
                };
                c(z, D), G.prototype.setAppearance = function (e) {
                    if (!("createAppearanceStream" in e) || !("getCA" in e)) throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");
                    for (var t in this.Kids) if (this.Kids.hasOwnProperty(t)) {
                        var n = this.Kids[t];
                        n.appearanceStreamContent = e.createAppearanceStream(n.optionName), n.caption = e.getCA()
                    }
                }, G.prototype.createOption = function (e) {
                    this.Kids.length;
                    var t = new z;
                    return t.Parent = this, t.optionName = e, this.Kids.push(t), Y.call(this, t), t
                };
                var Z = function () {
                    W.call(this), this.fontName = "zapfdingbats", this.caption = "3", this.appearanceState = "On", this.value = "On", this.textAlign = "center", this.appearanceStreamContent = X.CheckBox.createAppearanceStream()
                };
                c(Z, W);
                var $ = function () {
                    D.call(this), this.FT = "/Tx", Object.defineProperty(this, "multiline", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 13))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 13) : this.Ff = y(this.Ff, 13)
                        }
                    }), Object.defineProperty(this, "fileSelect", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 21))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 21) : this.Ff = y(this.Ff, 21)
                        }
                    }), Object.defineProperty(this, "doNotSpellCheck", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 23))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 23) : this.Ff = y(this.Ff, 23)
                        }
                    }), Object.defineProperty(this, "doNotScroll", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 24))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 24) : this.Ff = y(this.Ff, 24)
                        }
                    }), Object.defineProperty(this, "comb", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 25))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 25) : this.Ff = y(this.Ff, 25)
                        }
                    }), Object.defineProperty(this, "richText", {
                        enumerable: !0, configurable: !0, get: function () {
                            return Boolean(m(this.Ff, 26))
                        }, set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 26) : this.Ff = y(this.Ff, 26)
                        }
                    });
                    var e = null;
                    Object.defineProperty(this, "MaxLen", {
                        enumerable: !0, configurable: !1, get: function () {
                            return e
                        }, set: function (t) {
                            e = t
                        }
                    }), Object.defineProperty(this, "maxLength", {
                        enumerable: !0, configurable: !0, get: function () {
                            return e
                        }, set: function (t) {
                            Number.isInteger(t) && (e = t)
                        }
                    }), Object.defineProperty(this, "hasAppearanceStream", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return this.V || this.DV
                        }
                    })
                };
                c($, D);
                var K = function () {
                    $.call(this), Object.defineProperty(this, "password", {
                        enumerable: !0,
                        configurable: !0,
                        get: function () {
                            return Boolean(m(this.Ff, 14))
                        },
                        set: function (e) {
                            !0 === Boolean(e) ? this.Ff = v(this.Ff, 14) : this.Ff = y(this.Ff, 14)
                        }
                    }), this.password = !0
                };
                c(K, $);
                var X = {
                    CheckBox: {
                        createAppearanceStream: function () {
                            return {
                                N: {On: X.CheckBox.YesNormal},
                                D: {On: X.CheckBox.YesPushDown, Off: X.CheckBox.OffPushDown}
                            }
                        }, YesPushDown: function (e) {
                            var t = d(e), i = [], r = n.internal.getFont(e.fontName, e.fontStyle).id,
                                o = n.__private__.encodeColorString(e.color), a = w(e, e.caption);
                            return i.push("0.749023 g"), i.push("0 0 " + s(X.internal.getWidth(e)) + " " + s(X.internal.getHeight(e)) + " re"), i.push("f"), i.push("BMC"), i.push("q"), i.push("0 0 1 rg"), i.push("/" + r + " " + s(a.fontSize) + " Tf " + o), i.push("BT"), i.push(a.text), i.push("ET"), i.push("Q"), i.push("EMC"), t.stream = i.join("\n"), t
                        }, YesNormal: function (e) {
                            var t = d(e), i = n.internal.getFont(e.fontName, e.fontStyle).id,
                                r = n.__private__.encodeColorString(e.color), o = [], a = X.internal.getHeight(e),
                                l = X.internal.getWidth(e), c = w(e, e.caption);
                            return o.push("1 g"), o.push("0 0 " + s(l) + " " + s(a) + " re"), o.push("f"), o.push("q"), o.push("0 0 1 rg"), o.push("0 0 " + s(l - 1) + " " + s(a - 1) + " re"), o.push("W"), o.push("n"), o.push("0 g"), o.push("BT"), o.push("/" + i + " " + s(c.fontSize) + " Tf " + r), o.push(c.text), o.push("ET"), o.push("Q"), t.stream = o.join("\n"), t
                        }, OffPushDown: function (e) {
                            var t = d(e), n = [];
                            return n.push("0.749023 g"), n.push("0 0 " + s(X.internal.getWidth(e)) + " " + s(X.internal.getHeight(e)) + " re"), n.push("f"), t.stream = n.join("\n"), t
                        }
                    }, RadioButton: {
                        Circle: {
                            createAppearanceStream: function (e) {
                                var t = {D: {Off: X.RadioButton.Circle.OffPushDown}, N: {}};
                                return t.N[e] = X.RadioButton.Circle.YesNormal, t.D[e] = X.RadioButton.Circle.YesPushDown, t
                            }, getCA: function () {
                                return "l"
                            }, YesNormal: function (e) {
                                var t = d(e), n = [],
                                    i = X.internal.getWidth(e) <= X.internal.getHeight(e) ? X.internal.getWidth(e) / 4 : X.internal.getHeight(e) / 4;
                                i = Number((.9 * i).toFixed(5));
                                var r = X.internal.Bezier_C, o = Number((i * r).toFixed(5));
                                return n.push("q"), n.push("1 0 0 1 " + l(X.internal.getWidth(e) / 2) + " " + l(X.internal.getHeight(e) / 2) + " cm"), n.push(i + " 0 m"), n.push(i + " " + o + " " + o + " " + i + " 0 " + i + " c"), n.push("-" + o + " " + i + " -" + i + " " + o + " -" + i + " 0 c"), n.push("-" + i + " -" + o + " -" + o + " -" + i + " 0 -" + i + " c"), n.push(o + " -" + i + " " + i + " -" + o + " " + i + " 0 c"), n.push("f"), n.push("Q"), t.stream = n.join("\n"), t
                            }, YesPushDown: function (e) {
                                var t = d(e), n = [],
                                    i = X.internal.getWidth(e) <= X.internal.getHeight(e) ? X.internal.getWidth(e) / 4 : X.internal.getHeight(e) / 4,
                                    r = (i = Number((.9 * i).toFixed(5)), Number((2 * i).toFixed(5))),
                                    o = Number((r * X.internal.Bezier_C).toFixed(5)),
                                    a = Number((i * X.internal.Bezier_C).toFixed(5));
                                return n.push("0.749023 g"), n.push("q"), n.push("1 0 0 1 " + l(X.internal.getWidth(e) / 2) + " " + l(X.internal.getHeight(e) / 2) + " cm"), n.push(r + " 0 m"), n.push(r + " " + o + " " + o + " " + r + " 0 " + r + " c"), n.push("-" + o + " " + r + " -" + r + " " + o + " -" + r + " 0 c"), n.push("-" + r + " -" + o + " -" + o + " -" + r + " 0 -" + r + " c"), n.push(o + " -" + r + " " + r + " -" + o + " " + r + " 0 c"), n.push("f"), n.push("Q"), n.push("0 g"), n.push("q"), n.push("1 0 0 1 " + l(X.internal.getWidth(e) / 2) + " " + l(X.internal.getHeight(e) / 2) + " cm"), n.push(i + " 0 m"), n.push(i + " " + a + " " + a + " " + i + " 0 " + i + " c"), n.push("-" + a + " " + i + " -" + i + " " + a + " -" + i + " 0 c"), n.push("-" + i + " -" + a + " -" + a + " -" + i + " 0 -" + i + " c"), n.push(a + " -" + i + " " + i + " -" + a + " " + i + " 0 c"), n.push("f"), n.push("Q"), t.stream = n.join("\n"), t
                            }, OffPushDown: function (e) {
                                var t = d(e), n = [],
                                    i = X.internal.getWidth(e) <= X.internal.getHeight(e) ? X.internal.getWidth(e) / 4 : X.internal.getHeight(e) / 4,
                                    r = (i = Number((.9 * i).toFixed(5)), Number((2 * i).toFixed(5))),
                                    o = Number((r * X.internal.Bezier_C).toFixed(5));
                                return n.push("0.749023 g"), n.push("q"), n.push("1 0 0 1 " + l(X.internal.getWidth(e) / 2) + " " + l(X.internal.getHeight(e) / 2) + " cm"), n.push(r + " 0 m"), n.push(r + " " + o + " " + o + " " + r + " 0 " + r + " c"), n.push("-" + o + " " + r + " -" + r + " " + o + " -" + r + " 0 c"), n.push("-" + r + " -" + o + " -" + o + " -" + r + " 0 -" + r + " c"), n.push(o + " -" + r + " " + r + " -" + o + " " + r + " 0 c"), n.push("f"), n.push("Q"), t.stream = n.join("\n"), t
                            }
                        }, Cross: {
                            createAppearanceStream: function (e) {
                                var t = {D: {Off: X.RadioButton.Cross.OffPushDown}, N: {}};
                                return t.N[e] = X.RadioButton.Cross.YesNormal, t.D[e] = X.RadioButton.Cross.YesPushDown, t
                            }, getCA: function () {
                                return "8"
                            }, YesNormal: function (e) {
                                var t = d(e), n = [], i = X.internal.calculateCross(e);
                                return n.push("q"), n.push("1 1 " + s(X.internal.getWidth(e) - 2) + " " + s(X.internal.getHeight(e) - 2) + " re"), n.push("W"), n.push("n"), n.push(s(i.x1.x) + " " + s(i.x1.y) + " m"), n.push(s(i.x2.x) + " " + s(i.x2.y) + " l"), n.push(s(i.x4.x) + " " + s(i.x4.y) + " m"), n.push(s(i.x3.x) + " " + s(i.x3.y) + " l"), n.push("s"), n.push("Q"), t.stream = n.join("\n"), t
                            }, YesPushDown: function (e) {
                                var t = d(e), n = X.internal.calculateCross(e), i = [];
                                return i.push("0.749023 g"), i.push("0 0 " + s(X.internal.getWidth(e)) + " " + s(X.internal.getHeight(e)) + " re"), i.push("f"), i.push("q"), i.push("1 1 " + s(X.internal.getWidth(e) - 2) + " " + s(X.internal.getHeight(e) - 2) + " re"), i.push("W"), i.push("n"), i.push(s(n.x1.x) + " " + s(n.x1.y) + " m"), i.push(s(n.x2.x) + " " + s(n.x2.y) + " l"), i.push(s(n.x4.x) + " " + s(n.x4.y) + " m"), i.push(s(n.x3.x) + " " + s(n.x3.y) + " l"), i.push("s"), i.push("Q"), t.stream = i.join("\n"), t
                            }, OffPushDown: function (e) {
                                var t = d(e), n = [];
                                return n.push("0.749023 g"), n.push("0 0 " + s(X.internal.getWidth(e)) + " " + s(X.internal.getHeight(e)) + " re"), n.push("f"), t.stream = n.join("\n"), t
                            }
                        }
                    }, createDefaultAppearanceStream: function (e) {
                        var t = n.internal.getFont(e.fontName, e.fontStyle).id,
                            i = n.__private__.encodeColorString(e.color);
                        return "/" + t + " " + e.fontSize + " Tf " + i
                    }
                };
                X.internal = {
                    Bezier_C: .551915024494, calculateCross: function (e) {
                        var t = X.internal.getWidth(e), n = X.internal.getHeight(e), i = Math.min(t, n);
                        return {
                            x1: {x: (t - i) / 2, y: (n - i) / 2 + i},
                            x2: {x: (t - i) / 2 + i, y: (n - i) / 2},
                            x3: {x: (t - i) / 2, y: (n - i) / 2},
                            x4: {x: (t - i) / 2 + i, y: (n - i) / 2 + i}
                        }
                    }
                }, X.internal.getWidth = function (e) {
                    var t = 0;
                    return "object" === r(e) && (t = u(e.Rect[2])), t
                }, X.internal.getHeight = function (e) {
                    var t = 0;
                    return "object" === r(e) && (t = u(e.Rect[3])), t
                };
                var Y = e.addField = function (e) {
                    if (O.call(this), !(e instanceof D)) throw new Error("Invalid argument passed to jsPDF.addField.");
                    return function (e) {
                        n.internal.acroformPlugin.printedOut && (n.internal.acroformPlugin.printedOut = !1, n.internal.acroformPlugin.acroFormDictionaryRoot = null), n.internal.acroformPlugin.acroFormDictionaryRoot || O.call(n), n.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e)
                    }.call(this, e), e.page = n.internal.getCurrentPageInfo().pageNumber, this
                };
                e.addButton = function (e) {
                    if (e instanceof W == 0) throw new Error("Invalid argument passed to jsPDF.addButton.");
                    return Y.call(this, e)
                }, e.addTextField = function (e) {
                    if (e instanceof $ == 0) throw new Error("Invalid argument passed to jsPDF.addTextField.");
                    return Y.call(this, e)
                }, e.addChoiceField = function (e) {
                    if (e instanceof B == 0) throw new Error("Invalid argument passed to jsPDF.addChoiceField.");
                    return Y.call(this, e)
                }, "object" == r(t) && void 0 === t.ChoiceField && void 0 === t.ListBox && void 0 === t.ComboBox && void 0 === t.EditBox && void 0 === t.Button && void 0 === t.PushButton && void 0 === t.RadioButton && void 0 === t.CheckBox && void 0 === t.TextField && void 0 === t.PasswordField ? (t.ChoiceField = B, t.ListBox = j, t.ComboBox = F, t.EditBox = H, t.Button = W, t.PushButton = V, t.RadioButton = G, t.CheckBox = Z, t.TextField = $, t.PasswordField = K, t.AcroForm = {Appearance: X}) : console.warn("AcroForm-Classes are not populated into global-namespace, because the class-Names exist already."), e.AcroFormChoiceField = B, e.AcroFormListBox = j, e.AcroFormComboBox = F, e.AcroFormEditBox = H, e.AcroFormButton = W, e.AcroFormPushButton = V, e.AcroFormRadioButton = G, e.AcroFormCheckBox = Z, e.AcroFormTextField = $, e.AcroFormPasswordField = K, e.AcroFormAppearance = X, e.AcroForm = {
                    ChoiceField: B,
                    ListBox: j,
                    ComboBox: F,
                    EditBox: H,
                    Button: W,
                    PushButton: V,
                    RadioButton: G,
                    CheckBox: Z,
                    TextField: $,
                    PasswordField: K,
                    Appearance: X
                }
            })((window.tmp = ge).API, "undefined" != typeof window && window || void 0 !== i && i),
                /** @license
                 * jsPDF addImage plugin
                 * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/
                 *               2013 Chris Dowling, https://github.com/gingerchris
                 *               2013 Trinh Ho, https://github.com/ineedfat
                 *               2013 Edwin Alejandro Perez, https://github.com/eaparango
                 *               2013 Norah Smith, https://github.com/burnburnrocket
                 *               2014 Diego Casorran, https://github.com/diegocr
                 *               2014 James Robb, https://github.com/jamesbrobb
                 *
                 *
                 */
                function (e) {
                    var t = "addImage_", n = {
                        PNG: [[137, 80, 78, 71]],
                        TIFF: [[77, 77, 0, 42], [73, 73, 42, 0]],
                        JPEG: [[255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0], [255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0]],
                        JPEG2000: [[0, 0, 0, 12, 106, 80, 32, 32]],
                        GIF87a: [[71, 73, 70, 56, 55, 97]],
                        GIF89a: [[71, 73, 70, 56, 57, 97]],
                        BMP: [[66, 77], [66, 65], [67, 73], [67, 80], [73, 67], [80, 84]]
                    }, i = e.getImageFileTypeByImageData = function (t, i) {
                        var r, o;
                        i = i || "UNKNOWN";
                        var a, s, l, c = "UNKNOWN";
                        for (l in e.isArrayBufferView(t) && (t = e.arrayBufferToBinaryString(t)), n) for (a = n[l], r = 0; r < a.length; r += 1) {
                            for (s = !0, o = 0; o < a[r].length; o += 1) if (void 0 !== a[r][o] && a[r][o] !== t.charCodeAt(o)) {
                                s = !1;
                                break
                            }
                            if (!0 === s) {
                                c = l;
                                break
                            }
                        }
                        return "UNKNOWN" === c && "UNKNOWN" !== i && (console.warn('FileType of Image not recognized. Processing image as "' + i + '".'), c = i), c
                    }, o = function e(t) {
                        for (var n = this.internal.newObject(), i = this.internal.write, r = this.internal.putStream, o = (0, this.internal.getFilters)(); -1 !== o.indexOf("FlateEncode");) o.splice(o.indexOf("FlateEncode"), 1);
                        t.n = n;
                        var a = [];
                        if (a.push({key: "Type", value: "/XObject"}), a.push({
                            key: "Subtype",
                            value: "/Image"
                        }), a.push({key: "Width", value: t.w}), a.push({
                            key: "Height",
                            value: t.h
                        }), t.cs === this.color_spaces.INDEXED ? a.push({
                            key: "ColorSpace",
                            value: "[/Indexed /DeviceRGB " + (t.pal.length / 3 - 1) + " " + ("smask" in t ? n + 2 : n + 1) + " 0 R]"
                        }) : (a.push({
                            key: "ColorSpace",
                            value: "/" + t.cs
                        }), t.cs === this.color_spaces.DEVICE_CMYK && a.push({
                            key: "Decode",
                            value: "[1 0 1 0 1 0 1 0]"
                        })), a.push({key: "BitsPerComponent", value: t.bpc}), "dp" in t && a.push({
                            key: "DecodeParms",
                            value: "<<" + t.dp + ">>"
                        }), "trns" in t && t.trns.constructor == Array) {
                            for (var s = "", l = 0, c = t.trns.length; l < c; l++) s += t.trns[l] + " " + t.trns[l] + " ";
                            a.push({key: "Mask", value: "[" + s + "]"})
                        }
                        "smask" in t && a.push({key: "SMask", value: n + 1 + " 0 R"});
                        var u = void 0 !== t.f ? ["/" + t.f] : void 0;
                        if (r({
                            data: t.data,
                            additionalKeyValues: a,
                            alreadyAppliedFilters: u
                        }), i("endobj"), "smask" in t) {
                            var h = "/Predictor " + t.p + " /Colors 1 /BitsPerComponent " + t.bpc + " /Columns " + t.w,
                                d = {w: t.w, h: t.h, cs: "DeviceGray", bpc: t.bpc, dp: h, data: t.smask};
                            "f" in t && (d.f = t.f), e.call(this, d)
                        }
                        t.cs === this.color_spaces.INDEXED && (this.internal.newObject(), r({data: this.arrayBufferToBinaryString(new Uint8Array(t.pal))}), i("endobj"))
                    }, a = function () {
                        var e = this.internal.collections[t + "images"];
                        for (var n in e) o.call(this, e[n])
                    }, s = function () {
                        var e, n = this.internal.collections[t + "images"], i = this.internal.write;
                        for (var r in n) i("/I" + (e = n[r]).i, e.n, "0", "R")
                    }, l = function (t) {
                        return "function" == typeof e["process" + t.toUpperCase()]
                    }, c = function (e) {
                        return "object" === r(e) && 1 === e.nodeType
                    }, u = function (t, n) {
                        if ("IMG" === t.nodeName && t.hasAttribute("src")) {
                            var i = "" + t.getAttribute("src");
                            if (0 === i.indexOf("data:image/")) return unescape(i);
                            var r = e.loadFile(i);
                            if (void 0 !== r) return btoa(r)
                        }
                        if ("CANVAS" === t.nodeName) {
                            var o = t;
                            return t.toDataURL("image/jpeg", 1)
                        }
                        (o = document.createElement("canvas")).width = t.clientWidth || t.width, o.height = t.clientHeight || t.height;
                        var a = o.getContext("2d");
                        if (!a) throw"addImage requires canvas to be supported by browser.";
                        return a.drawImage(t, 0, 0, o.width, o.height), o.toDataURL("png" == ("" + n).toLowerCase() ? "image/png" : "image/jpeg")
                    }, h = function (e, t) {
                        var n;
                        if (t) for (var i in t) if (e === t[i].alias) {
                            n = t[i];
                            break
                        }
                        return n
                    };
                    e.color_spaces = {
                        DEVICE_RGB: "DeviceRGB",
                        DEVICE_GRAY: "DeviceGray",
                        DEVICE_CMYK: "DeviceCMYK",
                        CAL_GREY: "CalGray",
                        CAL_RGB: "CalRGB",
                        LAB: "Lab",
                        ICC_BASED: "ICCBased",
                        INDEXED: "Indexed",
                        PATTERN: "Pattern",
                        SEPARATION: "Separation",
                        DEVICE_N: "DeviceN"
                    }, e.decode = {
                        DCT_DECODE: "DCTDecode",
                        FLATE_DECODE: "FlateDecode",
                        LZW_DECODE: "LZWDecode",
                        JPX_DECODE: "JPXDecode",
                        JBIG2_DECODE: "JBIG2Decode",
                        ASCII85_DECODE: "ASCII85Decode",
                        ASCII_HEX_DECODE: "ASCIIHexDecode",
                        RUN_LENGTH_DECODE: "RunLengthDecode",
                        CCITT_FAX_DECODE: "CCITTFaxDecode"
                    }, e.image_compression = {
                        NONE: "NONE",
                        FAST: "FAST",
                        MEDIUM: "MEDIUM",
                        SLOW: "SLOW"
                    }, e.sHashCode = function (e) {
                        var t, n = 0;
                        if (0 === (e = e || "").length) return n;
                        for (t = 0; t < e.length; t++) n = (n << 5) - n + e.charCodeAt(t), n |= 0;
                        return n
                    }, e.isString = function (e) {
                        return "string" == typeof e
                    }, e.validateStringAsBase64 = function (e) {
                        (e = e || "").toString().trim();
                        var t = !0;
                        return 0 === e.length && (t = !1), e.length % 4 != 0 && (t = !1), !1 === /^[A-Za-z0-9+\/]+$/.test(e.substr(0, e.length - 2)) && (t = !1), !1 === /^[A-Za-z0-9\/][A-Za-z0-9+\/]|[A-Za-z0-9+\/]=|==$/.test(e.substr(-2)) && (t = !1), t
                    }, e.extractInfoFromBase64DataURI = function (e) {
                        return /^data:([\w]+?\/([\w]+?));\S*;*base64,(.+)$/g.exec(e)
                    }, e.extractImageFromDataUrl = function (e) {
                        var t = (e = e || "").split("base64,"), n = null;
                        if (2 === t.length) {
                            var i = /^data:(\w*\/\w*);*(charset=[\w=-]*)*;*$/.exec(t[0]);
                            Array.isArray(i) && (n = {mimeType: i[1], charset: i[2], data: t[1]})
                        }
                        return n
                    }, e.supportsArrayBuffer = function () {
                        return "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array
                    }, e.isArrayBuffer = function (e) {
                        return !!this.supportsArrayBuffer() && e instanceof ArrayBuffer
                    }, e.isArrayBufferView = function (e) {
                        return !!this.supportsArrayBuffer() && "undefined" != typeof Uint32Array && (e instanceof Int8Array || e instanceof Uint8Array || "undefined" != typeof Uint8ClampedArray && e instanceof Uint8ClampedArray || e instanceof Int16Array || e instanceof Uint16Array || e instanceof Int32Array || e instanceof Uint32Array || e instanceof Float32Array || e instanceof Float64Array)
                    }, e.binaryStringToUint8Array = function (e) {
                        for (var t = e.length, n = new Uint8Array(t), i = 0; i < t; i++) n[i] = e.charCodeAt(i);
                        return n
                    }, e.arrayBufferToBinaryString = function (e) {
                        if ("function" == typeof atob) return atob(this.arrayBufferToBase64(e))
                    }, e.arrayBufferToBase64 = function (e) {
                        for (var t, n = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", r = new Uint8Array(e), o = r.byteLength, a = o % 3, s = o - a, l = 0; l < s; l += 3) n += i[(16515072 & (t = r[l] << 16 | r[l + 1] << 8 | r[l + 2])) >> 18] + i[(258048 & t) >> 12] + i[(4032 & t) >> 6] + i[63 & t];
                        return 1 == a ? n += i[(252 & (t = r[s])) >> 2] + i[(3 & t) << 4] + "==" : 2 == a && (n += i[(64512 & (t = r[s] << 8 | r[s + 1])) >> 10] + i[(1008 & t) >> 4] + i[(15 & t) << 2] + "="), n
                    }, e.createImageInfo = function (e, t, n, i, r, o, a, s, l, c, u, h, d) {
                        var f = {alias: s, w: t, h: n, cs: i, bpc: r, i: a, data: e};
                        return o && (f.f = o), l && (f.dp = l), c && (f.trns = c), u && (f.pal = u), h && (f.smask = h), d && (f.p = d), f
                    }, e.addImage = function (n, i, o, d, f, g, p, m, v) {
                        var y = "";
                        if ("string" != typeof i) {
                            var b = g;
                            g = f, f = d, d = o, o = i, i = b
                        }
                        if ("object" === r(n) && !c(n) && "imageData" in n) {
                            var C = n;
                            n = C.imageData, i = C.format || i || "UNKNOWN", o = C.x || o || 0, d = C.y || d || 0, f = C.w || f, g = C.h || g, p = C.alias || p, m = C.compression || m, v = C.rotation || C.angle || v
                        }
                        var w = this.internal.getFilters();
                        if (void 0 === m && -1 !== w.indexOf("FlateEncode") && (m = "SLOW"), "string" == typeof n && (n = unescape(n)), isNaN(o) || isNaN(d)) throw console.error("jsPDF.addImage: Invalid coordinates", arguments), new Error("Invalid coordinates passed to jsPDF.addImage");
                        var I, x, A, _, S, k, L, T = function () {
                            var e = this.internal.collections[t + "images"];
                            return e || (this.internal.collections[t + "images"] = e = {}, this.internal.events.subscribe("putResources", a), this.internal.events.subscribe("putXobjectDict", s)), e
                        }.call(this);
                        if (!((I = h(n, T)) || (c(n) && (n = u(n, i)), (null == (L = p) || 0 === L.length) && (p = "string" == typeof (k = n) ? e.sHashCode(k) : e.isArrayBufferView(k) ? e.sHashCode(e.arrayBufferToBinaryString(k)) : null), I = h(p, T)))) {
                            if (this.isString(n) && ("" !== (y = this.convertStringToImageData(n)) || void 0 !== (y = e.loadFile(n))) && (n = y), i = this.getImageFileTypeByImageData(n, i), !l(i)) throw new Error("addImage does not support files of type '" + i + "', please ensure that a plugin for '" + i + "' support is added.");
                            if (this.supportsArrayBuffer() && (n instanceof Uint8Array || (x = n, n = this.binaryStringToUint8Array(n))), !(I = this["process" + i.toUpperCase()](n, (S = 0, (_ = T) && (S = Object.keys ? Object.keys(_).length : function (e) {
                                var t = 0;
                                for (var n in e) e.hasOwnProperty(n) && t++;
                                return t
                            }(_)), S), p, ((A = m) && "string" == typeof A && (A = A.toUpperCase()), A in e.image_compression ? A : e.image_compression.NONE), x))) throw new Error("An unknown error occurred whilst processing the image")
                        }
                        return function (e, t, n, i, r, o, a, s) {
                            var l = function (e, t, n) {
                                    return e || t || (t = e = -96), e < 0 && (e = -1 * n.w * 72 / e / this.internal.scaleFactor), t < 0 && (t = -1 * n.h * 72 / t / this.internal.scaleFactor), 0 === e && (e = t * n.w / n.h), 0 === t && (t = e * n.h / n.w), [e, t]
                                }.call(this, n, i, r), c = this.internal.getCoordinateString,
                                u = this.internal.getVerticalCoordinateString;
                            if (n = l[0], i = l[1], a[o] = r, s) {
                                s *= Math.PI / 180;
                                var h = Math.cos(s), d = Math.sin(s), f = function (e) {
                                    return e.toFixed(4)
                                }, g = [f(h), f(d), f(-1 * d), f(h), 0, 0, "cm"]
                            }
                            this.internal.write("q"), s ? (this.internal.write([1, "0", "0", 1, c(e), u(t + i), "cm"].join(" ")), this.internal.write(g.join(" ")), this.internal.write([c(n), "0", "0", c(i), "0", "0", "cm"].join(" "))) : this.internal.write([c(n), "0", "0", c(i), c(e), u(t + i), "cm"].join(" ")), this.internal.write("/I" + r.i + " Do"), this.internal.write("Q")
                        }.call(this, o, d, f, g, I, I.i, T, v), this
                    }, e.convertStringToImageData = function (t) {
                        var n, i = "";
                        if (this.isString(t)) {
                            var r;
                            n = null !== (r = this.extractImageFromDataUrl(t)) ? r.data : t;
                            try {
                                i = atob(n)
                            } catch (t) {
                                throw e.validateStringAsBase64(n) ? new Error("atob-Error in jsPDF.convertStringToImageData " + t.message) : new Error("Supplied Data is not a valid base64-String jsPDF.convertStringToImageData ")
                            }
                        }
                        return i
                    };
                    var d = function (e, t) {
                        return e.subarray(t, t + 5)
                    };
                    e.processJPEG = function (e, t, n, r, o, a) {
                        var s, l = this.decode.DCT_DECODE;
                        if (!this.isString(e) && !this.isArrayBuffer(e) && !this.isArrayBufferView(e)) return null;
                        if (this.isString(e) && (s = function (e) {
                            var t;
                            if ("JPEG" !== i(e)) throw new Error("getJpegSize requires a binary string jpeg file");
                            for (var n = 256 * e.charCodeAt(4) + e.charCodeAt(5), r = 4, o = e.length; r < o;) {
                                if (r += n, 255 !== e.charCodeAt(r)) throw new Error("getJpegSize could not find the size of the image");
                                if (192 === e.charCodeAt(r + 1) || 193 === e.charCodeAt(r + 1) || 194 === e.charCodeAt(r + 1) || 195 === e.charCodeAt(r + 1) || 196 === e.charCodeAt(r + 1) || 197 === e.charCodeAt(r + 1) || 198 === e.charCodeAt(r + 1) || 199 === e.charCodeAt(r + 1)) return t = 256 * e.charCodeAt(r + 5) + e.charCodeAt(r + 6), [256 * e.charCodeAt(r + 7) + e.charCodeAt(r + 8), t, e.charCodeAt(r + 9)];
                                r += 2, n = 256 * e.charCodeAt(r) + e.charCodeAt(r + 1)
                            }
                        }(e)), this.isArrayBuffer(e) && (e = new Uint8Array(e)), this.isArrayBufferView(e) && (s = function (e) {
                            if (65496 != (e[0] << 8 | e[1])) throw new Error("Supplied data is not a JPEG");
                            for (var t, n = e.length, i = (e[4] << 8) + e[5], r = 4; r < n;) {
                                if (i = ((t = d(e, r += i))[2] << 8) + t[3], (192 === t[1] || 194 === t[1]) && 255 === t[0] && 7 < i) return {
                                    width: ((t = d(e, r + 5))[2] << 8) + t[3],
                                    height: (t[0] << 8) + t[1],
                                    numcomponents: t[4]
                                };
                                r += 2
                            }
                            throw new Error("getJpegSizeFromBytes could not find the size of the image")
                        }(e), e = o || this.arrayBufferToBinaryString(e)), void 0 === a) switch (s.numcomponents) {
                            case 1:
                                a = this.color_spaces.DEVICE_GRAY;
                                break;
                            case 4:
                                a = this.color_spaces.DEVICE_CMYK;
                                break;
                            default:
                            case 3:
                                a = this.color_spaces.DEVICE_RGB
                        }
                        return this.createImageInfo(e, s.width, s.height, a, 8, l, t, n)
                    }, e.processJPG = function () {
                        return this.processJPEG.apply(this, arguments)
                    }, e.getImageProperties = function (t) {
                        var n, i, r = "";
                        if (c(t) && (t = u(t)), this.isString(t) && ("" !== (r = this.convertStringToImageData(t)) || void 0 !== (r = e.loadFile(t))) && (t = r), i = this.getImageFileTypeByImageData(t), !l(i)) throw new Error("addImage does not support files of type '" + i + "', please ensure that a plugin for '" + i + "' support is added.");
                        if (this.supportsArrayBuffer() && (t instanceof Uint8Array || (t = this.binaryStringToUint8Array(t))), !(n = this["process" + i.toUpperCase()](t))) throw new Error("An unknown error occurred whilst processing the image");
                        return {
                            fileType: i,
                            width: n.w,
                            height: n.h,
                            colorSpace: n.cs,
                            compressionMode: n.f,
                            bitsPerComponent: n.bpc
                        }
                    }
                }(ge.API),
                /**
                 * @license
                 * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
                 *
                 * Licensed under the MIT License.
                 * http://opensource.org/licenses/mit-license
                 */
                a = ge.API, ge.API.events.push(["addPage", function (e) {
                this.internal.getPageInfo(e.pageNumber).pageContext.annotations = []
            }]), a.events.push(["putPage", function (e) {
                for (var t = this.internal.getPageInfoByObjId(e.objId), n = e.pageContext.annotations, i = function (e) {
                    if (void 0 !== e && "" != e) return !0
                }, r = !1, o = 0; o < n.length && !r; o++) switch ((l = n[o]).type) {
                    case"link":
                        if (i(l.options.url) || i(l.options.pageNumber)) {
                            r = !0;
                            break
                        }
                    case"reference":
                    case"text":
                    case"freetext":
                        r = !0
                }
                if (0 != r) {
                    this.internal.write("/Annots ["), this.internal.pageSize.height;
                    var a = this.internal.getCoordinateString, s = this.internal.getVerticalCoordinateString;
                    for (o = 0; o < n.length; o++) {
                        var l;
                        switch ((l = n[o]).type) {
                            case"reference":
                                this.internal.write(" " + l.object.objId + " 0 R ");
                                break;
                            case"text":
                                var c = this.internal.newAdditionalObject(), u = this.internal.newAdditionalObject(),
                                    h = l.title || "Note";
                                m = "<</Type /Annot /Subtype /Text " + (f = "/Rect [" + a(l.bounds.x) + " " + s(l.bounds.y + l.bounds.h) + " " + a(l.bounds.x + l.bounds.w) + " " + s(l.bounds.y) + "] ") + "/Contents (" + l.contents + ")", m += " /Popup " + u.objId + " 0 R", m += " /P " + t.objId + " 0 R", m += " /T (" + h + ") >>", c.content = m;
                                var d = c.objId + " 0 R";
                                m = "<</Type /Annot /Subtype /Popup " + (f = "/Rect [" + a(l.bounds.x + 30) + " " + s(l.bounds.y + l.bounds.h) + " " + a(l.bounds.x + l.bounds.w + 30) + " " + s(l.bounds.y) + "] ") + " /Parent " + d, l.open && (m += " /Open true"), m += " >>", u.content = m, this.internal.write(c.objId, "0 R", u.objId, "0 R");
                                break;
                            case"freetext":
                                var f = "/Rect [" + a(l.bounds.x) + " " + s(l.bounds.y) + " " + a(l.bounds.x + l.bounds.w) + " " + s(l.bounds.y + l.bounds.h) + "] ",
                                    g = l.color || "#000000";
                                m = "<</Type /Annot /Subtype /FreeText " + f + "/Contents (" + l.contents + ")", m += " /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#" + g + ")", m += " /Border [0 0 0]", m += " >>", this.internal.write(m);
                                break;
                            case"link":
                                if (l.options.name) {
                                    var p = this.annotations._nameMap[l.options.name];
                                    l.options.pageNumber = p.page, l.options.top = p.y
                                } else l.options.top || (l.options.top = 0);
                                f = "/Rect [" + a(l.x) + " " + s(l.y) + " " + a(l.x + l.w) + " " + s(l.y + l.h) + "] ";
                                var m = "";
                                if (l.options.url) m = "<</Type /Annot /Subtype /Link " + f + "/Border [0 0 0] /A <</S /URI /URI (" + l.options.url + ") >>"; else if (l.options.pageNumber) switch (m = "<</Type /Annot /Subtype /Link " + f + "/Border [0 0 0] /Dest [" + this.internal.getPageInfo(l.options.pageNumber).objId + " 0 R", l.options.magFactor = l.options.magFactor || "XYZ", l.options.magFactor) {
                                    case"Fit":
                                        m += " /Fit]";
                                        break;
                                    case"FitH":
                                        m += " /FitH " + l.options.top + "]";
                                        break;
                                    case"FitV":
                                        l.options.left = l.options.left || 0, m += " /FitV " + l.options.left + "]";
                                        break;
                                    case"XYZ":
                                    default:
                                        var v = s(l.options.top);
                                        l.options.left = l.options.left || 0, void 0 === l.options.zoom && (l.options.zoom = 0), m += " /XYZ " + l.options.left + " " + v + " " + l.options.zoom + "]"
                                }
                                "" != m && (m += " >>", this.internal.write(m))
                        }
                    }
                    this.internal.write("]")
                }
            }]), a.createAnnotation = function (e) {
                var t = this.internal.getCurrentPageInfo();
                switch (e.type) {
                    case"link":
                        this.link(e.bounds.x, e.bounds.y, e.bounds.w, e.bounds.h, e);
                        break;
                    case"text":
                    case"freetext":
                        t.pageContext.annotations.push(e)
                }
            }, a.link = function (e, t, n, i, r) {
                this.internal.getCurrentPageInfo().pageContext.annotations.push({
                    x: e,
                    y: t,
                    w: n,
                    h: i,
                    options: r,
                    type: "link"
                })
            }, a.textWithLink = function (e, t, n, i) {
                var r = this.getTextWidth(e), o = this.internal.getLineHeight() / this.internal.scaleFactor;
                return this.text(e, t, n), n += .2 * o, this.link(t, n - o, r, o, i), r
            }, a.getTextWidth = function (e) {
                var t = this.internal.getFontSize();
                return this.getStringUnitWidth(e) * t / this.internal.scaleFactor
            },
                /**
                 * @license
                 * Copyright (c) 2017 Aras Abbasi
                 *
                 * Licensed under the MIT License.
                 * http://opensource.org/licenses/mit-license
                 */
                function (e) {
                    var t = {
                            1569: [65152],
                            1570: [65153, 65154],
                            1571: [65155, 65156],
                            1572: [65157, 65158],
                            1573: [65159, 65160],
                            1574: [65161, 65162, 65163, 65164],
                            1575: [65165, 65166],
                            1576: [65167, 65168, 65169, 65170],
                            1577: [65171, 65172],
                            1578: [65173, 65174, 65175, 65176],
                            1579: [65177, 65178, 65179, 65180],
                            1580: [65181, 65182, 65183, 65184],
                            1581: [65185, 65186, 65187, 65188],
                            1582: [65189, 65190, 65191, 65192],
                            1583: [65193, 65194],
                            1584: [65195, 65196],
                            1585: [65197, 65198],
                            1586: [65199, 65200],
                            1587: [65201, 65202, 65203, 65204],
                            1588: [65205, 65206, 65207, 65208],
                            1589: [65209, 65210, 65211, 65212],
                            1590: [65213, 65214, 65215, 65216],
                            1591: [65217, 65218, 65219, 65220],
                            1592: [65221, 65222, 65223, 65224],
                            1593: [65225, 65226, 65227, 65228],
                            1594: [65229, 65230, 65231, 65232],
                            1601: [65233, 65234, 65235, 65236],
                            1602: [65237, 65238, 65239, 65240],
                            1603: [65241, 65242, 65243, 65244],
                            1604: [65245, 65246, 65247, 65248],
                            1605: [65249, 65250, 65251, 65252],
                            1606: [65253, 65254, 65255, 65256],
                            1607: [65257, 65258, 65259, 65260],
                            1608: [65261, 65262],
                            1609: [65263, 65264, 64488, 64489],
                            1610: [65265, 65266, 65267, 65268],
                            1649: [64336, 64337],
                            1655: [64477],
                            1657: [64358, 64359, 64360, 64361],
                            1658: [64350, 64351, 64352, 64353],
                            1659: [64338, 64339, 64340, 64341],
                            1662: [64342, 64343, 64344, 64345],
                            1663: [64354, 64355, 64356, 64357],
                            1664: [64346, 64347, 64348, 64349],
                            1667: [64374, 64375, 64376, 64377],
                            1668: [64370, 64371, 64372, 64373],
                            1670: [64378, 64379, 64380, 64381],
                            1671: [64382, 64383, 64384, 64385],
                            1672: [64392, 64393],
                            1676: [64388, 64389],
                            1677: [64386, 64387],
                            1678: [64390, 64391],
                            1681: [64396, 64397],
                            1688: [64394, 64395],
                            1700: [64362, 64363, 64364, 64365],
                            1702: [64366, 64367, 64368, 64369],
                            1705: [64398, 64399, 64400, 64401],
                            1709: [64467, 64468, 64469, 64470],
                            1711: [64402, 64403, 64404, 64405],
                            1713: [64410, 64411, 64412, 64413],
                            1715: [64406, 64407, 64408, 64409],
                            1722: [64414, 64415],
                            1723: [64416, 64417, 64418, 64419],
                            1726: [64426, 64427, 64428, 64429],
                            1728: [64420, 64421],
                            1729: [64422, 64423, 64424, 64425],
                            1733: [64480, 64481],
                            1734: [64473, 64474],
                            1735: [64471, 64472],
                            1736: [64475, 64476],
                            1737: [64482, 64483],
                            1739: [64478, 64479],
                            1740: [64508, 64509, 64510, 64511],
                            1744: [64484, 64485, 64486, 64487],
                            1746: [64430, 64431],
                            1747: [64432, 64433]
                        }, n = {
                            65247: {65154: 65269, 65156: 65271, 65160: 65273, 65166: 65275},
                            65248: {65154: 65270, 65156: 65272, 65160: 65274, 65166: 65276},
                            65165: {65247: {65248: {65258: 65010}}},
                            1617: {1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610}
                        }, i = {1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610},
                        r = [1570, 1571, 1573, 1575];
                    e.__arabicParser__ = {};
                    var o = e.__arabicParser__.isInArabicSubstitutionA = function (e) {
                        return void 0 !== t[e.charCodeAt(0)]
                    }, a = e.__arabicParser__.isArabicLetter = function (e) {
                        return "string" == typeof e && /^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(e)
                    }, s = e.__arabicParser__.isArabicEndLetter = function (e) {
                        return a(e) && o(e) && t[e.charCodeAt(0)].length <= 2
                    }, l = e.__arabicParser__.isArabicAlfLetter = function (e) {
                        return a(e) && 0 <= r.indexOf(e.charCodeAt(0))
                    }, c = (e.__arabicParser__.arabicLetterHasIsolatedForm = function (e) {
                        return a(e) && o(e) && 1 <= t[e.charCodeAt(0)].length
                    }, e.__arabicParser__.arabicLetterHasFinalForm = function (e) {
                        return a(e) && o(e) && 2 <= t[e.charCodeAt(0)].length
                    }), u = (e.__arabicParser__.arabicLetterHasInitialForm = function (e) {
                        return a(e) && o(e) && 3 <= t[e.charCodeAt(0)].length
                    }, e.__arabicParser__.arabicLetterHasMedialForm = function (e) {
                        return a(e) && o(e) && 4 == t[e.charCodeAt(0)].length
                    }), h = e.__arabicParser__.resolveLigatures = function (e) {
                        var t = 0, i = n, r = 0, o = "", a = 0;
                        for (t = 0; t < e.length; t += 1) void 0 !== i[e.charCodeAt(t)] ? (a++, "number" == typeof (i = i[e.charCodeAt(t)]) && (r = -1 !== (r = d(e.charAt(t), e.charAt(t - a), e.charAt(t + 1))) ? r : 0, o += String.fromCharCode(i), i = n, a = 0), t === e.length - 1 && (i = n, o += e.charAt(t - (a - 1)), t -= a - 1, a = 0)) : (i = n, o += e.charAt(t - a), t -= a, a = 0);
                        return o
                    }, d = (e.__arabicParser__.isArabicDiacritic = function (e) {
                        return void 0 !== e && void 0 !== i[e.charCodeAt(0)]
                    }, e.__arabicParser__.getCorrectForm = function (e, t, n) {
                        return a(e) ? !1 === o(e) ? -1 : !c(e) || !a(t) && !a(n) || !a(n) && s(t) || s(e) && !a(t) || s(e) && l(t) || s(e) && s(t) ? 0 : u(e) && a(t) && !s(t) && a(n) && c(n) ? 3 : s(e) || !a(n) ? 1 : 2 : -1
                    }), f = e.__arabicParser__.processArabic = e.processArabic = function (e) {
                        var n = 0, i = 0, r = 0, o = "", s = "", l = "", c = (e = e || "").split("\\s+"), u = [];
                        for (n = 0; n < c.length; n += 1) {
                            for (u.push(""), i = 0; i < c[n].length; i += 1) o = c[n][i], s = c[n][i - 1], l = c[n][i + 1], a(o) ? (r = d(o, s, l), u[n] += -1 !== r ? String.fromCharCode(t[o.charCodeAt(0)][r]) : o) : u[n] += o;
                            u[n] = h(u[n])
                        }
                        return u.join(" ")
                    };
                    e.events.push(["preProcessText", function (e) {
                        var t = e.text, n = (e.x, e.y, e.options || {}), i = (e.mutex, n.lang, []);
                        if ("[object Array]" === Object.prototype.toString.call(t)) {
                            var r = 0;
                            for (i = [], r = 0; r < t.length; r += 1) "[object Array]" === Object.prototype.toString.call(t[r]) ? i.push([f(t[r][0]), t[r][1], t[r][2]]) : i.push([f(t[r])]);
                            e.text = i
                        } else e.text = f(t)
                    }])
                }(ge.API), ge.API.autoPrint = function (e) {
                var t;
                switch ((e = e || {}).variant = e.variant || "non-conform", e.variant) {
                    case"javascript":
                        this.addJS("print({});");
                        break;
                    case"non-conform":
                    default:
                        this.internal.events.subscribe("postPutResources", (function () {
                            t = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /Named"), this.internal.out("/Type /Action"), this.internal.out("/N /Print"), this.internal.out(">>"), this.internal.out("endobj")
                        })), this.internal.events.subscribe("putCatalog", (function () {
                            this.internal.out("/OpenAction " + t + " 0 R")
                        }))
                }
                return this
            },
                /**
                 * @license
                 * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
                 *
                 * Licensed under the MIT License.
                 * http://opensource.org/licenses/mit-license
                 */
                s = ge.API, (l = function () {
                var e = void 0;
                Object.defineProperty(this, "pdf", {
                    get: function () {
                        return e
                    }, set: function (t) {
                        e = t
                    }
                });
                var t = 150;
                Object.defineProperty(this, "width", {
                    get: function () {
                        return t
                    }, set: function (e) {
                        t = isNaN(e) || !1 === Number.isInteger(e) || e < 0 ? 150 : e, this.getContext("2d").pageWrapXEnabled && (this.getContext("2d").pageWrapX = t + 1)
                    }
                });
                var n = 300;
                Object.defineProperty(this, "height", {
                    get: function () {
                        return n
                    }, set: function (e) {
                        n = isNaN(e) || !1 === Number.isInteger(e) || e < 0 ? 300 : e, this.getContext("2d").pageWrapYEnabled && (this.getContext("2d").pageWrapY = n + 1)
                    }
                });
                var i = [];
                Object.defineProperty(this, "childNodes", {
                    get: function () {
                        return i
                    }, set: function (e) {
                        i = e
                    }
                });
                var r = {};
                Object.defineProperty(this, "style", {
                    get: function () {
                        return r
                    }, set: function (e) {
                        r = e
                    }
                }), Object.defineProperty(this, "parentNode", {
                    get: function () {
                        return !1
                    }
                })
            }).prototype.getContext = function (e, t) {
                var n;
                if ("2d" !== (e = e || "2d")) return null;
                for (n in t) this.pdf.context2d.hasOwnProperty(n) && (this.pdf.context2d[n] = t[n]);
                return (this.pdf.context2d._canvas = this).pdf.context2d
            }, l.prototype.toDataURL = function () {
                throw new Error("toDataURL is not implemented.")
            }, s.events.push(["initialized", function () {
                this.canvas = new l, this.canvas.pdf = this
            }]),
                /**
                 * @license
                 * ====================================================================
                 * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com
                 *               2013 Eduardo Menezes de Morais, eduardo.morais@usp.br
                 *               2013 Lee Driscoll, https://github.com/lsdriscoll
                 *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
                 *               2014 James Hall, james@parall.ax
                 *               2014 Diego Casorran, https://github.com/diegocr
                 *
                 *
                 * ====================================================================
                 */
                c = ge.API, h = {
                x: void 0,
                y: void 0,
                w: void 0,
                h: void 0,
                ln: void 0
            }, d = 1, f = function (e, t, n, i, r) {
                h = {x: e, y: t, w: n, h: i, ln: r}
            }, g = function () {
                return h
            }, p = {left: 0, top: 0, bottom: 0}, c.setHeaderFunction = function (e) {
                u = e
            }, c.getTextDimensions = function (e, t) {
                var n = this.table_font_size || this.internal.getFontSize(),
                    i = (this.internal.getFont().fontStyle, (t = t || {}).scaleFactor || this.internal.scaleFactor),
                    r = 0, o = 0, a = 0;
                if ("string" == typeof e) 0 != (r = this.getStringUnitWidth(e) * n) && (o = 1); else {
                    if ("[object Array]" !== Object.prototype.toString.call(e)) throw new Error("getTextDimensions expects text-parameter to be of type String or an Array of Strings.");
                    for (var s = 0; s < e.length; s++) r < (a = this.getStringUnitWidth(e[s]) * n) && (r = a);
                    0 !== r && (o = e.length)
                }
                return {
                    w: r /= i,
                    h: Math.max((o * n * this.getLineHeightFactor() - n * (this.getLineHeightFactor() - 1)) / i, 0)
                }
            }, c.cellAddPage = function () {
                var e = this.margins || p;
                this.addPage(), f(e.left, e.top, void 0, void 0), d += 1
            }, c.cellInitialize = function () {
                h = {x: void 0, y: void 0, w: void 0, h: void 0, ln: void 0}, d = 1
            }, c.cell = function (e, t, n, i, r, o, a) {
                var s = g(), l = !1;
                if (void 0 !== s.ln) if (s.ln === o) e = s.x + s.w, t = s.y; else {
                    var c = this.margins || p;
                    s.y + s.h + i + 13 >= this.internal.pageSize.getHeight() - c.bottom && (this.cellAddPage(), l = !0, this.printHeaders && this.tableHeaderRow && this.printHeaderRow(o, !0)), t = g().y + g().h, l && (t = 23)
                }
                if (void 0 !== r[0]) if (this.printingHeaderRow ? this.rect(e, t, n, i, "FD") : this.rect(e, t, n, i), "right" === a) {
                    r instanceof Array || (r = [r]);
                    for (var u = 0; u < r.length; u++) {
                        var h = r[u],
                            d = this.getStringUnitWidth(h) * this.internal.getFontSize() / this.internal.scaleFactor;
                        this.text(h, e + n - d - 3, t + this.internal.getLineHeight() * (u + 1))
                    }
                } else this.text(r, e + 3, t + this.internal.getLineHeight());
                return f(e, t, n, i, o), this
            }, c.arrayMax = function (e, t) {
                var n, i, r, o = e[0];
                for (n = 0, i = e.length; n < i; n += 1) r = e[n], t ? -1 === t(o, r) && (o = r) : o < r && (o = r);
                return o
            }, c.table = function (e, t, n, i, r) {
                if (!n) throw"No data for PDF table";
                var o, a, s, l, u, f, g, m, v, y, b = [], C = [], w = {}, I = {}, x = [], A = [], _ = !1, S = !0,
                    k = 12, L = p;
                if (L.width = this.internal.pageSize.getWidth(), r && (!0 === r.autoSize && (_ = !0), !1 === r.printHeaders && (S = !1), r.fontSize && (k = r.fontSize), r.css && void 0 !== r.css["font-size"] && (k = 16 * r.css["font-size"]), r.margins && (L = r.margins)), this.lnMod = 0, h = {
                    x: void 0,
                    y: void 0,
                    w: void 0,
                    h: void 0,
                    ln: void 0
                }, d = 1, this.printHeaders = S, this.margins = L, this.setFontSize(k), this.table_font_size = k, null == i) b = Object.keys(n[0]); else if (i[0] && "string" != typeof i[0]) for (a = 0, s = i.length; a < s; a += 1) o = i[a], b.push(o.name), C.push(o.prompt), I[o.name] = o.width * (19.049976 / 25.4); else b = i;
                if (_) for (y = function (e) {
                    return e[o]
                }, a = 0, s = b.length; a < s; a += 1) {
                    for (w[o = b[a]] = n.map(y), x.push(this.getTextDimensions(C[a] || o, {scaleFactor: 1}).w), g = 0, l = (f = w[o]).length; g < l; g += 1) u = f[g], x.push(this.getTextDimensions(u, {scaleFactor: 1}).w);
                    I[o] = c.arrayMax(x), x = []
                }
                if (S) {
                    var T = this.calculateLineHeight(b, I, C.length ? C : b);
                    for (a = 0, s = b.length; a < s; a += 1) o = b[a], A.push([e, t, I[o], T, String(C.length ? C[a] : o)]);
                    this.setTableHeaderRow(A), this.printHeaderRow(1, !1)
                }
                for (a = 0, s = n.length; a < s; a += 1) for (m = n[a], T = this.calculateLineHeight(b, I, m), g = 0, v = b.length; g < v; g += 1) o = b[g], this.cell(e, t, I[o], T, m[o], a + 2, o.align);
                return this.lastCellPos = h, this.table_x = e, this.table_y = t, this
            }, c.calculateLineHeight = function (e, t, n) {
                for (var i, r = 0, o = 0; o < e.length; o++) {
                    n[i = e[o]] = this.splitTextToSize(String(n[i]), t[i] - 3);
                    var a = this.internal.getLineHeight() * n[i].length + 3;
                    r < a && (r = a)
                }
                return r
            }, c.setTableHeaderRow = function (e) {
                this.tableHeaderRow = e
            }, c.printHeaderRow = function (e, t) {
                if (!this.tableHeaderRow) throw"Property tableHeaderRow does not exist.";
                var n, i, r, o;
                if (this.printingHeaderRow = !0, void 0 !== u) {
                    var a = u(this, d);
                    f(a[0], a[1], a[2], a[3], -1)
                }
                this.setFontStyle("bold");
                var s = [];
                for (r = 0, o = this.tableHeaderRow.length; r < o; r += 1) this.setFillColor(200, 200, 200), n = this.tableHeaderRow[r], t && (this.margins.top = 13, n[1] = this.margins && this.margins.top || 0, s.push(n)), i = [].concat(n), this.cell.apply(this, i.concat(e));
                0 < s.length && this.setTableHeaderRow(s), this.setFontStyle("normal"), this.printingHeaderRow = !1
            }, function (e, t) {
                var n, i, o, a, s, l = function (e) {
                    return e = e || {}, this.isStrokeTransparent = e.isStrokeTransparent || !1, this.strokeOpacity = e.strokeOpacity || 1, this.strokeStyle = e.strokeStyle || "#000000", this.fillStyle = e.fillStyle || "#000000", this.isFillTransparent = e.isFillTransparent || !1, this.fillOpacity = e.fillOpacity || 1, this.font = e.font || "10px sans-serif", this.textBaseline = e.textBaseline || "alphabetic", this.textAlign = e.textAlign || "left", this.lineWidth = e.lineWidth || 1, this.lineJoin = e.lineJoin || "miter", this.lineCap = e.lineCap || "butt", this.path = e.path || [], this.transform = void 0 !== e.transform ? e.transform.clone() : new N, this.globalCompositeOperation = e.globalCompositeOperation || "normal", this.globalAlpha = e.globalAlpha || 1, this.clip_path = e.clip_path || [], this.currentPoint = e.currentPoint || new P, this.miterLimit = e.miterLimit || 10, this.lastPoint = e.lastPoint || new P, this.ignoreClearRect = "boolean" != typeof e.ignoreClearRect || e.ignoreClearRect, this
                };
                e.events.push(["initialized", function () {
                    this.context2d = new c(this), n = this.internal.f2, this.internal.f3, i = this.internal.getCoordinateString, o = this.internal.getVerticalCoordinateString, a = this.internal.getHorizontalCoordinate, s = this.internal.getVerticalCoordinate
                }]);
                var c = function (e) {
                    Object.defineProperty(this, "canvas", {
                        get: function () {
                            return {parentNode: !1, style: !1}
                        }
                    }), Object.defineProperty(this, "pdf", {
                        get: function () {
                            return e
                        }
                    });
                    var t = !1;
                    Object.defineProperty(this, "pageWrapXEnabled", {
                        get: function () {
                            return t
                        }, set: function (e) {
                            t = Boolean(e)
                        }
                    });
                    var n = !1;
                    Object.defineProperty(this, "pageWrapYEnabled", {
                        get: function () {
                            return n
                        }, set: function (e) {
                            n = Boolean(e)
                        }
                    });
                    var i = 0;
                    Object.defineProperty(this, "posX", {
                        get: function () {
                            return i
                        }, set: function (e) {
                            isNaN(e) || (i = e)
                        }
                    });
                    var r = 0;
                    Object.defineProperty(this, "posY", {
                        get: function () {
                            return r
                        }, set: function (e) {
                            isNaN(e) || (r = e)
                        }
                    });
                    var o = !1;
                    Object.defineProperty(this, "autoPaging", {
                        get: function () {
                            return o
                        }, set: function (e) {
                            o = Boolean(e)
                        }
                    });
                    var a = 0;
                    Object.defineProperty(this, "lastBreak", {
                        get: function () {
                            return a
                        }, set: function (e) {
                            a = e
                        }
                    });
                    var s = [];
                    Object.defineProperty(this, "pageBreaks", {
                        get: function () {
                            return s
                        }, set: function (e) {
                            s = e
                        }
                    });
                    var c = new l;
                    Object.defineProperty(this, "ctx", {
                        get: function () {
                            return c
                        }, set: function (e) {
                            e instanceof l && (c = e)
                        }
                    }), Object.defineProperty(this, "path", {
                        get: function () {
                            return c.path
                        }, set: function (e) {
                            c.path = e
                        }
                    });
                    var h = [];
                    Object.defineProperty(this, "ctxStack", {
                        get: function () {
                            return h
                        }, set: function (e) {
                            h = e
                        }
                    }), Object.defineProperty(this, "fillStyle", {
                        get: function () {
                            return this.ctx.fillStyle
                        }, set: function (e) {
                            var t;
                            t = u(e), this.ctx.fillStyle = t.style, this.ctx.isFillTransparent = 0 === t.a, this.ctx.fillOpacity = t.a, this.pdf.setFillColor(t.r, t.g, t.b, {a: t.a}), this.pdf.setTextColor(t.r, t.g, t.b, {a: t.a})
                        }
                    }), Object.defineProperty(this, "strokeStyle", {
                        get: function () {
                            return this.ctx.strokeStyle
                        }, set: function (e) {
                            var t = u(e);
                            this.ctx.strokeStyle = t.style, this.ctx.isStrokeTransparent = 0 === t.a, this.ctx.strokeOpacity = t.a, 0 === t.a ? this.pdf.setDrawColor(255, 255, 255) : (t.a, this.pdf.setDrawColor(t.r, t.g, t.b))
                        }
                    }), Object.defineProperty(this, "lineCap", {
                        get: function () {
                            return this.ctx.lineCap
                        }, set: function (e) {
                            -1 !== ["butt", "round", "square"].indexOf(e) && (this.ctx.lineCap = e, this.pdf.setLineCap(e))
                        }
                    }), Object.defineProperty(this, "lineWidth", {
                        get: function () {
                            return this.ctx.lineWidth
                        }, set: function (e) {
                            isNaN(e) || (this.ctx.lineWidth = e, this.pdf.setLineWidth(e))
                        }
                    }), Object.defineProperty(this, "lineJoin", {
                        get: function () {
                            return this.ctx.lineJoin
                        }, set: function (e) {
                            -1 !== ["bevel", "round", "miter"].indexOf(e) && (this.ctx.lineJoin = e, this.pdf.setLineJoin(e))
                        }
                    }), Object.defineProperty(this, "miterLimit", {
                        get: function () {
                            return this.ctx.miterLimit
                        }, set: function (e) {
                            isNaN(e) || (this.ctx.miterLimit = e, this.pdf.setMiterLimit(e))
                        }
                    }), Object.defineProperty(this, "textBaseline", {
                        get: function () {
                            return this.ctx.textBaseline
                        }, set: function (e) {
                            this.ctx.textBaseline = e
                        }
                    }), Object.defineProperty(this, "textAlign", {
                        get: function () {
                            return this.ctx.textAlign
                        }, set: function (e) {
                            -1 !== ["right", "end", "center", "left", "start"].indexOf(e) && (this.ctx.textAlign = e)
                        }
                    }), Object.defineProperty(this, "font", {
                        get: function () {
                            return this.ctx.font
                        }, set: function (e) {
                            var t;
                            if (this.ctx.font = e, null !== (t = /^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(e))) {
                                var n = t[1], i = (t[2], t[3]), r = t[4], o = t[5], a = t[6];
                                r = "px" === o ? Math.floor(parseFloat(r)) : "em" === o ? Math.floor(parseFloat(r) * this.pdf.getFontSize()) : Math.floor(parseFloat(r)), this.pdf.setFontSize(r);
                                var s = "";
                                ("bold" === i || 700 <= parseInt(i, 10) || "bold" === n) && (s = "bold"), "italic" === n && (s += "italic"), 0 === s.length && (s = "normal");
                                for (var l = "", c = a.toLowerCase().replace(/"|'/g, "").split(/\s*,\s*/), u = {
                                    arial: "Helvetica",
                                    verdana: "Helvetica",
                                    helvetica: "Helvetica",
                                    "sans-serif": "Helvetica",
                                    fixed: "Courier",
                                    monospace: "Courier",
                                    terminal: "Courier",
                                    courier: "Courier",
                                    times: "Times",
                                    cursive: "Times",
                                    fantasy: "Times",
                                    serif: "Times"
                                }, h = 0; h < c.length; h++) {
                                    if (void 0 !== this.pdf.internal.getFont(c[h], s, {
                                        noFallback: !0,
                                        disableWarning: !0
                                    })) {
                                        l = c[h];
                                        break
                                    }
                                    if ("bolditalic" === s && void 0 !== this.pdf.internal.getFont(c[h], "bold", {
                                        noFallback: !0,
                                        disableWarning: !0
                                    })) l = c[h], s = "bold"; else if (void 0 !== this.pdf.internal.getFont(c[h], "normal", {
                                        noFallback: !0,
                                        disableWarning: !0
                                    })) {
                                        l = c[h], s = "normal";
                                        break
                                    }
                                }
                                if ("" === l) for (h = 0; h < c.length; h++) if (u[c[h]]) {
                                    l = u[c[h]];
                                    break
                                }
                                l = "" === l ? "Times" : l, this.pdf.setFont(l, s)
                            }
                        }
                    }), Object.defineProperty(this, "globalCompositeOperation", {
                        get: function () {
                            return this.ctx.globalCompositeOperation
                        }, set: function (e) {
                            this.ctx.globalCompositeOperation = e
                        }
                    }), Object.defineProperty(this, "globalAlpha", {
                        get: function () {
                            return this.ctx.globalAlpha
                        }, set: function (e) {
                            this.ctx.globalAlpha = e
                        }
                    }), Object.defineProperty(this, "ignoreClearRect", {
                        get: function () {
                            return this.ctx.ignoreClearRect
                        }, set: function (e) {
                            this.ctx.ignoreClearRect = Boolean(e)
                        }
                    })
                };
                c.prototype.fill = function () {
                    m.call(this, "fill", !1)
                }, c.prototype.stroke = function () {
                    m.call(this, "stroke", !1)
                }, c.prototype.beginPath = function () {
                    this.path = [{type: "begin"}]
                }, c.prototype.moveTo = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw console.error("jsPDF.context2d.moveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.moveTo");
                    var n = this.ctx.transform.applyToPoint(new P(e, t));
                    this.path.push({type: "mt", x: n.x, y: n.y}), this.ctx.lastPoint = new P(e, t)
                }, c.prototype.closePath = function () {
                    var e = new P(0, 0), t = 0;
                    for (t = this.path.length - 1; -1 !== t; t--) if ("begin" === this.path[t].type && "object" === r(this.path[t + 1]) && "number" == typeof this.path[t + 1].x) {
                        e = new P(this.path[t + 1].x, this.path[t + 1].y), this.path.push({type: "lt", x: e.x, y: e.y});
                        break
                    }
                    "object" === r(this.path[t + 2]) && "number" == typeof this.path[t + 2].x && this.path.push(JSON.parse(JSON.stringify(this.path[t + 2]))), this.path.push({type: "close"}), this.ctx.lastPoint = new P(e.x, e.y)
                }, c.prototype.lineTo = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw console.error("jsPDF.context2d.lineTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.lineTo");
                    var n = this.ctx.transform.applyToPoint(new P(e, t));
                    this.path.push({type: "lt", x: n.x, y: n.y}), this.ctx.lastPoint = new P(n.x, n.y)
                }, c.prototype.clip = function () {
                    this.ctx.clip_path = JSON.parse(JSON.stringify(this.path)), m.call(this, null, !0)
                }, c.prototype.quadraticCurveTo = function (e, t, n, i) {
                    if (isNaN(n) || isNaN(i) || isNaN(e) || isNaN(t)) throw console.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo");
                    var r = this.ctx.transform.applyToPoint(new P(n, i)),
                        o = this.ctx.transform.applyToPoint(new P(e, t));
                    this.path.push({
                        type: "qct",
                        x1: o.x,
                        y1: o.y,
                        x: r.x,
                        y: r.y
                    }), this.ctx.lastPoint = new P(r.x, r.y)
                }, c.prototype.bezierCurveTo = function (e, t, n, i, r, o) {
                    if (isNaN(r) || isNaN(o) || isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i)) throw console.error("jsPDF.context2d.bezierCurveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo");
                    var a = this.ctx.transform.applyToPoint(new P(r, o)),
                        s = this.ctx.transform.applyToPoint(new P(e, t)),
                        l = this.ctx.transform.applyToPoint(new P(n, i));
                    this.path.push({
                        type: "bct",
                        x1: s.x,
                        y1: s.y,
                        x2: l.x,
                        y2: l.y,
                        x: a.x,
                        y: a.y
                    }), this.ctx.lastPoint = new P(a.x, a.y)
                }, c.prototype.arc = function (e, t, n, i, r, o) {
                    if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i) || isNaN(r)) throw console.error("jsPDF.context2d.arc: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.arc");
                    if (o = Boolean(o), !this.ctx.transform.isIdentity) {
                        var a = this.ctx.transform.applyToPoint(new P(e, t));
                        e = a.x, t = a.y;
                        var s = this.ctx.transform.applyToPoint(new P(0, n)),
                            l = this.ctx.transform.applyToPoint(new P(0, 0));
                        n = Math.sqrt(Math.pow(s.x - l.x, 2) + Math.pow(s.y - l.y, 2))
                    }
                    Math.abs(r - i) >= 2 * Math.PI && (i = 0, r = 2 * Math.PI), this.path.push({
                        type: "arc",
                        x: e,
                        y: t,
                        radius: n,
                        startAngle: i,
                        endAngle: r,
                        counterclockwise: o
                    })
                }, c.prototype.arcTo = function (e, t, n, i, r) {
                    throw new Error("arcTo not implemented.")
                }, c.prototype.rect = function (e, t, n, i) {
                    if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i)) throw console.error("jsPDF.context2d.rect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.rect");
                    this.moveTo(e, t), this.lineTo(e + n, t), this.lineTo(e + n, t + i), this.lineTo(e, t + i), this.lineTo(e, t), this.lineTo(e + n, t), this.lineTo(e, t)
                }, c.prototype.fillRect = function (e, t, n, i) {
                    if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i)) throw console.error("jsPDF.context2d.fillRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.fillRect");
                    if (!h.call(this)) {
                        var r = {};
                        "butt" !== this.lineCap && (r.lineCap = this.lineCap, this.lineCap = "butt"), "miter" !== this.lineJoin && (r.lineJoin = this.lineJoin, this.lineJoin = "miter"), this.beginPath(), this.rect(e, t, n, i), this.fill(), r.hasOwnProperty("lineCap") && (this.lineCap = r.lineCap), r.hasOwnProperty("lineJoin") && (this.lineJoin = r.lineJoin)
                    }
                }, c.prototype.strokeRect = function (e, t, n, i) {
                    if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i)) throw console.error("jsPDF.context2d.strokeRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.strokeRect");
                    d.call(this) || (this.beginPath(), this.rect(e, t, n, i), this.stroke())
                }, c.prototype.clearRect = function (e, t, n, i) {
                    if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i)) throw console.error("jsPDF.context2d.clearRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.clearRect");
                    this.ignoreClearRect || (this.fillStyle = "#ffffff", this.fillRect(e, t, n, i))
                }, c.prototype.save = function (e) {
                    e = "boolean" != typeof e || e;
                    for (var t = this.pdf.internal.getCurrentPageInfo().pageNumber, n = 0; n < this.pdf.internal.getNumberOfPages(); n++) this.pdf.setPage(n + 1), this.pdf.internal.out("q");
                    if (this.pdf.setPage(t), e) {
                        this.ctx.fontSize = this.pdf.internal.getFontSize();
                        var i = new l(this.ctx);
                        this.ctxStack.push(this.ctx), this.ctx = i
                    }
                }, c.prototype.restore = function (e) {
                    e = "boolean" != typeof e || e;
                    for (var t = this.pdf.internal.getCurrentPageInfo().pageNumber, n = 0; n < this.pdf.internal.getNumberOfPages(); n++) this.pdf.setPage(n + 1), this.pdf.internal.out("Q");
                    this.pdf.setPage(t), e && 0 !== this.ctxStack.length && (this.ctx = this.ctxStack.pop(), this.fillStyle = this.ctx.fillStyle, this.strokeStyle = this.ctx.strokeStyle, this.font = this.ctx.font, this.lineCap = this.ctx.lineCap, this.lineWidth = this.ctx.lineWidth, this.lineJoin = this.ctx.lineJoin)
                }, c.prototype.toDataURL = function () {
                    throw new Error("toDataUrl not implemented.")
                };
                var u = function (e) {
                    var t, n, i, r;
                    if (!0 === e.isCanvasGradient && (e = e.getColor()), !e) return {r: 0, g: 0, b: 0, a: 0, style: e};
                    if (/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(e)) r = i = n = t = 0; else {
                        var o = /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(e);
                        if (null !== o) t = parseInt(o[1]), n = parseInt(o[2]), i = parseInt(o[3]), r = 1; else if (null !== (o = /rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/.exec(e))) t = parseInt(o[1]), n = parseInt(o[2]), i = parseInt(o[3]), r = parseFloat(o[4]); else {
                            if (r = 1, "string" == typeof e && "#" !== e.charAt(0)) {
                                var a = new RGBColor(e);
                                e = a.ok ? a.toHex() : "#000000"
                            }
                            4 === e.length ? (t = e.substring(1, 2), t += t, n = e.substring(2, 3), n += n, i = e.substring(3, 4), i += i) : (t = e.substring(1, 3), n = e.substring(3, 5), i = e.substring(5, 7)), t = parseInt(t, 16), n = parseInt(n, 16), i = parseInt(i, 16)
                        }
                    }
                    return {r: t, g: n, b: i, a: r, style: e}
                }, h = function () {
                    return this.ctx.isFillTransparent || 0 == this.globalAlpha
                }, d = function () {
                    return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha)
                };
                c.prototype.fillText = function (e, t, n, i) {
                    if (isNaN(t) || isNaN(n) || "string" != typeof e) throw console.error("jsPDF.context2d.fillText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.fillText");
                    if (i = isNaN(i) ? void 0 : i, !h.call(this)) {
                        n = y.call(this, n);
                        var r = T(this.ctx.transform.rotation), o = this.ctx.transform.scaleX;
                        x.call(this, {text: e, x: t, y: n, scale: o, angle: r, align: this.textAlign, maxWidth: i})
                    }
                }, c.prototype.strokeText = function (e, t, n, i) {
                    if (isNaN(t) || isNaN(n) || "string" != typeof e) throw console.error("jsPDF.context2d.strokeText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.strokeText");
                    if (!d.call(this)) {
                        i = isNaN(i) ? void 0 : i, n = y.call(this, n);
                        var r = T(this.ctx.transform.rotation), o = this.ctx.transform.scaleX;
                        x.call(this, {
                            text: e,
                            x: t,
                            y: n,
                            scale: o,
                            renderingMode: "stroke",
                            angle: r,
                            align: this.textAlign,
                            maxWidth: i
                        })
                    }
                }, c.prototype.measureText = function (e) {
                    if ("string" != typeof e) throw console.error("jsPDF.context2d.measureText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.measureText");
                    var t = this.pdf, n = this.pdf.internal.scaleFactor, i = t.internal.getFontSize(),
                        r = t.getStringUnitWidth(e) * i / t.internal.scaleFactor;
                    return new function (e) {
                        var t = (e = e || {}).width || 0;
                        return Object.defineProperty(this, "width", {
                            get: function () {
                                return t
                            }
                        }), this
                    }({width: r *= Math.round(96 * n / 72 * 1e4) / 1e4})
                }, c.prototype.scale = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw console.error("jsPDF.context2d.scale: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.scale");
                    var n = new N(e, 0, 0, t, 0, 0);
                    this.ctx.transform = this.ctx.transform.multiply(n)
                }, c.prototype.rotate = function (e) {
                    if (isNaN(e)) throw console.error("jsPDF.context2d.rotate: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.rotate");
                    var t = new N(Math.cos(e), Math.sin(e), -Math.sin(e), Math.cos(e), 0, 0);
                    this.ctx.transform = this.ctx.transform.multiply(t)
                }, c.prototype.translate = function (e, t) {
                    if (isNaN(e) || isNaN(t)) throw console.error("jsPDF.context2d.translate: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.translate");
                    var n = new N(1, 0, 0, 1, e, t);
                    this.ctx.transform = this.ctx.transform.multiply(n)
                }, c.prototype.transform = function (e, t, n, i, r, o) {
                    if (isNaN(e) || isNaN(t) || isNaN(n) || isNaN(i) || isNaN(r) || isNaN(o)) throw console.error("jsPDF.context2d.transform: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.transform");
                    var a = new N(e, t, n, i, r, o);
                    this.ctx.transform = this.ctx.transform.multiply(a)
                }, c.prototype.setTransform = function (e, t, n, i, r, o) {
                    e = isNaN(e) ? 1 : e, t = isNaN(t) ? 0 : t, n = isNaN(n) ? 0 : n, i = isNaN(i) ? 1 : i, r = isNaN(r) ? 0 : r, o = isNaN(o) ? 0 : o, this.ctx.transform = new N(e, t, n, i, r, o)
                }, c.prototype.drawImage = function (e, t, n, i, r, o, a, s, l) {
                    var c = this.pdf.getImageProperties(e), u = 1, h = 1, d = 1, g = 1;
                    void 0 !== i && void 0 !== s && (d = s / i, g = l / r, u = c.width / i * s / i, h = c.height / r * l / r), void 0 === o && (o = t, a = n, n = t = 0), void 0 !== i && void 0 === s && (s = i, l = r), void 0 === i && void 0 === s && (s = c.width, l = c.height);
                    var m = this.ctx.transform.decompose(), y = T(m.rotate.shx);
                    m.scale.sx, m.scale.sy;
                    for (var b, C = new N, w = ((C = (C = (C = C.multiply(m.translate)).multiply(m.skew)).multiply(m.scale)).applyToPoint(new P(s, l)), C.applyToRectangle(new M(o - t * d, a - n * g, i * u, r * h))), I = f.call(this, w), x = [], A = 0; A < I.length; A += 1) -1 === x.indexOf(I[A]) && x.push(I[A]);
                    if (x.sort(), this.autoPaging) for (var _ = x[0], S = x[x.length - 1], k = _; k < S + 1; k++) {
                        if (this.pdf.setPage(k), 0 !== this.ctx.clip_path.length) {
                            var L = this.path;
                            b = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = p(b, this.posX, -1 * this.pdf.internal.pageSize.height * (k - 1) + this.posY), v.call(this, "fill", !0), this.path = L
                        }
                        var O = JSON.parse(JSON.stringify(w));
                        O = p([O], this.posX, -1 * this.pdf.internal.pageSize.height * (k - 1) + this.posY)[0], this.pdf.addImage(e, "jpg", O.x, O.y, O.w, O.h, null, null, y)
                    } else this.pdf.addImage(e, "jpg", w.x, w.y, w.w, w.h, null, null, y)
                };
                var f = function (e, t, n) {
                    var i = [];
                    switch (t = t || this.pdf.internal.pageSize.width, n = n || this.pdf.internal.pageSize.height, e.type) {
                        default:
                        case"mt":
                        case"lt":
                            i.push(Math.floor((e.y + this.posY) / n) + 1);
                            break;
                        case"arc":
                            i.push(Math.floor((e.y + this.posY - e.radius) / n) + 1), i.push(Math.floor((e.y + this.posY + e.radius) / n) + 1);
                            break;
                        case"qct":
                            var r = R(this.ctx.lastPoint.x, this.ctx.lastPoint.y, e.x1, e.y1, e.x, e.y);
                            i.push(Math.floor(r.y / n) + 1), i.push(Math.floor((r.y + r.h) / n) + 1);
                            break;
                        case"bct":
                            var o = E(this.ctx.lastPoint.x, this.ctx.lastPoint.y, e.x1, e.y1, e.x2, e.y2, e.x, e.y);
                            i.push(Math.floor(o.y / n) + 1), i.push(Math.floor((o.y + o.h) / n) + 1);
                            break;
                        case"rect":
                            i.push(Math.floor((e.y + this.posY) / n) + 1), i.push(Math.floor((e.y + e.h + this.posY) / n) + 1)
                    }
                    for (var a = 0; a < i.length; a += 1) for (; this.pdf.internal.getNumberOfPages() < i[a];) g.call(this);
                    return i
                }, g = function () {
                    var e = this.fillStyle, t = this.strokeStyle, n = this.font, i = this.lineCap, r = this.lineWidth,
                        o = this.lineJoin;
                    this.pdf.addPage(), this.fillStyle = e, this.strokeStyle = t, this.font = n, this.lineCap = i, this.lineWidth = r, this.lineJoin = o
                }, p = function (e, t, n) {
                    for (var i = 0; i < e.length; i++) switch (e[i].type) {
                        case"bct":
                            e[i].x2 += t, e[i].y2 += n;
                        case"qct":
                            e[i].x1 += t, e[i].y1 += n;
                        case"mt":
                        case"lt":
                        case"arc":
                        default:
                            e[i].x += t, e[i].y += n
                    }
                    return e
                }, m = function (e, t) {
                    for (var n, i, r = this.fillStyle, o = this.strokeStyle, a = (this.font, this.lineCap), s = this.lineWidth, l = this.lineJoin, c = JSON.parse(JSON.stringify(this.path)), u = JSON.parse(JSON.stringify(this.path)), h = [], d = 0; d < u.length; d++) if (void 0 !== u[d].x) for (var m = f.call(this, u[d]), y = 0; y < m.length; y += 1) -1 === h.indexOf(m[y]) && h.push(m[y]);
                    for (d = 0; d < h.length; d++) for (; this.pdf.internal.getNumberOfPages() < h[d];) g.call(this);
                    if (h.sort(), this.autoPaging) {
                        var b = h[0], C = h[h.length - 1];
                        for (d = b; d < C + 1; d++) {
                            if (this.pdf.setPage(d), this.fillStyle = r, this.strokeStyle = o, this.lineCap = a, this.lineWidth = s, this.lineJoin = l, 0 !== this.ctx.clip_path.length) {
                                var w = this.path;
                                n = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = p(n, this.posX, -1 * this.pdf.internal.pageSize.height * (d - 1) + this.posY), v.call(this, e, !0), this.path = w
                            }
                            i = JSON.parse(JSON.stringify(c)), this.path = p(i, this.posX, -1 * this.pdf.internal.pageSize.height * (d - 1) + this.posY), !1 !== t && 0 !== d || v.call(this, e, t)
                        }
                    } else v.call(this, e, t);
                    this.path = c
                }, v = function (e, t) {
                    if (("stroke" !== e || t || !d.call(this)) && ("stroke" === e || t || !h.call(this))) {
                        var n = [];
                        this.ctx.globalAlpha, this.ctx.fillOpacity < 1 && this.ctx.fillOpacity;
                        for (var i, r = this.path, o = 0; o < r.length; o++) {
                            var a = r[o];
                            switch (a.type) {
                                case"begin":
                                    n.push({begin: !0});
                                    break;
                                case"close":
                                    n.push({close: !0});
                                    break;
                                case"mt":
                                    n.push({start: a, deltas: [], abs: []});
                                    break;
                                case"lt":
                                    var s = n.length;
                                    if (!isNaN(r[o - 1].x)) {
                                        var l = [a.x - r[o - 1].x, a.y - r[o - 1].y];
                                        if (0 < s) for (; 0 <= s; s--) if (!0 !== n[s - 1].close && !0 !== n[s - 1].begin) {
                                            n[s - 1].deltas.push(l), n[s - 1].abs.push(a);
                                            break
                                        }
                                    }
                                    break;
                                case"bct":
                                    l = [a.x1 - r[o - 1].x, a.y1 - r[o - 1].y, a.x2 - r[o - 1].x, a.y2 - r[o - 1].y, a.x - r[o - 1].x, a.y - r[o - 1].y], n[n.length - 1].deltas.push(l);
                                    break;
                                case"qct":
                                    var c = r[o - 1].x + 2 / 3 * (a.x1 - r[o - 1].x),
                                        u = r[o - 1].y + 2 / 3 * (a.y1 - r[o - 1].y), f = a.x + 2 / 3 * (a.x1 - a.x),
                                        g = a.y + 2 / 3 * (a.y1 - a.y), p = a.x, m = a.y;
                                    l = [c - r[o - 1].x, u - r[o - 1].y, f - r[o - 1].x, g - r[o - 1].y, p - r[o - 1].x, m - r[o - 1].y], n[n.length - 1].deltas.push(l);
                                    break;
                                case"arc":
                                    n.push({
                                        deltas: [],
                                        abs: [],
                                        arc: !0
                                    }), Array.isArray(n[n.length - 1].abs) && n[n.length - 1].abs.push(a)
                            }
                        }
                        for (i = t ? null : "stroke" === e ? "stroke" : "fill", o = 0; o < n.length; o++) {
                            if (n[o].arc) for (var v = n[o].abs, y = 0; y < v.length; y++) {
                                var I = v[y];
                                if (void 0 !== I.startAngle) {
                                    var x = T(I.startAngle), S = T(I.endAngle), k = I.x, L = I.y;
                                    b.call(this, k, L, I.radius, x, S, I.counterclockwise, i, t)
                                } else A.call(this, I.x, I.y)
                            }
                            n[o].arc || !0 === n[o].close || !0 === n[o].begin || (k = n[o].start.x, L = n[o].start.y, _.call(this, n[o].deltas, k, L, null, null))
                        }
                        i && C.call(this, i), t && w.call(this)
                    }
                }, y = function (e) {
                    var t = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor,
                        n = t * (this.pdf.internal.getLineHeightFactor() - 1);
                    switch (this.ctx.textBaseline) {
                        case"bottom":
                            return e - n;
                        case"top":
                            return e + t - n;
                        case"hanging":
                            return e + t - 2 * n;
                        case"middle":
                            return e + t / 2 - n;
                        case"ideographic":
                            return e;
                        case"alphabetic":
                        default:
                            return e
                    }
                };
                c.prototype.createLinearGradient = function () {
                    var e = function () {
                    };
                    return e.colorStops = [], e.addColorStop = function (e, t) {
                        this.colorStops.push([e, t])
                    }, e.getColor = function () {
                        return 0 === this.colorStops.length ? "#000000" : this.colorStops[0][1]
                    }, e.isCanvasGradient = !0, e
                }, c.prototype.createPattern = function () {
                    return this.createLinearGradient()
                }, c.prototype.createRadialGradient = function () {
                    return this.createLinearGradient()
                };
                var b = function (e, t, n, i, r, o, a, s) {
                    this.pdf.internal.scaleFactor;
                    for (var l = O(i), c = O(r), u = k.call(this, n, l, c, o), h = 0; h < u.length; h++) {
                        var d = u[h];
                        0 === h && I.call(this, d.x1 + e, d.y1 + t), S.call(this, e, t, d.x2, d.y2, d.x3, d.y3, d.x4, d.y4)
                    }
                    s ? w.call(this) : C.call(this, a)
                }, C = function (e) {
                    switch (e) {
                        case"stroke":
                            this.pdf.internal.out("S");
                            break;
                        case"fill":
                            this.pdf.internal.out("f")
                    }
                }, w = function () {
                    this.pdf.clip()
                }, I = function (e, t) {
                    this.pdf.internal.out(i(e) + " " + o(t) + " m")
                }, x = function (e) {
                    var t;
                    switch (e.align) {
                        case"right":
                        case"end":
                            t = "right";
                            break;
                        case"center":
                            t = "center";
                            break;
                        case"left":
                        case"start":
                        default:
                            t = "left"
                    }
                    var n = this.ctx.transform.applyToPoint(new P(e.x, e.y)), i = this.ctx.transform.decompose(),
                        r = new N;
                    r = (r = (r = r.multiply(i.translate)).multiply(i.skew)).multiply(i.scale);
                    for (var o, a = this.pdf.getTextDimensions(e.text), s = this.ctx.transform.applyToRectangle(new M(e.x, e.y, a.w, a.h)), l = r.applyToRectangle(new M(e.x, e.y - a.h, a.w, a.h)), c = f.call(this, l), u = [], h = 0; h < c.length; h += 1) -1 === u.indexOf(c[h]) && u.push(c[h]);
                    if (u.sort(), !0 === this.autoPaging) for (var d = u[0], g = u[u.length - 1], m = d; m < g + 1; m++) {
                        if (this.pdf.setPage(m), 0 !== this.ctx.clip_path.length) {
                            var y = this.path;
                            o = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = p(o, this.posX, -1 * this.pdf.internal.pageSize.height * (m - 1) + this.posY), v.call(this, "fill", !0), this.path = y
                        }
                        var b = JSON.parse(JSON.stringify(s));
                        if (b = p([b], this.posX, -1 * this.pdf.internal.pageSize.height * (m - 1) + this.posY)[0], .01 <= e.scale) {
                            var C = this.pdf.internal.getFontSize();
                            this.pdf.setFontSize(C * e.scale)
                        }
                        this.pdf.text(e.text, b.x, b.y, {
                            angle: e.angle,
                            align: t,
                            renderingMode: e.renderingMode,
                            maxWidth: e.maxWidth
                        }), .01 <= e.scale && this.pdf.setFontSize(C)
                    } else .01 <= e.scale && (C = this.pdf.internal.getFontSize(), this.pdf.setFontSize(C * e.scale)), this.pdf.text(e.text, n.x + this.posX, n.y + this.posY, {
                        angle: e.angle,
                        align: t,
                        renderingMode: e.renderingMode,
                        maxWidth: e.maxWidth
                    }), .01 <= e.scale && this.pdf.setFontSize(C)
                }, A = function (e, t, n, r) {
                    n = n || 0, r = r || 0, this.pdf.internal.out(i(e + n) + " " + o(t + r) + " l")
                }, _ = function (e, t, n) {
                    return this.pdf.lines(e, t, n, null, null)
                }, S = function (e, t, i, r, o, l, c, u) {
                    this.pdf.internal.out([n(a(i + e)), n(s(r + t)), n(a(o + e)), n(s(l + t)), n(a(c + e)), n(s(u + t)), "c"].join(" "))
                }, k = function (e, t, n, i) {
                    var r = 2 * Math.PI, o = t;
                    (o < r || r < o) && (o %= r);
                    var a = n;
                    (a < r || r < a) && (a %= r);
                    for (var s = [], l = Math.PI / 2, c = i ? -1 : 1, u = t, h = Math.min(r, Math.abs(a - o)); 1e-5 < h;) {
                        var d = u + c * Math.min(h, l);
                        s.push(L.call(this, e, u, d)), h -= Math.abs(d - u), u = d
                    }
                    return s
                }, L = function (e, t, n) {
                    var i = (n - t) / 2, r = e * Math.cos(i), o = e * Math.sin(i), a = r, s = -o, l = a * a + s * s,
                        c = l + a * r + s * o, u = 4 / 3 * (Math.sqrt(2 * l * c) - c) / (a * o - s * r), h = a - u * s,
                        d = s + u * a, f = h, g = -d, p = i + t, m = Math.cos(p), v = Math.sin(p);
                    return {
                        x1: e * Math.cos(t),
                        y1: e * Math.sin(t),
                        x2: h * m - d * v,
                        y2: h * v + d * m,
                        x3: f * m - g * v,
                        y3: f * v + g * m,
                        x4: e * Math.cos(n),
                        y4: e * Math.sin(n)
                    }
                }, T = function (e) {
                    return 180 * e / Math.PI
                }, O = function (e) {
                    return e * Math.PI / 180
                }, R = function (e, t, n, i, r, o) {
                    var a = e + .5 * (n - e), s = t + .5 * (i - t), l = r + .5 * (n - r), c = o + .5 * (i - o),
                        u = Math.min(e, r, a, l), h = Math.max(e, r, a, l), d = Math.min(t, o, s, c),
                        f = Math.max(t, o, s, c);
                    return new M(u, d, h - u, f - d)
                }, E = function (e, t, n, i, r, o, a, s) {
                    for (var l, c, u, h, d, f, g, p, m, v, y, b, C, w = n - e, I = i - t, x = r - n, A = o - i, _ = a - r, S = s - o, k = 0; k < 41; k++) p = (f = (c = e + (l = k / 40) * w) + l * ((h = n + l * x) - c)) + l * (h + l * (r + l * _ - h) - f), m = (g = (u = t + l * I) + l * ((d = i + l * A) - u)) + l * (d + l * (o + l * S - d) - g), C = 0 == k ? (b = v = p, y = m) : (v = Math.min(v, p), y = Math.min(y, m), b = Math.max(b, p), Math.max(C, m));
                    return new M(Math.round(v), Math.round(y), Math.round(b - v), Math.round(C - y))
                }, P = function (e, t) {
                    var n = e || 0;
                    Object.defineProperty(this, "x", {
                        enumerable: !0, get: function () {
                            return n
                        }, set: function (e) {
                            isNaN(e) || (n = parseFloat(e))
                        }
                    });
                    var i = t || 0;
                    Object.defineProperty(this, "y", {
                        enumerable: !0, get: function () {
                            return i
                        }, set: function (e) {
                            isNaN(e) || (i = parseFloat(e))
                        }
                    });
                    var r = "pt";
                    return Object.defineProperty(this, "type", {
                        enumerable: !0, get: function () {
                            return r
                        }, set: function (e) {
                            r = e.toString()
                        }
                    }), this
                }, M = function (e, t, n, i) {
                    P.call(this, e, t), this.type = "rect";
                    var r = n || 0;
                    Object.defineProperty(this, "w", {
                        enumerable: !0, get: function () {
                            return r
                        }, set: function (e) {
                            isNaN(e) || (r = parseFloat(e))
                        }
                    });
                    var o = i || 0;
                    return Object.defineProperty(this, "h", {
                        enumerable: !0, get: function () {
                            return o
                        }, set: function (e) {
                            isNaN(e) || (o = parseFloat(e))
                        }
                    }), this
                }, N = function (e, t, n, i, r, o) {
                    var a = [];
                    return Object.defineProperty(this, "sx", {
                        get: function () {
                            return a[0]
                        }, set: function (e) {
                            a[0] = Math.round(1e5 * e) / 1e5
                        }
                    }), Object.defineProperty(this, "shy", {
                        get: function () {
                            return a[1]
                        }, set: function (e) {
                            a[1] = Math.round(1e5 * e) / 1e5
                        }
                    }), Object.defineProperty(this, "shx", {
                        get: function () {
                            return a[2]
                        }, set: function (e) {
                            a[2] = Math.round(1e5 * e) / 1e5
                        }
                    }), Object.defineProperty(this, "sy", {
                        get: function () {
                            return a[3]
                        }, set: function (e) {
                            a[3] = Math.round(1e5 * e) / 1e5
                        }
                    }), Object.defineProperty(this, "tx", {
                        get: function () {
                            return a[4]
                        }, set: function (e) {
                            a[4] = Math.round(1e5 * e) / 1e5
                        }
                    }), Object.defineProperty(this, "ty", {
                        get: function () {
                            return a[5]
                        }, set: function (e) {
                            a[5] = Math.round(1e5 * e) / 1e5
                        }
                    }), Object.defineProperty(this, "rotation", {
                        get: function () {
                            return Math.atan2(this.shx, this.sx)
                        }
                    }), Object.defineProperty(this, "scaleX", {
                        get: function () {
                            return this.decompose().scale.sx
                        }
                    }), Object.defineProperty(this, "scaleY", {
                        get: function () {
                            return this.decompose().scale.sy
                        }
                    }), Object.defineProperty(this, "isIdentity", {
                        get: function () {
                            return 1 === this.sx && 0 === this.shy && 0 === this.shx && 1 === this.sy && 0 === this.tx && 0 === this.ty
                        }
                    }), this.sx = isNaN(e) ? 1 : e, this.shy = isNaN(t) ? 0 : t, this.shx = isNaN(n) ? 0 : n, this.sy = isNaN(i) ? 1 : i, this.tx = isNaN(r) ? 0 : r, this.ty = isNaN(o) ? 0 : o, this
                };
                N.prototype.multiply = function (e) {
                    var t = e.sx * this.sx + e.shy * this.shx, n = e.sx * this.shy + e.shy * this.sy,
                        i = e.shx * this.sx + e.sy * this.shx, r = e.shx * this.shy + e.sy * this.sy,
                        o = e.tx * this.sx + e.ty * this.shx + this.tx, a = e.tx * this.shy + e.ty * this.sy + this.ty;
                    return new N(t, n, i, r, o, a)
                }, N.prototype.decompose = function () {
                    var e = this.sx, t = this.shy, n = this.shx, i = this.sy, r = this.tx, o = this.ty,
                        a = Math.sqrt(e * e + t * t), s = (e /= a) * n + (t /= a) * i;
                    n -= e * s, i -= t * s;
                    var l = Math.sqrt(n * n + i * i);
                    return s /= l, e * (i /= l) < t * (n /= l) && (e = -e, t = -t, s = -s, a = -a), {
                        scale: new N(a, 0, 0, l, 0, 0),
                        translate: new N(1, 0, 0, 1, r, o),
                        rotate: new N(e, t, -t, e, 0, 0),
                        skew: new N(1, 0, s, 1, 0, 0)
                    }
                }, N.prototype.applyToPoint = function (e) {
                    var t = e.x * this.sx + e.y * this.shx + this.tx, n = e.x * this.shy + e.y * this.sy + this.ty;
                    return new P(t, n)
                }, N.prototype.applyToRectangle = function (e) {
                    var t = this.applyToPoint(e), n = this.applyToPoint(new P(e.x + e.w, e.y + e.h));
                    return new M(t.x, t.y, n.x - t.x, n.y - t.y)
                }, N.prototype.clone = function () {
                    var e = this.sx, t = this.shy, n = this.shx, i = this.sy, r = this.tx, o = this.ty;
                    return new N(e, t, n, i, r, o)
                }
            }(ge.API, "undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")()), m = ge.API, v = function (e) {
                var t, n, i, r, o, a, s, l, c, u;
                for (/[^\x00-\xFF]/.test(e), n = [], i = 0, r = (e += t = "\0\0\0\0".slice(e.length % 4 || 4)).length; i < r; i += 4) 0 !== (o = (e.charCodeAt(i) << 24) + (e.charCodeAt(i + 1) << 16) + (e.charCodeAt(i + 2) << 8) + e.charCodeAt(i + 3)) ? (a = (o = ((o = ((o = ((o = (o - (u = o % 85)) / 85) - (c = o % 85)) / 85) - (l = o % 85)) / 85) - (s = o % 85)) / 85) % 85, n.push(a + 33, s + 33, l + 33, c + 33, u + 33)) : n.push(122);
                return function (e, n) {
                    for (var i = t.length; 0 < i; i--) e.pop()
                }(n), String.fromCharCode.apply(String, n) + "~>"
            }, y = function (e) {
                var t, n, i, r, o, a = String, s = "length", l = "charCodeAt", c = "slice", u = "replace";
                for (e[c](-2), e = e[c](0, -2)[u](/\s/g, "")[u]("z", "!!!!!"), i = [], r = 0, o = (e += t = "uuuuu"[c](e[s] % 5 || 5))[s]; r < o; r += 5) n = 52200625 * (e[l](r) - 33) + 614125 * (e[l](r + 1) - 33) + 7225 * (e[l](r + 2) - 33) + 85 * (e[l](r + 3) - 33) + (e[l](r + 4) - 33), i.push(255 & n >> 24, 255 & n >> 16, 255 & n >> 8, 255 & n);
                return function (e, n) {
                    for (var i = t[s]; 0 < i; i--) e.pop()
                }(i), a.fromCharCode.apply(a, i)
            }, b = function (e) {
                for (var t = "", n = 0; n < e.length; n += 1) t += ("0" + e.charCodeAt(n).toString(16)).slice(-2);
                return t + ">"
            }, C = function (e) {
                var t = new RegExp(/^([0-9A-Fa-f]{2})+$/);
                if (-1 !== (e = e.replace(/\s/g, "")).indexOf(">") && (e = e.substr(0, e.indexOf(">"))), e.length % 2 && (e += "0"), !1 === t.test(e)) return "";
                for (var n = "", i = 0; i < e.length; i += 2) n += String.fromCharCode("0x" + (e[i] + e[i + 1]));
                return n
            }, w = function (e, t) {
                t = Object.assign({predictor: 1, colors: 1, bitsPerComponent: 8, columns: 1}, t);
                for (var n, i, r = [], o = e.length; o--;) r[o] = e.charCodeAt(o);
                return n = m.adler32cs.from(e), (i = new Deflater(6)).append(new Uint8Array(r)), e = i.flush(), (r = new Uint8Array(e.length + 6)).set(new Uint8Array([120, 156])), r.set(e, 2), r.set(new Uint8Array([255 & n, n >> 8 & 255, n >> 16 & 255, n >> 24 & 255]), e.length + 2), String.fromCharCode.apply(null, r)
            }, m.processDataByFilters = function (e, t) {
                var n = 0, i = e || "", r = [];
                for ("string" == typeof (t = t || []) && (t = [t]), n = 0; n < t.length; n += 1) switch (t[n]) {
                    case"ASCII85Decode":
                    case"/ASCII85Decode":
                        i = y(i), r.push("/ASCII85Encode");
                        break;
                    case"ASCII85Encode":
                    case"/ASCII85Encode":
                        i = v(i), r.push("/ASCII85Decode");
                        break;
                    case"ASCIIHexDecode":
                    case"/ASCIIHexDecode":
                        i = C(i), r.push("/ASCIIHexEncode");
                        break;
                    case"ASCIIHexEncode":
                    case"/ASCIIHexEncode":
                        i = b(i), r.push("/ASCIIHexDecode");
                        break;
                    case"FlateEncode":
                    case"/FlateEncode":
                        i = w(i), r.push("/FlateDecode");
                        break;
                    default:
                        throw'The filter: "' + t[n] + '" is not implemented'
                }
                return {data: i, reverseChain: r.reverse().join(" ")}
            }, (I = ge.API).loadFile = function (e, t, n) {
                var i;
                t = t || !0, n = n || function () {
                };
                try {
                    i = function (e, t, n) {
                        var i = new XMLHttpRequest, r = [], o = 0, a = function (e) {
                            var t = e.length, n = String.fromCharCode;
                            for (o = 0; o < t; o += 1) r.push(n(255 & e.charCodeAt(o)));
                            return r.join("")
                        };
                        if (i.open("GET", e, !t), i.overrideMimeType("text/plain; charset=x-user-defined"), !1 === t && (i.onload = function () {
                            return a(this.responseText)
                        }), i.send(null), 200 === i.status) return t ? a(i.responseText) : void 0;
                        console.warn('Unable to load file "' + e + '"')
                    }(e, t)
                } catch (e) {
                    i = void 0
                }
                return i
            }, I.loadImageFile = I.loadFile, x = ge.API, A = "undefined" != typeof window && window || void 0 !== i && i, _ = function (e) {
                var t = r(e);
                return "undefined" === t ? "undefined" : "string" === t || e instanceof String ? "string" : "number" === t || e instanceof Number ? "number" : "function" === t || e instanceof Function ? "function" : e && e.constructor === Array ? "array" : e && 1 === e.nodeType ? "element" : "object" === t ? "object" : "unknown"
            }, S = function (e, t) {
                var n = document.createElement(e);
                if (t.className && (n.className = t.className), t.innerHTML) {
                    n.innerHTML = t.innerHTML;
                    for (var i = n.getElementsByTagName("script"), r = i.length; 0 < r--; null) i[r].parentNode.removeChild(i[r])
                }
                for (var o in t.style) n.style[o] = t.style[o];
                return n
            }, (((k = function e(t) {
                var n = Object.assign(e.convert(Promise.resolve()), JSON.parse(JSON.stringify(e.template))),
                    i = e.convert(Promise.resolve(), n);
                return (i = i.setProgress(1, e, 1, [e])).set(t)
            }).prototype = Object.create(Promise.prototype)).constructor = k).convert = function (e, t) {
                return e.__proto__ = t || k.prototype, e
            }, k.template = {
                prop: {
                    src: null,
                    container: null,
                    overlay: null,
                    canvas: null,
                    img: null,
                    pdf: null,
                    pageSize: null,
                    callback: function () {
                    }
                },
                progress: {val: 0, state: null, n: 0, stack: []},
                opt: {
                    filename: "file.pdf",
                    margin: [0, 0, 0, 0],
                    enableLinks: !0,
                    x: 0,
                    y: 0,
                    html2canvas: {},
                    jsPDF: {}
                }
            }, k.prototype.from = function (e, t) {
                return this.then((function () {
                    switch (t = t || function (e) {
                        switch (_(e)) {
                            case"string":
                                return "string";
                            case"element":
                                return "canvas" === e.nodeName.toLowerCase ? "canvas" : "element";
                            default:
                                return "unknown"
                        }
                    }(e)) {
                        case"string":
                            return this.set({src: S("div", {innerHTML: e})});
                        case"element":
                            return this.set({src: e});
                        case"canvas":
                            return this.set({canvas: e});
                        case"img":
                            return this.set({img: e});
                        default:
                            return this.error("Unknown source type.")
                    }
                }))
            }, k.prototype.to = function (e) {
                switch (e) {
                    case"container":
                        return this.toContainer();
                    case"canvas":
                        return this.toCanvas();
                    case"img":
                        return this.toImg();
                    case"pdf":
                        return this.toPdf();
                    default:
                        return this.error("Invalid target.")
                }
            }, k.prototype.toContainer = function () {
                return this.thenList([function () {
                    return this.prop.src || this.error("Cannot duplicate - no source HTML.")
                }, function () {
                    return this.prop.pageSize || this.setPageSize()
                }]).then((function () {
                    var e = {
                        position: "relative",
                        display: "inline-block",
                        width: Math.max(this.prop.src.clientWidth, this.prop.src.scrollWidth, this.prop.src.offsetWidth) + "px",
                        left: 0,
                        right: 0,
                        top: 0,
                        margin: "auto",
                        backgroundColor: "white"
                    }, t = function e(t, n) {
                        for (var i = 3 === t.nodeType ? document.createTextNode(t.nodeValue) : t.cloneNode(!1), r = t.firstChild; r; r = r.nextSibling) !0 !== n && 1 === r.nodeType && "SCRIPT" === r.nodeName || i.appendChild(e(r, n));
                        return 1 === t.nodeType && ("CANVAS" === t.nodeName ? (i.width = t.width, i.height = t.height, i.getContext("2d").drawImage(t, 0, 0)) : "TEXTAREA" !== t.nodeName && "SELECT" !== t.nodeName || (i.value = t.value), i.addEventListener("load", (function () {
                            i.scrollTop = t.scrollTop, i.scrollLeft = t.scrollLeft
                        }), !0)), i
                    }(this.prop.src, this.opt.html2canvas.javascriptEnabled);
                    "BODY" === t.tagName && (e.height = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) + "px"), this.prop.overlay = S("div", {
                        className: "html2pdf__overlay",
                        style: {
                            position: "fixed",
                            overflow: "hidden",
                            zIndex: 1e3,
                            left: "-100000px",
                            right: 0,
                            bottom: 0,
                            top: 0
                        }
                    }), this.prop.container = S("div", {
                        className: "html2pdf__container",
                        style: e
                    }), this.prop.container.appendChild(t), this.prop.container.firstChild.appendChild(S("div", {
                        style: {
                            clear: "both",
                            border: "0 none transparent",
                            margin: 0,
                            padding: 0,
                            height: 0
                        }
                    })), this.prop.container.style.float = "none", this.prop.overlay.appendChild(this.prop.container), document.body.appendChild(this.prop.overlay), this.prop.container.firstChild.style.position = "relative", this.prop.container.height = Math.max(this.prop.container.firstChild.clientHeight, this.prop.container.firstChild.scrollHeight, this.prop.container.firstChild.offsetHeight) + "px"
                }))
            }, k.prototype.toCanvas = function () {
                var e = [function () {
                    return document.body.contains(this.prop.container) || this.toContainer()
                }];
                return this.thenList(e).then((function () {
                    var e = Object.assign({}, this.opt.html2canvas);
                    if (delete e.onrendered, this.isHtml2CanvasLoaded()) return html2canvas(this.prop.container, e)
                })).then((function (e) {
                    (this.opt.html2canvas.onrendered || function () {
                    })(e), this.prop.canvas = e, document.body.removeChild(this.prop.overlay)
                }))
            }, k.prototype.toContext2d = function () {
                var e = [function () {
                    return document.body.contains(this.prop.container) || this.toContainer()
                }];
                return this.thenList(e).then((function () {
                    var e = this.opt.jsPDF, t = Object.assign({
                        async: !0,
                        allowTaint: !0,
                        backgroundColor: "#ffffff",
                        imageTimeout: 15e3,
                        logging: !0,
                        proxy: null,
                        removeContainer: !0,
                        foreignObjectRendering: !1,
                        useCORS: !1
                    }, this.opt.html2canvas);
                    if (delete t.onrendered, e.context2d.autoPaging = !0, e.context2d.posX = this.opt.x, e.context2d.posY = this.opt.y, t.windowHeight = t.windowHeight || 0, t.windowHeight = 0 == t.windowHeight ? Math.max(this.prop.container.clientHeight, this.prop.container.scrollHeight, this.prop.container.offsetHeight) : t.windowHeight, this.isHtml2CanvasLoaded()) return html2canvas(this.prop.container, t)
                })).then((function (e) {
                    (this.opt.html2canvas.onrendered || function () {
                    })(e), this.prop.canvas = e, document.body.removeChild(this.prop.overlay)
                }))
            }, k.prototype.toImg = function () {
                return this.thenList([function () {
                    return this.prop.canvas || this.toCanvas()
                }]).then((function () {
                    var e = this.prop.canvas.toDataURL("image/" + this.opt.image.type, this.opt.image.quality);
                    this.prop.img = document.createElement("img"), this.prop.img.src = e
                }))
            }, k.prototype.toPdf = function () {
                return this.thenList([function () {
                    return this.toContext2d()
                }]).then((function () {
                    this.prop.pdf = this.prop.pdf || this.opt.jsPDF
                }))
            }, k.prototype.output = function (e, t, n) {
                return "img" === (n = n || "pdf").toLowerCase() || "image" === n.toLowerCase() ? this.outputImg(e, t) : this.outputPdf(e, t)
            }, k.prototype.outputPdf = function (e, t) {
                return this.thenList([function () {
                    return this.prop.pdf || this.toPdf()
                }]).then((function () {
                    return this.prop.pdf.output(e, t)
                }))
            }, k.prototype.outputImg = function (e, t) {
                return this.thenList([function () {
                    return this.prop.img || this.toImg()
                }]).then((function () {
                    switch (e) {
                        case void 0:
                        case"img":
                            return this.prop.img;
                        case"datauristring":
                        case"dataurlstring":
                            return this.prop.img.src;
                        case"datauri":
                        case"dataurl":
                            return document.location.href = this.prop.img.src;
                        default:
                            throw'Image output type "' + e + '" is not supported.'
                    }
                }))
            }, k.prototype.isHtml2CanvasLoaded = function () {
                var e = void 0 !== A.html2canvas;
                return e || console.error("html2canvas not loaded."), e
            }, k.prototype.save = function (e) {
                if (this.isHtml2CanvasLoaded()) return this.thenList([function () {
                    return this.prop.pdf || this.toPdf()
                }]).set(e ? {filename: e} : null).then((function () {
                    this.prop.pdf.save(this.opt.filename)
                }))
            }, k.prototype.doCallback = function (e) {
                if (this.isHtml2CanvasLoaded()) return this.thenList([function () {
                    return this.prop.pdf || this.toPdf()
                }]).then((function () {
                    this.prop.callback(this.prop.pdf)
                }))
            }, k.prototype.set = function (e) {
                if ("object" !== _(e)) return this;
                var t = Object.keys(e || {}).map((function (t) {
                    if (t in k.template.prop) return function () {
                        this.prop[t] = e[t]
                    };
                    switch (t) {
                        case"margin":
                            return this.setMargin.bind(this, e.margin);
                        case"jsPDF":
                            return function () {
                                return this.opt.jsPDF = e.jsPDF, this.setPageSize()
                            };
                        case"pageSize":
                            return this.setPageSize.bind(this, e.pageSize);
                        default:
                            return function () {
                                this.opt[t] = e[t]
                            }
                    }
                }), this);
                return this.then((function () {
                    return this.thenList(t)
                }))
            }, k.prototype.get = function (e, t) {
                return this.then((function () {
                    var n = e in k.template.prop ? this.prop[e] : this.opt[e];
                    return t ? t(n) : n
                }))
            }, k.prototype.setMargin = function (e) {
                return this.then((function () {
                    switch (_(e)) {
                        case"number":
                            e = [e, e, e, e];
                        case"array":
                            if (2 === e.length && (e = [e[0], e[1], e[0], e[1]]), 4 === e.length) break;
                        default:
                            return this.error("Invalid margin array.")
                    }
                    this.opt.margin = e
                })).then(this.setPageSize)
            }, k.prototype.setPageSize = function (e) {
                function t(e, t) {
                    return Math.floor(e * t / 72 * 96)
                }

                return this.then((function () {
                    (e = e || ge.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner") || (e.inner = {
                        width: e.width - this.opt.margin[1] - this.opt.margin[3],
                        height: e.height - this.opt.margin[0] - this.opt.margin[2]
                    }, e.inner.px = {
                        width: t(e.inner.width, e.k),
                        height: t(e.inner.height, e.k)
                    }, e.inner.ratio = e.inner.height / e.inner.width), this.prop.pageSize = e
                }))
            }, k.prototype.setProgress = function (e, t, n, i) {
                return null != e && (this.progress.val = e), null != t && (this.progress.state = t), null != n && (this.progress.n = n), null != i && (this.progress.stack = i), this.progress.ratio = this.progress.val / this.progress.state, this
            }, k.prototype.updateProgress = function (e, t, n, i) {
                return this.setProgress(e ? this.progress.val + e : null, t || null, n ? this.progress.n + n : null, i ? this.progress.stack.concat(i) : null)
            }, k.prototype.then = function (e, t) {
                var n = this;
                return this.thenCore(e, t, (function (e, t) {
                    return n.updateProgress(null, null, 1, [e]), Promise.prototype.then.call(this, (function (t) {
                        return n.updateProgress(null, e), t
                    })).then(e, t).then((function (e) {
                        return n.updateProgress(1), e
                    }))
                }))
            }, k.prototype.thenCore = function (e, t, n) {
                n = n || Promise.prototype.then;
                var i = this;
                e && (e = e.bind(i)), t && (t = t.bind(i));
                var r = -1 !== Promise.toString().indexOf("[native code]") && "Promise" === Promise.name ? i : k.convert(Object.assign({}, i), Promise.prototype),
                    o = n.call(r, e, t);
                return k.convert(o, i.__proto__)
            }, k.prototype.thenExternal = function (e, t) {
                return Promise.prototype.then.call(this, e, t)
            }, k.prototype.thenList = function (e) {
                var t = this;
                return e.forEach((function (e) {
                    t = t.thenCore(e)
                })), t
            }, k.prototype.catch = function (e) {
                e && (e = e.bind(this));
                var t = Promise.prototype.catch.call(this, e);
                return k.convert(t, this)
            }, k.prototype.catchExternal = function (e) {
                return Promise.prototype.catch.call(this, e)
            }, k.prototype.error = function (e) {
                return this.then((function () {
                    throw new Error(e)
                }))
            }, k.prototype.using = k.prototype.set, k.prototype.saveAs = k.prototype.save, k.prototype.export = k.prototype.output, k.prototype.run = k.prototype.then, ge.getPageSize = function (e, t, n) {
                if ("object" === r(e)) {
                    var i = e;
                    e = i.orientation, t = i.unit || t, n = i.format || n
                }
                t = t || "mm", n = n || "a4", e = ("" + (e || "P")).toLowerCase();
                var o = ("" + n).toLowerCase(), a = {
                    a0: [2383.94, 3370.39],
                    a1: [1683.78, 2383.94],
                    a2: [1190.55, 1683.78],
                    a3: [841.89, 1190.55],
                    a4: [595.28, 841.89],
                    a5: [419.53, 595.28],
                    a6: [297.64, 419.53],
                    a7: [209.76, 297.64],
                    a8: [147.4, 209.76],
                    a9: [104.88, 147.4],
                    a10: [73.7, 104.88],
                    b0: [2834.65, 4008.19],
                    b1: [2004.09, 2834.65],
                    b2: [1417.32, 2004.09],
                    b3: [1000.63, 1417.32],
                    b4: [708.66, 1000.63],
                    b5: [498.9, 708.66],
                    b6: [354.33, 498.9],
                    b7: [249.45, 354.33],
                    b8: [175.75, 249.45],
                    b9: [124.72, 175.75],
                    b10: [87.87, 124.72],
                    c0: [2599.37, 3676.54],
                    c1: [1836.85, 2599.37],
                    c2: [1298.27, 1836.85],
                    c3: [918.43, 1298.27],
                    c4: [649.13, 918.43],
                    c5: [459.21, 649.13],
                    c6: [323.15, 459.21],
                    c7: [229.61, 323.15],
                    c8: [161.57, 229.61],
                    c9: [113.39, 161.57],
                    c10: [79.37, 113.39],
                    dl: [311.81, 623.62],
                    letter: [612, 792],
                    "government-letter": [576, 756],
                    legal: [612, 1008],
                    "junior-legal": [576, 360],
                    ledger: [1224, 792],
                    tabloid: [792, 1224],
                    "credit-card": [153, 243]
                };
                switch (t) {
                    case"pt":
                        var s = 1;
                        break;
                    case"mm":
                        s = 72 / 25.4;
                        break;
                    case"cm":
                        s = 72 / 2.54;
                        break;
                    case"in":
                        s = 72;
                        break;
                    case"px":
                        s = .75;
                        break;
                    case"pc":
                    case"em":
                        s = 12;
                        break;
                    case"ex":
                        s = 6;
                        break;
                    default:
                        throw"Invalid unit: " + t
                }
                if (a.hasOwnProperty(o)) var l = a[o][1] / s, c = a[o][0] / s; else try {
                    l = n[1], c = n[0]
                } catch (e) {
                    throw new Error("Invalid format: " + n)
                }
                if ("p" === e || "portrait" === e) {
                    if (e = "p", l < c) {
                        var u = c;
                        c = l, l = u
                    }
                } else {
                    if ("l" !== e && "landscape" !== e) throw"Invalid orientation: " + e;
                    e = "l", c < l && (u = c, c = l, l = u)
                }
                return {width: c, height: l, unit: t, k: s}
            }, x.html = function (e, t) {
                (t = t || {}).callback = t.callback || function () {
                }, t.html2canvas = t.html2canvas || {}, t.html2canvas.canvas = t.html2canvas.canvas || this.canvas, t.jsPDF = t.jsPDF || this, t.jsPDF;
                var n = new k(t);
                return t.worker ? n : n.from(e).doCallback()
            }, ge.API.addJS = function (e) {
                return O = e, this.internal.events.subscribe("postPutResources", (function (e) {
                    L = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) " + (L + 1) + " 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), T = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS (" + O + ")"), this.internal.out(">>"), this.internal.out("endobj")
                })), this.internal.events.subscribe("putCatalog", (function () {
                    void 0 !== L && void 0 !== T && this.internal.out("/Names <</JavaScript " + L + " 0 R>>")
                })), this
            },
                /**
                 * @license
                 * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
                 *
                 * Licensed under the MIT License.
                 * http://opensource.org/licenses/mit-license
                 */(R = ge.API).events.push(["postPutResources", function () {
                var e = this, t = /^(\d+) 0 obj$/;
                if (0 < this.outline.root.children.length) for (var n = e.outline.render().split(/\r\n/), i = 0; i < n.length; i++) {
                    var r = n[i], o = t.exec(r);
                    if (null != o) {
                        var a = o[1];
                        e.internal.newObjectDeferredBegin(a, !1)
                    }
                    e.internal.write(r)
                }
                if (this.outline.createNamedDestinations) {
                    var s = this.internal.pages.length, l = [];
                    for (i = 0; i < s; i++) {
                        var c = e.internal.newObject();
                        l.push(c);
                        var u = e.internal.getPageInfo(i + 1);
                        e.internal.write("<< /D[" + u.objId + " 0 R /XYZ null null null]>> endobj")
                    }
                    var h = e.internal.newObject();
                    for (e.internal.write("<< /Names [ "), i = 0; i < l.length; i++) e.internal.write("(page_" + (i + 1) + ")" + l[i] + " 0 R");
                    e.internal.write(" ] >>", "endobj"), e.internal.newObject(), e.internal.write("<< /Dests " + h + " 0 R"), e.internal.write(">>", "endobj")
                }
            }]), R.events.push(["putCatalog", function () {
                0 < this.outline.root.children.length && (this.internal.write("/Outlines", this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations && this.internal.write("/Names " + namesOid + " 0 R"))
            }]), R.events.push(["initialized", function () {
                var e = this;
                e.outline = {createNamedDestinations: !1, root: {children: []}}, e.outline.add = function (e, t, n) {
                    var i = {title: t, options: n, children: []};
                    return null == e && (e = this.root), e.children.push(i), i
                }, e.outline.render = function () {
                    return this.ctx = {}, this.ctx.val = "", this.ctx.pdf = e, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val
                }, e.outline.genIds_r = function (t) {
                    t.id = e.internal.newObjectDeferred();
                    for (var n = 0; n < t.children.length; n++) this.genIds_r(t.children[n])
                }, e.outline.renderRoot = function (e) {
                    this.objStart(e), this.line("/Type /Outlines"), 0 < e.children.length && (this.line("/First " + this.makeRef(e.children[0])), this.line("/Last " + this.makeRef(e.children[e.children.length - 1]))), this.line("/Count " + this.count_r({count: 0}, e)), this.objEnd()
                }, e.outline.renderItems = function (t) {
                    this.ctx.pdf.internal.getCoordinateString;
                    for (var n = this.ctx.pdf.internal.getVerticalCoordinateString, i = 0; i < t.children.length; i++) {
                        var r = t.children[i];
                        this.objStart(r), this.line("/Title " + this.makeString(r.title)), this.line("/Parent " + this.makeRef(t)), 0 < i && this.line("/Prev " + this.makeRef(t.children[i - 1])), i < t.children.length - 1 && this.line("/Next " + this.makeRef(t.children[i + 1])), 0 < r.children.length && (this.line("/First " + this.makeRef(r.children[0])), this.line("/Last " + this.makeRef(r.children[r.children.length - 1])));
                        var o = this.count = this.count_r({count: 0}, r);
                        if (0 < o && this.line("/Count " + o), r.options && r.options.pageNumber) {
                            var a = e.internal.getPageInfo(r.options.pageNumber);
                            this.line("/Dest [" + a.objId + " 0 R /XYZ 0 " + n(0) + " 0]")
                        }
                        this.objEnd()
                    }
                    for (i = 0; i < t.children.length; i++) r = t.children[i], this.renderItems(r)
                }, e.outline.line = function (e) {
                    this.ctx.val += e + "\r\n"
                }, e.outline.makeRef = function (e) {
                    return e.id + " 0 R"
                }, e.outline.makeString = function (t) {
                    return "(" + e.internal.pdfEscape(t) + ")"
                }, e.outline.objStart = function (e) {
                    this.ctx.val += "\r\n" + e.id + " 0 obj\r\n<<\r\n"
                }, e.outline.objEnd = function (e) {
                    this.ctx.val += ">> \r\nendobj\r\n"
                }, e.outline.count_r = function (e, t) {
                    for (var n = 0; n < t.children.length; n++) e.count++, this.count_r(e, t.children[n]);
                    return e.count
                }
            }]),
                /**
                 * @license
                 *
                 * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
                 *
                 *
                 * ====================================================================
                 */
                E = ge.API, P = function () {
                var e = "function" == typeof Deflater;
                if (!e) throw new Error("requires deflate.js for compression");
                return e
            }, M = function (e, t, n, i) {
                var r = 5, o = H;
                switch (i) {
                    case E.image_compression.FAST:
                        r = 3, o = F;
                        break;
                    case E.image_compression.MEDIUM:
                        r = 6, o = W;
                        break;
                    case E.image_compression.SLOW:
                        r = 9, o = V
                }
                e = B(e, t, n, o);
                var a = new Uint8Array(N(r)), s = D(e), l = new Deflater(r), c = l.append(e), u = l.flush(),
                    h = a.length + c.length + u.length, d = new Uint8Array(h + 4);
                return d.set(a), d.set(c, a.length), d.set(u, a.length + c.length), d[h++] = s >>> 24 & 255, d[h++] = s >>> 16 & 255, d[h++] = s >>> 8 & 255, d[h++] = 255 & s, E.arrayBufferToBinaryString(d)
            }, N = function (e, t) {
                var n = Math.LOG2E * Math.log(32768) - 8 << 4 | 8, i = n << 8;
                return i |= Math.min(3, (t - 1 & 255) >> 1) << 6, i |= 0, [n, 255 & (i += 31 - i % 31)]
            }, D = function (e, t) {
                for (var n, i = 1, r = 0, o = e.length, a = 0; 0 < o;) {
                    for (o -= n = t < o ? t : o; r += i += e[a++], --n;) ;
                    i %= 65521, r %= 65521
                }
                return (r << 16 | i) >>> 0
            }, B = function (e, t, n, i) {
                for (var r, o, a, s = e.length / t, l = new Uint8Array(e.length + s), c = z(), u = 0; u < s; u++) {
                    if (a = u * t, r = e.subarray(a, a + t), i) l.set(i(r, n, o), a + u); else {
                        for (var h = 0, d = c.length, f = []; h < d; h++) f[h] = c[h](r, n, o);
                        var g = Z(f.concat());
                        l.set(f[g], a + u)
                    }
                    o = r
                }
                return l
            }, j = function (e, t, n) {
                var i = Array.apply([], e);
                return i.unshift(0), i
            }, F = function (e, t, n) {
                var i, r = [], o = 0, a = e.length;
                for (r[0] = 1; o < a; o++) i = e[o - t] || 0, r[o + 1] = e[o] - i + 256 & 255;
                return r
            }, H = function (e, t, n) {
                var i, r = [], o = 0, a = e.length;
                for (r[0] = 2; o < a; o++) i = n && n[o] || 0, r[o + 1] = e[o] - i + 256 & 255;
                return r
            }, W = function (e, t, n) {
                var i, r, o = [], a = 0, s = e.length;
                for (o[0] = 3; a < s; a++) i = e[a - t] || 0, r = n && n[a] || 0, o[a + 1] = e[a] + 256 - (i + r >>> 1) & 255;
                return o
            }, V = function (e, t, n) {
                var i, r, o, a, s = [], l = 0, c = e.length;
                for (s[0] = 4; l < c; l++) i = e[l - t] || 0, r = n && n[l] || 0, o = n && n[l - t] || 0, a = G(i, r, o), s[l + 1] = e[l] - a + 256 & 255;
                return s
            }, G = function (e, t, n) {
                var i = e + t - n, r = Math.abs(i - e), o = Math.abs(i - t), a = Math.abs(i - n);
                return r <= o && r <= a ? e : o <= a ? t : n
            }, z = function () {
                return [j, F, H, W, V]
            }, Z = function (e) {
                for (var t, n, i, r = 0, o = e.length; r < o;) ((t = $(e[r].slice(1))) < n || !n) && (n = t, i = r), r++;
                return i
            }, $ = function (e) {
                for (var t = 0, n = e.length, i = 0; t < n;) i += Math.abs(e[t++]);
                return i
            }, E.processPNG = function (e, t, n, i, r) {
                var o, a, s, l, c, u, h = this.color_spaces.DEVICE_RGB, d = this.decode.FLATE_DECODE, f = 8;
                if (this.isArrayBuffer(e) && (e = new Uint8Array(e)), this.isArrayBufferView(e)) {
                    if ("function" != typeof PNG || "function" != typeof De) throw new Error("PNG support requires png.js and zlib.js");
                    if (e = (o = new PNG(e)).imgData, f = o.bits, h = o.colorSpace, l = o.colors, -1 !== [4, 6].indexOf(o.colorType)) {
                        if (8 === o.bits) for (var g, p = (S = 32 == o.pixelBitlength ? new Uint32Array(o.decodePixels().buffer) : 16 == o.pixelBitlength ? new Uint16Array(o.decodePixels().buffer) : new Uint8Array(o.decodePixels().buffer)).length, m = new Uint8Array(p * o.colors), v = new Uint8Array(p), y = o.pixelBitlength - o.bits, b = 0, C = 0; b < p; b++) {
                            for (w = S[b], g = 0; g < y;) m[C++] = w >>> g & 255, g += o.bits;
                            v[b] = w >>> g & 255
                        }
                        if (16 === o.bits) {
                            p = (S = new Uint32Array(o.decodePixels().buffer)).length, m = new Uint8Array(p * (32 / o.pixelBitlength) * o.colors), v = new Uint8Array(p * (32 / o.pixelBitlength));
                            for (var w, I = 1 < o.colors, x = C = b = 0; b < p;) w = S[b++], m[C++] = w >>> 0 & 255, I && (m[C++] = w >>> 16 & 255, w = S[b++], m[C++] = w >>> 0 & 255), v[x++] = w >>> 16 & 255;
                            f = 8
                        }
                        i !== E.image_compression.NONE && P() ? (e = M(m, o.width * o.colors, o.colors, i), u = M(v, o.width, 1, i)) : (e = m, u = v, d = null)
                    }
                    if (3 === o.colorType && (h = this.color_spaces.INDEXED, c = o.palette, o.transparency.indexed)) {
                        var A = o.transparency.indexed, _ = 0;
                        for (b = 0, p = A.length; b < p; ++b) _ += A[b];
                        if ((_ /= 255) == p - 1 && -1 !== A.indexOf(0)) s = [A.indexOf(0)]; else if (_ !== p) {
                            var S = o.decodePixels();
                            for (v = new Uint8Array(S.length), b = 0, p = S.length; b < p; b++) v[b] = A[S[b]];
                            u = M(v, o.width, 1)
                        }
                    }
                    var k = function (e) {
                        var t;
                        switch (e) {
                            case E.image_compression.FAST:
                                t = 11;
                                break;
                            case E.image_compression.MEDIUM:
                                t = 13;
                                break;
                            case E.image_compression.SLOW:
                                t = 14;
                                break;
                            default:
                                t = 12
                        }
                        return t
                    }(i);
                    return a = d === this.decode.FLATE_DECODE ? "/Predictor " + k + " /Colors " + l + " /BitsPerComponent " + f + " /Columns " + o.width : "/Colors " + l + " /BitsPerComponent " + f + " /Columns " + o.width, (this.isArrayBuffer(e) || this.isArrayBufferView(e)) && (e = this.arrayBufferToBinaryString(e)), (u && this.isArrayBuffer(u) || this.isArrayBufferView(u)) && (u = this.arrayBufferToBinaryString(u)), this.createImageInfo(e, o.width, o.height, h, f, d, t, n, a, s, c, u, k)
                }
                throw new Error("Unsupported PNG image data, try using JPEG instead.")
            },
                /**
                 * @license
                 * Copyright (c) 2017 Aras Abbasi
                 *
                 * Licensed under the MIT License.
                 * http://opensource.org/licenses/mit-license
                 */(K = ge.API).processGIF89A = function (e, t, n, i, r) {
                var o = new Re(e), a = o.width, s = o.height, l = [];
                o.decodeAndBlitFrameRGBA(0, l);
                var c = {data: l, width: a, height: s}, u = new Pe(100).encode(c, 100);
                return K.processJPEG.call(this, u, t, n, i)
            }, K.processGIF87A = K.processGIF89A,(X = ge.API).processBMP = function (e, t, n, i, r) {
                var o = new Me(e, !1), a = o.width, s = o.height, l = {data: o.getData(), width: a, height: s},
                    c = new Pe(100).encode(l, 100);
                return X.processJPEG.call(this, c, t, n, i)
            },ge.API.setLanguage = function (e) {
                return void 0 === this.internal.languageSettings && (this.internal.languageSettings = {}, this.internal.languageSettings.isSubscribed = !1), void 0 !== {
                    af: "Afrikaans",
                    sq: "Albanian",
                    ar: "Arabic (Standard)",
                    "ar-DZ": "Arabic (Algeria)",
                    "ar-BH": "Arabic (Bahrain)",
                    "ar-EG": "Arabic (Egypt)",
                    "ar-IQ": "Arabic (Iraq)",
                    "ar-JO": "Arabic (Jordan)",
                    "ar-KW": "Arabic (Kuwait)",
                    "ar-LB": "Arabic (Lebanon)",
                    "ar-LY": "Arabic (Libya)",
                    "ar-MA": "Arabic (Morocco)",
                    "ar-OM": "Arabic (Oman)",
                    "ar-QA": "Arabic (Qatar)",
                    "ar-SA": "Arabic (Saudi Arabia)",
                    "ar-SY": "Arabic (Syria)",
                    "ar-TN": "Arabic (Tunisia)",
                    "ar-AE": "Arabic (U.A.E.)",
                    "ar-YE": "Arabic (Yemen)",
                    an: "Aragonese",
                    hy: "Armenian",
                    as: "Assamese",
                    ast: "Asturian",
                    az: "Azerbaijani",
                    eu: "Basque",
                    be: "Belarusian",
                    bn: "Bengali",
                    bs: "Bosnian",
                    br: "Breton",
                    bg: "Bulgarian",
                    my: "Burmese",
                    ca: "Catalan",
                    ch: "Chamorro",
                    ce: "Chechen",
                    zh: "Chinese",
                    "zh-HK": "Chinese (Hong Kong)",
                    "zh-CN": "Chinese (PRC)",
                    "zh-SG": "Chinese (Singapore)",
                    "zh-TW": "Chinese (Taiwan)",
                    cv: "Chuvash",
                    co: "Corsican",
                    cr: "Cree",
                    hr: "Croatian",
                    cs: "Czech",
                    da: "Danish",
                    nl: "Dutch (Standard)",
                    "nl-BE": "Dutch (Belgian)",
                    en: "English",
                    "en-AU": "English (Australia)",
                    "en-BZ": "English (Belize)",
                    "en-CA": "English (Canada)",
                    "en-IE": "English (Ireland)",
                    "en-JM": "English (Jamaica)",
                    "en-NZ": "English (New Zealand)",
                    "en-PH": "English (Philippines)",
                    "en-ZA": "English (South Africa)",
                    "en-TT": "English (Trinidad & Tobago)",
                    "en-GB": "English (United Kingdom)",
                    "en-US": "English (United States)",
                    "en-ZW": "English (Zimbabwe)",
                    eo: "Esperanto",
                    et: "Estonian",
                    fo: "Faeroese",
                    fj: "Fijian",
                    fi: "Finnish",
                    fr: "French (Standard)",
                    "fr-BE": "French (Belgium)",
                    "fr-CA": "French (Canada)",
                    "fr-FR": "French (France)",
                    "fr-LU": "French (Luxembourg)",
                    "fr-MC": "French (Monaco)",
                    "fr-CH": "French (Switzerland)",
                    fy: "Frisian",
                    fur: "Friulian",
                    gd: "Gaelic (Scots)",
                    "gd-IE": "Gaelic (Irish)",
                    gl: "Galacian",
                    ka: "Georgian",
                    de: "German (Standard)",
                    "de-AT": "German (Austria)",
                    "de-DE": "German (Germany)",
                    "de-LI": "German (Liechtenstein)",
                    "de-LU": "German (Luxembourg)",
                    "de-CH": "German (Switzerland)",
                    el: "Greek",
                    gu: "Gujurati",
                    ht: "Haitian",
                    he: "Hebrew",
                    hi: "Hindi",
                    hu: "Hungarian",
                    is: "Icelandic",
                    id: "Indonesian",
                    iu: "Inuktitut",
                    ga: "Irish",
                    it: "Italian (Standard)",
                    "it-CH": "Italian (Switzerland)",
                    ja: "Japanese",
                    kn: "Kannada",
                    ks: "Kashmiri",
                    kk: "Kazakh",
                    km: "Khmer",
                    ky: "Kirghiz",
                    tlh: "Klingon",
                    ko: "Korean",
                    "ko-KP": "Korean (North Korea)",
                    "ko-KR": "Korean (South Korea)",
                    la: "Latin",
                    lv: "Latvian",
                    lt: "Lithuanian",
                    lb: "Luxembourgish",
                    mk: "FYRO Macedonian",
                    ms: "Malay",
                    ml: "Malayalam",
                    mt: "Maltese",
                    mi: "Maori",
                    mr: "Marathi",
                    mo: "Moldavian",
                    nv: "Navajo",
                    ng: "Ndonga",
                    ne: "Nepali",
                    no: "Norwegian",
                    nb: "Norwegian (Bokmal)",
                    nn: "Norwegian (Nynorsk)",
                    oc: "Occitan",
                    or: "Oriya",
                    om: "Oromo",
                    fa: "Persian",
                    "fa-IR": "Persian/Iran",
                    pl: "Polish",
                    pt: "Portuguese",
                    "pt-BR": "Portuguese (Brazil)",
                    pa: "Punjabi",
                    "pa-IN": "Punjabi (India)",
                    "pa-PK": "Punjabi (Pakistan)",
                    qu: "Quechua",
                    rm: "Rhaeto-Romanic",
                    ro: "Romanian",
                    "ro-MO": "Romanian (Moldavia)",
                    ru: "Russian",
                    "ru-MO": "Russian (Moldavia)",
                    sz: "Sami (Lappish)",
                    sg: "Sango",
                    sa: "Sanskrit",
                    sc: "Sardinian",
                    sd: "Sindhi",
                    si: "Singhalese",
                    sr: "Serbian",
                    sk: "Slovak",
                    sl: "Slovenian",
                    so: "Somani",
                    sb: "Sorbian",
                    es: "Spanish",
                    "es-AR": "Spanish (Argentina)",
                    "es-BO": "Spanish (Bolivia)",
                    "es-CL": "Spanish (Chile)",
                    "es-CO": "Spanish (Colombia)",
                    "es-CR": "Spanish (Costa Rica)",
                    "es-DO": "Spanish (Dominican Republic)",
                    "es-EC": "Spanish (Ecuador)",
                    "es-SV": "Spanish (El Salvador)",
                    "es-GT": "Spanish (Guatemala)",
                    "es-HN": "Spanish (Honduras)",
                    "es-MX": "Spanish (Mexico)",
                    "es-NI": "Spanish (Nicaragua)",
                    "es-PA": "Spanish (Panama)",
                    "es-PY": "Spanish (Paraguay)",
                    "es-PE": "Spanish (Peru)",
                    "es-PR": "Spanish (Puerto Rico)",
                    "es-ES": "Spanish (Spain)",
                    "es-UY": "Spanish (Uruguay)",
                    "es-VE": "Spanish (Venezuela)",
                    sx: "Sutu",
                    sw: "Swahili",
                    sv: "Swedish",
                    "sv-FI": "Swedish (Finland)",
                    "sv-SV": "Swedish (Sweden)",
                    ta: "Tamil",
                    tt: "Tatar",
                    te: "Teluga",
                    th: "Thai",
                    tig: "Tigre",
                    ts: "Tsonga",
                    tn: "Tswana",
                    tr: "Turkish",
                    tk: "Turkmen",
                    uk: "Ukrainian",
                    hsb: "Upper Sorbian",
                    ur: "Urdu",
                    ve: "Venda",
                    vi: "Vietnamese",
                    vo: "Volapuk",
                    wa: "Walloon",
                    cy: "Welsh",
                    xh: "Xhosa",
                    ji: "Yiddish",
                    zu: "Zulu"
                }[e] && (this.internal.languageSettings.languageCode = e, !1 === this.internal.languageSettings.isSubscribed && (this.internal.events.subscribe("putCatalog", (function () {
                    this.internal.write("/Lang (" + this.internal.languageSettings.languageCode + ")")
                })), this.internal.languageSettings.isSubscribed = !0)), this
                /** @license
                 * MIT license.
                 * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
                 *               2014 Diego Casorran, https://github.com/diegocr
                 *
                 *
                 * ====================================================================
                 */
            },Y = ge.API,U = Y.getCharWidthsArray = function (e, t) {
                var n, i, r, o = (t = t || {}).font || this.internal.getFont(),
                    a = t.fontSize || this.internal.getFontSize(), s = t.charSpace || this.internal.getCharSpace(),
                    l = t.widths ? t.widths : o.metadata.Unicode.widths, c = l.fof ? l.fof : 1,
                    u = t.kerning ? t.kerning : o.metadata.Unicode.kerning, h = u.fof ? u.fof : 1, d = 0, f = l[0] || c,
                    g = [];
                for (n = 0, i = e.length; n < i; n++) r = e.charCodeAt(n), "function" == typeof o.metadata.widthOfString ? g.push((o.metadata.widthOfGlyph(o.metadata.characterToGlyph(r)) + s * (1e3 / a) || 0) / 1e3) : g.push((l[r] || f) / c + (u[r] && u[r][d] || 0) / h), d = r;
                return g
            },J = Y.getArraySum = function (e) {
                for (var t = e.length, n = 0; t;) n += e[--t];
                return n
            },q = Y.getStringUnitWidth = function (e, t) {
                var n = (t = t || {}).fontSize || this.internal.getFontSize(), i = t.font || this.internal.getFont(),
                    r = t.charSpace || this.internal.getCharSpace();
                return "function" == typeof i.metadata.widthOfString ? i.metadata.widthOfString(e, n, r) / n : J(U.apply(this, arguments))
            },Q = function (e, t, n, i) {
                for (var r = [], o = 0, a = e.length, s = 0; o !== a && s + t[o] < n;) s += t[o], o++;
                r.push(e.slice(0, o));
                var l = o;
                for (s = 0; o !== a;) s + t[o] > i && (r.push(e.slice(l, o)), s = 0, l = o), s += t[o], o++;
                return l !== o && r.push(e.slice(l, o)), r
            },ee = function (e, t, n) {
                n || (n = {});
                var i, r, o, a, s, l, c = [], u = [c], h = n.textIndent || 0, d = 0, f = 0, g = e.split(" "),
                    p = U.apply(this, [" ", n])[0];
                if (l = -1 === n.lineIndent ? g[0].length + 2 : n.lineIndent || 0) {
                    var m = Array(l).join(" "), v = [];
                    g.map((function (e) {
                        1 < (e = e.split(/\s*\n/)).length ? v = v.concat(e.map((function (e, t) {
                            return (t && e.length ? "\n" : "") + e
                        }))) : v.push(e[0])
                    })), g = v, l = q.apply(this, [m, n])
                }
                for (o = 0, a = g.length; o < a; o++) {
                    var y = 0;
                    if (i = g[o], l && "\n" == i[0] && (i = i.substr(1), y = 1), r = U.apply(this, [i, n]), t < h + d + (f = J(r)) || y) {
                        if (t < f) {
                            for (s = Q.apply(this, [i, r, t - (h + d), t]), c.push(s.shift()), c = [s.pop()]; s.length;) u.push([s.shift()]);
                            f = J(r.slice(i.length - (c[0] ? c[0].length : 0)))
                        } else c = [i];
                        u.push(c), h = f + l, d = p
                    } else c.push(i), h += d + f, d = p
                }
                if (l) var b = function (e, t) {
                    return (t ? m : "") + e.join(" ")
                }; else b = function (e) {
                    return e.join(" ")
                };
                return u.map(b)
            },Y.splitTextToSize = function (e, t, n) {
                var i, r = (n = n || {}).fontSize || this.internal.getFontSize(), o = function (e) {
                    if (e.widths && e.kerning) return {widths: e.widths, kerning: e.kerning};
                    var t = this.internal.getFont(e.fontName, e.fontStyle), n = "Unicode";
                    return t.metadata[n] ? {
                        widths: t.metadata[n].widths || {0: 1},
                        kerning: t.metadata[n].kerning || {}
                    } : {
                        font: t.metadata,
                        fontSize: this.internal.getFontSize(),
                        charSpace: this.internal.getCharSpace()
                    }
                }.call(this, n);
                i = Array.isArray(e) ? e : e.split(/\r?\n/);
                var a = 1 * this.internal.scaleFactor * t / r;
                o.textIndent = n.textIndent ? 1 * n.textIndent * this.internal.scaleFactor / r : 0, o.lineIndent = n.lineIndent;
                var s, l, c = [];
                for (s = 0, l = i.length; s < l; s++) c = c.concat(ee.apply(this, [i[s], a, o]));
                return c
            },
            /** @license
             jsPDF standard_fonts_metrics plugin
             * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
             * MIT license.
             *
             * ====================================================================
             */
            te = ge.API,ie = {
                codePages: ["WinAnsiEncoding"], WinAnsiEncoding: (ne = function (e) {
                    for (var t = "klmnopqrstuvwxyz", n = {}, i = 0; i < t.length; i++) n[t[i]] = "0123456789abcdef"[i];
                    var r, o, a, s, l, c = {}, u = 1, h = c, d = [], f = "", g = "", p = e.length - 1;
                    for (i = 1; i != p;) l = e[i], i += 1, "'" == l ? o = o ? (s = o.join(""), r) : [] : o ? o.push(l) : "{" == l ? (d.push([h, s]), h = {}, s = r) : "}" == l ? ((a = d.pop())[0][a[1]] = h, s = r, h = a[0]) : "-" == l ? u = -1 : s === r ? n.hasOwnProperty(l) ? (f += n[l], s = parseInt(f, 16) * u, u = 1, f = "") : f += l : n.hasOwnProperty(l) ? (g += n[l], h[s] = parseInt(g, 16) * u, u = 1, s = r, g = "") : g += l;
                    return c
                })("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")
            },re = {
                Unicode: {
                    Courier: ie,
                    "Courier-Bold": ie,
                    "Courier-BoldOblique": ie,
                    "Courier-Oblique": ie,
                    Helvetica: ie,
                    "Helvetica-Bold": ie,
                    "Helvetica-BoldOblique": ie,
                    "Helvetica-Oblique": ie,
                    "Times-Roman": ie,
                    "Times-Bold": ie,
                    "Times-BoldItalic": ie,
                    "Times-Italic": ie
                }
            },oe = {
                Unicode: {
                    "Courier-Oblique": ne("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Times-BoldItalic": ne("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),
                    "Helvetica-Bold": ne("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                    Courier: ne("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Courier-BoldOblique": ne("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Times-Bold": ne("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),
                    Symbol: ne("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"),
                    Helvetica: ne("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),
                    "Helvetica-BoldOblique": ne("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                    ZapfDingbats: ne("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Courier-Bold": ne("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Times-Italic": ne("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),
                    "Times-Roman": ne("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),
                    "Helvetica-Oblique": ne("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")
                }
            },te.events.push(["addFont", function (e) {
                var t, n, i, r = e.font, o = "Unicode";
                (t = oe[o][r.postScriptName]) && ((n = r.metadata[o] ? r.metadata[o] : r.metadata[o] = {}).widths = t.widths, n.kerning = t.kerning), (i = re[o][r.postScriptName]) && ((n = r.metadata[o] ? r.metadata[o] : r.metadata[o] = {}).encoding = i).codePages && i.codePages.length && (r.encoding = i.codePages[0])
            }]),
            /**
             * @license
             * Licensed under the MIT License.
             * http://opensource.org/licenses/mit-license
             */
            ae = ge,"undefined" != typeof self && self || void 0 !== i && i || "undefined" != typeof window && window || Function("return this")(),ae.API.events.push(["addFont", function (e) {
                var t = e.font, n = e.instance;
                if (void 0 !== n && n.existsFileInVFS(t.postScriptName)) {
                    var i = n.getFileFromVFS(t.postScriptName);
                    if ("string" != typeof i) throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('" + t.postScriptName + "').");
                    t.metadata = ae.API.TTFFont.open(t.postScriptName, t.fontName, i, t.encoding), t.metadata.Unicode = t.metadata.Unicode || {
                        encoding: {},
                        kerning: {},
                        widths: []
                    }, t.metadata.glyIdsUsed = [0]
                } else if (!1 === t.isStandardFont) throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('" + t.postScriptName + "').")
            }]),
            /** @license
             * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
             *
             *
             * ====================================================================
             */(se = ge.API).addSvg = function (e, t, n, i, r) {
                if (void 0 === t || void 0 === n) throw new Error("addSVG needs values for 'x' and 'y'");

                function o(e) {
                    for (var t = parseFloat(e[1]), n = parseFloat(e[2]), i = [], r = 3, o = e.length; r < o;) "c" === e[r] ? (i.push([parseFloat(e[r + 1]), parseFloat(e[r + 2]), parseFloat(e[r + 3]), parseFloat(e[r + 4]), parseFloat(e[r + 5]), parseFloat(e[r + 6])]), r += 7) : "l" === e[r] ? (i.push([parseFloat(e[r + 1]), parseFloat(e[r + 2])]), r += 3) : r += 1;
                    return [t, n, i]
                }

                var a, s, l, c, u, h, d, f,
                    g = (a = e, (l = ((f = (c = document).createElement("iframe"), u = ".jsPDF_sillysvg_iframe {display:none;position:absolute;}", (d = (h = c).createElement("style")).type = "text/css", d.styleSheet ? d.styleSheet.cssText = u : d.appendChild(h.createTextNode(u)), h.getElementsByTagName("head")[0].appendChild(d), f.name = "childframe", f.setAttribute("width", 0), f.setAttribute("height", 0), f.setAttribute("frameborder", "0"), f.setAttribute("scrolling", "no"), f.setAttribute("seamless", "seamless"), f.setAttribute("class", "jsPDF_sillysvg_iframe"), c.body.appendChild(f), s = f).contentWindow || s.contentDocument).document).write(a), l.close(), l.getElementsByTagName("svg")[0]),
                    p = [1, 1], m = parseFloat(g.getAttribute("width")), v = parseFloat(g.getAttribute("height"));
                m && v && (i && r ? p = [i / m, r / v] : i ? p = [i / m, i / m] : r && (p = [r / v, r / v]));
                var y, b, C, w, I = g.childNodes;
                for (y = 0, b = I.length; y < b; y++) (C = I[y]).tagName && "PATH" === C.tagName.toUpperCase() && ((w = o(C.getAttribute("d").split(" ")))[0] = w[0] * p[0] + t, w[1] = w[1] * p[1] + n, this.lines.call(this, w[2], w[0], w[1], p));
                return this
            },se.addSVG = se.addSvg,se.addSvgAsImage = function (e, t, n, i, r, o, a, s) {
                if (isNaN(t) || isNaN(n)) throw console.error("jsPDF.addSvgAsImage: Invalid coordinates", arguments), new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");
                if (isNaN(i) || isNaN(r)) throw console.error("jsPDF.addSvgAsImage: Invalid measurements", arguments), new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");
                var l = document.createElement("canvas");
                l.width = i, l.height = r;
                var c = l.getContext("2d");
                return c.fillStyle = "#fff", c.fillRect(0, 0, l.width, l.height), canvg(l, e, {
                    ignoreMouse: !0,
                    ignoreAnimation: !0,
                    ignoreDimensions: !0,
                    ignoreClear: !0
                }), this.addImage(l.toDataURL("image/jpeg", 1), t, n, i, r, a, s), this
            },ge.API.putTotalPages = function (e) {
                var t, n;
                n = parseInt(this.internal.getFont().id.substr(1), 10) < 15 ? (t = new RegExp(e, "g"), this.internal.getNumberOfPages()) : (t = new RegExp(this.pdfEscape16(e, this.internal.getFont()), "g"), this.pdfEscape16(this.internal.getNumberOfPages() + "", this.internal.getFont()));
                for (var i = 1; i <= this.internal.getNumberOfPages(); i++) for (var r = 0; r < this.internal.pages[i].length; r++) this.internal.pages[i][r] = this.internal.pages[i][r].replace(t, n);
                return this
            },ge.API.viewerPreferences = function (e, t) {
                var n;
                e = e || {}, t = t || !1;
                var i, o, a = {
                    HideToolbar: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    HideMenubar: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    HideWindowUI: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    FitWindow: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    CenterWindow: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    DisplayDocTitle: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.4
                    },
                    NonFullScreenPageMode: {
                        defaultValue: "UseNone",
                        value: "UseNone",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["UseNone", "UseOutlines", "UseThumbs", "UseOC"],
                        pdfVersion: 1.3
                    },
                    Direction: {
                        defaultValue: "L2R",
                        value: "L2R",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["L2R", "R2L"],
                        pdfVersion: 1.3
                    },
                    ViewArea: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    ViewClip: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    PrintArea: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    PrintClip: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    PrintScaling: {
                        defaultValue: "AppDefault",
                        value: "AppDefault",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["AppDefault", "None"],
                        pdfVersion: 1.6
                    },
                    Duplex: {
                        defaultValue: "",
                        value: "none",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["Simplex", "DuplexFlipShortEdge", "DuplexFlipLongEdge", "none"],
                        pdfVersion: 1.7
                    },
                    PickTrayByPDFSize: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.7
                    },
                    PrintPageRange: {
                        defaultValue: "",
                        value: "",
                        type: "array",
                        explicitSet: !1,
                        valueSet: null,
                        pdfVersion: 1.7
                    },
                    NumCopies: {
                        defaultValue: 1,
                        value: 1,
                        type: "integer",
                        explicitSet: !1,
                        valueSet: null,
                        pdfVersion: 1.7
                    }
                }, s = Object.keys(a), l = [], c = 0, u = 0, h = 0, d = !0;

                function f(e, t) {
                    var n, i = !1;
                    for (n = 0; n < e.length; n += 1) e[n] === t && (i = !0);
                    return i
                }

                if (void 0 === this.internal.viewerpreferences && (this.internal.viewerpreferences = {}, this.internal.viewerpreferences.configuration = JSON.parse(JSON.stringify(a)), this.internal.viewerpreferences.isSubscribed = !1), n = this.internal.viewerpreferences.configuration, "reset" === e || !0 === t) {
                    var g = s.length;
                    for (h = 0; h < g; h += 1) n[s[h]].value = n[s[h]].defaultValue, n[s[h]].explicitSet = !1
                }
                if ("object" === r(e)) for (i in e) if (o = e[i], f(s, i) && void 0 !== o) {
                    if ("boolean" === n[i].type && "boolean" == typeof o) n[i].value = o; else if ("name" === n[i].type && f(n[i].valueSet, o)) n[i].value = o; else if ("integer" === n[i].type && Number.isInteger(o)) n[i].value = o; else if ("array" === n[i].type) {
                        for (c = 0; c < o.length; c += 1) if (d = !0, 1 === o[c].length && "number" == typeof o[c][0]) l.push(String(o[c] - 1)); else if (1 < o[c].length) {
                            for (u = 0; u < o[c].length; u += 1) "number" != typeof o[c][u] && (d = !1);
                            !0 === d && l.push([o[c][0] - 1, o[c][1] - 1].join(" "))
                        }
                        n[i].value = "[" + l.join(" ") + "]"
                    } else n[i].value = n[i].defaultValue;
                    n[i].explicitSet = !0
                }
                return !1 === this.internal.viewerpreferences.isSubscribed && (this.internal.events.subscribe("putCatalog", (function () {
                    var e, t = [];
                    for (e in n) !0 === n[e].explicitSet && ("name" === n[e].type ? t.push("/" + e + " /" + n[e].value) : t.push("/" + e + " " + n[e].value));
                    0 !== t.length && this.internal.write("/ViewerPreferences\n<<\n" + t.join("\n") + "\n>>")
                })), this.internal.viewerpreferences.isSubscribed = !0), this.internal.viewerpreferences.configuration = n, this
            },le = ge.API,he = ue = ce = "",le.addMetadata = function (e, t) {
                return ue = t || "http://jspdf.default.namespaceuri/", ce = e, this.internal.events.subscribe("postPutResources", (function () {
                    if (ce) {
                        var e = '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="' + ue + '"><jspdf:metadata>',
                            t = unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')),
                            n = unescape(encodeURIComponent(e)), i = unescape(encodeURIComponent(ce)),
                            r = unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")),
                            o = unescape(encodeURIComponent("</x:xmpmeta>")),
                            a = n.length + i.length + r.length + t.length + o.length;
                        he = this.internal.newObject(), this.internal.write("<< /Type /Metadata /Subtype /XML /Length " + a + " >>"), this.internal.write("stream"), this.internal.write(t + n + i + r + o), this.internal.write("endstream"), this.internal.write("endobj")
                    } else he = ""
                })), this.internal.events.subscribe("putCatalog", (function () {
                    he && this.internal.write("/Metadata " + he + " 0 R")
                })), this
            },function (e, t) {
                var n = e.API, i = n.pdfEscape16 = function (e, t) {
                    for (var n, i = t.metadata.Unicode.widths, r = ["", "0", "00", "000", "0000"], o = [""], a = 0, s = e.length; a < s; ++a) {
                        if (n = t.metadata.characterToGlyph(e.charCodeAt(a)), t.metadata.glyIdsUsed.push(n), t.metadata.toUnicode[n] = e.charCodeAt(a), -1 == i.indexOf(n) && (i.push(n), i.push([parseInt(t.metadata.widthOfGlyph(n), 10)])), "0" == n) return o.join("");
                        n = n.toString(16), o.push(r[4 - n.length], n)
                    }
                    return o.join("")
                }, r = function (e) {
                    var t, n, i, r, o, a, s;
                    for (o = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange", i = [], a = 0, s = (n = Object.keys(e).sort((function (e, t) {
                        return e - t
                    }))).length; a < s; a++) t = n[a], 100 <= i.length && (o += "\n" + i.length + " beginbfchar\n" + i.join("\n") + "\nendbfchar", i = []), r = ("0000" + e[t].toString(16)).slice(-4), t = ("0000" + (+t).toString(16)).slice(-4), i.push("<" + t + "><" + r + ">");
                    return i.length && (o += "\n" + i.length + " beginbfchar\n" + i.join("\n") + "\nendbfchar\n"), o + "endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"
                };
                n.events.push(["putFont", function (t) {
                    !function (t, n, i, o) {
                        if (t.metadata instanceof e.API.TTFFont && "Identity-H" === t.encoding) {
                            for (var a = t.metadata.Unicode.widths, s = t.metadata.subset.encode(t.metadata.glyIdsUsed, 1), l = "", c = 0; c < s.length; c++) l += String.fromCharCode(s[c]);
                            var u = i();
                            o({data: l, addLength1: !0}), n("endobj");
                            var h = i();
                            o({data: r(t.metadata.toUnicode), addLength1: !0}), n("endobj");
                            var d = i();
                            n("<<"), n("/Type /FontDescriptor"), n("/FontName /" + t.fontName), n("/FontFile2 " + u + " 0 R"), n("/FontBBox " + e.API.PDFObject.convert(t.metadata.bbox)), n("/Flags " + t.metadata.flags), n("/StemV " + t.metadata.stemV), n("/ItalicAngle " + t.metadata.italicAngle), n("/Ascent " + t.metadata.ascender), n("/Descent " + t.metadata.decender), n("/CapHeight " + t.metadata.capHeight), n(">>"), n("endobj");
                            var f = i();
                            n("<<"), n("/Type /Font"), n("/BaseFont /" + t.fontName), n("/FontDescriptor " + d + " 0 R"), n("/W " + e.API.PDFObject.convert(a)), n("/CIDToGIDMap /Identity"), n("/DW 1000"), n("/Subtype /CIDFontType2"), n("/CIDSystemInfo"), n("<<"), n("/Supplement 0"), n("/Registry (Adobe)"), n("/Ordering (" + t.encoding + ")"), n(">>"), n(">>"), n("endobj"), t.objectNumber = i(), n("<<"), n("/Type /Font"), n("/Subtype /Type0"), n("/ToUnicode " + h + " 0 R"), n("/BaseFont /" + t.fontName), n("/Encoding /" + t.encoding), n("/DescendantFonts [" + f + " 0 R]"), n(">>"), n("endobj"), t.isAlreadyPutted = !0
                        }
                    }(t.font, t.out, t.newObject, t.putStream)
                }]), n.events.push(["putFont", function (t) {
                    !function (t, n, i, o) {
                        if (t.metadata instanceof e.API.TTFFont && "WinAnsiEncoding" === t.encoding) {
                            t.metadata.Unicode.widths;
                            for (var a = t.metadata.rawData, s = "", l = 0; l < a.length; l++) s += String.fromCharCode(a[l]);
                            var c = i();
                            o({data: s, addLength1: !0}), n("endobj");
                            var u = i();
                            o({data: r(t.metadata.toUnicode), addLength1: !0}), n("endobj");
                            var h = i();
                            for (n("<<"), n("/Descent " + t.metadata.decender), n("/CapHeight " + t.metadata.capHeight), n("/StemV " + t.metadata.stemV), n("/Type /FontDescriptor"), n("/FontFile2 " + c + " 0 R"), n("/Flags 96"), n("/FontBBox " + e.API.PDFObject.convert(t.metadata.bbox)), n("/FontName /" + t.fontName), n("/ItalicAngle " + t.metadata.italicAngle), n("/Ascent " + t.metadata.ascender), n(">>"), n("endobj"), t.objectNumber = i(), l = 0; l < t.metadata.hmtx.widths.length; l++) t.metadata.hmtx.widths[l] = parseInt(t.metadata.hmtx.widths[l] * (1e3 / t.metadata.head.unitsPerEm));
                            n("<</Subtype/TrueType/Type/Font/ToUnicode " + u + " 0 R/BaseFont/" + t.fontName + "/FontDescriptor " + h + " 0 R/Encoding/" + t.encoding + " /FirstChar 29 /LastChar 255 /Widths " + e.API.PDFObject.convert(t.metadata.hmtx.widths) + ">>"), n("endobj"), t.isAlreadyPutted = !0
                        }
                    }(t.font, t.out, t.newObject, t.putStream)
                }]);
                var o = function (e) {
                    var t, n, r = e.text || "", o = e.x, a = e.y, s = e.options || {}, l = e.mutex || {},
                        c = l.pdfEscape, u = l.activeFontKey, h = l.fonts, d = (l.activeFontSize, ""), f = 0, g = "",
                        p = h[n = u].encoding;
                    if ("Identity-H" !== h[n].encoding) return {text: r, x: o, y: a, options: s, mutex: l};
                    for (g = r, n = u, "[object Array]" === Object.prototype.toString.call(r) && (g = r[0]), f = 0; f < g.length; f += 1) h[n].metadata.hasOwnProperty("cmap") && (t = h[n].metadata.cmap.unicode.codeMap[g[f].charCodeAt(0)]), t || g[f].charCodeAt(0) < 256 && h[n].metadata.hasOwnProperty("Unicode") ? d += g[f] : d += "";
                    var m = "";
                    return parseInt(n.slice(1)) < 14 || "WinAnsiEncoding" === p ? m = function (e) {
                        for (var t = "", n = 0; n < e.length; n++) t += "" + e.charCodeAt(n).toString(16);
                        return t
                    }(c(d, n)) : "Identity-H" === p && (m = i(d, h[n])), l.isHex = !0, {
                        text: m,
                        x: o,
                        y: a,
                        options: s,
                        mutex: l
                    }
                };
                n.events.push(["postProcessText", function (e) {
                    var t = e.text || "", n = e.x, i = e.y, r = e.options, a = e.mutex, s = (r.lang, []),
                        l = {text: t, x: n, y: i, options: r, mutex: a};
                    if ("[object Array]" === Object.prototype.toString.call(t)) {
                        var c = 0;
                        for (c = 0; c < t.length; c += 1) "[object Array]" === Object.prototype.toString.call(t[c]) && 3 === t[c].length ? s.push([o(Object.assign({}, l, {text: t[c][0]})).text, t[c][1], t[c][2]]) : s.push(o(Object.assign({}, l, {text: t[c]})).text);
                        e.text = s
                    } else e.text = o(Object.assign({}, l, {text: t})).text
                }])
            }(ge, "undefined" != typeof self && self || void 0 !== i && i || "undefined" != typeof window && window || Function("return this")()),de = ge.API,fe = function (e) {
                return void 0 !== e && (void 0 === e.vFS && (e.vFS = {}), !0)
            },de.existsFileInVFS = function (e) {
                return !!fe(this.internal) && void 0 !== this.internal.vFS[e]
            },de.addFileToVFS = function (e, t) {
                return fe(this.internal), this.internal.vFS[e] = t, this
            },de.getFileFromVFS = function (e) {
                return fe(this.internal), void 0 !== this.internal.vFS[e] ? this.internal.vFS[e] : null
            },ge.API.addHTML = function (e, t, n, i, r) {
                if ("undefined" == typeof html2canvas && "undefined" == typeof rasterizeHTML) throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js");
                "number" != typeof t && (i = t, r = n), "function" == typeof i && (r = i, i = null), "function" != typeof r && (r = function () {
                });
                var o = this.internal, a = o.scaleFactor, s = o.pageSize.getWidth(), l = o.pageSize.getHeight();
                if ((i = i || {}).onrendered = function (e) {
                    t = parseInt(t) || 0, n = parseInt(n) || 0;
                    var o = i.dim || {},
                        c = Object.assign({top: 0, right: 0, bottom: 0, left: 0, useFor: "content"}, i.margin),
                        u = o.h || Math.min(l, e.height / a), h = o.w || Math.min(s, e.width / a) - t,
                        d = i.format || "JPEG", f = i.imageCompression || "SLOW";
                    if (e.height > l - c.top - c.bottom && i.pagesplit) {
                        var g = function (e, t, n, r, o) {
                            var a = document.createElement("canvas");
                            a.height = o, a.width = r;
                            var s = a.getContext("2d");
                            return s.mozImageSmoothingEnabled = !1, s.webkitImageSmoothingEnabled = !1, s.msImageSmoothingEnabled = !1, s.imageSmoothingEnabled = !1, s.fillStyle = i.backgroundColor || "#ffffff", s.fillRect(0, 0, r, o), s.drawImage(e, t, n, r, o, 0, 0, r, o), a
                        }, p = function () {
                            for (var i, o, u = 0, p = 0, m = {}, v = !1; ;) {
                                var y;
                                if (p = 0, m.top = 0 !== u ? c.top : n, m.left = 0 !== u ? c.left : t, v = (s - c.left - c.right) * a < e.width, "content" === c.useFor ? 0 === u ? (i = Math.min((s - c.left) * a, e.width), o = Math.min((l - c.top) * a, e.height - u)) : (i = Math.min(s * a, e.width), o = Math.min(l * a, e.height - u), m.top = 0) : (i = Math.min((s - c.left - c.right) * a, e.width), o = Math.min((l - c.bottom - c.top) * a, e.height - u)), v) for (; ;) {
                                    "content" === c.useFor && (0 === p ? i = Math.min((s - c.left) * a, e.width) : (i = Math.min(s * a, e.width - p), m.left = 0));
                                    var b = [y = g(e, p, u, i, o), m.left, m.top, y.width / a, y.height / a, d, null, f];
                                    if (this.addImage.apply(this, b), (p += i) >= e.width) break;
                                    this.addPage()
                                } else b = [y = g(e, 0, u, i, o), m.left, m.top, y.width / a, y.height / a, d, null, f], this.addImage.apply(this, b);
                                if ((u += o) >= e.height) break;
                                this.addPage()
                            }
                            r(h, u, null, b)
                        }.bind(this);
                        if ("CANVAS" === e.nodeName) {
                            var m = new Image;
                            m.onload = p, m.src = e.toDataURL("image/png"), e = m
                        } else p()
                    } else {
                        var v = Math.random().toString(35), y = [e, t, n, h, u, d, v, f];
                        this.addImage.apply(this, y), r(h, u, v, y)
                    }
                }.bind(this), "undefined" != typeof html2canvas && !i.rstz) return html2canvas(e, i);
                if ("undefined" == typeof rasterizeHTML) return null;
                var c = "drawDocument";
                return "string" == typeof e && (c = /^http/.test(e) ? "drawURL" : "drawHTML"), i.width = i.width || s * a, rasterizeHTML[c](e, void 0, i).then((function (e) {
                    i.onrendered(e.image)
                }), (function (e) {
                    r(null, e)
                }))
                /**
                 * jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser
                 * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
                 *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
                 *               2014 Diego Casorran, https://github.com/diegocr
                 *               2014 Daniel Husar, https://github.com/danielhusar
                 *               2014 Wolfgang Gassler, https://github.com/woolfg
                 *               2014 Steven Spungin, https://github.com/flamenco
                 *
                 * @license
                 *
                 * ====================================================================
                 */
            },function (e) {
                var t, n, i, o, a, s, l, c, u, h, d, f, g, p, m, v, y, b, C, w;
                t = function () {
                    return function (t) {
                        return e.prototype = t, new e
                    };

                    function e() {
                    }
                }(), h = function (e) {
                    var t, n, i, r, o, a, s;
                    for (n = 0, i = e.length, t = void 0, a = r = !1; !r && n !== i;) (t = e[n] = e[n].trimLeft()) && (r = !0), n++;
                    for (n = i - 1; i && !a && -1 !== n;) (t = e[n] = e[n].trimRight()) && (a = !0), n--;
                    for (o = /\s+$/g, s = !0, n = 0; n !== i;) "\u2028" != e[n] && (t = e[n].replace(/\s+/g, " "), s && (t = t.trimLeft()), t && (s = o.test(t)), e[n] = t), n++;
                    return e
                }, f = function (e) {
                    var t, n, r;
                    for (t = void 0, n = (r = e.split(",")).shift(); !t && n;) t = i[n.trim().toLowerCase()], n = r.shift();
                    return t
                }, g = function (e) {
                    var t;
                    return -1 < (e = "auto" === e ? "0px" : e).indexOf("em") && !isNaN(Number(e.replace("em", ""))) && (e = 18.719 * Number(e.replace("em", "")) + "px"), -1 < e.indexOf("pt") && !isNaN(Number(e.replace("pt", ""))) && (e = 1.333 * Number(e.replace("pt", "")) + "px"), (t = p[e]) ? t : void 0 !== (t = {
                        "xx-small": 9,
                        "x-small": 11,
                        small: 13,
                        medium: 16,
                        large: 19,
                        "x-large": 23,
                        "xx-large": 28,
                        auto: 0
                    }[e]) || (t = parseFloat(e)) ? p[e] = t / 16 : (t = e.match(/([\d\.]+)(px)/), Array.isArray(t) && 3 === t.length ? p[e] = parseFloat(t[1]) / 16 : p[e] = 1)
                }, u = function (e) {
                    var t, n, i, r, u;
                    return u = e, r = document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(u, null) : u.currentStyle ? u.currentStyle : u.style, n = void 0, (t = {})["font-family"] = f((i = function (e) {
                        return e = e.replace(/-\D/g, (function (e) {
                            return e.charAt(1).toUpperCase()
                        })), r[e]
                    })("font-family")) || "times", t["font-style"] = o[i("font-style")] || "normal", t["text-align"] = a[i("text-align")] || "left", "bold" === (n = s[i("font-weight")] || "normal") && ("normal" === t["font-style"] ? t["font-style"] = n : t["font-style"] = n + t["font-style"]), t["font-size"] = g(i("font-size")) || 1, t["line-height"] = g(i("line-height")) || 1, t.display = "inline" === i("display") ? "inline" : "block", n = "block" === t.display, t["margin-top"] = n && g(i("margin-top")) || 0, t["margin-bottom"] = n && g(i("margin-bottom")) || 0, t["padding-top"] = n && g(i("padding-top")) || 0, t["padding-bottom"] = n && g(i("padding-bottom")) || 0, t["margin-left"] = n && g(i("margin-left")) || 0, t["margin-right"] = n && g(i("margin-right")) || 0, t["padding-left"] = n && g(i("padding-left")) || 0, t["padding-right"] = n && g(i("padding-right")) || 0, t["page-break-before"] = i("page-break-before") || "auto", t.float = l[i("cssFloat")] || "none", t.clear = c[i("clear")] || "none", t.color = i("color"), t
                }, m = function (e, t, n) {
                    var i, r, o, a, s;
                    if (o = !1, a = r = void 0, i = n["#" + e.id]) if ("function" == typeof i) o = i(e, t); else for (r = 0, a = i.length; !o && r !== a;) o = i[r](e, t), r++;
                    if (i = n[e.nodeName], !o && i) if ("function" == typeof i) o = i(e, t); else for (r = 0, a = i.length; !o && r !== a;) o = i[r](e, t), r++;
                    for (s = "string" == typeof e.className ? e.className.split(" ") : [], r = 0; r < s.length; r++) if (i = n["." + s[r]], !o && i) if ("function" == typeof i) o = i(e, t); else for (r = 0, a = i.length; !o && r !== a;) o = i[r](e, t), r++;
                    return o
                }, w = function (e, t) {
                    var n, i, r, o, a, s, l, c, u;
                    for (n = [], i = [], r = 0, u = e.rows[0].cells.length, l = e.clientWidth; r < u;) c = e.rows[0].cells[r], i[r] = {
                        name: c.textContent.toLowerCase().replace(/\s+/g, ""),
                        prompt: c.textContent.replace(/\r?\n/g, ""),
                        width: c.clientWidth / l * t.pdf.internal.pageSize.getWidth()
                    }, r++;
                    for (r = 1; r < e.rows.length;) {
                        for (s = e.rows[r], a = {}, o = 0; o < s.cells.length;) a[i[o].name] = s.cells[o].textContent.replace(/\r?\n/g, ""), o++;
                        n.push(a), r++
                    }
                    return {rows: n, headers: i}
                };
                var I = {SCRIPT: 1, STYLE: 1, NOSCRIPT: 1, OBJECT: 1, EMBED: 1, SELECT: 1}, x = 1;
                n = function (e, i, o) {
                    var a, s, l, c, h, d, f, g;
                    for (s = e.childNodes, a = void 0, (h = "block" === (l = u(e)).display) && (i.setBlockBoundary(), i.setBlockStyle(l)), c = 0, d = s.length; c < d;) {
                        if ("object" === r(a = s[c])) {
                            if (i.executeWatchFunctions(a), 1 === a.nodeType && "HEADER" === a.nodeName) {
                                var p = a, y = i.pdf.margins_doc.top;
                                i.pdf.internal.events.subscribe("addPage", (function (e) {
                                    i.y = y, n(p, i, o), i.pdf.margins_doc.top = i.y + 10, i.y += 10
                                }), !1)
                            }
                            if (8 === a.nodeType && "#comment" === a.nodeName) ~a.textContent.indexOf("ADD_PAGE") && (i.pdf.addPage(), i.y = i.pdf.margins_doc.top); else if (1 !== a.nodeType || I[a.nodeName]) if (3 === a.nodeType) {
                                var b = a.nodeValue;
                                if (a.nodeValue && "LI" === a.parentNode.nodeName) if ("OL" === a.parentNode.parentNode.nodeName) b = x++ + ". " + b; else {
                                    var C = l["font-size"], A = (3 - .75 * C) * i.pdf.internal.scaleFactor,
                                        _ = .75 * C * i.pdf.internal.scaleFactor,
                                        S = 1.74 * C / i.pdf.internal.scaleFactor;
                                    g = function (e, t) {
                                        this.pdf.circle(e + A, t + _, S, "FD")
                                    }
                                }
                                16 & a.ownerDocument.body.compareDocumentPosition(a) && i.addText(b, l)
                            } else "string" == typeof a && i.addText(a, l); else {
                                var k;
                                if ("IMG" === a.nodeName) {
                                    var L = a.getAttribute("src");
                                    k = v[i.pdf.sHashCode(L) || L]
                                }
                                if (k) {
                                    i.pdf.internal.pageSize.getHeight() - i.pdf.margins_doc.bottom < i.y + a.height && i.y > i.pdf.margins_doc.top && (i.pdf.addPage(), i.y = i.pdf.margins_doc.top, i.executeWatchFunctions(a));
                                    var T = u(a), O = i.x, R = 12 / i.pdf.internal.scaleFactor,
                                        E = (T["margin-left"] + T["padding-left"]) * R,
                                        P = (T["margin-right"] + T["padding-right"]) * R,
                                        M = (T["margin-top"] + T["padding-top"]) * R,
                                        N = (T["margin-bottom"] + T["padding-bottom"]) * R;
                                    void 0 !== T.float && "right" === T.float ? O += i.settings.width - a.width - P : O += E, i.pdf.addImage(k, O, i.y + M, a.width, a.height), k = void 0, "right" === T.float || "left" === T.float ? (i.watchFunctions.push(function (e, t, n, r) {
                                        return i.y >= t ? (i.x += e, i.settings.width += n, !0) : !!(r && 1 === r.nodeType && !I[r.nodeName] && i.x + r.width > i.pdf.margins_doc.left + i.pdf.margins_doc.width) && (i.x += e, i.y = t, i.settings.width += n, !0)
                                    }.bind(this, "left" === T.float ? -a.width - E - P : 0, i.y + a.height + M + N, a.width)), i.watchFunctions.push(function (e, t, n) {
                                        return !(i.y < e && t === i.pdf.internal.getNumberOfPages()) || 1 === n.nodeType && "both" === u(n).clear && (i.y = e, !0)
                                    }.bind(this, i.y + a.height, i.pdf.internal.getNumberOfPages())), i.settings.width -= a.width + E + P, "left" === T.float && (i.x += a.width + E + P)) : i.y += a.height + M + N
                                } else if ("TABLE" === a.nodeName) f = w(a, i), i.y += 10, i.pdf.table(i.x, i.y, f.rows, f.headers, {
                                    autoSize: !1,
                                    printHeaders: o.printHeaders,
                                    margins: i.pdf.margins_doc,
                                    css: u(a)
                                }), i.y = i.pdf.lastCellPos.y + i.pdf.lastCellPos.h + 20; else if ("OL" === a.nodeName || "UL" === a.nodeName) x = 1, m(a, i, o) || n(a, i, o), i.y += 10; else if ("LI" === a.nodeName) {
                                    var D = i.x;
                                    i.x += 20 / i.pdf.internal.scaleFactor, i.y += 3, m(a, i, o) || n(a, i, o), i.x = D
                                } else "BR" === a.nodeName ? (i.y += l["font-size"] * i.pdf.internal.scaleFactor, i.addText("\u2028", t(l))) : m(a, i, o) || n(a, i, o)
                            }
                        }
                        c++
                    }
                    if (o.outY = i.y, h) return i.setBlockBoundary(g)
                }, v = {}, y = function (e, t, n, i) {
                    var r, o = e.getElementsByTagName("img"), a = o.length, s = 0;

                    function l() {
                        t.pdf.internal.events.publish("imagesLoaded"), i(r)
                    }

                    function c(e, n, i) {
                        if (e) {
                            var o = new Image;
                            r = ++s, o.crossOrigin = "", o.onerror = o.onload = function () {
                                if (o.complete && (0 === o.src.indexOf("data:image/") && (o.width = n || o.width || 0, o.height = i || o.height || 0), o.width + o.height)) {
                                    var r = t.pdf.sHashCode(e) || e;
                                    v[r] = v[r] || o
                                }
                                --s || l()
                            }, o.src = e
                        }
                    }

                    for (; a--;) c(o[a].getAttribute("src"), o[a].width, o[a].height);
                    return s || l()
                }, b = function (e, t, i) {
                    var r = e.getElementsByTagName("footer");
                    if (0 < r.length) {
                        r = r[0];
                        var o = t.pdf.internal.write, a = t.y;
                        t.pdf.internal.write = function () {
                        }, n(r, t, i);
                        var s = Math.ceil(t.y - a) + 5;
                        t.y = a, t.pdf.internal.write = o, t.pdf.margins_doc.bottom += s;
                        for (var l = function (e) {
                            var o = void 0 !== e ? e.pageNumber : 1, a = t.y;
                            t.y = t.pdf.internal.pageSize.getHeight() - t.pdf.margins_doc.bottom, t.pdf.margins_doc.bottom -= s;
                            for (var l = r.getElementsByTagName("span"), c = 0; c < l.length; ++c) -1 < (" " + l[c].className + " ").replace(/[\n\t]/g, " ").indexOf(" pageCounter ") && (l[c].innerHTML = o), -1 < (" " + l[c].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") && (l[c].innerHTML = "###jsPDFVarTotalPages###");
                            n(r, t, i), t.pdf.margins_doc.bottom += s, t.y = a
                        }, c = r.getElementsByTagName("span"), u = 0; u < c.length; ++u) -1 < (" " + c[u].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") && t.pdf.internal.events.subscribe("htmlRenderingFinished", t.pdf.putTotalPages.bind(t.pdf, "###jsPDFVarTotalPages###"), !0);
                        t.pdf.internal.events.subscribe("addPage", l, !1), l(), I.FOOTER = 1
                    }
                }, C = function (e, t, i, r, o, a) {
                    if (!t) return !1;
                    var s, l, c, u;
                    "string" == typeof t || t.parentNode || (t = "" + t.innerHTML), "string" == typeof t && (s = t.replace(/<\/?script[^>]*?>/gi, ""), u = "jsPDFhtmlText" + Date.now().toString() + (1e3 * Math.random()).toFixed(0), (c = document.createElement("div")).style.cssText = "position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;", c.innerHTML = '<iframe style="height:1px;width:1px" name="' + u + '" />', document.body.appendChild(c), (l = window.frames[u]).document.open(), l.document.writeln(s), l.document.close(), t = l.document.body);
                    var h, f = new d(e, i, r, o);
                    return y.call(this, t, f, o.elementHandlers, (function (e) {
                        b(t, f, o.elementHandlers), n(t, f, o.elementHandlers), f.pdf.internal.events.publish("htmlRenderingFinished"), h = f.dispose(), "function" == typeof a ? a(h) : e && console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!")
                    })), h || {x: f.x, y: f.y}
                }, (d = function (e, t, n, i) {
                    return this.pdf = e, this.x = t, this.y = n, this.settings = i, this.watchFunctions = [], this.init(), this
                }).prototype.init = function () {
                    return this.paragraph = {text: [], style: []}, this.pdf.internal.write("q")
                }, d.prototype.dispose = function () {
                    return this.pdf.internal.write("Q"), {x: this.x, y: this.y, ready: !0}
                }, d.prototype.executeWatchFunctions = function (e) {
                    var t = !1, n = [];
                    if (0 < this.watchFunctions.length) {
                        for (var i = 0; i < this.watchFunctions.length; ++i) !0 === this.watchFunctions[i](e) ? t = !0 : n.push(this.watchFunctions[i]);
                        this.watchFunctions = n
                    }
                    return t
                }, d.prototype.splitFragmentsIntoLines = function (e, n) {
                    var i, r, o, a, s, l, c, u, h, d, f, g, p, m;
                    for (d = this.pdf.internal.scaleFactor, a = {}, l = c = u = m = s = o = h = r = void 0, g = [f = []], i = 0, p = this.settings.width; e.length;) if (s = e.shift(), m = n.shift(), s) if ((o = a[(r = m["font-family"]) + (h = m["font-style"])]) || (o = this.pdf.internal.getFont(r, h).metadata.Unicode, a[r + h] = o), u = {
                        widths: o.widths,
                        kerning: o.kerning,
                        fontSize: 12 * m["font-size"],
                        textIndent: i
                    }, c = this.pdf.getStringUnitWidth(s, u) * u.fontSize / d, "\u2028" == s) f = [], g.push(f); else if (p < i + c) {
                        for (l = this.pdf.splitTextToSize(s, p, u), f.push([l.shift(), m]); l.length;) f = [[l.shift(), m]], g.push(f);
                        i = this.pdf.getStringUnitWidth(f[0][0], u) * u.fontSize / d
                    } else f.push([s, m]), i += c;
                    if (void 0 !== m["text-align"] && ("center" === m["text-align"] || "right" === m["text-align"] || "justify" === m["text-align"])) for (var v = 0; v < g.length; ++v) {
                        var y = this.pdf.getStringUnitWidth(g[v][0][0], u) * u.fontSize / d;
                        0 < v && (g[v][0][1] = t(g[v][0][1]));
                        var b = p - y;
                        if ("right" === m["text-align"]) g[v][0][1]["margin-left"] = b; else if ("center" === m["text-align"]) g[v][0][1]["margin-left"] = b / 2; else if ("justify" === m["text-align"]) {
                            var C = g[v][0][0].split(" ").length - 1;
                            g[v][0][1]["word-spacing"] = b / C, v === g.length - 1 && (g[v][0][1]["word-spacing"] = 0)
                        }
                    }
                    return g
                }, d.prototype.RenderTextFragment = function (e, t) {
                    var n, i;
                    i = 0, this.pdf.internal.pageSize.getHeight() - this.pdf.margins_doc.bottom < this.y + this.pdf.internal.getFontSize() && (this.pdf.internal.write("ET", "Q"), this.pdf.addPage(), this.y = this.pdf.margins_doc.top, this.pdf.internal.write("q", "BT", this.getPdfColor(t.color), this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td"), i = Math.max(i, t["line-height"], t["font-size"]), this.pdf.internal.write(0, (-12 * i).toFixed(2), "Td")), n = this.pdf.internal.getFont(t["font-family"], t["font-style"]);
                    var r = this.getPdfColor(t.color);
                    r !== this.lastTextColor && (this.pdf.internal.write(r), this.lastTextColor = r), void 0 !== t["word-spacing"] && 0 < t["word-spacing"] && this.pdf.internal.write(t["word-spacing"].toFixed(2), "Tw"), this.pdf.internal.write("/" + n.id, (12 * t["font-size"]).toFixed(2), "Tf", "(" + this.pdf.internal.pdfEscape(e) + ") Tj"), void 0 !== t["word-spacing"] && this.pdf.internal.write(0, "Tw")
                }, d.prototype.getPdfColor = function (e) {
                    var t, n, i, r = /rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/.exec(e);
                    if (null != r) t = parseInt(r[1]), n = parseInt(r[2]), i = parseInt(r[3]); else {
                        if ("string" == typeof e && "#" != e.charAt(0)) {
                            var o = new RGBColor(e);
                            e = o.ok ? o.toHex() : "#000000"
                        }
                        t = e.substring(1, 3), t = parseInt(t, 16), n = e.substring(3, 5), n = parseInt(n, 16), i = e.substring(5, 7), i = parseInt(i, 16)
                    }
                    if ("string" == typeof t && /^#[0-9A-Fa-f]{6}$/.test(t)) {
                        var a = parseInt(t.substr(1), 16);
                        t = a >> 16 & 255, n = a >> 8 & 255, i = 255 & a
                    }
                    var s = this.f3;
                    return 0 === t && 0 === n && 0 === i || void 0 === n ? s(t / 255) + " g" : [s(t / 255), s(n / 255), s(i / 255), "rg"].join(" ")
                }, d.prototype.f3 = function (e) {
                    return e.toFixed(3)
                }, d.prototype.renderParagraph = function (e) {
                    var t, n, i, r, o, a, s, l, c, u, d, f, g;
                    if (i = h(this.paragraph.text), f = this.paragraph.style, t = this.paragraph.blockstyle, this.paragraph.priorblockstyle, this.paragraph = {
                        text: [],
                        style: [],
                        blockstyle: {},
                        priorblockstyle: t
                    }, i.join("").trim()) {
                        s = this.splitFragmentsIntoLines(i, f), l = a = void 0, n = 12 / this.pdf.internal.scaleFactor, this.priorMarginBottom = this.priorMarginBottom || 0, d = (Math.max((t["margin-top"] || 0) - this.priorMarginBottom, 0) + (t["padding-top"] || 0)) * n, u = ((t["margin-bottom"] || 0) + (t["padding-bottom"] || 0)) * n, this.priorMarginBottom = t["margin-bottom"] || 0, "always" === t["page-break-before"] && (this.pdf.addPage(), this.y = 0, d = ((t["margin-top"] || 0) + (t["padding-top"] || 0)) * n), c = this.pdf.internal.write, o = r = void 0, this.y += d, c("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td");
                        for (var p = 0; s.length;) {
                            for (r = l = 0, o = (a = s.shift()).length; r !== o;) a[r][0].trim() && (l = Math.max(l, a[r][1]["line-height"], a[r][1]["font-size"]), g = 7 * a[r][1]["font-size"]), r++;
                            var m = 0, v = 0;
                            for (void 0 !== a[0][1]["margin-left"] && 0 < a[0][1]["margin-left"] && (m = (v = this.pdf.internal.getCoordinateString(a[0][1]["margin-left"])) - p, p = v), c(m + Math.max(t["margin-left"] || 0, 0) * n, (-12 * l).toFixed(2), "Td"), r = 0, o = a.length; r !== o;) a[r][0] && this.RenderTextFragment(a[r][0], a[r][1]), r++;
                            if (this.y += l * n, this.executeWatchFunctions(a[0][1]) && 0 < s.length) {
                                var y = [], b = [];
                                s.forEach((function (e) {
                                    for (var t = 0, n = e.length; t !== n;) e[t][0] && (y.push(e[t][0] + " "), b.push(e[t][1])), ++t
                                })), s = this.splitFragmentsIntoLines(h(y), b), c("ET", "Q"), c("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td")
                            }
                        }
                        return e && "function" == typeof e && e.call(this, this.x - 9, this.y - g / 2), c("ET", "Q"), this.y += u
                    }
                }, d.prototype.setBlockBoundary = function (e) {
                    return this.renderParagraph(e)
                }, d.prototype.setBlockStyle = function (e) {
                    return this.paragraph.blockstyle = e
                }, d.prototype.addText = function (e, t) {
                    return this.paragraph.text.push(e), this.paragraph.style.push(t)
                }, i = {
                    helvetica: "helvetica",
                    "sans-serif": "helvetica",
                    "times new roman": "times",
                    serif: "times",
                    times: "times",
                    monospace: "courier",
                    courier: "courier"
                }, s = {
                    100: "normal",
                    200: "normal",
                    300: "normal",
                    400: "normal",
                    500: "bold",
                    600: "bold",
                    700: "bold",
                    800: "bold",
                    900: "bold",
                    normal: "normal",
                    bold: "bold",
                    bolder: "bold",
                    lighter: "normal"
                }, o = {normal: "normal", italic: "italic", oblique: "italic"}, a = {
                    left: "left",
                    right: "right",
                    center: "center",
                    justify: "justify"
                }, l = {none: "none", right: "right", left: "left"}, c = {
                    none: "none",
                    both: "both"
                }, p = {normal: 1}, e.fromHTML = function (e, t, n, i, r, o) {
                    return this.margins_doc = o || {
                        top: 0,
                        bottom: 0
                    }, i || (i = {}), i.elementHandlers || (i.elementHandlers = {}), C(this, e, isNaN(t) ? 4 : t, isNaN(n) ? 4 : n, i, r)
                }
            }(ge.API),ge.API,("undefined" != typeof window && window || void 0 !== i && i).html2pdf = function (e, t, n) {
                var i = t.canvas;
                if (i) {
                    var r, o;
                    if ((i.pdf = t).annotations = {
                        _nameMap: [], createAnnotation: function (e, n) {
                            var i, r = t.context2d._wrapX(n.left), o = t.context2d._wrapY(n.top),
                                a = (t.context2d._page(n.top), e.indexOf("#"));
                            i = 0 <= a ? {name: e.substring(a + 1)} : {url: e}, t.link(r, o, n.right - n.left, n.bottom - n.top, i)
                        }, setName: function (e, n) {
                            var i = t.context2d._wrapX(n.left), r = t.context2d._wrapY(n.top),
                                o = t.context2d._page(n.top);
                            this._nameMap[e] = {page: o, x: i, y: r}
                        }
                    }, i.annotations = t.annotations, t.context2d._pageBreakAt = function (e) {
                        this.pageBreaks.push(e)
                    }, t.context2d._gotoPage = function (e) {
                        for (; t.internal.getNumberOfPages() < e;) t.addPage();
                        t.setPage(e)
                    }, "string" == typeof e) {
                        e = e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");
                        var a, s, l = document.createElement("iframe");
                        document.body.appendChild(l), null != (a = l.contentDocument) && null != a || (a = l.contentWindow.document), a.open(), a.write(e), a.close(), r = a.body, s = a.body || {}, e = a.documentElement || {}, o = Math.max(s.scrollHeight, s.offsetHeight, e.clientHeight, e.scrollHeight, e.offsetHeight)
                    } else s = (r = e).body || {}, o = Math.max(s.scrollHeight, s.offsetHeight, e.clientHeight, e.scrollHeight, e.offsetHeight);
                    var c = {
                        async: !0,
                        allowTaint: !0,
                        backgroundColor: "#ffffff",
                        canvas: i,
                        imageTimeout: 15e3,
                        logging: !0,
                        proxy: null,
                        removeContainer: !0,
                        foreignObjectRendering: !1,
                        useCORS: !1,
                        windowHeight: o = t.internal.pageSize.getHeight(),
                        scrollY: o
                    };
                    t.context2d.pageWrapYEnabled = !0, t.context2d.pageWrapY = t.internal.pageSize.getHeight(), html2canvas(r, c).then((function (e) {
                        n && (l && l.parentElement.removeChild(l), n(t))
                    }))
                } else alert("jsPDF canvas plugin not installed")
            },window.tmp = html2pdf,function (e) {
                var t = e.BlobBuilder || e.WebKitBlobBuilder || e.MSBlobBuilder || e.MozBlobBuilder;
                e.URL = e.URL || e.webkitURL || function (e, t) {
                    return (t = document.createElement("a")).href = e, t
                };
                var n = e.Blob, i = URL.createObjectURL, r = URL.revokeObjectURL, o = e.Symbol && e.Symbol.toStringTag,
                    a = !1, s = !1, l = !!e.ArrayBuffer, c = t && t.prototype.append && t.prototype.getBlob;
                try {
                    a = 2 === new Blob(["ä"]).size, s = 2 === new Blob([new Uint8Array([1, 2])]).size
                } catch (a) {
                }

                function u(e) {
                    return e.map((function (e) {
                        if (e.buffer instanceof ArrayBuffer) {
                            var t = e.buffer;
                            if (e.byteLength !== t.byteLength) {
                                var n = new Uint8Array(e.byteLength);
                                n.set(new Uint8Array(t, e.byteOffset, e.byteLength)), t = n.buffer
                            }
                            return t
                        }
                        return e
                    }))
                }

                function h(e, n) {
                    n = n || {};
                    var i = new t;
                    return u(e).forEach((function (e) {
                        i.append(e)
                    })), n.type ? i.getBlob(n.type) : i.getBlob()
                }

                function d(e, t) {
                    return new n(u(e), t || {})
                }

                if (e.Blob && (h.prototype = Blob.prototype, d.prototype = Blob.prototype), o) try {
                    File.prototype[o] = "File", Blob.prototype[o] = "Blob", FileReader.prototype[o] = "FileReader"
                } catch (a) {
                }

                function f() {
                    var t = !!e.ActiveXObject || "-ms-scroll-limit" in document.documentElement.style && "-ms-ime-align" in document.documentElement.style,
                        n = e.XMLHttpRequest && e.XMLHttpRequest.prototype.send;
                    t && n && (XMLHttpRequest.prototype.send = function (e) {
                        e instanceof Blob && this.setRequestHeader("Content-Type", e.type), n.call(this, e)
                    });
                    try {
                        new File([], "")
                    } catch (t) {
                        try {
                            var i = new Function('class File extends Blob {constructor(chunks, name, opts) {opts = opts || {};super(chunks, opts || {});this.name = name;this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date;this.lastModified = +this.lastModifiedDate;}};return new File([], ""), File')();
                            e.File = i
                        } catch (t) {
                            i = function (e, t, n) {
                                var i = new Blob(e, n),
                                    r = n && void 0 !== n.lastModified ? new Date(n.lastModified) : new Date;
                                return i.name = t, i.lastModifiedDate = r, i.lastModified = +r, i.toString = function () {
                                    return "[object File]"
                                }, o && (i[o] = "File"), i
                            }, e.File = i
                        }
                    }
                }

                a ? (f(), e.Blob = s ? e.Blob : d) : c ? (f(), e.Blob = h) : function () {
                    function t(e) {
                        for (var t = [], n = 0; n < e.length; n++) {
                            var i = e.charCodeAt(n);
                            i < 128 ? t.push(i) : i < 2048 ? t.push(192 | i >> 6, 128 | 63 & i) : i < 55296 || 57344 <= i ? t.push(224 | i >> 12, 128 | i >> 6 & 63, 128 | 63 & i) : (n++, i = 65536 + ((1023 & i) << 10 | 1023 & e.charCodeAt(n)), t.push(240 | i >> 18, 128 | i >> 12 & 63, 128 | i >> 6 & 63, 128 | 63 & i))
                        }
                        return t
                    }

                    function n(e) {
                        var t, n, i, r, o, a;
                        for (t = "", i = e.length, n = 0; n < i;) switch ((r = e[n++]) >> 4) {
                            case 0:
                            case 1:
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                            case 6:
                            case 7:
                                t += String.fromCharCode(r);
                                break;
                            case 12:
                            case 13:
                                o = e[n++], t += String.fromCharCode((31 & r) << 6 | 63 & o);
                                break;
                            case 14:
                                o = e[n++], a = e[n++], t += String.fromCharCode((15 & r) << 12 | (63 & o) << 6 | (63 & a) << 0)
                        }
                        return t
                    }

                    function o(e) {
                        for (var t = new Array(e.byteLength), n = new Uint8Array(e), i = t.length; i--;) t[i] = n[i];
                        return t
                    }

                    function a(e) {
                        for (var t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = [], i = 0; i < e.length; i += 3) {
                            var r = e[i], o = i + 1 < e.length, a = o ? e[i + 1] : 0, s = i + 2 < e.length,
                                l = s ? e[i + 2] : 0, c = r >> 2, u = (3 & r) << 4 | a >> 4, h = (15 & a) << 2 | l >> 6,
                                d = 63 & l;
                            s || (d = 64, o || (h = 64)), n.push(t[c], t[u], t[h], t[d])
                        }
                        return n.join("")
                    }

                    var s = Object.create || function (e) {
                        function t() {
                        }

                        return t.prototype = e, new t
                    };
                    if (l) var c = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"],
                        u = ArrayBuffer.isView || function (e) {
                            return e && -1 < c.indexOf(Object.prototype.toString.call(e))
                        };

                    function h(e, n) {
                        for (var i = 0, r = (e = e || []).length; i < r; i++) {
                            var a = e[i];
                            a instanceof h ? e[i] = a._buffer : "string" == typeof a ? e[i] = t(a) : l && (ArrayBuffer.prototype.isPrototypeOf(a) || u(a)) ? e[i] = o(a) : l && (s = a) && DataView.prototype.isPrototypeOf(s) ? e[i] = o(a.buffer) : e[i] = t(String(a))
                        }
                        var s;
                        this._buffer = [].concat.apply([], e), this.size = this._buffer.length, this.type = n && n.type || ""
                    }

                    function d(e, t, n) {
                        var i = h.call(this, e, n = n || {}) || this;
                        return i.name = t, i.lastModifiedDate = n.lastModified ? new Date(n.lastModified) : new Date, i.lastModified = +i.lastModifiedDate, i
                    }

                    if (h.prototype.slice = function (e, t, n) {
                        return new h([this._buffer.slice(e || 0, t || this._buffer.length)], {type: n})
                    }, h.prototype.toString = function () {
                        return "[object Blob]"
                    }, (d.prototype = s(h.prototype)).constructor = d, Object.setPrototypeOf) Object.setPrototypeOf(d, h); else try {
                        d.__proto__ = h
                    } catch (s) {
                    }

                    function f() {
                        if (!(this instanceof f)) throw new TypeError("Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
                        var e = document.createDocumentFragment();
                        this.addEventListener = e.addEventListener, this.dispatchEvent = function (t) {
                            var n = this["on" + t.type];
                            "function" == typeof n && n(t), e.dispatchEvent(t)
                        }, this.removeEventListener = e.removeEventListener
                    }

                    function g(e, t, n) {
                        if (!(t instanceof h)) throw new TypeError("Failed to execute '" + n + "' on 'FileReader': parameter 1 is not of type 'Blob'.");
                        e.result = "", setTimeout((function () {
                            this.readyState = f.LOADING, e.dispatchEvent(new Event("load")), e.dispatchEvent(new Event("loadend"))
                        }))
                    }

                    d.prototype.toString = function () {
                        return "[object File]"
                    }, f.EMPTY = 0, f.LOADING = 1, f.DONE = 2, f.prototype.error = null, f.prototype.onabort = null, f.prototype.onerror = null, f.prototype.onload = null, f.prototype.onloadend = null, f.prototype.onloadstart = null, f.prototype.onprogress = null, f.prototype.readAsDataURL = function (e) {
                        g(this, e, "readAsDataURL"), this.result = "data:" + e.type + ";base64," + a(e._buffer)
                    }, f.prototype.readAsText = function (e) {
                        g(this, e, "readAsText"), this.result = n(e._buffer)
                    }, f.prototype.readAsArrayBuffer = function (e) {
                        g(this, e, "readAsText"), this.result = e._buffer.slice()
                    }, f.prototype.abort = function () {
                    }, URL.createObjectURL = function (e) {
                        return e instanceof h ? "data:" + e.type + ";base64," + a(e._buffer) : i.call(URL, e)
                    }, URL.revokeObjectURL = function (e) {
                        r && r.call(URL, e)
                    };
                    var p = e.XMLHttpRequest && e.XMLHttpRequest.prototype.send;
                    p && (XMLHttpRequest.prototype.send = function (e) {
                        e instanceof h ? (this.setRequestHeader("Content-Type", e.type), p.call(this, n(e._buffer))) : p.call(this, e)
                    }), e.FileReader = f, e.File = d, e.Blob = h
                }()
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")());
            var pe, me, ve, ye, be, Ce, we, Ie, xe, Ae, _e, Se, ke, Le, Te, Oe = Oe || function (e) {
                if (!(void 0 === e || "undefined" != typeof navigator && /MSIE [1-9]\./.test(navigator.userAgent))) {
                    var t = e.document, n = function () {
                            return e.URL || e.webkitURL || e
                        }, i = t.createElementNS("http://www.w3.org/1999/xhtml", "a"), r = "download" in i,
                        o = /constructor/i.test(e.HTMLElement) || e.safari,
                        a = /CriOS\/[\d]+/.test(navigator.userAgent), s = e.setImmediate || e.setTimeout,
                        l = function (e) {
                            s((function () {
                                throw e
                            }), 0)
                        }, c = function (e) {
                            setTimeout((function () {
                                "string" == typeof e ? n().revokeObjectURL(e) : e.remove()
                            }), 4e4)
                        }, u = function (e) {
                            return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type) ? new Blob([String.fromCharCode(65279), e], {type: e.type}) : e
                        }, h = function (t, h, d) {
                            d || (t = u(t));
                            var f, g = this, p = "application/octet-stream" === t.type, m = function () {
                                !function (e, t, n) {
                                    for (var i = (t = [].concat(t)).length; i--;) {
                                        var r = e["on" + t[i]];
                                        if ("function" == typeof r) try {
                                            r.call(e, e)
                                        } catch (e) {
                                            l(e)
                                        }
                                    }
                                }(g, "writestart progress write writeend".split(" "))
                            };
                            if (g.readyState = g.INIT, r) return f = n().createObjectURL(t), void s((function () {
                                var e, t;
                                i.href = f, i.download = h, e = i, t = new MouseEvent("click"), e.dispatchEvent(t), m(), c(f), g.readyState = g.DONE
                            }), 0);
                            !function () {
                                if ((a || p && o) && e.FileReader) {
                                    var i = new FileReader;
                                    return i.onloadend = function () {
                                        var t = a ? i.result : i.result.replace(/^data:[^;]*;/, "data:attachment/file;");
                                        e.open(t, "_blank") || (e.location.href = t), t = void 0, g.readyState = g.DONE, m()
                                    }, i.readAsDataURL(t), g.readyState = g.INIT
                                }
                                f || (f = n().createObjectURL(t)), p ? e.location.href = f : e.open(f, "_blank") || (e.location.href = f), g.readyState = g.DONE, m(), c(f)
                            }()
                        }, d = h.prototype;
                    return "undefined" != typeof navigator && navigator.msSaveOrOpenBlob ? function (e, t, n) {
                        return t = t || e.name || "download", n || (e = u(e)), navigator.msSaveOrOpenBlob(e, t)
                    } : (d.abort = function () {
                    }, d.readyState = d.INIT = 0, d.WRITING = 1, d.DONE = 2, d.error = d.onwritestart = d.onprogress = d.onwrite = d.onabort = d.onerror = d.onwriteend = null, function (e, t, n) {
                        return new h(e, t || e.name || "download", n)
                    })
                }
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0);

            function Re(e) {
                var t = 0;
                if (71 !== e[t++] || 73 !== e[t++] || 70 !== e[t++] || 56 !== e[t++] || 56 != (e[t++] + 1 & 253) || 97 !== e[t++]) throw"Invalid GIF 87a/89a header.";
                var n = e[t++] | e[t++] << 8, i = e[t++] | e[t++] << 8, r = e[t++], o = r >> 7, a = 1 << 1 + (7 & r);
                e[t++], e[t++];
                var s = null;
                o && (s = t, t += 3 * a);
                var l = !0, c = [], u = 0, h = null, d = 0, f = null;
                for (this.width = n, this.height = i; l && t < e.length;) switch (e[t++]) {
                    case 33:
                        switch (e[t++]) {
                            case 255:
                                if (11 !== e[t] || 78 == e[t + 1] && 69 == e[t + 2] && 84 == e[t + 3] && 83 == e[t + 4] && 67 == e[t + 5] && 65 == e[t + 6] && 80 == e[t + 7] && 69 == e[t + 8] && 50 == e[t + 9] && 46 == e[t + 10] && 48 == e[t + 11] && 3 == e[t + 12] && 1 == e[t + 13] && 0 == e[t + 16]) t += 14, f = e[t++] | e[t++] << 8, t++; else for (t += 12; 0 !== (A = e[t++]);) t += A;
                                break;
                            case 249:
                                if (4 !== e[t++] || 0 !== e[t + 4]) throw"Invalid graphics extension block.";
                                var g = e[t++];
                                u = e[t++] | e[t++] << 8, h = e[t++], 0 == (1 & g) && (h = null), d = g >> 2 & 7, t++;
                                break;
                            case 254:
                                for (; 0 !== (A = e[t++]);) t += A;
                                break;
                            default:
                                throw"Unknown graphic control label: 0x" + e[t - 1].toString(16)
                        }
                        break;
                    case 44:
                        var p = e[t++] | e[t++] << 8, m = e[t++] | e[t++] << 8, v = e[t++] | e[t++] << 8,
                            y = e[t++] | e[t++] << 8, b = e[t++], C = b >> 6 & 1, w = s, I = !1;
                        b >> 7 && (I = !0, w = t, t += 3 * (1 << 1 + (7 & b)));
                        var x = t;
                        for (t++; ;) {
                            var A;
                            if (0 === (A = e[t++])) break;
                            t += A
                        }
                        c.push({
                            x: p,
                            y: m,
                            width: v,
                            height: y,
                            has_local_palette: I,
                            palette_offset: w,
                            data_offset: x,
                            data_length: t - x,
                            transparent_index: h,
                            interlaced: !!C,
                            delay: u,
                            disposal: d
                        });
                        break;
                    case 59:
                        l = !1;
                        break;
                    default:
                        throw"Unknown gif block: 0x" + e[t - 1].toString(16)
                }
                this.numFrames = function () {
                    return c.length
                }, this.loopCount = function () {
                    return f
                }, this.frameInfo = function (e) {
                    if (e < 0 || e >= c.length) throw"Frame index out of range.";
                    return c[e]
                }, this.decodeAndBlitFrameBGRA = function (t, i) {
                    var r = this.frameInfo(t), o = r.width * r.height, a = new Uint8Array(o);
                    Ee(e, r.data_offset, a, o);
                    var s = r.palette_offset, l = r.transparent_index;
                    null === l && (l = 256);
                    var c = r.width, u = n - c, h = c, d = 4 * (r.y * n + r.x), f = 4 * ((r.y + r.height) * n + r.x),
                        g = d, p = 4 * u;
                    !0 === r.interlaced && (p += 4 * (c + u) * 7);
                    for (var m = 8, v = 0, y = a.length; v < y; ++v) {
                        var b = a[v];
                        if (0 === h && (h = c, f <= (g += p) && (p = u + 4 * (c + u) * (m - 1), g = d + (c + u) * (m << 1), m >>= 1)), b === l) g += 4; else {
                            var C = e[s + 3 * b], w = e[s + 3 * b + 1], I = e[s + 3 * b + 2];
                            i[g++] = I, i[g++] = w, i[g++] = C, i[g++] = 255
                        }
                        --h
                    }
                }, this.decodeAndBlitFrameRGBA = function (t, i) {
                    var r = this.frameInfo(t), o = r.width * r.height, a = new Uint8Array(o);
                    Ee(e, r.data_offset, a, o);
                    var s = r.palette_offset, l = r.transparent_index;
                    null === l && (l = 256);
                    var c = r.width, u = n - c, h = c, d = 4 * (r.y * n + r.x), f = 4 * ((r.y + r.height) * n + r.x),
                        g = d, p = 4 * u;
                    !0 === r.interlaced && (p += 4 * (c + u) * 7);
                    for (var m = 8, v = 0, y = a.length; v < y; ++v) {
                        var b = a[v];
                        if (0 === h && (h = c, f <= (g += p) && (p = u + 4 * (c + u) * (m - 1), g = d + (c + u) * (m << 1), m >>= 1)), b === l) g += 4; else {
                            var C = e[s + 3 * b], w = e[s + 3 * b + 1], I = e[s + 3 * b + 2];
                            i[g++] = C, i[g++] = w, i[g++] = I, i[g++] = 255
                        }
                        --h
                    }
                }
            }

            function Ee(e, t, n, i) {
                for (var r = e[t++], o = 1 << r, a = o + 1, s = a + 1, l = r + 1, c = (1 << l) - 1, u = 0, h = 0, d = 0, f = e[t++], g = new Int32Array(4096), p = null; ;) {
                    for (; u < 16 && 0 !== f;) h |= e[t++] << u, u += 8, 1 === f ? f = e[t++] : --f;
                    if (u < l) break;
                    var m = h & c;
                    if (h >>= l, u -= l, m !== o) {
                        if (m === a) break;
                        for (var v = m < s ? m : p, y = 0, b = v; o < b;) b = g[b] >> 8, ++y;
                        var C = b;
                        if (i < d + y + (v !== m ? 1 : 0)) return void console.log("Warning, gif stream longer than expected.");
                        n[d++] = C;
                        var w = d += y;
                        for (v !== m && (n[d++] = C), b = v; y--;) b = g[b], n[--w] = 255 & b, b >>= 8;
                        null !== p && s < 4096 && (g[s++] = p << 8 | C, c + 1 <= s && l < 12 && (++l, c = c << 1 | 1)), p = m
                    } else s = a + 1, c = (1 << (l = r + 1)) - 1, p = null
                }
                return d !== i && console.log("Warning, gif stream shorter than expected."), n
            }

            try {
                t.GifWriter = function (e, t, n, i) {
                    var r = 0, o = void 0 === (i = void 0 === i ? {} : i).loop ? null : i.loop,
                        a = void 0 === i.palette ? null : i.palette;
                    if (t <= 0 || n <= 0 || 65535 < t || 65535 < n) throw"Width/Height invalid.";

                    function s(e) {
                        var t = e.length;
                        if (t < 2 || 256 < t || t & t - 1) throw"Invalid code/color length, must be power of 2 and 2 .. 256.";
                        return t
                    }

                    e[r++] = 71, e[r++] = 73, e[r++] = 70, e[r++] = 56, e[r++] = 57, e[r++] = 97;
                    var l = 0, c = 0;
                    if (null !== a) {
                        for (var u = s(a); u >>= 1;) ++l;
                        if (u = 1 << l, --l, void 0 !== i.background) {
                            if (u <= (c = i.background)) throw"Background index out of range.";
                            if (0 === c) throw"Background index explicitly passed as 0."
                        }
                    }
                    if (e[r++] = 255 & t, e[r++] = t >> 8 & 255, e[r++] = 255 & n, e[r++] = n >> 8 & 255, e[r++] = (null !== a ? 128 : 0) | l, e[r++] = c, e[r++] = 0, null !== a) for (var h = 0, d = a.length; h < d; ++h) {
                        var f = a[h];
                        e[r++] = f >> 16 & 255, e[r++] = f >> 8 & 255, e[r++] = 255 & f
                    }
                    if (null !== o) {
                        if (o < 0 || 65535 < o) throw"Loop count invalid.";
                        e[r++] = 33, e[r++] = 255, e[r++] = 11, e[r++] = 78, e[r++] = 69, e[r++] = 84, e[r++] = 83, e[r++] = 67, e[r++] = 65, e[r++] = 80, e[r++] = 69, e[r++] = 50, e[r++] = 46, e[r++] = 48, e[r++] = 3, e[r++] = 1, e[r++] = 255 & o, e[r++] = o >> 8 & 255, e[r++] = 0
                    }
                    var g = !1;
                    this.addFrame = function (t, n, i, o, l, c) {
                        if (!0 === g && (--r, g = !1), c = void 0 === c ? {} : c, t < 0 || n < 0 || 65535 < t || 65535 < n) throw"x/y invalid.";
                        if (i <= 0 || o <= 0 || 65535 < i || 65535 < o) throw"Width/Height invalid.";
                        if (l.length < i * o) throw"Not enough pixels for the frame size.";
                        var u = !0, h = c.palette;
                        if (null == h && (u = !1, h = a), null == h) throw"Must supply either a local or global palette.";
                        for (var d = s(h), f = 0; d >>= 1;) ++f;
                        d = 1 << f;
                        var p = void 0 === c.delay ? 0 : c.delay, m = void 0 === c.disposal ? 0 : c.disposal;
                        if (m < 0 || 3 < m) throw"Disposal out of range.";
                        var v = !1, y = 0;
                        if (void 0 !== c.transparent && null !== c.transparent && (v = !0, (y = c.transparent) < 0 || d <= y)) throw"Transparent color index.";
                        if ((0 !== m || v || 0 !== p) && (e[r++] = 33, e[r++] = 249, e[r++] = 4, e[r++] = m << 2 | (!0 === v ? 1 : 0), e[r++] = 255 & p, e[r++] = p >> 8 & 255, e[r++] = y, e[r++] = 0), e[r++] = 44, e[r++] = 255 & t, e[r++] = t >> 8 & 255, e[r++] = 255 & n, e[r++] = n >> 8 & 255, e[r++] = 255 & i, e[r++] = i >> 8 & 255, e[r++] = 255 & o, e[r++] = o >> 8 & 255, e[r++] = !0 === u ? 128 | f - 1 : 0, !0 === u) for (var b = 0, C = h.length; b < C; ++b) {
                            var w = h[b];
                            e[r++] = w >> 16 & 255, e[r++] = w >> 8 & 255, e[r++] = 255 & w
                        }
                        r = function (e, t, n, i) {
                            e[t++] = n;
                            var r = t++, o = 1 << n, a = o - 1, s = o + 1, l = s + 1, c = n + 1, u = 0, h = 0;

                            function d(n) {
                                for (; n <= u;) e[t++] = 255 & h, h >>= 8, u -= 8, t === r + 256 && (e[r] = 255, r = t++)
                            }

                            function f(e) {
                                h |= e << u, u += c, d(8)
                            }

                            var g = i[0] & a, p = {};
                            f(o);
                            for (var m = 1, v = i.length; m < v; ++m) {
                                var y = i[m] & a, b = g << 8 | y, C = p[b];
                                if (void 0 === C) {
                                    for (h |= g << u, u += c; 8 <= u;) e[t++] = 255 & h, h >>= 8, u -= 8, t === r + 256 && (e[r] = 255, r = t++);
                                    4096 === l ? (f(o), l = s + 1, c = n + 1, p = {}) : (1 << c <= l && ++c, p[b] = l++), g = y
                                } else g = C
                            }
                            return f(g), f(s), d(1), r + 1 === t ? e[r] = 0 : (e[r] = t - r - 1, e[t++] = 0), t
                        }(e, r, f < 2 ? 2 : f, l)
                    }, this.end = function () {
                        return !1 === g && (e[r++] = 59, g = !0), r
                    }
                }, t.GifReader = Re
            } catch (a) {
            }

            function Pe(e) {
                var t, n, i, r, o, a = Math.floor, s = new Array(64), l = new Array(64), c = new Array(64),
                    u = new Array(64), h = new Array(65535), d = new Array(65535), f = new Array(64), g = new Array(64),
                    p = [], m = 0, v = 7, y = new Array(64), b = new Array(64), C = new Array(64), w = new Array(256),
                    I = new Array(2048),
                    x = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63],
                    A = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], _ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
                    S = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125],
                    k = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250],
                    L = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], T = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
                    O = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119],
                    R = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];

                function E(e, t) {
                    for (var n = 0, i = 0, r = new Array, o = 1; o <= 16; o++) {
                        for (var a = 1; a <= e[o]; a++) r[t[i]] = [], r[t[i]][0] = n, r[t[i]][1] = o, i++, n++;
                        n *= 2
                    }
                    return r
                }

                function P(e) {
                    for (var t = e[0], n = e[1] - 1; 0 <= n;) t & 1 << n && (m |= 1 << v), n--, --v < 0 && (255 == m ? (M(255), M(0)) : M(m), v = 7, m = 0)
                }

                function M(e) {
                    p.push(e)
                }

                function N(e) {
                    M(e >> 8 & 255), M(255 & e)
                }

                function D(e, t, n, i, r) {
                    for (var o, a = r[0], s = r[240], l = function (e, t) {
                        var n, i, r, o, a, s, l, c, u, h, d = 0;
                        for (u = 0; u < 8; ++u) {
                            n = e[d], i = e[d + 1], r = e[d + 2], o = e[d + 3], a = e[d + 4], s = e[d + 5], l = e[d + 6];
                            var g = n + (c = e[d + 7]), p = n - c, m = i + l, v = i - l, y = r + s, b = r - s,
                                C = o + a, w = o - a, I = g + C, x = g - C, A = m + y, _ = m - y;
                            e[d] = I + A, e[d + 4] = I - A;
                            var S = .707106781 * (_ + x);
                            e[d + 2] = x + S, e[d + 6] = x - S;
                            var k = .382683433 * ((I = w + b) - (_ = v + p)), L = .5411961 * I + k,
                                T = 1.306562965 * _ + k, O = .707106781 * (A = b + v), R = p + O, E = p - O;
                            e[d + 5] = E + L, e[d + 3] = E - L, e[d + 1] = R + T, e[d + 7] = R - T, d += 8
                        }
                        for (u = d = 0; u < 8; ++u) {
                            n = e[d], i = e[d + 8], r = e[d + 16], o = e[d + 24], a = e[d + 32], s = e[d + 40], l = e[d + 48];
                            var P = n + (c = e[d + 56]), M = n - c, N = i + l, D = i - l, B = r + s, j = r - s,
                                F = o + a, H = o - a, W = P + F, V = P - F, G = N + B, z = N - B;
                            e[d] = W + G, e[d + 32] = W - G;
                            var Z = .707106781 * (z + V);
                            e[d + 16] = V + Z, e[d + 48] = V - Z;
                            var $ = .382683433 * ((W = H + j) - (z = D + M)), K = .5411961 * W + $,
                                X = 1.306562965 * z + $, Y = .707106781 * (G = j + D), U = M + Y, J = M - Y;
                            e[d + 40] = J + K, e[d + 24] = J - K, e[d + 8] = U + X, e[d + 56] = U - X, d++
                        }
                        for (u = 0; u < 64; ++u) h = e[u] * t[u], f[u] = 0 < h ? h + .5 | 0 : h - .5 | 0;
                        return f
                    }(e, t), c = 0; c < 64; ++c) g[x[c]] = l[c];
                    var u = g[0] - n;
                    n = g[0], 0 == u ? P(i[0]) : (P(i[d[o = 32767 + u]]), P(h[o]));
                    for (var p = 63; 0 < p && 0 == g[p]; p--) ;
                    if (0 == p) return P(a), n;
                    for (var m, v = 1; v <= p;) {
                        for (var y = v; 0 == g[v] && v <= p; ++v) ;
                        var b = v - y;
                        if (16 <= b) {
                            m = b >> 4;
                            for (var C = 1; C <= m; ++C) P(s);
                            b &= 15
                        }
                        o = 32767 + g[v], P(r[(b << 4) + d[o]]), P(h[o]), v++
                    }
                    return 63 != p && P(a), n
                }

                function B(e) {
                    e <= 0 && (e = 1), 100 < e && (e = 100), o != e && (function (e) {
                        for (var t = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], n = 0; n < 64; n++) {
                            var i = a((t[n] * e + 50) / 100);
                            i < 1 ? i = 1 : 255 < i && (i = 255), s[x[n]] = i
                        }
                        for (var r = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], o = 0; o < 64; o++) {
                            var h = a((r[o] * e + 50) / 100);
                            h < 1 ? h = 1 : 255 < h && (h = 255), l[x[o]] = h
                        }
                        for (var d = [1, 1.387039845, 1.306562965, 1.175875602, 1, .785694958, .5411961, .275899379], f = 0, g = 0; g < 8; g++) for (var p = 0; p < 8; p++) c[f] = 1 / (s[x[f]] * d[g] * d[p] * 8), u[f] = 1 / (l[x[f]] * d[g] * d[p] * 8), f++
                    }(e < 50 ? Math.floor(5e3 / e) : Math.floor(200 - 2 * e)), o = e)
                }

                this.encode = function (e, o) {
                    var a, h;
                    (new Date).getTime(), o && B(o), p = new Array, m = 0, v = 7, N(65496), N(65504), N(16), M(74), M(70), M(73), M(70), M(0), M(1), M(1), M(0), N(1), N(1), M(0), M(0), function () {
                        N(65499), N(132), M(0);
                        for (var e = 0; e < 64; e++) M(s[e]);
                        M(1);
                        for (var t = 0; t < 64; t++) M(l[t])
                    }(), a = e.width, h = e.height, N(65472), N(17), M(8), N(h), N(a), M(3), M(1), M(17), M(0), M(2), M(17), M(1), M(3), M(17), M(1), function () {
                        N(65476), N(418), M(0);
                        for (var e = 0; e < 16; e++) M(A[e + 1]);
                        for (var t = 0; t <= 11; t++) M(_[t]);
                        M(16);
                        for (var n = 0; n < 16; n++) M(S[n + 1]);
                        for (var i = 0; i <= 161; i++) M(k[i]);
                        M(1);
                        for (var r = 0; r < 16; r++) M(L[r + 1]);
                        for (var o = 0; o <= 11; o++) M(T[o]);
                        M(17);
                        for (var a = 0; a < 16; a++) M(O[a + 1]);
                        for (var s = 0; s <= 161; s++) M(R[s])
                    }(), N(65498), N(12), M(3), M(1), M(0), M(2), M(17), M(3), M(17), M(0), M(63), M(0);
                    var d = 0, f = 0, g = 0;
                    m = 0, v = 7, this.encode.displayName = "_encode_";
                    for (var w, x, E, j, F, H, W, V, G, z = e.data, Z = e.width, $ = e.height, K = 4 * Z, X = 0; X < $;) {
                        for (w = 0; w < K;) {
                            for (H = F = K * X + w, W = -1, G = V = 0; G < 64; G++) H = F + (V = G >> 3) * K + (W = 4 * (7 & G)), $ <= X + V && (H -= K * (X + 1 + V - $)), K <= w + W && (H -= w + W - K + 4), x = z[H++], E = z[H++], j = z[H++], y[G] = (I[x] + I[E + 256 >> 0] + I[j + 512 >> 0] >> 16) - 128, b[G] = (I[x + 768 >> 0] + I[E + 1024 >> 0] + I[j + 1280 >> 0] >> 16) - 128, C[G] = (I[x + 1280 >> 0] + I[E + 1536 >> 0] + I[j + 1792 >> 0] >> 16) - 128;
                            d = D(y, c, d, t, i), f = D(b, u, f, n, r), g = D(C, u, g, n, r), w += 32
                        }
                        X += 8
                    }
                    if (0 <= v) {
                        var Y = [];
                        Y[1] = v + 1, Y[0] = (1 << v + 1) - 1, P(Y)
                    }
                    return N(65497), new Uint8Array(p)
                }, (new Date).getTime(), e || (e = 50), function () {
                    for (var e = String.fromCharCode, t = 0; t < 256; t++) w[t] = e(t)
                }(), t = E(A, _), n = E(L, T), i = E(S, k), r = E(O, R), function () {
                    for (var e = 1, t = 2, n = 1; n <= 15; n++) {
                        for (var i = e; i < t; i++) d[32767 + i] = n, h[32767 + i] = [], h[32767 + i][1] = n, h[32767 + i][0] = i;
                        for (var r = -(t - 1); r <= -e; r++) d[32767 + r] = n, h[32767 + r] = [], h[32767 + r][1] = n, h[32767 + r][0] = t - 1 + r;
                        e <<= 1, t <<= 1
                    }
                }(), function () {
                    for (var e = 0; e < 256; e++) I[e] = 19595 * e, I[e + 256 >> 0] = 38470 * e, I[e + 512 >> 0] = 7471 * e + 32768, I[e + 768 >> 0] = -11059 * e, I[e + 1024 >> 0] = -21709 * e, I[e + 1280 >> 0] = 32768 * e + 8421375, I[e + 1536 >> 0] = -27439 * e, I[e + 1792 >> 0] = -5329 * e
                }(), B(e), (new Date).getTime()
            }

            function Me(e, t) {
                if (this.pos = 0, this.buffer = e, this.datav = new DataView(e.buffer), this.is_with_alpha = !!t, this.bottom_up = !0, this.flag = String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]), this.pos += 2, -1 === ["BM", "BA", "CI", "CP", "IC", "PT"].indexOf(this.flag)) throw new Error("Invalid BMP File");
                this.parseHeader(), this.parseBGR()
            }

            window.tmp = Re, ge.API.adler32cs = (Ce = "function" == typeof ArrayBuffer && "function" == typeof Uint8Array, we = null, Ie = function () {
                if (!Ce) return function () {
                    return !1
                };
                try {
                    var e = {};
                    "function" == typeof e.Buffer && (we = e.Buffer)
                } catch (e) {
                }
                return function (e) {
                    return e instanceof ArrayBuffer || null !== we && e instanceof we
                }
            }(), xe = null !== we ? function (e) {
                return new we(e, "utf8").toString("binary")
            } : function (e) {
                return unescape(encodeURIComponent(e))
            }, Ae = function (e, t) {
                for (var n = 65535 & e, i = e >>> 16, r = 0, o = t.length; r < o; r++) i = (i + (n = (n + (255 & t.charCodeAt(r))) % 65521)) % 65521;
                return (i << 16 | n) >>> 0
            }, _e = function (e, t) {
                for (var n = 65535 & e, i = e >>> 16, r = 0, o = t.length; r < o; r++) i = (i + (n = (n + t[r]) % 65521)) % 65521;
                return (i << 16 | n) >>> 0
            }, ke = (Se = {}).Adler32 = (((be = (ye = function (e) {
                if (!(this instanceof ye)) throw new TypeError("Constructor cannot called be as a function.");
                if (!isFinite(e = null == e ? 1 : +e)) throw new Error("First arguments needs to be a finite number.");
                this.checksum = e >>> 0
            }).prototype = {}).constructor = ye).from = ((pe = function (e) {
                if (!(this instanceof ye)) throw new TypeError("Constructor cannot called be as a function.");
                if (null == e) throw new Error("First argument needs to be a string.");
                this.checksum = Ae(1, e.toString())
            }).prototype = be, pe), ye.fromUtf8 = ((me = function (e) {
                if (!(this instanceof ye)) throw new TypeError("Constructor cannot called be as a function.");
                if (null == e) throw new Error("First argument needs to be a string.");
                var t = xe(e.toString());
                this.checksum = Ae(1, t)
            }).prototype = be, me), Ce && (ye.fromBuffer = ((ve = function (e) {
                if (!(this instanceof ye)) throw new TypeError("Constructor cannot called be as a function.");
                if (!Ie(e)) throw new Error("First argument needs to be ArrayBuffer.");
                var t = new Uint8Array(e);
                return this.checksum = _e(1, t)
            }).prototype = be, ve)), be.update = function (e) {
                if (null == e) throw new Error("First argument needs to be a string.");
                return e = e.toString(), this.checksum = Ae(this.checksum, e)
            }, be.updateUtf8 = function (e) {
                if (null == e) throw new Error("First argument needs to be a string.");
                var t = xe(e.toString());
                return this.checksum = Ae(this.checksum, t)
            }, Ce && (be.updateBuffer = function (e) {
                if (!Ie(e)) throw new Error("First argument needs to be ArrayBuffer.");
                var t = new Uint8Array(e);
                return this.checksum = _e(this.checksum, t)
            }), be.clone = function () {
                return new ke(this.checksum)
            }, ye), Se.from = function (e) {
                if (null == e) throw new Error("First argument needs to be a string.");
                return Ae(1, e.toString())
            }, Se.fromUtf8 = function (e) {
                if (null == e) throw new Error("First argument needs to be a string.");
                var t = xe(e.toString());
                return Ae(1, t)
            }, Ce && (Se.fromBuffer = function (e) {
                if (!Ie(e)) throw new Error("First argument need to be ArrayBuffer.");
                var t = new Uint8Array(e);
                return _e(1, t)
            }), Se), function (e) {
                e.__bidiEngine__ = e.prototype.__bidiEngine__ = function (e) {
                    var n, i, r, o, a, s, l, c = t,
                        u = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]],
                        h = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]],
                        d = {L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6},
                        f = {0: 0, 5: 1, 6: 2, 7: 3, 32: 4, 251: 5, 254: 6, 255: 7},
                        g = ["(", ")", "(", "<", ">", "<", "[", "]", "[", "{", "}", "{", "«", "»", "«", "‹", "›", "‹", "⁅", "⁆", "⁅", "⁽", "⁾", "⁽", "₍", "₎", "₍", "≤", "≥", "≤", "〈", "〉", "〈", "﹙", "﹚", "﹙", "﹛", "﹜", "﹛", "﹝", "﹞", "﹝", "﹤", "﹥", "﹤"],
                        p = new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/),
                        m = !1, v = 0;
                    this.__bidiEngine__ = {};
                    var y = function (e) {
                        var t = e.charCodeAt(), n = t >> 8, i = f[n];
                        return void 0 !== i ? c[256 * i + (255 & t)] : 252 === n || 253 === n ? "AL" : p.test(n) ? "L" : 8 === n ? "R" : "N"
                    }, b = function (e) {
                        for (var t, n = 0; n < e.length; n++) {
                            if ("L" === (t = y(e.charAt(n)))) return !1;
                            if ("R" === t) return !0
                        }
                        return !1
                    }, C = function (e, t, a, s) {
                        var l, c, u, h, d = t[s];
                        switch (d) {
                            case"L":
                            case"R":
                                m = !1;
                                break;
                            case"N":
                            case"AN":
                                break;
                            case"EN":
                                m && (d = "AN");
                                break;
                            case"AL":
                                m = !0, d = "R";
                                break;
                            case"WS":
                                d = "N";
                                break;
                            case"CS":
                                s < 1 || s + 1 >= t.length || "EN" !== (l = a[s - 1]) && "AN" !== l || "EN" !== (c = t[s + 1]) && "AN" !== c ? d = "N" : m && (c = "AN"), d = c === l ? c : "N";
                                break;
                            case"ES":
                                d = "EN" === (l = 0 < s ? a[s - 1] : "B") && s + 1 < t.length && "EN" === t[s + 1] ? "EN" : "N";
                                break;
                            case"ET":
                                if (0 < s && "EN" === a[s - 1]) {
                                    d = "EN";
                                    break
                                }
                                if (m) {
                                    d = "N";
                                    break
                                }
                                for (u = s + 1, h = t.length; u < h && "ET" === t[u];) u++;
                                d = u < h && "EN" === t[u] ? "EN" : "N";
                                break;
                            case"NSM":
                                if (r && !o) {
                                    for (h = t.length, u = s + 1; u < h && "NSM" === t[u];) u++;
                                    if (u < h) {
                                        var f = e[s], g = 1425 <= f && f <= 2303 || 64286 === f;
                                        if (l = t[u], g && ("R" === l || "AL" === l)) {
                                            d = "R";
                                            break
                                        }
                                    }
                                }
                                d = s < 1 || "B" === (l = t[s - 1]) ? "N" : a[s - 1];
                                break;
                            case"B":
                                n = !(m = !1), d = v;
                                break;
                            case"S":
                                i = !0, d = "N";
                                break;
                            case"LRE":
                            case"RLE":
                            case"LRO":
                            case"RLO":
                            case"PDF":
                                m = !1;
                                break;
                            case"BN":
                                d = "N"
                        }
                        return d
                    }, w = function (e, t, n) {
                        var i = e.split("");
                        return n && I(i, n, {hiLevel: v}), i.reverse(), t && t.reverse(), i.join("")
                    }, I = function (e, t, r) {
                        var o, a, s, l, c, f = -1, g = e.length, p = 0, b = [], w = v ? h : u, I = [];
                        for (i = n = m = !1, a = 0; a < g; a++) I[a] = y(e[a]);
                        for (s = 0; s < g; s++) {
                            if (c = p, b[s] = C(e, I, b, s), o = 240 & (p = w[c][d[b[s]]]), p &= 15, t[s] = l = w[p][5], 0 < o) if (16 === o) {
                                for (a = f; a < s; a++) t[a] = 1;
                                f = -1
                            } else f = -1;
                            if (w[p][6]) -1 === f && (f = s); else if (-1 < f) {
                                for (a = f; a < s; a++) t[a] = l;
                                f = -1
                            }
                            "B" === I[s] && (t[s] = 0), r.hiLevel |= l
                        }
                        i && function (e, t, n) {
                            for (var i = 0; i < n; i++) if ("S" === e[i]) {
                                t[i] = v;
                                for (var r = i - 1; 0 <= r && "WS" === e[r]; r--) t[r] = v
                            }
                        }(I, t, g)
                    }, x = function (e, t, i, r, o) {
                        if (!(o.hiLevel < e)) {
                            if (1 === e && 1 === v && !n) return t.reverse(), void (i && i.reverse());
                            for (var a, s, l, c, u = t.length, h = 0; h < u;) {
                                if (r[h] >= e) {
                                    for (l = h + 1; l < u && r[l] >= e;) l++;
                                    for (c = h, s = l - 1; c < s; c++, s--) a = t[c], t[c] = t[s], t[s] = a, i && (a = i[c], i[c] = i[s], i[s] = a);
                                    h = l
                                }
                                h++
                            }
                        }
                    }, A = function (e, t, n) {
                        var i = e.split(""), r = {hiLevel: v};
                        return n || (n = []), I(i, n, r), function (e, t, n) {
                            if (0 !== n.hiLevel && l) for (var i, r = 0; r < e.length; r++) 1 === t[r] && 0 <= (i = g.indexOf(e[r])) && (e[r] = g[i + 1])
                        }(i, n, r), x(2, i, t, n, r), x(1, i, t, n, r), i.join("")
                    };
                    return this.__bidiEngine__.doBidiReorder = function (e, t, n) {
                        if (function (e, t) {
                            if (t) for (var n = 0; n < e.length; n++) t[n] = n;
                            void 0 === o && (o = b(e)), void 0 === s && (s = b(e))
                        }(e, t), r || !a || s) if (r && a && o ^ s) v = o ? 1 : 0, e = w(e, t, n); else if (!r && a && s) v = o ? 1 : 0, e = A(e, t, n), e = w(e, t); else if (!r || o || a || s) {
                            if (r && !a && o ^ s) e = w(e, t), e = o ? (v = 0, A(e, t, n)) : (v = 1, e = A(e, t, n), w(e, t)); else if (r && o && !a && s) v = 1, e = A(e, t, n), e = w(e, t); else if (!r && !a && o ^ s) {
                                var i = l;
                                o ? (v = 1, e = A(e, t, n), v = 0, l = !1, e = A(e, t, n), l = i) : (v = 0, e = A(e, t, n), e = w(e, t), l = !(v = 1), e = A(e, t, n), l = i, e = w(e, t))
                            }
                        } else v = 0, e = A(e, t, n); else v = o ? 1 : 0, e = A(e, t, n);
                        return e
                    }, this.__bidiEngine__.setOptions = function (e) {
                        e && (r = e.isInputVisual, a = e.isOutputVisual, o = e.isInputRtl, s = e.isOutputRtl, l = e.isSymmetricSwapping)
                    }, this.__bidiEngine__.setOptions(e), this.__bidiEngine__
                };
                var t = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "N", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "L", "N", "N", "BN", "N", "N", "ET", "ET", "EN", "EN", "N", "L", "N", "N", "N", "EN", "L", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "N", "N", "N", "N", "N", "ET", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "NSM", "R", "NSM", "NSM", "R", "NSM", "NSM", "R", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AN", "AN", "AN", "AN", "AN", "AN", "N", "N", "AL", "ET", "ET", "AL", "CS", "AL", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "N", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "R", "N", "N", "N", "N", "R", "N", "N", "N", "N", "N", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "BN", "BN", "BN", "L", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "B", "LRE", "RLE", "PDF", "LRO", "RLO", "CS", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "BN", "BN", "BN", "BN", "BN", "N", "LRI", "RLI", "FSI", "PDI", "BN", "BN", "BN", "BN", "BN", "BN", "EN", "L", "N", "N", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "L", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "R", "NSM", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "ES", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "R", "R", "R", "R", "R", "N", "R", "N", "R", "R", "N", "R", "R", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "CS", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "ET", "N", "N", "ES", "ES", "N", "N", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "BN", "N", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "N", "N", "N", "ET", "ET", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N"],
                    n = new e.__bidiEngine__({isInputVisual: !0});
                e.API.events.push(["postProcessText", function (e) {
                    var t = e.text, i = (e.x, e.y, e.options || {}), r = (e.mutex, i.lang, []);
                    if ("[object Array]" === Object.prototype.toString.call(t)) {
                        var o = 0;
                        for (r = [], o = 0; o < t.length; o += 1) "[object Array]" === Object.prototype.toString.call(t[o]) ? r.push([n.doBidiReorder(t[o][0]), t[o][1], t[o][2]]) : r.push([n.doBidiReorder(t[o])]);
                        e.text = r
                    } else e.text = n.doBidiReorder(t)
                }])
            }(ge), window.tmp = Pe, Me.prototype.parseHeader = function () {
                if (this.fileSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.reserved = this.datav.getUint32(this.pos, !0), this.pos += 4, this.offset = this.datav.getUint32(this.pos, !0), this.pos += 4, this.headerSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.width = this.datav.getUint32(this.pos, !0), this.pos += 4, this.height = this.datav.getInt32(this.pos, !0), this.pos += 4, this.planes = this.datav.getUint16(this.pos, !0), this.pos += 2, this.bitPP = this.datav.getUint16(this.pos, !0), this.pos += 2, this.compress = this.datav.getUint32(this.pos, !0), this.pos += 4, this.rawSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.hr = this.datav.getUint32(this.pos, !0), this.pos += 4, this.vr = this.datav.getUint32(this.pos, !0), this.pos += 4, this.colors = this.datav.getUint32(this.pos, !0), this.pos += 4, this.importantColors = this.datav.getUint32(this.pos, !0), this.pos += 4, 16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15), this.bitPP < 15) {
                    var e = 0 === this.colors ? 1 << this.bitPP : this.colors;
                    this.palette = new Array(e);
                    for (var t = 0; t < e; t++) {
                        var n = this.datav.getUint8(this.pos++, !0), i = this.datav.getUint8(this.pos++, !0),
                            r = this.datav.getUint8(this.pos++, !0), o = this.datav.getUint8(this.pos++, !0);
                        this.palette[t] = {red: r, green: i, blue: n, quad: o}
                    }
                }
                this.height < 0 && (this.height *= -1, this.bottom_up = !1)
            }, Me.prototype.parseBGR = function () {
                this.pos = this.offset;
                try {
                    var e = "bit" + this.bitPP, t = this.width * this.height * 4;
                    this.data = new Uint8Array(t), this[e]()
                } catch (e) {
                    console.log("bit decode error:" + e)
                }
            }, Me.prototype.bit1 = function () {
                var e = Math.ceil(this.width / 8), t = e % 4, n = 0 <= this.height ? this.height - 1 : -this.height;
                for (n = this.height - 1; 0 <= n; n--) {
                    for (var i = this.bottom_up ? n : this.height - 1 - n, r = 0; r < e; r++) for (var o = this.datav.getUint8(this.pos++, !0), a = i * this.width * 4 + 8 * r * 4, s = 0; s < 8 && 8 * r + s < this.width; s++) {
                        var l = this.palette[o >> 7 - s & 1];
                        this.data[a + 4 * s] = l.blue, this.data[a + 4 * s + 1] = l.green, this.data[a + 4 * s + 2] = l.red, this.data[a + 4 * s + 3] = 255
                    }
                    0 != t && (this.pos += 4 - t)
                }
            }, Me.prototype.bit4 = function () {
                for (var e = Math.ceil(this.width / 2), t = e % 4, n = this.height - 1; 0 <= n; n--) {
                    for (var i = this.bottom_up ? n : this.height - 1 - n, r = 0; r < e; r++) {
                        var o = this.datav.getUint8(this.pos++, !0), a = i * this.width * 4 + 2 * r * 4, s = o >> 4,
                            l = 15 & o, c = this.palette[s];
                        if (this.data[a] = c.blue, this.data[a + 1] = c.green, this.data[a + 2] = c.red, this.data[a + 3] = 255, 2 * r + 1 >= this.width) break;
                        c = this.palette[l], this.data[a + 4] = c.blue, this.data[a + 4 + 1] = c.green, this.data[a + 4 + 2] = c.red, this.data[a + 4 + 3] = 255
                    }
                    0 != t && (this.pos += 4 - t)
                }
            }, Me.prototype.bit8 = function () {
                for (var e = this.width % 4, t = this.height - 1; 0 <= t; t--) {
                    for (var n = this.bottom_up ? t : this.height - 1 - t, i = 0; i < this.width; i++) {
                        var r = this.datav.getUint8(this.pos++, !0), o = n * this.width * 4 + 4 * i;
                        if (r < this.palette.length) {
                            var a = this.palette[r];
                            this.data[o] = a.red, this.data[o + 1] = a.green, this.data[o + 2] = a.blue, this.data[o + 3] = 255
                        } else this.data[o] = 255, this.data[o + 1] = 255, this.data[o + 2] = 255, this.data[o + 3] = 255
                    }
                    0 != e && (this.pos += 4 - e)
                }
            }, Me.prototype.bit15 = function () {
                for (var e = this.width % 3, t = parseInt("11111", 2), n = this.height - 1; 0 <= n; n--) {
                    for (var i = this.bottom_up ? n : this.height - 1 - n, r = 0; r < this.width; r++) {
                        var o = this.datav.getUint16(this.pos, !0);
                        this.pos += 2;
                        var a = (o & t) / t * 255 | 0, s = (o >> 5 & t) / t * 255 | 0, l = (o >> 10 & t) / t * 255 | 0,
                            c = o >> 15 ? 255 : 0, u = i * this.width * 4 + 4 * r;
                        this.data[u] = l, this.data[u + 1] = s, this.data[u + 2] = a, this.data[u + 3] = c
                    }
                    this.pos += e
                }
            }, Me.prototype.bit16 = function () {
                for (var e = this.width % 3, t = parseInt("11111", 2), n = parseInt("111111", 2), i = this.height - 1; 0 <= i; i--) {
                    for (var r = this.bottom_up ? i : this.height - 1 - i, o = 0; o < this.width; o++) {
                        var a = this.datav.getUint16(this.pos, !0);
                        this.pos += 2;
                        var s = (a & t) / t * 255 | 0, l = (a >> 5 & n) / n * 255 | 0, c = (a >> 11) / t * 255 | 0,
                            u = r * this.width * 4 + 4 * o;
                        this.data[u] = c, this.data[u + 1] = l, this.data[u + 2] = s, this.data[u + 3] = 255
                    }
                    this.pos += e
                }
            }, Me.prototype.bit24 = function () {
                for (var e = this.height - 1; 0 <= e; e--) {
                    for (var t = this.bottom_up ? e : this.height - 1 - e, n = 0; n < this.width; n++) {
                        var i = this.datav.getUint8(this.pos++, !0), r = this.datav.getUint8(this.pos++, !0),
                            o = this.datav.getUint8(this.pos++, !0), a = t * this.width * 4 + 4 * n;
                        this.data[a] = o, this.data[a + 1] = r, this.data[a + 2] = i, this.data[a + 3] = 255
                    }
                    this.pos += this.width % 4
                }
            }, Me.prototype.bit32 = function () {
                for (var e = this.height - 1; 0 <= e; e--) for (var t = this.bottom_up ? e : this.height - 1 - e, n = 0; n < this.width; n++) {
                    var i = this.datav.getUint8(this.pos++, !0), r = this.datav.getUint8(this.pos++, !0),
                        o = this.datav.getUint8(this.pos++, !0), a = this.datav.getUint8(this.pos++, !0),
                        s = t * this.width * 4 + 4 * n;
                    this.data[s] = o, this.data[s + 1] = r, this.data[s + 2] = i, this.data[s + 3] = a
                }
            }, Me.prototype.getData = function () {
                return this.data
            }, window.tmp = Me, function (e) {
                var t = [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29];

                function n() {
                    var e = this;

                    function t(e, t) {
                        for (var n = 0; n |= 1 & e, e >>>= 1, n <<= 1, 0 < --t;) ;
                        return n >>> 1
                    }

                    e.build_tree = function (n) {
                        var i, r, o, a = e.dyn_tree, s = e.stat_desc.static_tree, l = e.stat_desc.elems, c = -1;
                        for (n.heap_len = 0, n.heap_max = 573, i = 0; i < l; i++) 0 !== a[2 * i] ? (n.heap[++n.heap_len] = c = i, n.depth[i] = 0) : a[2 * i + 1] = 0;
                        for (; n.heap_len < 2;) a[2 * (o = n.heap[++n.heap_len] = c < 2 ? ++c : 0)] = 1, n.depth[o] = 0, n.opt_len--, s && (n.static_len -= s[2 * o + 1]);
                        for (e.max_code = c, i = Math.floor(n.heap_len / 2); 1 <= i; i--) n.pqdownheap(a, i);
                        for (o = l; i = n.heap[1], n.heap[1] = n.heap[n.heap_len--], n.pqdownheap(a, 1), r = n.heap[1], n.heap[--n.heap_max] = i, n.heap[--n.heap_max] = r, a[2 * o] = a[2 * i] + a[2 * r], n.depth[o] = Math.max(n.depth[i], n.depth[r]) + 1, a[2 * i + 1] = a[2 * r + 1] = o, n.heap[1] = o++, n.pqdownheap(a, 1), 2 <= n.heap_len;) ;
                        n.heap[--n.heap_max] = n.heap[1], function (t) {
                            var n, i, r, o, a, s, l = e.dyn_tree, c = e.stat_desc.static_tree,
                                u = e.stat_desc.extra_bits, h = e.stat_desc.extra_base, d = e.stat_desc.max_length,
                                f = 0;
                            for (o = 0; o <= 15; o++) t.bl_count[o] = 0;
                            for (l[2 * t.heap[t.heap_max] + 1] = 0, n = t.heap_max + 1; n < 573; n++) d < (o = l[2 * l[2 * (i = t.heap[n]) + 1] + 1] + 1) && (o = d, f++), l[2 * i + 1] = o, i > e.max_code || (t.bl_count[o]++, a = 0, h <= i && (a = u[i - h]), s = l[2 * i], t.opt_len += s * (o + a), c && (t.static_len += s * (c[2 * i + 1] + a)));
                            if (0 !== f) {
                                do {
                                    for (o = d - 1; 0 === t.bl_count[o];) o--;
                                    t.bl_count[o]--, t.bl_count[o + 1] += 2, t.bl_count[d]--, f -= 2
                                } while (0 < f);
                                for (o = d; 0 !== o; o--) for (i = t.bl_count[o]; 0 !== i;) (r = t.heap[--n]) > e.max_code || (l[2 * r + 1] != o && (t.opt_len += (o - l[2 * r + 1]) * l[2 * r], l[2 * r + 1] = o), i--)
                            }
                        }(n), function (e, n, i) {
                            var r, o, a, s = [], l = 0;
                            for (r = 1; r <= 15; r++) s[r] = l = l + i[r - 1] << 1;
                            for (o = 0; o <= n; o++) 0 !== (a = e[2 * o + 1]) && (e[2 * o] = t(s[a]++, a))
                        }(a, e.max_code, n.bl_count)
                    }
                }

                function i(e, t, n, i, r) {
                    this.static_tree = e, this.extra_bits = t, this.extra_base = n, this.elems = i, this.max_length = r
                }

                function r(e, t, n, i, r) {
                    this.good_length = e, this.max_lazy = t, this.nice_length = n, this.max_chain = i, this.func = r
                }

                n._length_code = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28], n.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0], n.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576], n.d_code = function (e) {
                    return e < 256 ? t[e] : t[256 + (e >>> 7)]
                }, n.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], n.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], n.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], n.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], i.static_ltree = [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8], i.static_dtree = [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5], i.static_l_desc = new i(i.static_ltree, n.extra_lbits, 257, 286, 15), i.static_d_desc = new i(i.static_dtree, n.extra_dbits, 0, 30, 15), i.static_bl_desc = new i(null, n.extra_blbits, 0, 19, 7);
                var o = [new r(0, 0, 0, 0, 0), new r(4, 4, 8, 4, 1), new r(4, 5, 16, 8, 1), new r(4, 6, 32, 32, 1), new r(4, 4, 16, 16, 2), new r(8, 16, 32, 32, 2), new r(8, 16, 128, 128, 2), new r(8, 32, 128, 256, 2), new r(32, 128, 258, 1024, 2), new r(32, 258, 258, 4096, 2)],
                    a = ["need dictionary", "stream end", "", "", "stream error", "data error", "", "buffer error", "", ""];

                function s(e, t, n, i) {
                    var r = e[2 * t], o = e[2 * n];
                    return r < o || r == o && i[t] <= i[n]
                }

                function l() {
                    var e, t, r, l, c, u, h, d, f, g, p, m, v, y, b, C, w, I, x, A, _, S, k, L, T, O, R, E, P, M, N, D,
                        B, j, F, H, W, V, G, z, Z, $ = this, K = new n, X = new n, Y = new n;

                    function U() {
                        var e;
                        for (e = 0; e < 286; e++) N[2 * e] = 0;
                        for (e = 0; e < 30; e++) D[2 * e] = 0;
                        for (e = 0; e < 19; e++) B[2 * e] = 0;
                        N[512] = 1, $.opt_len = $.static_len = 0, H = V = 0
                    }

                    function J(e, t) {
                        var n, i, r = -1, o = e[1], a = 0, s = 7, l = 4;
                        for (0 === o && (s = 138, l = 3), e[2 * (t + 1) + 1] = 65535, n = 0; n <= t; n++) i = o, o = e[2 * (n + 1) + 1], ++a < s && i == o || (a < l ? B[2 * i] += a : 0 !== i ? (i != r && B[2 * i]++, B[32]++) : a <= 10 ? B[34]++ : B[36]++, r = i, l = (a = 0) === o ? (s = 138, 3) : i == o ? (s = 6, 3) : (s = 7, 4))
                    }

                    function q(e) {
                        $.pending_buf[$.pending++] = e
                    }

                    function Q(e) {
                        q(255 & e), q(e >>> 8 & 255)
                    }

                    function ee(e, t) {
                        var n, i = t;
                        16 - i < Z ? (Q(z |= (n = e) << Z & 65535), z = n >>> 16 - Z, Z += i - 16) : (z |= e << Z & 65535, Z += i)
                    }

                    function te(e, t) {
                        var n = 2 * e;
                        ee(65535 & t[n], 65535 & t[n + 1])
                    }

                    function ne(e, t) {
                        var n, i, r = -1, o = e[1], a = 0, s = 7, l = 4;
                        for (0 === o && (s = 138, l = 3), n = 0; n <= t; n++) if (i = o, o = e[2 * (n + 1) + 1], !(++a < s && i == o)) {
                            if (a < l) for (; te(i, B), 0 != --a;) ; else 0 !== i ? (i != r && (te(i, B), a--), te(16, B), ee(a - 3, 2)) : a <= 10 ? (te(17, B), ee(a - 3, 3)) : (te(18, B), ee(a - 11, 7));
                            r = i, l = (a = 0) === o ? (s = 138, 3) : i == o ? (s = 6, 3) : (s = 7, 4)
                        }
                    }

                    function ie() {
                        16 == Z ? (Q(z), Z = z = 0) : 8 <= Z && (q(255 & z), z >>>= 8, Z -= 8)
                    }

                    function re(e, t) {
                        var i, r, o;
                        if ($.pending_buf[W + 2 * H] = e >>> 8 & 255, $.pending_buf[W + 2 * H + 1] = 255 & e, $.pending_buf[j + H] = 255 & t, H++, 0 === e ? N[2 * t]++ : (V++, e--, N[2 * (n._length_code[t] + 256 + 1)]++, D[2 * n.d_code(e)]++), 0 == (8191 & H) && 2 < R) {
                            for (i = 8 * H, r = _ - w, o = 0; o < 30; o++) i += D[2 * o] * (5 + n.extra_dbits[o]);
                            if (i >>>= 3, V < Math.floor(H / 2) && i < Math.floor(r / 2)) return !0
                        }
                        return H == F - 1
                    }

                    function oe(e, t) {
                        var i, r, o, a, s = 0;
                        if (0 !== H) for (; i = $.pending_buf[W + 2 * s] << 8 & 65280 | 255 & $.pending_buf[W + 2 * s + 1], r = 255 & $.pending_buf[j + s], s++, 0 === i ? te(r, e) : (te((o = n._length_code[r]) + 256 + 1, e), 0 !== (a = n.extra_lbits[o]) && ee(r -= n.base_length[o], a), te(o = n.d_code(--i), t), 0 !== (a = n.extra_dbits[o]) && ee(i -= n.base_dist[o], a)), s < H;) ;
                        te(256, e), G = e[513]
                    }

                    function ae() {
                        8 < Z ? Q(z) : 0 < Z && q(255 & z), Z = z = 0
                    }

                    function se(e, t, n) {
                        var i, r;
                        ee(0 + (n ? 1 : 0), 3), i = e, r = t, ae(), G = 8, Q(r), Q(~r), $.pending_buf.set(d.subarray(i, i + r), $.pending), $.pending += r
                    }

                    function le(t) {
                        (function (e, t, r) {
                            var o, a, s = 0;
                            0 < R ? (K.build_tree($), X.build_tree($), s = function () {
                                var e;
                                for (J(N, K.max_code), J(D, X.max_code), Y.build_tree($), e = 18; 3 <= e && 0 === B[2 * n.bl_order[e] + 1]; e--) ;
                                return $.opt_len += 3 * (e + 1) + 5 + 5 + 4, e
                            }(), o = $.opt_len + 3 + 7 >>> 3, (a = $.static_len + 3 + 7 >>> 3) <= o && (o = a)) : o = a = t + 5, t + 4 <= o && -1 != e ? se(e, t, r) : a == o ? (ee(2 + (r ? 1 : 0), 3), oe(i.static_ltree, i.static_dtree)) : (ee(4 + (r ? 1 : 0), 3), function (e, t, i) {
                                var r;
                                for (ee(e - 257, 5), ee(t - 1, 5), ee(i - 4, 4), r = 0; r < i; r++) ee(B[2 * n.bl_order[r] + 1], 3);
                                ne(N, e - 1), ne(D, t - 1)
                            }(K.max_code + 1, X.max_code + 1, s + 1), oe(N, D)), U(), r && ae()
                        })(0 <= w ? w : -1, _ - w, t), w = _, e.flush_pending()
                    }

                    function ce() {
                        var t, n, i, r;
                        do {
                            if (0 == (r = f - k - _) && 0 === _ && 0 === k) r = c; else if (-1 == r) r--; else if (c + c - 262 <= _) {
                                for (d.set(d.subarray(c, c + c), 0), S -= c, _ -= c, w -= c, i = t = v; n = 65535 & p[--i], p[i] = c <= n ? n - c : 0, 0 != --t;) ;
                                for (i = t = c; n = 65535 & g[--i], g[i] = c <= n ? n - c : 0, 0 != --t;) ;
                                r += c
                            }
                            if (0 === e.avail_in) return;
                            t = e.read_buf(d, _ + k, r), 3 <= (k += t) && (m = ((m = 255 & d[_]) << C ^ 255 & d[_ + 1]) & b)
                        } while (k < 262 && 0 !== e.avail_in)
                    }

                    function ue(e) {
                        var t, n, i = T, r = _, o = L, a = c - 262 < _ ? _ - (c - 262) : 0, s = M, l = h, u = _ + 258,
                            f = d[r + o - 1], p = d[r + o];
                        P <= L && (i >>= 2), k < s && (s = k);
                        do {
                            if (d[(t = e) + o] == p && d[t + o - 1] == f && d[t] == d[r] && d[++t] == d[r + 1]) {
                                r += 2, t++;
                                do {
                                } while (d[++r] == d[++t] && d[++r] == d[++t] && d[++r] == d[++t] && d[++r] == d[++t] && d[++r] == d[++t] && d[++r] == d[++t] && d[++r] == d[++t] && d[++r] == d[++t] && r < u);
                                if (n = 258 - (u - r), r = u - 258, o < n) {
                                    if (S = e, s <= (o = n)) break;
                                    f = d[r + o - 1], p = d[r + o]
                                }
                            }
                        } while ((e = 65535 & g[e & l]) > a && 0 != --i);
                        return o <= k ? o : k
                    }

                    function he(e) {
                        return e.total_in = e.total_out = 0, e.msg = null, $.pending = 0, $.pending_out = 0, t = 113, l = 0, K.dyn_tree = N, K.stat_desc = i.static_l_desc, X.dyn_tree = D, X.stat_desc = i.static_d_desc, Y.dyn_tree = B, Y.stat_desc = i.static_bl_desc, Z = z = 0, G = 8, U(), function () {
                            var e;
                            for (f = 2 * c, e = p[v - 1] = 0; e < v - 1; e++) p[e] = 0;
                            O = o[R].max_lazy, P = o[R].good_length, M = o[R].nice_length, T = o[R].max_chain, I = L = 2, m = A = k = w = _ = 0
                        }(), 0
                    }

                    $.depth = [], $.bl_count = [], $.heap = [], N = [], D = [], B = [], $.pqdownheap = function (e, t) {
                        for (var n = $.heap, i = n[t], r = t << 1; r <= $.heap_len && (r < $.heap_len && s(e, n[r + 1], n[r], $.depth) && r++, !s(e, i, n[r], $.depth));) n[t] = n[r], t = r, r <<= 1;
                        n[t] = i
                    }, $.deflateInit = function (e, t, n, i, o, a) {
                        return i || (i = 8), o || (o = 8), a || (a = 0), e.msg = null, -1 == t && (t = 6), o < 1 || 9 < o || 8 != i || n < 9 || 15 < n || t < 0 || 9 < t || a < 0 || 2 < a ? -2 : (e.dstate = $, h = (c = 1 << (u = n)) - 1, b = (v = 1 << (y = o + 7)) - 1, C = Math.floor((y + 3 - 1) / 3), d = new Uint8Array(2 * c), g = [], p = [], F = 1 << o + 6, $.pending_buf = new Uint8Array(4 * F), r = 4 * F, W = Math.floor(F / 2), j = 3 * F, R = t, E = a, he(e))
                    }, $.deflateEnd = function () {
                        return 42 != t && 113 != t && 666 != t ? -2 : ($.pending_buf = null, d = g = p = null, $.dstate = null, 113 == t ? -3 : 0)
                    }, $.deflateParams = function (e, t, n) {
                        var i = 0;
                        return -1 == t && (t = 6), t < 0 || 9 < t || n < 0 || 2 < n ? -2 : (o[R].func != o[t].func && 0 !== e.total_in && (i = e.deflate(1)), R != t && (O = o[R = t].max_lazy, P = o[R].good_length, M = o[R].nice_length, T = o[R].max_chain), E = n, i)
                    }, $.deflateSetDictionary = function (e, n, i) {
                        var r, o = i, a = 0;
                        if (!n || 42 != t) return -2;
                        if (o < 3) return 0;
                        for (c - 262 < o && (a = i - (o = c - 262)), d.set(n.subarray(a, a + o), 0), w = _ = o, m = ((m = 255 & d[0]) << C ^ 255 & d[1]) & b, r = 0; r <= o - 3; r++) m = (m << C ^ 255 & d[r + 2]) & b, g[r & h] = p[m], p[m] = r;
                        return 0
                    }, $.deflate = function (n, s) {
                        var f, y, T, P, M, N;
                        if (4 < s || s < 0) return -2;
                        if (!n.next_out || !n.next_in && 0 !== n.avail_in || 666 == t && 4 != s) return n.msg = a[4], -2;
                        if (0 === n.avail_out) return n.msg = a[7], -5;
                        if (e = n, P = l, l = s, 42 == t && (y = 8 + (u - 8 << 4) << 8, 3 < (T = (R - 1 & 255) >> 1) && (T = 3), y |= T << 6, 0 !== _ && (y |= 32), t = 113, q((N = y += 31 - y % 31) >> 8 & 255), q(255 & N)), 0 !== $.pending) {
                            if (e.flush_pending(), 0 === e.avail_out) return l = -1, 0
                        } else if (0 === e.avail_in && s <= P && 4 != s) return e.msg = a[7], -5;
                        if (666 == t && 0 !== e.avail_in) return n.msg = a[7], -5;
                        if (0 !== e.avail_in || 0 !== k || 0 != s && 666 != t) {
                            switch (M = -1, o[R].func) {
                                case 0:
                                    M = function (t) {
                                        var n, i = 65535;
                                        for (r - 5 < i && (i = r - 5); ;) {
                                            if (k <= 1) {
                                                if (ce(), 0 === k && 0 == t) return 0;
                                                if (0 === k) break
                                            }
                                            if (_ += k, n = w + i, ((k = 0) === _ || n <= _) && (k = _ - n, _ = n, le(!1), 0 === e.avail_out)) return 0;
                                            if (c - 262 <= _ - w && (le(!1), 0 === e.avail_out)) return 0
                                        }
                                        return le(4 == t), 0 === e.avail_out ? 4 == t ? 2 : 0 : 4 == t ? 3 : 1
                                    }(s);
                                    break;
                                case 1:
                                    M = function (t) {
                                        for (var n, i = 0; ;) {
                                            if (k < 262) {
                                                if (ce(), k < 262 && 0 == t) return 0;
                                                if (0 === k) break
                                            }
                                            if (3 <= k && (m = (m << C ^ 255 & d[_ + 2]) & b, i = 65535 & p[m], g[_ & h] = p[m], p[m] = _), 0 !== i && (_ - i & 65535) <= c - 262 && 2 != E && (I = ue(i)), 3 <= I) if (n = re(_ - S, I - 3), k -= I, I <= O && 3 <= k) {
                                                for (I--; m = (m << C ^ 255 & d[2 + ++_]) & b, i = 65535 & p[m], g[_ & h] = p[m], p[m] = _, 0 != --I;) ;
                                                _++
                                            } else _ += I, I = 0, m = ((m = 255 & d[_]) << C ^ 255 & d[_ + 1]) & b; else n = re(0, 255 & d[_]), k--, _++;
                                            if (n && (le(!1), 0 === e.avail_out)) return 0
                                        }
                                        return le(4 == t), 0 === e.avail_out ? 4 == t ? 2 : 0 : 4 == t ? 3 : 1
                                    }(s);
                                    break;
                                case 2:
                                    M = function (t) {
                                        for (var n, i, r = 0; ;) {
                                            if (k < 262) {
                                                if (ce(), k < 262 && 0 == t) return 0;
                                                if (0 === k) break
                                            }
                                            if (3 <= k && (m = (m << C ^ 255 & d[_ + 2]) & b, r = 65535 & p[m], g[_ & h] = p[m], p[m] = _), L = I, x = S, I = 2, 0 !== r && L < O && (_ - r & 65535) <= c - 262 && (2 != E && (I = ue(r)), I <= 5 && (1 == E || 3 == I && 4096 < _ - S) && (I = 2)), 3 <= L && I <= L) {
                                                for (i = _ + k - 3, n = re(_ - 1 - x, L - 3), k -= L - 1, L -= 2; ++_ <= i && (m = (m << C ^ 255 & d[_ + 2]) & b, r = 65535 & p[m], g[_ & h] = p[m], p[m] = _), 0 != --L;) ;
                                                if (A = 0, I = 2, _++, n && (le(!1), 0 === e.avail_out)) return 0
                                            } else if (0 !== A) {
                                                if ((n = re(0, 255 & d[_ - 1])) && le(!1), _++, k--, 0 === e.avail_out) return 0
                                            } else A = 1, _++, k--
                                        }
                                        return 0 !== A && (n = re(0, 255 & d[_ - 1]), A = 0), le(4 == t), 0 === e.avail_out ? 4 == t ? 2 : 0 : 4 == t ? 3 : 1
                                    }(s)
                            }
                            if (2 != M && 3 != M || (t = 666), 0 == M || 2 == M) return 0 === e.avail_out && (l = -1), 0;
                            if (1 == M) {
                                if (1 == s) ee(2, 3), te(256, i.static_ltree), ie(), 1 + G + 10 - Z < 9 && (ee(2, 3), te(256, i.static_ltree), ie()), G = 7; else if (se(0, 0, !1), 3 == s) for (f = 0; f < v; f++) p[f] = 0;
                                if (e.flush_pending(), 0 === e.avail_out) return l = -1, 0
                            }
                        }
                        return 4 != s ? 0 : 1
                    }
                }

                function c() {
                    this.next_in_index = 0, this.next_out_index = 0, this.avail_in = 0, this.total_in = 0, this.avail_out = 0, this.total_out = 0
                }

                c.prototype = {
                    deflateInit: function (e, t) {
                        return this.dstate = new l, t || (t = 15), this.dstate.deflateInit(this, e, t)
                    }, deflate: function (e) {
                        return this.dstate ? this.dstate.deflate(this, e) : -2
                    }, deflateEnd: function () {
                        if (!this.dstate) return -2;
                        var e = this.dstate.deflateEnd();
                        return this.dstate = null, e
                    }, deflateParams: function (e, t) {
                        return this.dstate ? this.dstate.deflateParams(this, e, t) : -2
                    }, deflateSetDictionary: function (e, t) {
                        return this.dstate ? this.dstate.deflateSetDictionary(this, e, t) : -2
                    }, read_buf: function (e, t, n) {
                        var i = this.avail_in;
                        return n < i && (i = n), 0 === i ? 0 : (this.avail_in -= i, e.set(this.next_in.subarray(this.next_in_index, this.next_in_index + i), t), this.next_in_index += i, this.total_in += i, i)
                    }, flush_pending: function () {
                        var e = this, t = e.dstate.pending;
                        t > e.avail_out && (t = e.avail_out), 0 !== t && (e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out, e.dstate.pending_out + t), e.next_out_index), e.next_out_index += t, e.dstate.pending_out += t, e.total_out += t, e.avail_out -= t, e.dstate.pending -= t, 0 === e.dstate.pending && (e.dstate.pending_out = 0))
                    }
                };
                var u = e.zip || e;
                u.Deflater = u._jzlib_Deflater = function (e) {
                    var t = new c, n = new Uint8Array(512), i = e ? e.level : -1;
                    void 0 === i && (i = -1), t.deflateInit(i), t.next_out = n, this.append = function (e, i) {
                        var r, o = [], a = 0, s = 0, l = 0;
                        if (e.length) {
                            t.next_in_index = 0, t.next_in = e, t.avail_in = e.length;
                            do {
                                if (t.next_out_index = 0, t.avail_out = 512, 0 != t.deflate(0)) throw new Error("deflating: " + t.msg);
                                t.next_out_index && (512 == t.next_out_index ? o.push(new Uint8Array(n)) : o.push(new Uint8Array(n.subarray(0, t.next_out_index)))), l += t.next_out_index, i && 0 < t.next_in_index && t.next_in_index != a && (i(t.next_in_index), a = t.next_in_index)
                            } while (0 < t.avail_in || 0 === t.avail_out);
                            return r = new Uint8Array(l), o.forEach((function (e) {
                                r.set(e, s), s += e.length
                            })), r
                        }
                    }, this.flush = function () {
                        var e, i, r = [], o = 0, a = 0;
                        do {
                            if (t.next_out_index = 0, t.avail_out = 512, 1 != (e = t.deflate(4)) && 0 != e) throw new Error("deflating: " + t.msg);
                            0 < 512 - t.avail_out && r.push(new Uint8Array(n.subarray(0, t.next_out_index))), a += t.next_out_index
                        } while (0 < t.avail_in || 0 === t.avail_out);
                        return t.deflateEnd(), i = new Uint8Array(a), r.forEach((function (e) {
                            i.set(e, o), o += e.length
                        })), i
                    }
                }
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")()), ("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")()).RGBColor = function (e) {
                var t;
                e = e || "", this.ok = !1, "#" == e.charAt(0) && (e = e.substr(1, 6)), e = (e = e.replace(/ /g, "")).toLowerCase();
                var n = {
                    aliceblue: "f0f8ff",
                    antiquewhite: "faebd7",
                    aqua: "00ffff",
                    aquamarine: "7fffd4",
                    azure: "f0ffff",
                    beige: "f5f5dc",
                    bisque: "ffe4c4",
                    black: "000000",
                    blanchedalmond: "ffebcd",
                    blue: "0000ff",
                    blueviolet: "8a2be2",
                    brown: "a52a2a",
                    burlywood: "deb887",
                    cadetblue: "5f9ea0",
                    chartreuse: "7fff00",
                    chocolate: "d2691e",
                    coral: "ff7f50",
                    cornflowerblue: "6495ed",
                    cornsilk: "fff8dc",
                    crimson: "dc143c",
                    cyan: "00ffff",
                    darkblue: "00008b",
                    darkcyan: "008b8b",
                    darkgoldenrod: "b8860b",
                    darkgray: "a9a9a9",
                    darkgreen: "006400",
                    darkkhaki: "bdb76b",
                    darkmagenta: "8b008b",
                    darkolivegreen: "556b2f",
                    darkorange: "ff8c00",
                    darkorchid: "9932cc",
                    darkred: "8b0000",
                    darksalmon: "e9967a",
                    darkseagreen: "8fbc8f",
                    darkslateblue: "483d8b",
                    darkslategray: "2f4f4f",
                    darkturquoise: "00ced1",
                    darkviolet: "9400d3",
                    deeppink: "ff1493",
                    deepskyblue: "00bfff",
                    dimgray: "696969",
                    dodgerblue: "1e90ff",
                    feldspar: "d19275",
                    firebrick: "b22222",
                    floralwhite: "fffaf0",
                    forestgreen: "228b22",
                    fuchsia: "ff00ff",
                    gainsboro: "dcdcdc",
                    ghostwhite: "f8f8ff",
                    gold: "ffd700",
                    goldenrod: "daa520",
                    gray: "808080",
                    green: "008000",
                    greenyellow: "adff2f",
                    honeydew: "f0fff0",
                    hotpink: "ff69b4",
                    indianred: "cd5c5c",
                    indigo: "4b0082",
                    ivory: "fffff0",
                    khaki: "f0e68c",
                    lavender: "e6e6fa",
                    lavenderblush: "fff0f5",
                    lawngreen: "7cfc00",
                    lemonchiffon: "fffacd",
                    lightblue: "add8e6",
                    lightcoral: "f08080",
                    lightcyan: "e0ffff",
                    lightgoldenrodyellow: "fafad2",
                    lightgrey: "d3d3d3",
                    lightgreen: "90ee90",
                    lightpink: "ffb6c1",
                    lightsalmon: "ffa07a",
                    lightseagreen: "20b2aa",
                    lightskyblue: "87cefa",
                    lightslateblue: "8470ff",
                    lightslategray: "778899",
                    lightsteelblue: "b0c4de",
                    lightyellow: "ffffe0",
                    lime: "00ff00",
                    limegreen: "32cd32",
                    linen: "faf0e6",
                    magenta: "ff00ff",
                    maroon: "800000",
                    mediumaquamarine: "66cdaa",
                    mediumblue: "0000cd",
                    mediumorchid: "ba55d3",
                    mediumpurple: "9370d8",
                    mediumseagreen: "3cb371",
                    mediumslateblue: "7b68ee",
                    mediumspringgreen: "00fa9a",
                    mediumturquoise: "48d1cc",
                    mediumvioletred: "c71585",
                    midnightblue: "191970",
                    mintcream: "f5fffa",
                    mistyrose: "ffe4e1",
                    moccasin: "ffe4b5",
                    navajowhite: "ffdead",
                    navy: "000080",
                    oldlace: "fdf5e6",
                    olive: "808000",
                    olivedrab: "6b8e23",
                    orange: "ffa500",
                    orangered: "ff4500",
                    orchid: "da70d6",
                    palegoldenrod: "eee8aa",
                    palegreen: "98fb98",
                    paleturquoise: "afeeee",
                    palevioletred: "d87093",
                    papayawhip: "ffefd5",
                    peachpuff: "ffdab9",
                    peru: "cd853f",
                    pink: "ffc0cb",
                    plum: "dda0dd",
                    powderblue: "b0e0e6",
                    purple: "800080",
                    red: "ff0000",
                    rosybrown: "bc8f8f",
                    royalblue: "4169e1",
                    saddlebrown: "8b4513",
                    salmon: "fa8072",
                    sandybrown: "f4a460",
                    seagreen: "2e8b57",
                    seashell: "fff5ee",
                    sienna: "a0522d",
                    silver: "c0c0c0",
                    skyblue: "87ceeb",
                    slateblue: "6a5acd",
                    slategray: "708090",
                    snow: "fffafa",
                    springgreen: "00ff7f",
                    steelblue: "4682b4",
                    tan: "d2b48c",
                    teal: "008080",
                    thistle: "d8bfd8",
                    tomato: "ff6347",
                    turquoise: "40e0d0",
                    violet: "ee82ee",
                    violetred: "d02090",
                    wheat: "f5deb3",
                    white: "ffffff",
                    whitesmoke: "f5f5f5",
                    yellow: "ffff00",
                    yellowgreen: "9acd32"
                };
                for (var i in n) e == i && (e = n[i]);
                for (var r = [{
                    re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    example: ["rgb(123, 234, 45)", "rgb(255,234,245)"],
                    process: function (e) {
                        return [parseInt(e[1]), parseInt(e[2]), parseInt(e[3])]
                    }
                }, {
                    re: /^(\w{2})(\w{2})(\w{2})$/, example: ["#00ff00", "336699"], process: function (e) {
                        return [parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16)]
                    }
                }, {
                    re: /^(\w{1})(\w{1})(\w{1})$/, example: ["#fb0", "f0f"], process: function (e) {
                        return [parseInt(e[1] + e[1], 16), parseInt(e[2] + e[2], 16), parseInt(e[3] + e[3], 16)]
                    }
                }], o = 0; o < r.length; o++) {
                    var a = r[o].re, s = r[o].process, l = a.exec(e);
                    l && (t = s(l), this.r = t[0], this.g = t[1], this.b = t[2], this.ok = !0)
                }
                this.r = this.r < 0 || isNaN(this.r) ? 0 : 255 < this.r ? 255 : this.r, this.g = this.g < 0 || isNaN(this.g) ? 0 : 255 < this.g ? 255 : this.g, this.b = this.b < 0 || isNaN(this.b) ? 0 : 255 < this.b ? 255 : this.b, this.toRGB = function () {
                    return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")"
                }, this.toHex = function () {
                    var e = this.r.toString(16), t = this.g.toString(16), n = this.b.toString(16);
                    return 1 == e.length && (e = "0" + e), 1 == t.length && (t = "0" + t), 1 == n.length && (n = "0" + n), "#" + e + t + n
                }
            }, function (e) {
                var t = "+".charCodeAt(0), n = "/".charCodeAt(0), i = "0".charCodeAt(0), r = "a".charCodeAt(0),
                    o = "A".charCodeAt(0), a = "-".charCodeAt(0), s = "_".charCodeAt(0), l = function (e) {
                        var l = e.charCodeAt(0);
                        return l === t || l === a ? 62 : l === n || l === s ? 63 : l < i ? -1 : l < i + 10 ? l - i + 26 + 26 : l < o + 26 ? l - o : l < r + 26 ? l - r + 26 : void 0
                    };
                e.API.TTFFont = function () {
                    function e(e, t, n) {
                        var i;
                        if (this.rawData = e, i = this.contents = new u(e), this.contents.pos = 4, "ttcf" === i.readString(4)) {
                            if (!t) throw new Error("Must specify a font name for TTC files.");
                            throw new Error("Font " + t + " not found in TTC file.")
                        }
                        i.pos = 0, this.parse(), this.subset = new T(this), this.registerTTF()
                    }

                    return e.open = function (t, n, i, r) {
                        if ("string" != typeof i) throw new Error("Invalid argument supplied in TTFFont.open");
                        return new e(function (e) {
                            var t, n, i, r, o, a;
                            if (0 < e.length % 4) throw new Error("Invalid string. Length must be a multiple of 4");
                            var s = e.length;
                            o = "=" === e.charAt(s - 2) ? 2 : "=" === e.charAt(s - 1) ? 1 : 0, a = new Uint8Array(3 * e.length / 4 - o), i = 0 < o ? e.length - 4 : e.length;
                            var c = 0;

                            function u(e) {
                                a[c++] = e
                            }

                            for (n = t = 0; t < i; t += 4, n += 3) u((16711680 & (r = l(e.charAt(t)) << 18 | l(e.charAt(t + 1)) << 12 | l(e.charAt(t + 2)) << 6 | l(e.charAt(t + 3)))) >> 16), u((65280 & r) >> 8), u(255 & r);
                            return 2 === o ? u(255 & (r = l(e.charAt(t)) << 2 | l(e.charAt(t + 1)) >> 4)) : 1 === o && (u((r = l(e.charAt(t)) << 10 | l(e.charAt(t + 1)) << 4 | l(e.charAt(t + 2)) >> 2) >> 8 & 255), u(255 & r)), a
                        }(i), n, r)
                    }, e.prototype.parse = function () {
                        return this.directory = new h(this.contents), this.head = new g(this), this.name = new w(this), this.cmap = new m(this), this.toUnicode = new Map, this.hhea = new v(this), this.maxp = new I(this), this.hmtx = new x(this), this.post = new b(this), this.os2 = new y(this), this.loca = new L(this), this.glyf = new _(this), this.ascender = this.os2.exists && this.os2.ascender || this.hhea.ascender, this.decender = this.os2.exists && this.os2.decender || this.hhea.decender, this.lineGap = this.os2.exists && this.os2.lineGap || this.hhea.lineGap, this.bbox = [this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax]
                    }, e.prototype.registerTTF = function () {
                        var e, t, n, i, r;
                        if (this.scaleFactor = 1e3 / this.head.unitsPerEm, this.bbox = function () {
                            var t, n, i, r;
                            for (r = [], t = 0, n = (i = this.bbox).length; t < n; t++) e = i[t], r.push(Math.round(e * this.scaleFactor));
                            return r
                        }.call(this), this.stemV = 0, this.post.exists ? (n = 255 & (i = this.post.italic_angle), !0 & (t = i >> 16) && (t = -(1 + (65535 ^ t))), this.italicAngle = +(t + "." + n)) : this.italicAngle = 0, this.ascender = Math.round(this.ascender * this.scaleFactor), this.decender = Math.round(this.decender * this.scaleFactor), this.lineGap = Math.round(this.lineGap * this.scaleFactor), this.capHeight = this.os2.exists && this.os2.capHeight || this.ascender, this.xHeight = this.os2.exists && this.os2.xHeight || 0, this.familyClass = (this.os2.exists && this.os2.familyClass || 0) >> 8, this.isSerif = 1 === (r = this.familyClass) || 2 === r || 3 === r || 4 === r || 5 === r || 7 === r, this.isScript = 10 === this.familyClass, this.flags = 0, this.post.isFixedPitch && (this.flags |= 1), this.isSerif && (this.flags |= 2), this.isScript && (this.flags |= 8), 0 !== this.italicAngle && (this.flags |= 64), this.flags |= 32, !this.cmap.unicode) throw new Error("No unicode cmap for font")
                    }, e.prototype.characterToGlyph = function (e) {
                        var t;
                        return (null != (t = this.cmap.unicode) ? t.codeMap[e] : void 0) || 0
                    }, e.prototype.widthOfGlyph = function (e) {
                        var t;
                        return t = 1e3 / this.head.unitsPerEm, this.hmtx.forGlyph(e).advance * t
                    }, e.prototype.widthOfString = function (e, t, n) {
                        var i, r, o, a, s;
                        for (r = a = o = 0, s = (e = "" + e).length; 0 <= s ? a < s : s < a; r = 0 <= s ? ++a : --a) i = e.charCodeAt(r), o += this.widthOfGlyph(this.characterToGlyph(i)) + n * (1e3 / t) || 0;
                        return o * (t / 1e3)
                    }, e.prototype.lineHeight = function (e, t) {
                        var n;
                        return null == t && (t = !1), n = t ? this.lineGap : 0, (this.ascender + n - this.decender) / 1e3 * e
                    }, e
                }();
                var c, u = function () {
                    function e(e) {
                        this.data = null != e ? e : [], this.pos = 0, this.length = this.data.length
                    }

                    return e.prototype.readByte = function () {
                        return this.data[this.pos++]
                    }, e.prototype.writeByte = function (e) {
                        return this.data[this.pos++] = e
                    }, e.prototype.readUInt32 = function () {
                        return 16777216 * this.readByte() + (this.readByte() << 16) + (this.readByte() << 8) + this.readByte()
                    }, e.prototype.writeUInt32 = function (e) {
                        return this.writeByte(e >>> 24 & 255), this.writeByte(e >> 16 & 255), this.writeByte(e >> 8 & 255), this.writeByte(255 & e)
                    }, e.prototype.readInt32 = function () {
                        var e;
                        return 2147483648 <= (e = this.readUInt32()) ? e - 4294967296 : e
                    }, e.prototype.writeInt32 = function (e) {
                        return e < 0 && (e += 4294967296), this.writeUInt32(e)
                    }, e.prototype.readUInt16 = function () {
                        return this.readByte() << 8 | this.readByte()
                    }, e.prototype.writeUInt16 = function (e) {
                        return this.writeByte(e >> 8 & 255), this.writeByte(255 & e)
                    }, e.prototype.readInt16 = function () {
                        var e;
                        return 32768 <= (e = this.readUInt16()) ? e - 65536 : e
                    }, e.prototype.writeInt16 = function (e) {
                        return e < 0 && (e += 65536), this.writeUInt16(e)
                    }, e.prototype.readString = function (e) {
                        var t, n, i;
                        for (n = [], t = i = 0; 0 <= e ? i < e : e < i; t = 0 <= e ? ++i : --i) n[t] = String.fromCharCode(this.readByte());
                        return n.join("")
                    }, e.prototype.writeString = function (e) {
                        var t, n, i, r;
                        for (r = [], t = n = 0, i = e.length; 0 <= i ? n < i : i < n; t = 0 <= i ? ++n : --n) r.push(this.writeByte(e.charCodeAt(t)));
                        return r
                    }, e.prototype.readShort = function () {
                        return this.readInt16()
                    }, e.prototype.writeShort = function (e) {
                        return this.writeInt16(e)
                    }, e.prototype.readLongLong = function () {
                        var e, t, n, i, r, o, a, s;
                        return e = this.readByte(), t = this.readByte(), n = this.readByte(), i = this.readByte(), r = this.readByte(), o = this.readByte(), a = this.readByte(), s = this.readByte(), 128 & e ? -1 * (72057594037927940 * (255 ^ e) + 281474976710656 * (255 ^ t) + 1099511627776 * (255 ^ n) + 4294967296 * (255 ^ i) + 16777216 * (255 ^ r) + 65536 * (255 ^ o) + 256 * (255 ^ a) + (255 ^ s) + 1) : 72057594037927940 * e + 281474976710656 * t + 1099511627776 * n + 4294967296 * i + 16777216 * r + 65536 * o + 256 * a + s
                    }, e.prototype.writeLongLong = function (e) {
                        var t, n;
                        return t = Math.floor(e / 4294967296), n = 4294967295 & e, this.writeByte(t >> 24 & 255), this.writeByte(t >> 16 & 255), this.writeByte(t >> 8 & 255), this.writeByte(255 & t), this.writeByte(n >> 24 & 255), this.writeByte(n >> 16 & 255), this.writeByte(n >> 8 & 255), this.writeByte(255 & n)
                    }, e.prototype.readInt = function () {
                        return this.readInt32()
                    }, e.prototype.writeInt = function (e) {
                        return this.writeInt32(e)
                    }, e.prototype.read = function (e) {
                        var t, n;
                        for (t = [], n = 0; 0 <= e ? n < e : e < n; 0 <= e ? ++n : --n) t.push(this.readByte());
                        return t
                    }, e.prototype.write = function (e) {
                        var t, n, i, r;
                        for (r = [], n = 0, i = e.length; n < i; n++) t = e[n], r.push(this.writeByte(t));
                        return r
                    }, e
                }(), h = function () {
                    var e;

                    function t(e) {
                        var t, n, i;
                        for (this.scalarType = e.readInt(), this.tableCount = e.readShort(), this.searchRange = e.readShort(), this.entrySelector = e.readShort(), this.rangeShift = e.readShort(), this.tables = {}, n = 0, i = this.tableCount; 0 <= i ? n < i : i < n; 0 <= i ? ++n : --n) t = {
                            tag: e.readString(4),
                            checksum: e.readInt(),
                            offset: e.readInt(),
                            length: e.readInt()
                        }, this.tables[t.tag] = t
                    }

                    return t.prototype.encode = function (t) {
                        var n, i, r, o, a, s, l, c, h, d, f, g, p;
                        for (p in f = Object.keys(t).length, s = Math.log(2), h = 16 * Math.floor(Math.log(f) / s), o = Math.floor(h / s), c = 16 * f - h, (i = new u).writeInt(this.scalarType), i.writeShort(f), i.writeShort(h), i.writeShort(o), i.writeShort(c), r = 16 * f, l = i.pos + r, a = null, g = [], t) for (d = t[p], i.writeString(p), i.writeInt(e(d)), i.writeInt(l), i.writeInt(d.length), g = g.concat(d), "head" === p && (a = l), l += d.length; l % 4;) g.push(0), l++;
                        return i.write(g), n = 2981146554 - e(i.data), i.pos = a + 8, i.writeUInt32(n), i.data
                    }, e = function (e) {
                        var t, n, i, r;
                        for (e = A.call(e); e.length % 4;) e.push(0);
                        for (n = new u(e), i = t = 0, r = e.length; i < r; i += 4) t += n.readUInt32();
                        return 4294967295 & t
                    }, t
                }(), d = {}.hasOwnProperty, f = function (e, t) {
                    for (var n in t) d.call(t, n) && (e[n] = t[n]);

                    function i() {
                        this.constructor = e
                    }

                    return i.prototype = t.prototype, e.prototype = new i, e.__super__ = t.prototype, e
                };
                c = function () {
                    function e(e) {
                        var t;
                        this.file = e, t = this.file.directory.tables[this.tag], this.exists = !!t, t && (this.offset = t.offset, this.length = t.length, this.parse(this.file.contents))
                    }

                    return e.prototype.parse = function () {
                    }, e.prototype.encode = function () {
                    }, e.prototype.raw = function () {
                        return this.exists ? (this.file.contents.pos = this.offset, this.file.contents.read(this.length)) : null
                    }, e
                }();
                var g = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "head", t.prototype.parse = function (e) {
                        return e.pos = this.offset, this.version = e.readInt(), this.revision = e.readInt(), this.checkSumAdjustment = e.readInt(), this.magicNumber = e.readInt(), this.flags = e.readShort(), this.unitsPerEm = e.readShort(), this.created = e.readLongLong(), this.modified = e.readLongLong(), this.xMin = e.readShort(), this.yMin = e.readShort(), this.xMax = e.readShort(), this.yMax = e.readShort(), this.macStyle = e.readShort(), this.lowestRecPPEM = e.readShort(), this.fontDirectionHint = e.readShort(), this.indexToLocFormat = e.readShort(), this.glyphDataFormat = e.readShort()
                    }, t.prototype.encode = function (e) {
                        var t;
                        return (t = new u).writeInt(this.version), t.writeInt(this.revision), t.writeInt(this.checkSumAdjustment), t.writeInt(this.magicNumber), t.writeShort(this.flags), t.writeShort(this.unitsPerEm), t.writeLongLong(this.created), t.writeLongLong(this.modified), t.writeShort(this.xMin), t.writeShort(this.yMin), t.writeShort(this.xMax), t.writeShort(this.yMax), t.writeShort(this.macStyle), t.writeShort(this.lowestRecPPEM), t.writeShort(this.fontDirectionHint), t.writeShort(e), t.writeShort(this.glyphDataFormat), t.data
                    }, t
                }(), p = function () {
                    function e(e, t) {
                        var n, i, r, o, a, s, l, c, u, h, d, f, g, p, m, v, y, b;
                        switch (this.platformID = e.readUInt16(), this.encodingID = e.readShort(), this.offset = t + e.readInt(), u = e.pos, e.pos = this.offset, this.format = e.readUInt16(), this.length = e.readUInt16(), this.language = e.readUInt16(), this.isUnicode = 3 === this.platformID && 1 === this.encodingID && 4 === this.format || 0 === this.platformID && 4 === this.format, this.codeMap = {}, this.format) {
                            case 0:
                                for (s = m = 0; m < 256; s = ++m) this.codeMap[s] = e.readByte();
                                break;
                            case 4:
                                for (d = e.readUInt16(), h = d / 2, e.pos += 6, r = function () {
                                    var t, n;
                                    for (n = [], s = t = 0; 0 <= h ? t < h : h < t; s = 0 <= h ? ++t : --t) n.push(e.readUInt16());
                                    return n
                                }(), e.pos += 2, g = function () {
                                    var t, n;
                                    for (n = [], s = t = 0; 0 <= h ? t < h : h < t; s = 0 <= h ? ++t : --t) n.push(e.readUInt16());
                                    return n
                                }(), l = function () {
                                    var t, n;
                                    for (n = [], s = t = 0; 0 <= h ? t < h : h < t; s = 0 <= h ? ++t : --t) n.push(e.readUInt16());
                                    return n
                                }(), c = function () {
                                    var t, n;
                                    for (n = [], s = t = 0; 0 <= h ? t < h : h < t; s = 0 <= h ? ++t : --t) n.push(e.readUInt16());
                                    return n
                                }(), i = (this.length - e.pos + this.offset) / 2, a = function () {
                                    var t, n;
                                    for (n = [], s = t = 0; 0 <= i ? t < i : i < t; s = 0 <= i ? ++t : --t) n.push(e.readUInt16());
                                    return n
                                }(), s = v = 0, b = r.length; v < b; s = ++v) for (p = r[s], n = y = f = g[s]; f <= p ? y <= p : p <= y; n = f <= p ? ++y : --y) 0 === c[s] ? o = n + l[s] : 0 !== (o = a[c[s] / 2 + (n - f) - (h - s)] || 0) && (o += l[s]), this.codeMap[n] = 65535 & o
                        }
                        e.pos = u
                    }

                    return e.encode = function (e, t) {
                        var n, i, r, o, a, s, l, c, h, d, f, g, p, m, v, y, b, C, w, I, x, A, _, S, k, L, T, O, R, E, P,
                            M, N, D, B, j, F, H, W, V, G, z, Z, $, K, X;
                        switch (O = new u, o = Object.keys(e).sort((function (e, t) {
                            return e - t
                        })), t) {
                            case"macroman":
                                for (p = 0, m = function () {
                                    var e, t;
                                    for (t = [], g = e = 0; e < 256; g = ++e) t.push(0);
                                    return t
                                }(), y = {0: 0}, r = {}, R = 0, N = o.length; R < N; R++) null == y[Z = e[i = o[R]]] && (y[Z] = ++p), r[i] = {
                                    old: e[i],
                                    new: y[e[i]]
                                }, m[i] = y[e[i]];
                                return O.writeUInt16(1), O.writeUInt16(0), O.writeUInt32(12), O.writeUInt16(0), O.writeUInt16(262), O.writeUInt16(0), O.write(m), {
                                    charMap: r,
                                    subtable: O.data,
                                    maxGlyphID: p + 1
                                };
                            case"unicode":
                                for (L = [], h = [], y = {}, n = {}, v = l = null, E = b = 0, D = o.length; E < D; E++) null == y[w = e[i = o[E]]] && (y[w] = ++b), n[i] = {
                                    old: w,
                                    new: y[w]
                                }, a = y[w] - i, null != v && a === l || (v && h.push(v), L.push(i), l = a), v = i;
                                for (v && h.push(v), h.push(65535), L.push(65535), S = 2 * (_ = L.length), A = 2 * Math.pow(Math.log(_) / Math.LN2, 2), d = Math.log(A / 2) / Math.LN2, x = 2 * _ - A, s = [], I = [], f = [], g = P = 0, B = L.length; P < B; g = ++P) {
                                    if (k = L[g], c = h[g], 65535 === k) {
                                        s.push(0), I.push(0);
                                        break
                                    }
                                    if (32768 <= k - (T = n[k].new)) for (s.push(0), I.push(2 * (f.length + _ - g)), i = M = k; k <= c ? M <= c : c <= M; i = k <= c ? ++M : --M) f.push(n[i].new); else s.push(T - k), I.push(0)
                                }
                                for (O.writeUInt16(3), O.writeUInt16(1), O.writeUInt32(12), O.writeUInt16(4), O.writeUInt16(16 + 8 * _ + 2 * f.length), O.writeUInt16(0), O.writeUInt16(S), O.writeUInt16(A), O.writeUInt16(d), O.writeUInt16(x), G = 0, j = h.length; G < j; G++) i = h[G], O.writeUInt16(i);
                                for (O.writeUInt16(0), z = 0, F = L.length; z < F; z++) i = L[z], O.writeUInt16(i);
                                for ($ = 0, H = s.length; $ < H; $++) a = s[$], O.writeUInt16(a);
                                for (K = 0, W = I.length; K < W; K++) C = I[K], O.writeUInt16(C);
                                for (X = 0, V = f.length; X < V; X++) p = f[X], O.writeUInt16(p);
                                return {charMap: n, subtable: O.data, maxGlyphID: b + 1}
                        }
                    }, e
                }(), m = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "cmap", t.prototype.parse = function (e) {
                        var t, n, i;
                        for (e.pos = this.offset, this.version = e.readUInt16(), n = e.readUInt16(), this.tables = [], this.unicode = null, i = 0; 0 <= n ? i < n : n < i; 0 <= n ? ++i : --i) t = new p(e, this.offset), this.tables.push(t), t.isUnicode && null == this.unicode && (this.unicode = t);
                        return !0
                    }, t.encode = function (e, t) {
                        var n, i;
                        return null == t && (t = "macroman"), n = p.encode(e, t), (i = new u).writeUInt16(0), i.writeUInt16(1), n.table = i.data.concat(n.subtable), n
                    }, t
                }(), v = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "hhea", t.prototype.parse = function (e) {
                        return e.pos = this.offset, this.version = e.readInt(), this.ascender = e.readShort(), this.decender = e.readShort(), this.lineGap = e.readShort(), this.advanceWidthMax = e.readShort(), this.minLeftSideBearing = e.readShort(), this.minRightSideBearing = e.readShort(), this.xMaxExtent = e.readShort(), this.caretSlopeRise = e.readShort(), this.caretSlopeRun = e.readShort(), this.caretOffset = e.readShort(), e.pos += 8, this.metricDataFormat = e.readShort(), this.numberOfMetrics = e.readUInt16()
                    }, t
                }(), y = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "OS/2", t.prototype.parse = function (e) {
                        if (e.pos = this.offset, this.version = e.readUInt16(), this.averageCharWidth = e.readShort(), this.weightClass = e.readUInt16(), this.widthClass = e.readUInt16(), this.type = e.readShort(), this.ySubscriptXSize = e.readShort(), this.ySubscriptYSize = e.readShort(), this.ySubscriptXOffset = e.readShort(), this.ySubscriptYOffset = e.readShort(), this.ySuperscriptXSize = e.readShort(), this.ySuperscriptYSize = e.readShort(), this.ySuperscriptXOffset = e.readShort(), this.ySuperscriptYOffset = e.readShort(), this.yStrikeoutSize = e.readShort(), this.yStrikeoutPosition = e.readShort(), this.familyClass = e.readShort(), this.panose = function () {
                            var t, n;
                            for (n = [], t = 0; t < 10; ++t) n.push(e.readByte());
                            return n
                        }(), this.charRange = function () {
                            var t, n;
                            for (n = [], t = 0; t < 4; ++t) n.push(e.readInt());
                            return n
                        }(), this.vendorID = e.readString(4), this.selection = e.readShort(), this.firstCharIndex = e.readShort(), this.lastCharIndex = e.readShort(), 0 < this.version && (this.ascent = e.readShort(), this.descent = e.readShort(), this.lineGap = e.readShort(), this.winAscent = e.readShort(), this.winDescent = e.readShort(), this.codePageRange = function () {
                            var t, n;
                            for (n = [], t = 0; t < 2; ++t) n.push(e.readInt());
                            return n
                        }(), 1 < this.version)) return this.xHeight = e.readShort(), this.capHeight = e.readShort(), this.defaultChar = e.readShort(), this.breakChar = e.readShort(), this.maxContext = e.readShort()
                    }, t
                }(), b = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "post", t.prototype.parse = function (e) {
                        var t, n, i, r;
                        switch (e.pos = this.offset, this.format = e.readInt(), this.italicAngle = e.readInt(), this.underlinePosition = e.readShort(), this.underlineThickness = e.readShort(), this.isFixedPitch = e.readInt(), this.minMemType42 = e.readInt(), this.maxMemType42 = e.readInt(), this.minMemType1 = e.readInt(), this.maxMemType1 = e.readInt(), this.format) {
                            case 65536:
                                break;
                            case 131072:
                                for (n = e.readUInt16(), this.glyphNameIndex = [], i = 0; 0 <= n ? i < n : n < i; 0 <= n ? ++i : --i) this.glyphNameIndex.push(e.readUInt16());
                                for (this.names = [], r = []; e.pos < this.offset + this.length;) t = e.readByte(), r.push(this.names.push(e.readString(t)));
                                return r;
                            case 151552:
                                return n = e.readUInt16(), this.offsets = e.read(n);
                            case 196608:
                                break;
                            case 262144:
                                return this.map = function () {
                                    var t, n, i;
                                    for (i = [], t = 0, n = this.file.maxp.numGlyphs; 0 <= n ? t < n : n < t; 0 <= n ? ++t : --t) i.push(e.readUInt32());
                                    return i
                                }.call(this)
                        }
                    }, t
                }(), C = function (e, t) {
                    this.raw = e, this.length = e.length, this.platformID = t.platformID, this.encodingID = t.encodingID, this.languageID = t.languageID
                }, w = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "name", t.prototype.parse = function (e) {
                        var t, n, i, r, o, a, s, l, c, u, h, d;
                        for (e.pos = this.offset, e.readShort(), t = e.readShort(), a = e.readShort(), n = [], r = c = 0; 0 <= t ? c < t : t < c; r = 0 <= t ? ++c : --c) n.push({
                            platformID: e.readShort(),
                            encodingID: e.readShort(),
                            languageID: e.readShort(),
                            nameID: e.readShort(),
                            length: e.readShort(),
                            offset: this.offset + a + e.readShort()
                        });
                        for (s = {}, r = u = 0, h = n.length; u < h; r = ++u) i = n[r], e.pos = i.offset, l = e.readString(i.length), o = new C(l, i), null == s[d = i.nameID] && (s[d] = []), s[i.nameID].push(o);
                        this.strings = s, this.copyright = s[0], this.fontFamily = s[1], this.fontSubfamily = s[2], this.uniqueSubfamily = s[3], this.fontName = s[4], this.version = s[5];
                        try {
                            this.postscriptName = s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "")
                        } catch (e) {
                            this.postscriptName = s[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "")
                        }
                        return this.trademark = s[7], this.manufacturer = s[8], this.designer = s[9], this.description = s[10], this.vendorUrl = s[11], this.designerUrl = s[12], this.license = s[13], this.licenseUrl = s[14], this.preferredFamily = s[15], this.preferredSubfamily = s[17], this.compatibleFull = s[18], this.sampleText = s[19]
                    }, t
                }(), I = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "maxp", t.prototype.parse = function (e) {
                        return e.pos = this.offset, this.version = e.readInt(), this.numGlyphs = e.readUInt16(), this.maxPoints = e.readUInt16(), this.maxContours = e.readUInt16(), this.maxCompositePoints = e.readUInt16(), this.maxComponentContours = e.readUInt16(), this.maxZones = e.readUInt16(), this.maxTwilightPoints = e.readUInt16(), this.maxStorage = e.readUInt16(), this.maxFunctionDefs = e.readUInt16(), this.maxInstructionDefs = e.readUInt16(), this.maxStackElements = e.readUInt16(), this.maxSizeOfInstructions = e.readUInt16(), this.maxComponentElements = e.readUInt16(), this.maxComponentDepth = e.readUInt16()
                    }, t
                }(), x = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "hmtx", t.prototype.parse = function (e) {
                        var t, n, i, r, o, a, s;
                        for (e.pos = this.offset, this.metrics = [], r = 0, a = this.file.hhea.numberOfMetrics; 0 <= a ? r < a : a < r; 0 <= a ? ++r : --r) this.metrics.push({
                            advance: e.readUInt16(),
                            lsb: e.readInt16()
                        });
                        for (n = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics, this.leftSideBearings = function () {
                            var t, i;
                            for (i = [], t = 0; 0 <= n ? t < n : n < t; 0 <= n ? ++t : --t) i.push(e.readInt16());
                            return i
                        }(), this.widths = function () {
                            var e, t, n, r;
                            for (r = [], e = 0, t = (n = this.metrics).length; e < t; e++) i = n[e], r.push(i.advance);
                            return r
                        }.call(this), t = this.widths[this.widths.length - 1], s = [], o = 0; 0 <= n ? o < n : n < o; 0 <= n ? ++o : --o) s.push(this.widths.push(t));
                        return s
                    }, t.prototype.forGlyph = function (e) {
                        return e in this.metrics ? this.metrics[e] : {
                            advance: this.metrics[this.metrics.length - 1].advance,
                            lsb: this.leftSideBearings[e - this.metrics.length]
                        }
                    }, t
                }(), A = [].slice, _ = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "glyf", t.prototype.parse = function (e) {
                        return this.cache = {}
                    }, t.prototype.glyphFor = function (e) {
                        var t, n, i, r, o, a, s, l, c, h;
                        return (e = e) in this.cache ? this.cache[e] : (r = this.file.loca, t = this.file.contents, n = r.indexOf(e), 0 === (i = r.lengthOf(e)) ? this.cache[e] = null : (t.pos = this.offset + n, o = (a = new u(t.read(i))).readShort(), l = a.readShort(), h = a.readShort(), s = a.readShort(), c = a.readShort(), this.cache[e] = -1 === o ? new k(a, l, h, s, c) : new S(a, o, l, h, s, c), this.cache[e]))
                    }, t.prototype.encode = function (e, t, n) {
                        var i, r, o, a, s;
                        for (o = [], r = [], a = 0, s = t.length; a < s; a++) i = e[t[a]], r.push(o.length), i && (o = o.concat(i.encode(n)));
                        return r.push(o.length), {table: o, offsets: r}
                    }, t
                }(), S = function () {
                    function e(e, t, n, i, r, o) {
                        this.raw = e, this.numberOfContours = t, this.xMin = n, this.yMin = i, this.xMax = r, this.yMax = o, this.compound = !1
                    }

                    return e.prototype.encode = function () {
                        return this.raw.data
                    }, e
                }(), k = function () {
                    function e(e, t, n, i, r) {
                        var o, a;
                        for (this.raw = e, this.xMin = t, this.yMin = n, this.xMax = i, this.yMax = r, this.compound = !0, this.glyphIDs = [], this.glyphOffsets = [], o = this.raw; a = o.readShort(), this.glyphOffsets.push(o.pos), this.glyphIDs.push(o.readShort()), 32 & a;) o.pos += 1 & a ? 4 : 2, 128 & a ? o.pos += 8 : 64 & a ? o.pos += 4 : 8 & a && (o.pos += 2)
                    }

                    return e.prototype.encode = function (e) {
                        var t, n, i, r, o;
                        for (n = new u(A.call(this.raw.data)), t = i = 0, r = (o = this.glyphIDs).length; i < r; t = ++i) o[t], n.pos = this.glyphOffsets[t];
                        return n.data
                    }, e
                }(), L = function (e) {
                    function t() {
                        return t.__super__.constructor.apply(this, arguments)
                    }

                    return f(t, c), t.prototype.tag = "loca", t.prototype.parse = function (e) {
                        var t;
                        return e.pos = this.offset, t = this.file.head.indexToLocFormat, this.offsets = 0 === t ? function () {
                            var t, n, i;
                            for (i = [], t = 0, n = this.length; t < n; t += 2) i.push(2 * e.readUInt16());
                            return i
                        }.call(this) : function () {
                            var t, n, i;
                            for (i = [], t = 0, n = this.length; t < n; t += 4) i.push(e.readUInt32());
                            return i
                        }.call(this)
                    }, t.prototype.indexOf = function (e) {
                        return this.offsets[e]
                    }, t.prototype.lengthOf = function (e) {
                        return this.offsets[e + 1] - this.offsets[e]
                    }, t.prototype.encode = function (e, t) {
                        for (var n = new Uint32Array(this.offsets.length), i = 0, r = 0, o = 0; o < n.length; ++o) if (n[o] = i, r < t.length && t[r] == o) {
                            ++r, n[o] = i;
                            var a = this.offsets[o], s = this.offsets[o + 1] - a;
                            0 < s && (i += s)
                        }
                        for (var l = new Array(4 * n.length), c = 0; c < n.length; ++c) l[4 * c + 3] = 255 & n[c], l[4 * c + 2] = (65280 & n[c]) >> 8, l[4 * c + 1] = (16711680 & n[c]) >> 16, l[4 * c] = (4278190080 & n[c]) >> 24;
                        return l
                    }, t
                }(), T = function () {
                    function e(e) {
                        this.font = e, this.subset = {}, this.unicodes = {}, this.next = 33
                    }

                    return e.prototype.generateCmap = function () {
                        var e, t, n, i, r;
                        for (t in i = this.font.cmap.tables[0].codeMap, e = {}, r = this.subset) n = r[t], e[t] = i[n];
                        return e
                    }, e.prototype.glyphsFor = function (e) {
                        var t, n, i, r, o, a, s;
                        for (i = {}, o = 0, a = e.length; o < a; o++) i[r = e[o]] = this.font.glyf.glyphFor(r);
                        for (r in t = [], i) (null != (n = i[r]) ? n.compound : void 0) && t.push.apply(t, n.glyphIDs);
                        if (0 < t.length) for (r in s = this.glyphsFor(t)) n = s[r], i[r] = n;
                        return i
                    }, e.prototype.encode = function (e, t) {
                        var n, i, r, o, a, s, l, c, u, h, d, f, g, p, v;
                        for (i in n = m.encode(this.generateCmap(), "unicode"), o = this.glyphsFor(e), d = {0: 0}, v = n.charMap) d[(s = v[i]).old] = s.new;
                        for (f in h = n.maxGlyphID, o) f in d || (d[f] = h++);
                        return c = function (e) {
                            var t, n;
                            for (t in n = {}, e) n[e[t]] = t;
                            return n
                        }(d), u = Object.keys(c).sort((function (e, t) {
                            return e - t
                        })), g = function () {
                            var e, t, n;
                            for (n = [], e = 0, t = u.length; e < t; e++) a = u[e], n.push(c[a]);
                            return n
                        }(), r = this.font.glyf.encode(o, g, d), l = this.font.loca.encode(r.offsets, g), p = {
                            cmap: this.font.cmap.raw(),
                            glyf: r.table,
                            loca: l,
                            hmtx: this.font.hmtx.raw(),
                            hhea: this.font.hhea.raw(),
                            maxp: this.font.maxp.raw(),
                            post: this.font.post.raw(),
                            name: this.font.name.raw(),
                            head: this.font.head.encode(t)
                        }, this.font.os2.exists && (p["OS/2"] = this.font.os2.raw()), this.font.directory.encode(p)
                    }, e
                }();
                e.API.PDFObject = function () {
                    var e;

                    function t() {
                    }

                    return e = function (e, t) {
                        return (Array(t + 1).join("0") + e).slice(-t)
                    }, t.convert = function (n) {
                        var i, r, o, a;
                        if (Array.isArray(n)) return "[" + function () {
                            var e, r, o;
                            for (o = [], e = 0, r = n.length; e < r; e++) i = n[e], o.push(t.convert(i));
                            return o
                        }().join(" ") + "]";
                        if ("string" == typeof n) return "/" + n;
                        if (null != n ? n.isString : void 0) return "(" + n + ")";
                        if (n instanceof Date) return "(D:" + e(n.getUTCFullYear(), 4) + e(n.getUTCMonth(), 2) + e(n.getUTCDate(), 2) + e(n.getUTCHours(), 2) + e(n.getUTCMinutes(), 2) + e(n.getUTCSeconds(), 2) + "Z)";
                        if ("[object Object]" !== {}.toString.call(n)) return "" + n;
                        for (r in o = ["<<"], n) a = n[r], o.push("/" + r + " " + t.convert(a));
                        return o.push(">>"), o.join("\n")
                    }, t
                }()
            }(ge), Le = "undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")(), Te = function () {
                var e, t, n;

                function i(e) {
                    var t, n, i, r, o, a, s, l, c, u, h, d, f, g;
                    for (this.data = e, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, a = null; ;) {
                        switch (t = this.readUInt32(), c = function () {
                            var e, t;
                            for (t = [], e = 0; e < 4; ++e) t.push(String.fromCharCode(this.data[this.pos++]));
                            return t
                        }.call(this).join("")) {
                            case"IHDR":
                                this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++];
                                break;
                            case"acTL":
                                this.animation = {
                                    numFrames: this.readUInt32(),
                                    numPlays: this.readUInt32() || 1 / 0,
                                    frames: []
                                };
                                break;
                            case"PLTE":
                                this.palette = this.read(t);
                                break;
                            case"fcTL":
                                a && this.animation.frames.push(a), this.pos += 4, a = {
                                    width: this.readUInt32(),
                                    height: this.readUInt32(),
                                    xOffset: this.readUInt32(),
                                    yOffset: this.readUInt32()
                                }, o = this.readUInt16(), r = this.readUInt16() || 100, a.delay = 1e3 * o / r, a.disposeOp = this.data[this.pos++], a.blendOp = this.data[this.pos++], a.data = [];
                                break;
                            case"IDAT":
                            case"fdAT":
                                for ("fdAT" === c && (this.pos += 4, t -= 4), e = (null != a ? a.data : void 0) || this.imgData, d = 0; 0 <= t ? d < t : t < d; 0 <= t ? ++d : --d) e.push(this.data[this.pos++]);
                                break;
                            case"tRNS":
                                switch (this.transparency = {}, this.colorType) {
                                    case 3:
                                        if (i = this.palette.length / 3, this.transparency.indexed = this.read(t), this.transparency.indexed.length > i) throw new Error("More transparent colors than palette size");
                                        if (0 < (u = i - this.transparency.indexed.length)) for (f = 0; 0 <= u ? f < u : u < f; 0 <= u ? ++f : --f) this.transparency.indexed.push(255);
                                        break;
                                    case 0:
                                        this.transparency.grayscale = this.read(t)[0];
                                        break;
                                    case 2:
                                        this.transparency.rgb = this.read(t)
                                }
                                break;
                            case"tEXt":
                                s = (h = this.read(t)).indexOf(0), l = String.fromCharCode.apply(String, h.slice(0, s)), this.text[l] = String.fromCharCode.apply(String, h.slice(s + 1));
                                break;
                            case"IEND":
                                return a && this.animation.frames.push(a), this.colors = function () {
                                    switch (this.colorType) {
                                        case 0:
                                        case 3:
                                        case 4:
                                            return 1;
                                        case 2:
                                        case 6:
                                            return 3
                                    }
                                }.call(this), this.hasAlphaChannel = 4 === (g = this.colorType) || 6 === g, n = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * n, this.colorSpace = function () {
                                    switch (this.colors) {
                                        case 1:
                                            return "DeviceGray";
                                        case 3:
                                            return "DeviceRGB"
                                    }
                                }.call(this), void (this.imgData = new Uint8Array(this.imgData));
                            default:
                                this.pos += t
                        }
                        if (this.pos += 4, this.pos > this.data.length) throw new Error("Incomplete or corrupt PNG file")
                    }
                }

                i.load = function (e, t, n) {
                    var r;
                    return "function" == typeof t && (n = t), (r = new XMLHttpRequest).open("GET", e, !0), r.responseType = "arraybuffer", r.onload = function () {
                        var e;
                        return e = new i(new Uint8Array(r.response || r.mozResponseArrayBuffer)), "function" == typeof (null != t ? t.getContext : void 0) && e.render(t), "function" == typeof n ? n(e) : void 0
                    }, r.send(null)
                }, i.prototype.read = function (e) {
                    var t, n;
                    for (n = [], t = 0; 0 <= e ? t < e : e < t; 0 <= e ? ++t : --t) n.push(this.data[this.pos++]);
                    return n
                }, i.prototype.readUInt32 = function () {
                    return this.data[this.pos++] << 24 | this.data[this.pos++] << 16 | this.data[this.pos++] << 8 | this.data[this.pos++]
                }, i.prototype.readUInt16 = function () {
                    return this.data[this.pos++] << 8 | this.data[this.pos++]
                }, i.prototype.decodePixels = function (e) {
                    var t = this.pixelBitlength / 8, n = new Uint8Array(this.width * this.height * t), i = 0, r = this;
                    if (null == e && (e = this.imgData), 0 === e.length) return new Uint8Array(0);

                    function o(o, a, s, l) {
                        var c, u, h, d, f, g, p, m, v, y, b, C, w, I, x, A, _, S, k, L, T,
                            O = Math.ceil((r.width - o) / s), R = Math.ceil((r.height - a) / l),
                            E = r.width == O && r.height == R;
                        for (I = t * O, C = E ? n : new Uint8Array(I * R), g = e.length, u = w = 0; w < R && i < g;) {
                            switch (e[i++]) {
                                case 0:
                                    for (d = _ = 0; _ < I; d = _ += 1) C[u++] = e[i++];
                                    break;
                                case 1:
                                    for (d = S = 0; S < I; d = S += 1) c = e[i++], f = d < t ? 0 : C[u - t], C[u++] = (c + f) % 256;
                                    break;
                                case 2:
                                    for (d = k = 0; k < I; d = k += 1) c = e[i++], h = (d - d % t) / t, x = w && C[(w - 1) * I + h * t + d % t], C[u++] = (x + c) % 256;
                                    break;
                                case 3:
                                    for (d = L = 0; L < I; d = L += 1) c = e[i++], h = (d - d % t) / t, f = d < t ? 0 : C[u - t], x = w && C[(w - 1) * I + h * t + d % t], C[u++] = (c + Math.floor((f + x) / 2)) % 256;
                                    break;
                                case 4:
                                    for (d = T = 0; T < I; d = T += 1) c = e[i++], h = (d - d % t) / t, f = d < t ? 0 : C[u - t], 0 === w ? x = A = 0 : (x = C[(w - 1) * I + h * t + d % t], A = h && C[(w - 1) * I + (h - 1) * t + d % t]), p = f + x - A, m = Math.abs(p - f), y = Math.abs(p - x), b = Math.abs(p - A), v = m <= y && m <= b ? f : y <= b ? x : A, C[u++] = (c + v) % 256;
                                    break;
                                default:
                                    throw new Error("Invalid filter algorithm: " + e[i - 1])
                            }
                            if (!E) {
                                var P = ((a + w * l) * r.width + o) * t, M = w * I;
                                for (d = 0; d < O; d += 1) {
                                    for (var N = 0; N < t; N += 1) n[P++] = C[M++];
                                    P += (s - 1) * t
                                }
                            }
                            w++
                        }
                    }

                    return e = (e = new De(e)).getBytes(), 1 == r.interlaceMethod ? (o(0, 0, 8, 8), o(4, 0, 8, 8), o(0, 4, 4, 8), o(2, 0, 4, 4), o(0, 2, 2, 4), o(1, 0, 2, 2), o(0, 1, 1, 2)) : o(0, 0, 1, 1), n
                }, i.prototype.decodePalette = function () {
                    var e, t, n, i, r, o, a, s, l;
                    for (n = this.palette, o = this.transparency.indexed || [], r = new Uint8Array((o.length || 0) + n.length), i = 0, n.length, t = a = e = 0, s = n.length; a < s; t = a += 3) r[i++] = n[t], r[i++] = n[t + 1], r[i++] = n[t + 2], r[i++] = null != (l = o[e++]) ? l : 255;
                    return r
                }, i.prototype.copyToImageData = function (e, t) {
                    var n, i, r, o, a, s, l, c, u, h, d;
                    if (i = this.colors, u = null, n = this.hasAlphaChannel, this.palette.length && (u = null != (d = this._decodedPalette) ? d : this._decodedPalette = this.decodePalette(), i = 4, n = !0), c = (r = e.data || e).length, a = u || t, o = s = 0, 1 === i) for (; o < c;) l = u ? 4 * t[o / 4] : s, h = a[l++], r[o++] = h, r[o++] = h, r[o++] = h, r[o++] = n ? a[l++] : 255, s = l; else for (; o < c;) l = u ? 4 * t[o / 4] : s, r[o++] = a[l++], r[o++] = a[l++], r[o++] = a[l++], r[o++] = n ? a[l++] : 255, s = l
                }, i.prototype.decode = function () {
                    var e;
                    return e = new Uint8Array(this.width * this.height * 4), this.copyToImageData(e, this.decodePixels()), e
                };
                try {
                    t = Le.document.createElement("canvas"), n = t.getContext("2d")
                } catch (e) {
                    return -1
                }
                return e = function (e) {
                    var i;
                    return n.width = e.width, n.height = e.height, n.clearRect(0, 0, e.width, e.height), n.putImageData(e, 0, 0), (i = new Image).src = t.toDataURL(), i
                }, i.prototype.decodeFrames = function (t) {
                    var n, i, r, o, a, s, l, c;
                    if (this.animation) {
                        for (c = [], i = a = 0, s = (l = this.animation.frames).length; a < s; i = ++a) n = l[i], r = t.createImageData(n.width, n.height), o = this.decodePixels(new Uint8Array(n.data)), this.copyToImageData(r, o), n.imageData = r, c.push(n.image = e(r));
                        return c
                    }
                }, i.prototype.renderFrame = function (e, t) {
                    var n, i, r;
                    return n = (i = this.animation.frames)[t], r = i[t - 1], 0 === t && e.clearRect(0, 0, this.width, this.height), 1 === (null != r ? r.disposeOp : void 0) ? e.clearRect(r.xOffset, r.yOffset, r.width, r.height) : 2 === (null != r ? r.disposeOp : void 0) && e.putImageData(r.imageData, r.xOffset, r.yOffset), 0 === n.blendOp && e.clearRect(n.xOffset, n.yOffset, n.width, n.height), e.drawImage(n.image, n.xOffset, n.yOffset)
                }, i.prototype.animate = function (e) {
                    var t, n, i, r, o, a, s = this;
                    return n = 0, a = this.animation, r = a.numFrames, i = a.frames, o = a.numPlays, (t = function () {
                        var a, l;
                        if (a = n++ % r, l = i[a], s.renderFrame(e, a), 1 < r && n / r < o) return s.animation._timeout = setTimeout(t, l.delay)
                    })()
                }, i.prototype.stopAnimation = function () {
                    var e;
                    return clearTimeout(null != (e = this.animation) ? e._timeout : void 0)
                }, i.prototype.render = function (e) {
                    var t, n;
                    return e._png && e._png.stopAnimation(), e._png = this, e.width = this.width, e.height = this.height, t = e.getContext("2d"), this.animation ? (this.decodeFrames(t), this.animate(t)) : (n = t.createImageData(this.width, this.height), this.copyToImageData(n, this.decodePixels()), t.putImageData(n, 0, 0))
                }, i
            }(), Le.PNG = Te;
            var Ne = function () {
                function e() {
                    this.pos = 0, this.bufferLength = 0, this.eof = !1, this.buffer = null
                }

                return e.prototype = {
                    ensureBuffer: function (e) {
                        var t = this.buffer, n = t ? t.byteLength : 0;
                        if (e < n) return t;
                        for (var i = 512; i < e;) i <<= 1;
                        for (var r = new Uint8Array(i), o = 0; o < n; ++o) r[o] = t[o];
                        return this.buffer = r
                    }, getByte: function () {
                        for (var e = this.pos; this.bufferLength <= e;) {
                            if (this.eof) return null;
                            this.readBlock()
                        }
                        return this.buffer[this.pos++]
                    }, getBytes: function (e) {
                        var t = this.pos;
                        if (e) {
                            this.ensureBuffer(t + e);
                            for (var n = t + e; !this.eof && this.bufferLength < n;) this.readBlock();
                            var i = this.bufferLength;
                            i < n && (n = i)
                        } else {
                            for (; !this.eof;) this.readBlock();
                            n = this.bufferLength
                        }
                        return this.pos = n, this.buffer.subarray(t, n)
                    }, lookChar: function () {
                        for (var e = this.pos; this.bufferLength <= e;) {
                            if (this.eof) return null;
                            this.readBlock()
                        }
                        return String.fromCharCode(this.buffer[this.pos])
                    }, getChar: function () {
                        for (var e = this.pos; this.bufferLength <= e;) {
                            if (this.eof) return null;
                            this.readBlock()
                        }
                        return String.fromCharCode(this.buffer[this.pos++])
                    }, makeSubStream: function (e, t, n) {
                        for (var i = e + t; this.bufferLength <= i && !this.eof;) this.readBlock();
                        return new Stream(this.buffer, e, t, n)
                    }, skip: function (e) {
                        e || (e = 1), this.pos += e
                    }, reset: function () {
                        this.pos = 0
                    }
                }, e
            }(), De = function () {
                if ("undefined" != typeof Uint32Array) {
                    var e = new Uint32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
                        t = new Uint32Array([3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, 258]),
                        n = new Uint32Array([1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545]),
                        i = [new Uint32Array([459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079]), 9],
                        r = [new Uint32Array([327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0]), 5];
                    return (a.prototype = Object.create(Ne.prototype)).getBits = function (e) {
                        for (var t, n = this.codeSize, i = this.codeBuf, r = this.bytes, a = this.bytesPos; n < e;) void 0 === (t = r[a++]) && o("Bad encoding in flate stream"), i |= t << n, n += 8;
                        return t = i & (1 << e) - 1, this.codeBuf = i >> e, this.codeSize = n -= e, this.bytesPos = a, t
                    }, a.prototype.getCode = function (e) {
                        for (var t = e[0], n = e[1], i = this.codeSize, r = this.codeBuf, a = this.bytes, s = this.bytesPos; i < n;) {
                            var l;
                            void 0 === (l = a[s++]) && o("Bad encoding in flate stream"), r |= l << i, i += 8
                        }
                        var c = t[r & (1 << n) - 1], u = c >> 16, h = 65535 & c;
                        return (0 == i || i < u || 0 == u) && o("Bad encoding in flate stream"), this.codeBuf = r >> u, this.codeSize = i - u, this.bytesPos = s, h
                    }, a.prototype.generateHuffmanTable = function (e) {
                        for (var t = e.length, n = 0, i = 0; i < t; ++i) e[i] > n && (n = e[i]);
                        for (var r = 1 << n, o = new Uint32Array(r), a = 1, s = 0, l = 2; a <= n; ++a, s <<= 1, l <<= 1) for (var c = 0; c < t; ++c) if (e[c] == a) {
                            var u = 0, h = s;
                            for (i = 0; i < a; ++i) u = u << 1 | 1 & h, h >>= 1;
                            for (i = u; i < r; i += l) o[i] = a << 16 | c;
                            ++s
                        }
                        return [o, n]
                    }, a.prototype.readBlock = function () {
                        function a(e, t, n, i, r) {
                            for (var o = e.getBits(n) + i; 0 < o--;) t[g++] = r
                        }

                        var s = this.getBits(3);
                        if (1 & s && (this.eof = !0), 0 != (s >>= 1)) {
                            var l, c;
                            if (1 == s) l = i, c = r; else if (2 == s) {
                                for (var u = this.getBits(5) + 257, h = this.getBits(5) + 1, d = this.getBits(4) + 4, f = Array(e.length), g = 0; g < d;) f[e[g++]] = this.getBits(3);
                                for (var p = this.generateHuffmanTable(f), m = 0, v = (g = 0, u + h), y = new Array(v); g < v;) {
                                    var b = this.getCode(p);
                                    16 == b ? a(this, y, 2, 3, m) : 17 == b ? a(this, y, 3, 3, m = 0) : 18 == b ? a(this, y, 7, 11, m = 0) : y[g++] = m = b
                                }
                                l = this.generateHuffmanTable(y.slice(0, u)), c = this.generateHuffmanTable(y.slice(u, v))
                            } else o("Unknown block type in flate stream");
                            for (var C = (E = this.buffer) ? E.length : 0, w = this.bufferLength; ;) {
                                var I = this.getCode(l);
                                if (I < 256) C <= w + 1 && (C = (E = this.ensureBuffer(w + 1)).length), E[w++] = I; else {
                                    if (256 == I) return void (this.bufferLength = w);
                                    var x = (I = t[I -= 257]) >> 16;
                                    0 < x && (x = this.getBits(x)), m = (65535 & I) + x, I = this.getCode(c), 0 < (x = (I = n[I]) >> 16) && (x = this.getBits(x));
                                    var A = (65535 & I) + x;
                                    C <= w + m && (C = (E = this.ensureBuffer(w + m)).length);
                                    for (var _ = 0; _ < m; ++_, ++w) E[w] = E[w - A]
                                }
                            }
                        } else {
                            var S, k = this.bytes, L = this.bytesPos;
                            void 0 === (S = k[L++]) && o("Bad block header in flate stream");
                            var T = S;
                            void 0 === (S = k[L++]) && o("Bad block header in flate stream"), T |= S << 8, void 0 === (S = k[L++]) && o("Bad block header in flate stream");
                            var O = S;
                            void 0 === (S = k[L++]) && o("Bad block header in flate stream"), (O |= S << 8) != (65535 & ~T) && o("Bad uncompressed block length in flate stream"), this.codeBuf = 0, this.codeSize = 0;
                            var R = this.bufferLength, E = this.ensureBuffer(R + T), P = R + T;
                            this.bufferLength = P;
                            for (var M = R; M < P; ++M) {
                                if (void 0 === (S = k[L++])) {
                                    this.eof = !0;
                                    break
                                }
                                E[M] = S
                            }
                            this.bytesPos = L
                        }
                    }, a
                }

                function o(e) {
                    throw new Error(e)
                }

                function a(e) {
                    var t = 0, n = e[t++], i = e[t++];
                    -1 != n && -1 != i || o("Invalid header in flate stream"), 8 != (15 & n) && o("Unknown compression method in flate stream"), ((n << 8) + i) % 31 != 0 && o("Bad FCHECK in flate stream"), 32 & i && o("FDICT bit set in flate stream"), this.bytes = e, this.bytesPos = 2, this.codeSize = 0, this.codeBuf = 0, Ne.call(this)
                }
            }();
            window.tmp = De
        }, void 0 === (o = "function" == typeof r ? r.call(t, n, t, e) : r) || (e.exports = o);
        try {
            e.exports = jsPDF
        } catch (e) {
        }
    }).call(this, n(136))
}, function (e, t, n) {
    var i;
    i = function () {
        return function (e) {
            var t = {};

            function n(i) {
                if (t[i]) return t[i].exports;
                var r = t[i] = {exports: {}, id: i, loaded: !1};
                return e[i].call(r.exports, r, r.exports, n), r.loaded = !0, r.exports
            }

            return n.m = e, n.c = t, n.p = "", n(0)
        }([function (e, t) {
            "use strict";
            var n;
            Object.defineProperty(t, "__esModule", {value: !0}), function (e) {
                function t(e) {
                    this.mode = r.MODE_8BIT_BYTE, this.data = e, this.parsedData = [];
                    for (var t = 0, n = this.data.length; t < n; t++) {
                        var i = [], o = this.data.charCodeAt(t);
                        o > 65536 ? (i[0] = 240 | (1835008 & o) >>> 18, i[1] = 128 | (258048 & o) >>> 12, i[2] = 128 | (4032 & o) >>> 6, i[3] = 128 | 63 & o) : o > 2048 ? (i[0] = 224 | (61440 & o) >>> 12, i[1] = 128 | (4032 & o) >>> 6, i[2] = 128 | 63 & o) : o > 128 ? (i[0] = 192 | (1984 & o) >>> 6, i[1] = 128 | 63 & o) : i[0] = o, this.parsedData.push(i)
                    }
                    this.parsedData = Array.prototype.concat.apply([], this.parsedData), this.parsedData.length != this.data.length && (this.parsedData.unshift(191), this.parsedData.unshift(187), this.parsedData.unshift(239))
                }

                function i(e, t) {
                    this.typeNumber = e, this.errorCorrectLevel = t, this.modules = null, this.moduleCount = 0, this.dataCache = null, this.dataList = []
                }

                t.prototype = {
                    getLength: function (e) {
                        return this.parsedData.length
                    }, write: function (e) {
                        for (var t = 0, n = this.parsedData.length; t < n; t++) e.put(this.parsedData[t], 8)
                    }
                }, i.prototype = {
                    addData: function (e) {
                        var n = new t(e);
                        this.dataList.push(n), this.dataCache = null
                    }, isDark: function (e, t) {
                        if (e < 0 || this.moduleCount <= e || t < 0 || this.moduleCount <= t) throw new Error(e + "," + t);
                        return this.modules[e][t]
                    }, getModuleCount: function () {
                        return this.moduleCount
                    }, make: function () {
                        this.makeImpl(!1, this.getBestMaskPattern())
                    }, makeImpl: function (e, t) {
                        this.moduleCount = 4 * this.typeNumber + 17, this.modules = new Array(this.moduleCount);
                        for (var n = 0; n < this.moduleCount; n++) {
                            this.modules[n] = new Array(this.moduleCount);
                            for (var r = 0; r < this.moduleCount; r++) this.modules[n][r] = null
                        }
                        this.setupPositionProbePattern(0, 0), this.setupPositionProbePattern(this.moduleCount - 7, 0), this.setupPositionProbePattern(0, this.moduleCount - 7), this.setupPositionAdjustPattern(), this.setupTimingPattern(), this.setupTypeInfo(e, t), this.typeNumber >= 7 && this.setupTypeNumber(e), null == this.dataCache && (this.dataCache = i.createData(this.typeNumber, this.errorCorrectLevel, this.dataList)), this.mapData(this.dataCache, t)
                    }, setupPositionProbePattern: function (e, t) {
                        for (var n = -1; n <= 7; n++) if (!(e + n <= -1 || this.moduleCount <= e + n)) for (var i = -1; i <= 7; i++) t + i <= -1 || this.moduleCount <= t + i || (this.modules[e + n][t + i] = 0 <= n && n <= 6 && (0 == i || 6 == i) || 0 <= i && i <= 6 && (0 == n || 6 == n) || 2 <= n && n <= 4 && 2 <= i && i <= 4)
                    }, getBestMaskPattern: function () {
                        for (var e = 0, t = 0, n = 0; n < 8; n++) {
                            this.makeImpl(!0, n);
                            var i = g.getLostPoint(this);
                            (0 == n || e > i) && (e = i, t = n)
                        }
                        return t
                    }, createMovieClip: function (e, t, n) {
                        var i = e.createEmptyMovieClip(t, n);
                        this.make();
                        for (var r = 0; r < this.modules.length; r++) for (var o = 1 * r, a = 0; a < this.modules[r].length; a++) {
                            var s = 1 * a;
                            this.modules[r][a] && (i.beginFill(0, 100), i.moveTo(s, o), i.lineTo(s + 1, o), i.lineTo(s + 1, o + 1), i.lineTo(s, o + 1), i.endFill())
                        }
                        return i
                    }, setupTimingPattern: function () {
                        for (var e = 8; e < this.moduleCount - 8; e++) null == this.modules[e][6] && (this.modules[e][6] = e % 2 == 0);
                        for (var t = 8; t < this.moduleCount - 8; t++) null == this.modules[6][t] && (this.modules[6][t] = t % 2 == 0)
                    }, setupPositionAdjustPattern: function () {
                        for (var e = g.getPatternPosition(this.typeNumber), t = 0; t < e.length; t++) for (var n = 0; n < e.length; n++) {
                            var i = e[t], r = e[n];
                            if (null == this.modules[i][r]) for (var o = -2; o <= 2; o++) for (var a = -2; a <= 2; a++) this.modules[i + o][r + a] = -2 == o || 2 == o || -2 == a || 2 == a || 0 == o && 0 == a
                        }
                    }, setupTypeNumber: function (e) {
                        for (var t = g.getBCHTypeNumber(this.typeNumber), n = 0; n < 18; n++) {
                            var i = !e && 1 == (t >> n & 1);
                            this.modules[Math.floor(n / 3)][n % 3 + this.moduleCount - 8 - 3] = i
                        }
                        for (n = 0; n < 18; n++) i = !e && 1 == (t >> n & 1), this.modules[n % 3 + this.moduleCount - 8 - 3][Math.floor(n / 3)] = i
                    }, setupTypeInfo: function (e, t) {
                        for (var n = this.errorCorrectLevel << 3 | t, i = g.getBCHTypeInfo(n), r = 0; r < 15; r++) {
                            var o = !e && 1 == (i >> r & 1);
                            r < 6 ? this.modules[r][8] = o : r < 8 ? this.modules[r + 1][8] = o : this.modules[this.moduleCount - 15 + r][8] = o
                        }
                        for (r = 0; r < 15; r++) o = !e && 1 == (i >> r & 1), r < 8 ? this.modules[8][this.moduleCount - r - 1] = o : r < 9 ? this.modules[8][15 - r - 1 + 1] = o : this.modules[8][15 - r - 1] = o;
                        this.modules[this.moduleCount - 8][8] = !e
                    }, mapData: function (e, t) {
                        for (var n = -1, i = this.moduleCount - 1, r = 7, o = 0, a = this.moduleCount - 1; a > 0; a -= 2) for (6 == a && a--; ;) {
                            for (var s = 0; s < 2; s++) if (null == this.modules[i][a - s]) {
                                var l = !1;
                                o < e.length && (l = 1 == (e[o] >>> r & 1)), g.getMask(t, i, a - s) && (l = !l), this.modules[i][a - s] = l, -1 == --r && (o++, r = 7)
                            }
                            if ((i += n) < 0 || this.moduleCount <= i) {
                                i -= n, n = -n;
                                break
                            }
                        }
                    }
                }, i.PAD0 = 236, i.PAD1 = 17, i.createData = function (e, t, n) {
                    for (var r = y.getRSBlocks(e, t), o = new b, a = 0; a < n.length; a++) {
                        var s = n[a];
                        o.put(s.mode, 4), o.put(s.getLength(), g.getLengthInBits(s.mode, e)), s.write(o)
                    }
                    var l = 0;
                    for (a = 0; a < r.length; a++) l += r[a].dataCount;
                    if (o.getLengthInBits() > 8 * l) throw new Error("code length overflow. (" + o.getLengthInBits() + ">" + 8 * l + ")");
                    for (o.getLengthInBits() + 4 <= 8 * l && o.put(0, 4); o.getLengthInBits() % 8 != 0;) o.putBit(!1);
                    for (; !(o.getLengthInBits() >= 8 * l || (o.put(i.PAD0, 8), o.getLengthInBits() >= 8 * l));) o.put(i.PAD1, 8);
                    return i.createBytes(o, r)
                }, i.createBytes = function (e, t) {
                    for (var n = 0, i = 0, r = 0, o = new Array(t.length), a = new Array(t.length), s = 0; s < t.length; s++) {
                        var l = t[s].dataCount, c = t[s].totalCount - l;
                        i = Math.max(i, l), r = Math.max(r, c), o[s] = new Array(l);
                        for (var u = 0; u < o[s].length; u++) o[s][u] = 255 & e.buffer[u + n];
                        n += l;
                        var h = g.getErrorCorrectPolynomial(c), d = new v(o[s], h.getLength() - 1).mod(h);
                        for (a[s] = new Array(h.getLength() - 1), u = 0; u < a[s].length; u++) {
                            var f = u + d.getLength() - a[s].length;
                            a[s][u] = f >= 0 ? d.get(f) : 0
                        }
                    }
                    var p = 0;
                    for (u = 0; u < t.length; u++) p += t[u].totalCount;
                    var m = new Array(p), y = 0;
                    for (u = 0; u < i; u++) for (s = 0; s < t.length; s++) u < o[s].length && (m[y++] = o[s][u]);
                    for (u = 0; u < r; u++) for (s = 0; s < t.length; s++) u < a[s].length && (m[y++] = a[s][u]);
                    return m
                };
                for (var r = {MODE_NUMBER: 1, MODE_ALPHA_NUM: 2, MODE_8BIT_BYTE: 4, MODE_KANJI: 8}, o = {
                    L: 1,
                    M: 0,
                    Q: 3,
                    H: 2
                }, a = 0, s = 1, l = 2, c = 3, u = 4, h = 5, d = 6, f = 7, g = {
                    PATTERN_POSITION_TABLE: [[], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170]],
                    G15: 1335,
                    G18: 7973,
                    G15_MASK: 21522,
                    getBCHTypeInfo: function (e) {
                        for (var t = e << 10; g.getBCHDigit(t) - g.getBCHDigit(g.G15) >= 0;) t ^= g.G15 << g.getBCHDigit(t) - g.getBCHDigit(g.G15);
                        return (e << 10 | t) ^ g.G15_MASK
                    },
                    getBCHTypeNumber: function (e) {
                        for (var t = e << 12; g.getBCHDigit(t) - g.getBCHDigit(g.G18) >= 0;) t ^= g.G18 << g.getBCHDigit(t) - g.getBCHDigit(g.G18);
                        return e << 12 | t
                    },
                    getBCHDigit: function (e) {
                        for (var t = 0; 0 != e;) t++, e >>>= 1;
                        return t
                    },
                    getPatternPosition: function (e) {
                        return g.PATTERN_POSITION_TABLE[e - 1]
                    },
                    getMask: function (e, t, n) {
                        switch (e) {
                            case a:
                                return (t + n) % 2 == 0;
                            case s:
                                return t % 2 == 0;
                            case l:
                                return n % 3 == 0;
                            case c:
                                return (t + n) % 3 == 0;
                            case u:
                                return (Math.floor(t / 2) + Math.floor(n / 3)) % 2 == 0;
                            case h:
                                return t * n % 2 + t * n % 3 == 0;
                            case d:
                                return (t * n % 2 + t * n % 3) % 2 == 0;
                            case f:
                                return (t * n % 3 + (t + n) % 2) % 2 == 0;
                            default:
                                throw new Error("bad maskPattern:" + e)
                        }
                    },
                    getErrorCorrectPolynomial: function (e) {
                        for (var t = new v([1], 0), n = 0; n < e; n++) t = t.multiply(new v([1, p.gexp(n)], 0));
                        return t
                    },
                    getLengthInBits: function (e, t) {
                        if (1 <= t && t < 10) switch (e) {
                            case r.MODE_NUMBER:
                                return 10;
                            case r.MODE_ALPHA_NUM:
                                return 9;
                            case r.MODE_8BIT_BYTE:
                            case r.MODE_KANJI:
                                return 8;
                            default:
                                throw new Error("mode:" + e)
                        } else if (t < 27) switch (e) {
                            case r.MODE_NUMBER:
                                return 12;
                            case r.MODE_ALPHA_NUM:
                                return 11;
                            case r.MODE_8BIT_BYTE:
                                return 16;
                            case r.MODE_KANJI:
                                return 10;
                            default:
                                throw new Error("mode:" + e)
                        } else {
                            if (!(t < 41)) throw new Error("type:" + t);
                            switch (e) {
                                case r.MODE_NUMBER:
                                    return 14;
                                case r.MODE_ALPHA_NUM:
                                    return 13;
                                case r.MODE_8BIT_BYTE:
                                    return 16;
                                case r.MODE_KANJI:
                                    return 12;
                                default:
                                    throw new Error("mode:" + e)
                            }
                        }
                    },
                    getLostPoint: function (e) {
                        for (var t = e.getModuleCount(), n = 0, i = 0; i < t; i++) for (var r = 0; r < t; r++) {
                            for (var o = 0, a = e.isDark(i, r), s = -1; s <= 1; s++) if (!(i + s < 0 || t <= i + s)) for (var l = -1; l <= 1; l++) r + l < 0 || t <= r + l || 0 == s && 0 == l || a == e.isDark(i + s, r + l) && o++;
                            o > 5 && (n += 3 + o - 5)
                        }
                        for (i = 0; i < t - 1; i++) for (r = 0; r < t - 1; r++) {
                            var c = 0;
                            e.isDark(i, r) && c++, e.isDark(i + 1, r) && c++, e.isDark(i, r + 1) && c++, e.isDark(i + 1, r + 1) && c++, 0 != c && 4 != c || (n += 3)
                        }
                        for (i = 0; i < t; i++) for (r = 0; r < t - 6; r++) e.isDark(i, r) && !e.isDark(i, r + 1) && e.isDark(i, r + 2) && e.isDark(i, r + 3) && e.isDark(i, r + 4) && !e.isDark(i, r + 5) && e.isDark(i, r + 6) && (n += 40);
                        for (r = 0; r < t; r++) for (i = 0; i < t - 6; i++) e.isDark(i, r) && !e.isDark(i + 1, r) && e.isDark(i + 2, r) && e.isDark(i + 3, r) && e.isDark(i + 4, r) && !e.isDark(i + 5, r) && e.isDark(i + 6, r) && (n += 40);
                        var u = 0;
                        for (r = 0; r < t; r++) for (i = 0; i < t; i++) e.isDark(i, r) && u++;
                        return n += Math.abs(100 * u / t / t - 50) / 5 * 10
                    }
                }, p = {
                    glog: function (e) {
                        if (e < 1) throw new Error("glog(" + e + ")");
                        return p.LOG_TABLE[e]
                    }, gexp: function (e) {
                        for (; e < 0;) e += 255;
                        for (; e >= 256;) e -= 255;
                        return p.EXP_TABLE[e]
                    }, EXP_TABLE: new Array(256), LOG_TABLE: new Array(256)
                }, m = 0; m < 8; m++) p.EXP_TABLE[m] = 1 << m;
                for (m = 8; m < 256; m++) p.EXP_TABLE[m] = p.EXP_TABLE[m - 4] ^ p.EXP_TABLE[m - 5] ^ p.EXP_TABLE[m - 6] ^ p.EXP_TABLE[m - 8];
                for (m = 0; m < 255; m++) p.LOG_TABLE[p.EXP_TABLE[m]] = m;

                function v(e, t) {
                    if (null == e.length) throw new Error(e.length + "/" + t);
                    for (var n = 0; n < e.length && 0 == e[n];) n++;
                    this.num = new Array(e.length - n + t);
                    for (var i = 0; i < e.length - n; i++) this.num[i] = e[i + n]
                }

                function y(e, t) {
                    this.totalCount = e, this.dataCount = t
                }

                function b() {
                    this.buffer = [], this.length = 0
                }

                v.prototype = {
                    get: function (e) {
                        return this.num[e]
                    }, getLength: function () {
                        return this.num.length
                    }, multiply: function (e) {
                        for (var t = new Array(this.getLength() + e.getLength() - 1), n = 0; n < this.getLength(); n++) for (var i = 0; i < e.getLength(); i++) t[n + i] ^= p.gexp(p.glog(this.get(n)) + p.glog(e.get(i)));
                        return new v(t, 0)
                    }, mod: function (e) {
                        if (this.getLength() - e.getLength() < 0) return this;
                        for (var t = p.glog(this.get(0)) - p.glog(e.get(0)), n = new Array(this.getLength()), i = 0; i < this.getLength(); i++) n[i] = this.get(i);
                        for (i = 0; i < e.getLength(); i++) n[i] ^= p.gexp(p.glog(e.get(i)) + t);
                        return new v(n, 0).mod(e)
                    }
                }, y.RS_BLOCK_TABLE = [[1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16], [4, 101, 81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16]], y.getRSBlocks = function (e, t) {
                    var n = y.getRsBlockTable(e, t);
                    if (null == n) throw new Error("bad rs block @ typeNumber:" + e + "/errorCorrectLevel:" + t);
                    for (var i = n.length / 3, r = [], o = 0; o < i; o++) for (var a = n[3 * o + 0], s = n[3 * o + 1], l = n[3 * o + 2], c = 0; c < a; c++) r.push(new y(s, l));
                    return r
                }, y.getRsBlockTable = function (e, t) {
                    switch (t) {
                        case o.L:
                            return y.RS_BLOCK_TABLE[4 * (e - 1) + 0];
                        case o.M:
                            return y.RS_BLOCK_TABLE[4 * (e - 1) + 1];
                        case o.Q:
                            return y.RS_BLOCK_TABLE[4 * (e - 1) + 2];
                        case o.H:
                            return y.RS_BLOCK_TABLE[4 * (e - 1) + 3];
                        default:
                            return
                    }
                }, b.prototype = {
                    get: function (e) {
                        var t = Math.floor(e / 8);
                        return 1 == (this.buffer[t] >>> 7 - e % 8 & 1)
                    }, put: function (e, t) {
                        for (var n = 0; n < t; n++) this.putBit(1 == (e >>> t - n - 1 & 1))
                    }, getLengthInBits: function () {
                        return this.length
                    }, putBit: function (e) {
                        var t = Math.floor(this.length / 8);
                        this.buffer.length <= t && this.buffer.push(0), e && (this.buffer[t] |= 128 >>> this.length % 8), this.length++
                    }
                };
                var C = [[17, 14, 11, 7], [32, 26, 20, 14], [53, 42, 32, 24], [78, 62, 46, 34], [106, 84, 60, 44], [134, 106, 74, 58], [154, 122, 86, 64], [192, 152, 108, 84], [230, 180, 130, 98], [271, 213, 151, 119], [321, 251, 177, 137], [367, 287, 203, 155], [425, 331, 241, 177], [458, 362, 258, 194], [520, 412, 292, 220], [586, 450, 322, 250], [644, 504, 364, 280], [718, 560, 394, 310], [792, 624, 442, 338], [858, 666, 482, 382], [929, 711, 509, 403], [1003, 779, 565, 439], [1091, 857, 611, 461], [1171, 911, 661, 511], [1273, 997, 715, 535], [1367, 1059, 751, 593], [1465, 1125, 805, 625], [1528, 1190, 868, 658], [1628, 1264, 908, 698], [1732, 1370, 982, 742], [1840, 1452, 1030, 790], [1952, 1538, 1112, 842], [2068, 1628, 1168, 898], [2188, 1722, 1228, 958], [2303, 1809, 1283, 983], [2431, 1911, 1351, 1051], [2563, 1989, 1423, 1093], [2699, 2099, 1499, 1139], [2809, 2213, 1579, 1219], [2953, 2331, 1663, 1273]];

                function w() {
                    var e = !1, t = navigator.userAgent;
                    if (/android/i.test(t)) {
                        e = !0;
                        var n = t.toString().match(/android ([0-9]\.[0-9])/i);
                        n && n[1] && (e = parseFloat(n[1]))
                    }
                    return e
                }

                var I = function () {
                        var e = function (e, t) {
                            this._el = e, this._htOption = t
                        };
                        return e.prototype.draw = function (e) {
                            var t = this._htOption, n = this._el, i = e.getModuleCount();

                            function r(e, t) {
                                var n = document.createElementNS("http://www.w3.org/2000/svg", e);
                                for (var i in t) t.hasOwnProperty(i) && n.setAttribute(i, t[i]);
                                return n
                            }

                            Math.floor(t.width / i), Math.floor(t.height / i), this.clear();
                            var o = r("svg", {
                                viewBox: "0 0 " + String(i) + " " + String(i),
                                width: "100%",
                                height: "100%",
                                fill: t.colorLight
                            });
                            o.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"), n.appendChild(o), o.appendChild(r("rect", {
                                fill: t.colorLight,
                                width: "100%",
                                height: "100%"
                            })), o.appendChild(r("rect", {fill: t.colorDark, width: "1", height: "1", id: "template"}));
                            for (var a = 0; a < i; a++) for (var s = 0; s < i; s++) if (e.isDark(a, s)) {
                                var l = r("use", {x: String(s), y: String(a)});
                                l.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template"), o.appendChild(l)
                            }
                        }, e.prototype.clear = function () {
                            for (; this._el.hasChildNodes();) this._el.removeChild(this._el.lastChild)
                        }, e
                    }(),
                    x = "svg" === document.documentElement.tagName.toLowerCase() ? I : "undefined" == typeof CanvasRenderingContext2D ? function () {
                        var e = function (e, t) {
                            this._el = e, this._htOption = t
                        };
                        return e.prototype.draw = function (e) {
                            for (var t = this._htOption, n = this._el, i = e.getModuleCount(), r = Math.floor(t.width / i), o = Math.floor(t.height / i), a = ['<table style="border:0;border-collapse:collapse;">'], s = 0; s < i; s++) {
                                a.push("<tr>");
                                for (var l = 0; l < i; l++) a.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:' + r + "px;height:" + o + "px;background-color:" + (e.isDark(s, l) ? t.colorDark : t.colorLight) + ';"></td>');
                                a.push("</tr>")
                            }
                            a.push("</table>"), n.innerHTML = a.join("");
                            var c = n.childNodes[0], u = (t.width - c.offsetWidth) / 2,
                                h = (t.height - c.offsetHeight) / 2;
                            u > 0 && h > 0 && (c.style.margin = h + "px " + u + "px")
                        }, e.prototype.clear = function () {
                            this._el.innerHTML = ""
                        }, e
                    }() : function () {
                        function t() {
                            this._elImage.src = this._elCanvas.toDataURL("image/png"), this._elImage.style.display = "block", this._elCanvas.style.display = "none"
                        }

                        if (e._android && e._android <= 2.1) {
                            var n = 1 / window.devicePixelRatio, i = CanvasRenderingContext2D.prototype.drawImage;
                            CanvasRenderingContext2D.prototype.drawImage = function (e, t, r, o, a, s, l, c, u) {
                                if ("nodeName" in e && /img/i.test(e.nodeName)) for (var h = arguments.length - 1; h >= 1; h--) arguments[h] = arguments[h] * n; else void 0 === c && (arguments[1] *= n, arguments[2] *= n, arguments[3] *= n, arguments[4] *= n);
                                i.apply(this, arguments)
                            }
                        }

                        function r(e, t) {
                            var n = this;
                            if (n._fFail = t, n._fSuccess = e, null === n._bSupportDataURI) {
                                var i = document.createElement("img"), r = function () {
                                    n._bSupportDataURI = !1, n._fFail && n._fFail.call(n)
                                };
                                return i.onabort = r, i.onerror = r, i.onload = function () {
                                    n._bSupportDataURI = !0, n._fSuccess && n._fSuccess.call(n)
                                }, void (i.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==")
                            }
                            !0 === n._bSupportDataURI && n._fSuccess ? n._fSuccess.call(n) : !1 === n._bSupportDataURI && n._fFail && n._fFail.call(n)
                        }

                        var o = function (e, t) {
                            this._bIsPainted = !1, this._android = w(), this._htOption = t, this._elCanvas = document.createElement("canvas"), this._elCanvas.width = t.width, this._elCanvas.height = t.height, e.appendChild(this._elCanvas), this._el = e, this._oContext = this._elCanvas.getContext("2d"), this._bIsPainted = !1, this._elImage = document.createElement("img"), this._elImage.alt = "Scan me!", this._elImage.style.display = "none", this._el.appendChild(this._elImage), this._bSupportDataURI = null
                        };
                        return o.prototype.draw = function (e) {
                            var t = this._elImage, n = this._oContext, i = this._htOption, r = e.getModuleCount(),
                                o = i.width / r, a = i.height / r, s = Math.round(o), l = Math.round(a);
                            t.style.display = "none", this.clear();
                            for (var c = 0; c < r; c++) for (var u = 0; u < r; u++) {
                                var h = e.isDark(c, u), d = u * o, f = c * a;
                                n.strokeStyle = h ? i.colorDark : i.colorLight, n.lineWidth = 1, n.fillStyle = h ? i.colorDark : i.colorLight, n.fillRect(d, f, o, a), n.strokeRect(Math.floor(d) + .5, Math.floor(f) + .5, s, l), n.strokeRect(Math.ceil(d) - .5, Math.ceil(f) - .5, s, l)
                            }
                            this._bIsPainted = !0
                        }, o.prototype.makeImage = function () {
                            this._bIsPainted && r.call(this, t)
                        }, o.prototype.isPainted = function () {
                            return this._bIsPainted
                        }, o.prototype.clear = function () {
                            this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height), this._bIsPainted = !1
                        }, o.prototype.round = function (e) {
                            return e ? Math.floor(1e3 * e) / 1e3 : e
                        }, o
                    }();

                function A(e, t) {
                    for (var n = 1, i = function (e) {
                        var t = encodeURI(e).toString().replace(/\%[0-9a-fA-F]{2}/g, "a");
                        return t.length + (t.length != e ? 3 : 0)
                    }(e), r = 0, a = C.length; r <= a; r++) {
                        var s = 0;
                        switch (t) {
                            case o.L:
                                s = C[r][0];
                                break;
                            case o.M:
                                s = C[r][1];
                                break;
                            case o.Q:
                                s = C[r][2];
                                break;
                            case o.H:
                                s = C[r][3]
                        }
                        if (i <= s) break;
                        n++
                    }
                    if (n > C.length) throw new Error("Too long data");
                    return n
                }

                (n = function (e, t) {
                    if (this._htOption = {
                        width: 256,
                        height: 256,
                        typeNumber: 4,
                        colorDark: "#000000",
                        colorLight: "#ffffff",
                        correctLevel: o.H
                    }, "string" == typeof t && (t = {text: t}), t) for (var n in t) this._htOption[n] = t[n];
                    "string" == typeof e && (e = document.getElementById(e)), this._htOption.useSVG && (x = I), this._android = w(), this._el = e, this._oQRCode = null, this._oDrawing = new x(this._el, this._htOption), this._htOption.text && this.makeCode(this._htOption.text)
                }).prototype.makeCode = function (e) {
                    this._oQRCode = new i(A(e, this._htOption.correctLevel), this._htOption.correctLevel), this._oQRCode.addData(e), this._oQRCode.make(), this._el.title = e, this._oDrawing.draw(this._oQRCode), this.makeImage()
                }, n.prototype.makeImage = function () {
                    "function" == typeof this._oDrawing.makeImage && (!this._android || this._android >= 3) && this._oDrawing.makeImage()
                }, n.prototype.clear = function () {
                    this._oDrawing.clear()
                }, n.CorrectLevel = o
            }(window), t.default = n
        }])
    }, e.exports = i()
}, function (e, t, n) {
    "use strict";
    n.d(t, "a", (function () {
        return a
    }));
    var i = n(0);

    function r(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function o(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var a = function () {
        function e(t) {
            var n = this, o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "800px",
                a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "85%",
                s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "modal-default";
            r(this, e), this.ok = function () {
            };
            var l = Object(i.b)("div").css("display", "none"), c = Object(i.b)("div", "ty-modal-mask"),
                u = Object(i.b)("div", "ty-modal-warp"),
                h = Object(i.b)("div", "ty-modal ".concat(s)).css("width", o).css("height", a);
            this.modalDiv = h;
            var d = Object(i.b)("div", "ty-modal-clear"), f = Object(i.b)("div", "ty-modal-content"),
                g = Object(i.b)("button", "ty-modal-close").child(Object(i.b)("span").html("×")).on("click", (function () {
                    n.close()
                })), p = Object(i.b)("div", "header").child(Object(i.b)("div", "title").html(t)),
                m = Object(i.b)("div", "spin").css("height", "100%"), v = Object(i.b)("div", "body").child(m);
            this.formParent = m;
            var y = Object(i.b)("div", "footer"),
                b = Object(i.b)("button", "ty-button").child(Object(i.b)("span").html("关闭")).on("click", (function () {
                    n.close()
                })),
                C = Object(i.b)("button", "ty-button").child(Object(i.b)("span").html("确认")).on("click", (function () {
                    n.ok()
                }));
            y.children(b, C), f.children(g, p, v, y), h.children(d, f, d), u.child(h), l.children(c, u), this.el = l, window.document.body.appendChild(l.el)
        }

        var t, n, a;
        return t = e, (n = [{
            key: "close", value: function () {
                this.el.hide()
            }
        }, {
            key: "show", value: function () {
                this.el.show()
            }
        }]) && o(t.prototype, n), a && o(t, a), e
    }()
}, function (e, t) {
}, function (e, t) {
    function n(e, t, n, i) {
        var r = t + 1;
        if (r === n) return 1;
        if (i(e[r++], e[t]) < 0) {
            for (; r < n && i(e[r], e[r - 1]) < 0;) r++;
            !function (e, t, n) {
                n--;
                for (; t < n;) {
                    var i = e[t];
                    e[t++] = e[n], e[n--] = i
                }
            }(e, t, r)
        } else for (; r < n && i(e[r], e[r - 1]) >= 0;) r++;
        return r - t
    }

    function i(e, t, n, i, r) {
        for (i === t && i++; i < n; i++) {
            for (var o, a = e[i], s = t, l = i; s < l;) r(a, e[o = s + l >>> 1]) < 0 ? l = o : s = o + 1;
            var c = i - s;
            switch (c) {
                case 3:
                    e[s + 3] = e[s + 2];
                case 2:
                    e[s + 2] = e[s + 1];
                case 1:
                    e[s + 1] = e[s];
                    break;
                default:
                    for (; c > 0;) e[s + c] = e[s + c - 1], c--
            }
            e[s] = a
        }
    }

    function r(e, t, n, i, r, o) {
        var a = 0, s = 0, l = 1;
        if (o(e, t[n + r]) > 0) {
            for (s = i - r; l < s && o(e, t[n + r + l]) > 0;) a = l, (l = 1 + (l << 1)) <= 0 && (l = s);
            l > s && (l = s), a += r, l += r
        } else {
            for (s = r + 1; l < s && o(e, t[n + r - l]) <= 0;) a = l, (l = 1 + (l << 1)) <= 0 && (l = s);
            l > s && (l = s);
            var c = a;
            a = r - l, l = r - c
        }
        for (a++; a < l;) {
            var u = a + (l - a >>> 1);
            o(e, t[n + u]) > 0 ? a = u + 1 : l = u
        }
        return l
    }

    function o(e, t, n, i, r, o) {
        var a = 0, s = 0, l = 1;
        if (o(e, t[n + r]) < 0) {
            for (s = r + 1; l < s && o(e, t[n + r - l]) < 0;) a = l, (l = 1 + (l << 1)) <= 0 && (l = s);
            l > s && (l = s);
            var c = a;
            a = r - l, l = r - c
        } else {
            for (s = i - r; l < s && o(e, t[n + r + l]) >= 0;) a = l, (l = 1 + (l << 1)) <= 0 && (l = s);
            l > s && (l = s), a += r, l += r
        }
        for (a++; a < l;) {
            var u = a + (l - a >>> 1);
            o(e, t[n + u]) < 0 ? l = u : a = u + 1
        }
        return l
    }

    function a(e, t) {
        var n, i, a, s = 7, l = 0;
        n = e.length;
        var c = [];

        function u(n) {
            var u = i[n], h = a[n], d = i[n + 1], f = a[n + 1];
            a[n] = h + f, n === l - 3 && (i[n + 1] = i[n + 2], a[n + 1] = a[n + 2]), l--;
            var g = o(e[d], e, u, h, 0, t);
            u += g, 0 !== (h -= g) && 0 !== (f = r(e[u + h - 1], e, d, f, f - 1, t)) && (h <= f ? function (n, i, a, l) {
                var u = 0;
                for (u = 0; u < i; u++) c[u] = e[n + u];
                var h = 0, d = a, f = n;
                if (e[f++] = e[d++], 0 == --l) {
                    for (u = 0; u < i; u++) e[f + u] = c[h + u];
                    return
                }
                if (1 === i) {
                    for (u = 0; u < l; u++) e[f + u] = e[d + u];
                    return void (e[f + l] = c[h])
                }
                var g, p, m, v = s;
                for (; ;) {
                    g = 0, p = 0, m = !1;
                    do {
                        if (t(e[d], c[h]) < 0) {
                            if (e[f++] = e[d++], p++, g = 0, 0 == --l) {
                                m = !0;
                                break
                            }
                        } else if (e[f++] = c[h++], g++, p = 0, 1 == --i) {
                            m = !0;
                            break
                        }
                    } while ((g | p) < v);
                    if (m) break;
                    do {
                        if (0 !== (g = o(e[d], c, h, i, 0, t))) {
                            for (u = 0; u < g; u++) e[f + u] = c[h + u];
                            if (f += g, h += g, (i -= g) <= 1) {
                                m = !0;
                                break
                            }
                        }
                        if (e[f++] = e[d++], 0 == --l) {
                            m = !0;
                            break
                        }
                        if (0 !== (p = r(c[h], e, d, l, 0, t))) {
                            for (u = 0; u < p; u++) e[f + u] = e[d + u];
                            if (f += p, d += p, 0 === (l -= p)) {
                                m = !0;
                                break
                            }
                        }
                        if (e[f++] = c[h++], 1 == --i) {
                            m = !0;
                            break
                        }
                        v--
                    } while (g >= 7 || p >= 7);
                    if (m) break;
                    v < 0 && (v = 0), v += 2
                }
                if ((s = v) < 1 && (s = 1), 1 === i) {
                    for (u = 0; u < l; u++) e[f + u] = e[d + u];
                    e[f + l] = c[h]
                } else {
                    if (0 === i) throw new Error;
                    for (u = 0; u < i; u++) e[f + u] = c[h + u]
                }
            }(u, h, d, f) : function (n, i, a, l) {
                var u = 0;
                for (u = 0; u < l; u++) c[u] = e[a + u];
                var h = n + i - 1, d = l - 1, f = a + l - 1, g = 0, p = 0;
                if (e[f--] = e[h--], 0 == --i) {
                    for (g = f - (l - 1), u = 0; u < l; u++) e[g + u] = c[u];
                    return
                }
                if (1 === l) {
                    for (p = (f -= i) + 1, g = (h -= i) + 1, u = i - 1; u >= 0; u--) e[p + u] = e[g + u];
                    return void (e[f] = c[d])
                }
                var m = s;
                for (; ;) {
                    var v = 0, y = 0, b = !1;
                    do {
                        if (t(c[d], e[h]) < 0) {
                            if (e[f--] = e[h--], v++, y = 0, 0 == --i) {
                                b = !0;
                                break
                            }
                        } else if (e[f--] = c[d--], y++, v = 0, 1 == --l) {
                            b = !0;
                            break
                        }
                    } while ((v | y) < m);
                    if (b) break;
                    do {
                        if (0 !== (v = i - o(c[d], e, n, i, i - 1, t))) {
                            for (i -= v, p = (f -= v) + 1, g = (h -= v) + 1, u = v - 1; u >= 0; u--) e[p + u] = e[g + u];
                            if (0 === i) {
                                b = !0;
                                break
                            }
                        }
                        if (e[f--] = c[d--], 1 == --l) {
                            b = !0;
                            break
                        }
                        if (0 !== (y = l - r(e[h], c, 0, l, l - 1, t))) {
                            for (l -= y, p = (f -= y) + 1, g = (d -= y) + 1, u = 0; u < y; u++) e[p + u] = c[g + u];
                            if (l <= 1) {
                                b = !0;
                                break
                            }
                        }
                        if (e[f--] = e[h--], 0 == --i) {
                            b = !0;
                            break
                        }
                        m--
                    } while (v >= 7 || y >= 7);
                    if (b) break;
                    m < 0 && (m = 0), m += 2
                }
                (s = m) < 1 && (s = 1);
                if (1 === l) {
                    for (p = (f -= i) + 1, g = (h -= i) + 1, u = i - 1; u >= 0; u--) e[p + u] = e[g + u];
                    e[f] = c[d]
                } else {
                    if (0 === l) throw new Error;
                    for (g = f - (l - 1), u = 0; u < l; u++) e[g + u] = c[u]
                }
            }(u, h, d, f))
        }

        i = [], a = [], this.mergeRuns = function () {
            for (; l > 1;) {
                var e = l - 2;
                if (e >= 1 && a[e - 1] <= a[e] + a[e + 1] || e >= 2 && a[e - 2] <= a[e] + a[e - 1]) a[e - 1] < a[e + 1] && e--; else if (a[e] > a[e + 1]) break;
                u(e)
            }
        }, this.forceMergeRuns = function () {
            for (; l > 1;) {
                var e = l - 2;
                e > 0 && a[e - 1] < a[e + 1] && e--, u(e)
            }
        }, this.pushRun = function (e, t) {
            i[l] = e, a[l] = t, l += 1
        }
    }

    e.exports = function (e, t, r, o) {
        r || (r = 0), o || (o = e.length);
        var s = o - r;
        if (!(s < 2)) {
            var l = 0;
            if (s < 32) i(e, r, o, r + (l = n(e, r, o, t)), t); else {
                var c = new a(e, t), u = function (e) {
                    for (var t = 0; e >= 32;) t |= 1 & e, e >>= 1;
                    return e + t
                }(s);
                do {
                    if ((l = n(e, r, o, t)) < u) {
                        var h = s;
                        h > u && (h = u), i(e, r, r + h, r + l, t), l = h
                    }
                    c.pushRun(r, l), c.mergeRuns(), s -= l, r += l
                } while (0 !== s);
                c.forceMergeRuns()
            }
        }
    }
}, function (e, t, n) {
    var i = n(149), r = n(83).ContextCachedBy,
        o = [["shadowBlur", 0], ["shadowOffsetX", 0], ["shadowOffsetY", 0], ["shadowColor", "#000"], ["lineCap", "butt"], ["lineJoin", "miter"], ["miterLimit", 10]],
        a = function (e) {
            this.extendFrom(e, !1)
        };

    function s(e, t, n) {
        var i = null == t.x ? 0 : t.x, r = null == t.x2 ? 1 : t.x2, o = null == t.y ? 0 : t.y,
            a = null == t.y2 ? 0 : t.y2;
        return t.global || (i = i * n.width + n.x, r = r * n.width + n.x, o = o * n.height + n.y, a = a * n.height + n.y), i = isNaN(i) ? 0 : i, r = isNaN(r) ? 1 : r, o = isNaN(o) ? 0 : o, a = isNaN(a) ? 0 : a, e.createLinearGradient(i, o, r, a)
    }

    function l(e, t, n) {
        var i = n.width, r = n.height, o = Math.min(i, r), a = null == t.x ? .5 : t.x, s = null == t.y ? .5 : t.y,
            l = null == t.r ? .5 : t.r;
        return t.global || (a = a * i + n.x, s = s * r + n.y, l *= o), e.createRadialGradient(a, s, 0, a, s, l)
    }

    for (var c = a.prototype = {
        constructor: a,
        fill: "#000",
        stroke: null,
        opacity: 1,
        fillOpacity: null,
        strokeOpacity: null,
        lineDash: null,
        lineDashOffset: 0,
        shadowBlur: 0,
        shadowOffsetX: 0,
        shadowOffsetY: 0,
        lineWidth: 1,
        strokeNoScale: !1,
        text: null,
        font: null,
        textFont: null,
        fontStyle: null,
        fontWeight: null,
        fontSize: null,
        fontFamily: null,
        textTag: null,
        textFill: "#000",
        textStroke: null,
        textWidth: null,
        textHeight: null,
        textStrokeWidth: 0,
        textLineHeight: null,
        textPosition: "inside",
        textRect: null,
        textOffset: null,
        textAlign: null,
        textVerticalAlign: null,
        textDistance: 5,
        textShadowColor: "transparent",
        textShadowBlur: 0,
        textShadowOffsetX: 0,
        textShadowOffsetY: 0,
        textBoxShadowColor: "transparent",
        textBoxShadowBlur: 0,
        textBoxShadowOffsetX: 0,
        textBoxShadowOffsetY: 0,
        transformText: !1,
        textRotation: 0,
        textOrigin: null,
        textBackgroundColor: null,
        textBorderColor: null,
        textBorderWidth: 0,
        textBorderRadius: 0,
        textPadding: null,
        rich: null,
        truncate: null,
        blend: null,
        bind: function (e, t, n) {
            var a = n && n.style, s = !a || e.__attrCachedBy !== r.STYLE_BIND;
            e.__attrCachedBy = r.STYLE_BIND;
            for (var l = 0; l < o.length; l++) {
                var c = o[l], u = c[0];
                (s || this[u] !== a[u]) && (e[u] = i(e, u, this[u] || c[1]))
            }
            if ((s || this.fill !== a.fill) && (e.fillStyle = this.fill), (s || this.stroke !== a.stroke) && (e.strokeStyle = this.stroke), (s || this.opacity !== a.opacity) && (e.globalAlpha = null == this.opacity ? 1 : this.opacity), (s || this.blend !== a.blend) && (e.globalCompositeOperation = this.blend || "source-over"), this.hasStroke()) {
                var h = this.lineWidth;
                e.lineWidth = h / (this.strokeNoScale && t && t.getLineScale ? t.getLineScale() : 1)
            }
        },
        hasFill: function () {
            var e = this.fill;
            return null != e && "none" !== e
        },
        hasStroke: function () {
            var e = this.stroke;
            return null != e && "none" !== e && this.lineWidth > 0
        },
        extendFrom: function (e, t) {
            if (e) for (var n in e) !e.hasOwnProperty(n) || !0 !== t && (!1 === t ? this.hasOwnProperty(n) : null == e[n]) || (this[n] = e[n])
        },
        set: function (e, t) {
            "string" == typeof e ? this[e] = t : this.extendFrom(e, !0)
        },
        clone: function () {
            var e = new this.constructor;
            return e.extendFrom(this, !0), e
        },
        getGradient: function (e, t, n) {
            for (var i = ("radial" === t.type ? l : s)(e, t, n), r = t.colorStops, o = 0; o < r.length; o++) i.addColorStop(r[o].offset, r[o].color);
            return i
        }
    }, u = 0; u < o.length; u++) {
        var h = o[u];
        h[0] in c || (c[h[0]] = h[1])
    }
    a.getGradient = c.getGradient;
    var d = a;
    e.exports = d
}, function (e, t, n) {
    var i = new (n(148))(50);

    function r() {
        var e = this.__cachedImgObj;
        this.onload = this.onerror = this.__cachedImgObj = null;
        for (var t = 0; t < e.pending.length; t++) {
            var n = e.pending[t], i = n.cb;
            i && i(this, n.cbPayload), n.hostEl.dirty()
        }
        e.pending.length = 0
    }

    function o(e) {
        return e && e.width && e.height
    }

    t.findExistImage = function (e) {
        if ("string" == typeof e) {
            var t = i.get(e);
            return t && t.image
        }
        return e
    }, t.createOrUpdateImage = function (e, t, n, a, s) {
        if (e) {
            if ("string" == typeof e) {
                if (t && t.__zrImageSrc === e || !n) return t;
                var l = i.get(e), c = {hostEl: n, cb: a, cbPayload: s};
                return l ? !o(t = l.image) && l.pending.push(c) : ((t = new Image).onload = t.onerror = r, i.put(e, t.__cachedImgObj = {
                    image: t,
                    pending: [c]
                }), t.src = t.__zrImageSrc = e), t
            }
            return e
        }
        return t
    }, t.isImageReady = o
}, function (e, t, n) {
    var i = n(11), r = n(153), o = n(106).subPixelOptimizeRect, a = {}, s = i.extend({
        type: "rect", shape: {r: 0, x: 0, y: 0, width: 0, height: 0}, buildPath: function (e, t) {
            var n, i, s, l;
            this.subPixelOptimize ? (o(a, t, this.style), n = a.x, i = a.y, s = a.width, l = a.height, a.r = t.r, t = a) : (n = t.x, i = t.y, s = t.width, l = t.height), t.r ? r.buildPath(e, t) : e.rect(n, i, s, l), e.closePath()
        }
    });
    e.exports = s
}, function (e, t) {
    var n = Math.round;

    function i(e, t, i) {
        if (!t) return e;
        var r = n(2 * e);
        return (r + n(t)) % 2 == 0 ? r / 2 : (r + (i ? 1 : -1)) / 2
    }

    t.subPixelOptimizeLine = function (e, t, r) {
        if (t) {
            var o = t.x1, a = t.x2, s = t.y1, l = t.y2;
            e.x1 = o, e.x2 = a, e.y1 = s, e.y2 = l;
            var c = r && r.lineWidth;
            c && (n(2 * o) === n(2 * a) && (e.x1 = e.x2 = i(o, c, !0)), n(2 * s) === n(2 * l) && (e.y1 = e.y2 = i(s, c, !0)))
        }
    }, t.subPixelOptimizeRect = function (e, t, n) {
        if (t) {
            var r = t.x, o = t.y, a = t.width, s = t.height;
            e.x = r, e.y = o, e.width = a, e.height = s;
            var l = n && n.lineWidth;
            l && (e.x = i(r, l, !0), e.y = i(o, l, !0), e.width = Math.max(i(r + a, l, !1) - e.x, 0 === a ? 0 : 1), e.height = Math.max(i(o + s, l, !1) - e.y, 0 === s ? 0 : 1))
        }
    }, t.subPixelOptimize = i
}, function (e, t, n) {
    var i = n(1), r = n(85), o = function (e, t, n, i, o, a) {
        this.x = null == e ? 0 : e, this.y = null == t ? 0 : t, this.x2 = null == n ? 1 : n, this.y2 = null == i ? 0 : i, this.type = "linear", this.global = a || !1, r.call(this, o)
    };
    o.prototype = {constructor: o}, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1).inherits, r = n(62), o = n(10);

    function a(e) {
        r.call(this, e), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.notClear = !0
    }

    a.prototype.incremental = !0, a.prototype.clearDisplaybles = function () {
        this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), this.notClear = !1
    }, a.prototype.addDisplayable = function (e, t) {
        t ? this._temporaryDisplayables.push(e) : this._displayables.push(e), this.dirty()
    }, a.prototype.addDisplayables = function (e, t) {
        t = t || !1;
        for (var n = 0; n < e.length; n++) this.addDisplayable(e[n], t)
    }, a.prototype.eachPendingDisplayable = function (e) {
        for (var t = this._cursor; t < this._displayables.length; t++) e && e(this._displayables[t]);
        for (t = 0; t < this._temporaryDisplayables.length; t++) e && e(this._temporaryDisplayables[t])
    }, a.prototype.update = function () {
        this.updateTransform();
        for (var e = this._cursor; e < this._displayables.length; e++) {
            (t = this._displayables[e]).parent = this, t.update(), t.parent = null
        }
        for (e = 0; e < this._temporaryDisplayables.length; e++) {
            var t;
            (t = this._temporaryDisplayables[e]).parent = this, t.update(), t.parent = null
        }
    }, a.prototype.brush = function (e, t) {
        for (var n = this._cursor; n < this._displayables.length; n++) {
            (i = this._displayables[n]).beforeBrush && i.beforeBrush(e), i.brush(e, n === this._cursor ? null : this._displayables[n - 1]), i.afterBrush && i.afterBrush(e)
        }
        this._cursor = n;
        for (n = 0; n < this._temporaryDisplayables.length; n++) {
            var i;
            (i = this._temporaryDisplayables[n]).beforeBrush && i.beforeBrush(e), i.brush(e, 0 === n ? null : this._temporaryDisplayables[n - 1]), i.afterBrush && i.afterBrush(e)
        }
        this._temporaryDisplayables = [], this.notClear = !0
    };
    var s = [];
    a.prototype.getBoundingRect = function () {
        if (!this._rect) {
            for (var e = new o(1 / 0, 1 / 0, -1 / 0, -1 / 0), t = 0; t < this._displayables.length; t++) {
                var n = this._displayables[t], i = n.getBoundingRect().clone();
                n.needLocalTransform() && i.applyTransform(n.getLocalTransform(s)), e.union(i)
            }
            this._rect = e
        }
        return this._rect
    }, a.prototype.contain = function (e, t) {
        var n = this.transformCoordToLocal(e, t);
        if (this.getBoundingRect().contain(n[0], n[1])) for (var i = 0; i < this._displayables.length; i++) {
            if (this._displayables[i].contain(e, t)) return !0
        }
        return !1
    }, i(a, r);
    var l = a;
    e.exports = l
}, function (e, t, n) {
    var i = n(40).retrieveRawValue, r = n(8), o = r.getTooltipMarker, a = r.formatTpl, s = n(5).getTooltipRenderMode,
        l = /\{@(.+?)\}/g, c = {
            getDataParams: function (e, t) {
                var n = this.getData(t), i = this.getRawValue(e, t), r = n.getRawIndex(e), a = n.getName(e),
                    l = n.getRawDataItem(e), c = n.getItemVisual(e, "color"), u = n.getItemVisual(e, "borderColor"),
                    h = this.ecModel.getComponent("tooltip"), d = h && h.get("renderMode"), f = s(d), g = this.mainType,
                    p = "series" === g, m = n.userOutput;
                return {
                    componentType: g,
                    componentSubType: this.subType,
                    componentIndex: this.componentIndex,
                    seriesType: p ? this.subType : null,
                    seriesIndex: this.seriesIndex,
                    seriesId: p ? this.id : null,
                    seriesName: p ? this.name : null,
                    name: a,
                    dataIndex: r,
                    data: l,
                    dataType: t,
                    value: i,
                    color: c,
                    borderColor: u,
                    dimensionNames: m ? m.dimensionNames : null,
                    encode: m ? m.encode : null,
                    marker: o({color: c, renderMode: f}),
                    $vars: ["seriesName", "name", "value"]
                }
            }, getFormattedLabel: function (e, t, n, r, o) {
                t = t || "normal";
                var s = this.getData(n), c = s.getItemModel(e), u = this.getDataParams(e, n);
                null != r && u.value instanceof Array && (u.value = u.value[r]);
                var h = c.get("normal" === t ? [o || "label", "formatter"] : [t, o || "label", "formatter"]);
                return "function" == typeof h ? (u.status = t, u.dimensionIndex = r, h(u)) : "string" == typeof h ? a(h, u).replace(l, (function (t, n) {
                    var r = n.length;
                    return "[" === n.charAt(0) && "]" === n.charAt(r - 1) && (n = +n.slice(1, r - 1)), i(s, e, n)
                })) : void 0
            }, getRawValue: function (e, t) {
                return i(this.getData(t), e)
            }, formatTooltip: function () {
            }
        };
    e.exports = c
}, function (e, t, n) {
    var i = n(1), r = (i.assert, i.isArray);
    n(6).__DEV__;

    function o(e) {
        e = e || {}, this._reset = e.reset, this._plan = e.plan, this._count = e.count, this._onDirty = e.onDirty, this._dirty = !0, this.context
    }

    var a = o.prototype;
    a.perform = function (e) {
        var t, n = this._upstream, i = e && e.skip;
        if (this._dirty && n) {
            var o = this.context;
            o.data = o.outputData = n.context.outputData
        }
        this.__pipeline && (this.__pipeline.currentTask = this), this._plan && !i && (t = this._plan(this.context));
        var a, s = d(this._modBy), c = this._modDataCount || 0, u = d(e && e.modBy), h = e && e.modDataCount || 0;

        function d(e) {
            return !(e >= 1) && (e = 1), e
        }

        s === u && c === h || (t = "reset"), (this._dirty || "reset" === t) && (this._dirty = !1, a = function (e, t) {
            var n, i;
            e._dueIndex = e._outputDueEnd = e._dueEnd = 0, e._settedOutputEnd = null, !t && e._reset && ((n = e._reset(e.context)) && n.progress && (i = n.forceFirstProgress, n = n.progress), r(n) && !n.length && (n = null));
            e._progress = n, e._modBy = e._modDataCount = null;
            var o = e._downstream;
            return o && o.dirty(), i
        }(this, i)), this._modBy = u, this._modDataCount = h;
        var f = e && e.step;
        if (this._dueEnd = n ? n._outputDueEnd : this._count ? this._count(this.context) : 1 / 0, this._progress) {
            var g = this._dueIndex, p = Math.min(null != f ? this._dueIndex + f : 1 / 0, this._dueEnd);
            if (!i && (a || g < p)) {
                var m = this._progress;
                if (r(m)) for (var v = 0; v < m.length; v++) l(this, m[v], g, p, u, h); else l(this, m, g, p, u, h)
            }
            this._dueIndex = p;
            var y = null != this._settedOutputEnd ? this._settedOutputEnd : p;
            this._outputDueEnd = y
        } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd;
        return this.unfinished()
    };
    var s = function () {
        var e, t, n, i, r, o = {
            reset: function (l, c, u, h) {
                t = l, e = c, n = u, i = h, r = Math.ceil(i / n), o.next = n > 1 && i > 0 ? s : a
            }
        };
        return o;

        function a() {
            return t < e ? t++ : null
        }

        function s() {
            var o = t % r * n + Math.ceil(t / r), a = t >= e ? null : o < i ? o : t;
            return t++, a
        }
    }();

    function l(e, t, n, i, r, o) {
        s.reset(n, i, r, o), e._callingProgress = t, e._callingProgress({
            start: n,
            end: i,
            count: i - n,
            next: s.next
        }, e.context)
    }

    a.dirty = function () {
        this._dirty = !0, this._onDirty && this._onDirty(this.context)
    }, a.unfinished = function () {
        return this._progress && this._dueIndex < this._dueEnd
    }, a.pipe = function (e) {
        (this._downstream !== e || this._dirty) && (this._downstream = e, e._upstream = this, e.dirty())
    }, a.dispose = function () {
        this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0)
    }, a.getUpstream = function () {
        return this._upstream
    }, a.getDownstream = function () {
        return this._downstream
    }, a.setOutputEnd = function (e) {
        this._outputDueEnd = this._settedOutputEnd = e
    }, t.createTask = function (e) {
        return new o(e)
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = i.createHashMap, o = i.isString, a = i.isArray, s = i.each, l = (i.assert, n(169).parseXML),
        c = r(), u = {
            registerMap: function (e, t, n) {
                var i;
                return a(t) ? i = t : t.svg ? i = [{
                    type: "svg",
                    source: t.svg,
                    specialAreas: t.specialAreas
                }] : (t.geoJson && !t.features && (n = t.specialAreas, t = t.geoJson), i = [{
                    type: "geoJSON",
                    source: t,
                    specialAreas: n
                }]), s(i, (function (e) {
                    var t = e.type;
                    "geoJson" === t && (t = e.type = "geoJSON"), (0, h[t])(e)
                })), c.set(e, i)
            }, retrieveMap: function (e) {
                return c.get(e)
            }
        }, h = {
            geoJSON: function (e) {
                var t = e.source;
                e.geoJSON = o(t) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(t) : new Function("return (" + t + ");")() : t
            }, svg: function (e) {
                e.svgXML = l(e.source)
            }
        };
    e.exports = u
}, function (e, t, n) {
    var i = n(40).retrieveRawValue;
    t.getDefaultLabel = function (e, t) {
        var n = e.mapDimension("defaultedLabel", !0), r = n.length;
        if (1 === r) return i(e, t, n[0]);
        if (r) {
            for (var o = [], a = 0; a < n.length; a++) {
                var s = i(e, t, n[a]);
                o.push(s)
            }
            return o.join(" ")
        }
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = i.isObject, o = i.each, a = i.map, s = i.indexOf, l = (i.retrieve, n(7).getLayoutRect), c = n(22),
        u = c.createScaleByModel, h = c.ifAxisCrossZero, d = c.niceScaleExtent, f = c.estimateLabelUnionRect,
        g = n(317), p = n(319), m = n(21), v = n(27).getStackedDimension;

    function y(e, t, n) {
        return e.getCoordSysModel() === t
    }

    function b(e, t, n) {
        this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this._initCartesian(e, t, n), this.model = e
    }

    n(320);
    var C = b.prototype;

    function w(e, t, n, i) {
        n.getAxesOnZeroOf = function () {
            return r ? [r] : []
        };
        var r, o = e[t], a = n.model, s = a.get("axisLine.onZero"), l = a.get("axisLine.onZeroAxisIndex");
        if (s) {
            if (null != l) I(o[l]) && (r = o[l]); else for (var c in o) if (o.hasOwnProperty(c) && I(o[c]) && !i[u(o[c])]) {
                r = o[c];
                break
            }
            r && (i[u(r)] = !0)
        }

        function u(e) {
            return e.dim + "_" + e.index
        }
    }

    function I(e) {
        return e && "category" !== e.type && "time" !== e.type && h(e)
    }

    C.type = "grid", C.axisPointerEnabled = !0, C.getRect = function () {
        return this._rect
    }, C.update = function (e, t) {
        var n = this._axesMap;
        this._updateScale(e, this.model), o(n.x, (function (e) {
            d(e.scale, e.model)
        })), o(n.y, (function (e) {
            d(e.scale, e.model)
        }));
        var i = {};
        o(n.x, (function (e) {
            w(n, "y", e, i)
        })), o(n.y, (function (e) {
            w(n, "x", e, i)
        })), this.resize(this.model, t)
    }, C.resize = function (e, t, n) {
        var i = l(e.getBoxLayoutParams(), {width: t.getWidth(), height: t.getHeight()});
        this._rect = i;
        var r = this._axesList;

        function a() {
            o(r, (function (e) {
                var t = e.isHorizontal(), n = t ? [0, i.width] : [0, i.height], r = e.inverse ? 1 : 0;
                e.setExtent(n[r], n[1 - r]), function (e, t) {
                    var n = e.getExtent(), i = n[0] + n[1];
                    e.toGlobalCoord = "x" === e.dim ? function (e) {
                        return e + t
                    } : function (e) {
                        return i - e + t
                    }, e.toLocalCoord = "x" === e.dim ? function (e) {
                        return e - t
                    } : function (e) {
                        return i - e + t
                    }
                }(e, t ? i.x : i.y)
            }))
        }

        a(), !n && e.get("containLabel") && (o(r, (function (e) {
            if (!e.model.get("axisLabel.inside")) {
                var t = f(e);
                if (t) {
                    var n = e.isHorizontal() ? "height" : "width", r = e.model.get("axisLabel.margin");
                    i[n] -= t[n] + r, "top" === e.position ? i.y += t.height + r : "left" === e.position && (i.x += t.width + r)
                }
            }
        })), a())
    }, C.getAxis = function (e, t) {
        var n = this._axesMap[e];
        if (null != n) {
            if (null == t) for (var i in n) if (n.hasOwnProperty(i)) return n[i];
            return n[t]
        }
    }, C.getAxes = function () {
        return this._axesList.slice()
    }, C.getCartesian = function (e, t) {
        if (null != e && null != t) {
            var n = "x" + e + "y" + t;
            return this._coordsMap[n]
        }
        r(e) && (t = e.yAxisIndex, e = e.xAxisIndex);
        for (var i = 0, o = this._coordsList; i < o.length; i++) if (o[i].getAxis("x").index === e || o[i].getAxis("y").index === t) return o[i]
    }, C.getCartesians = function () {
        return this._coordsList.slice()
    }, C.convertToPixel = function (e, t, n) {
        var i = this._findConvertTarget(e, t);
        return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null
    }, C.convertFromPixel = function (e, t, n) {
        var i = this._findConvertTarget(e, t);
        return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null
    }, C._findConvertTarget = function (e, t) {
        var n, i, r = t.seriesModel, o = t.xAxisModel || r && r.getReferringComponents("xAxis")[0],
            a = t.yAxisModel || r && r.getReferringComponents("yAxis")[0], l = t.gridModel, c = this._coordsList;
        if (r) n = r.coordinateSystem, s(c, n) < 0 && (n = null); else if (o && a) n = this.getCartesian(o.componentIndex, a.componentIndex); else if (o) i = this.getAxis("x", o.componentIndex); else if (a) i = this.getAxis("y", a.componentIndex); else if (l) {
            l.coordinateSystem === this && (n = this._coordsList[0])
        }
        return {cartesian: n, axis: i}
    }, C.containPoint = function (e) {
        var t = this._coordsList[0];
        if (t) return t.containPoint(e)
    }, C._initCartesian = function (e, t, n) {
        var i = {left: !1, right: !1, top: !1, bottom: !1}, r = {x: {}, y: {}}, a = {x: 0, y: 0};
        if (t.eachComponent("xAxis", s("x"), this), t.eachComponent("yAxis", s("y"), this), !a.x || !a.y) return this._axesMap = {}, void (this._axesList = []);

        function s(t) {
            return function (n, o) {
                if (y(n, e)) {
                    var s = n.get("position");
                    "x" === t ? "top" !== s && "bottom" !== s && (s = i.bottom ? "top" : "bottom") : "left" !== s && "right" !== s && (s = i.left ? "right" : "left"), i[s] = !0;
                    var l = new p(t, u(n), [0, 0], n.get("type"), s), c = "category" === l.type;
                    l.onBand = c && n.get("boundaryGap"), l.inverse = n.get("inverse"), n.axis = l, l.model = n, l.grid = this, l.index = o, this._axesList.push(l), r[t][o] = l, a[t]++
                }
            }
        }

        this._axesMap = r, o(r.x, (function (t, n) {
            o(r.y, (function (i, r) {
                var o = "x" + n + "y" + r, a = new g(o);
                a.grid = this, a.model = e, this._coordsMap[o] = a, this._coordsList.push(a), a.addAxis(t), a.addAxis(i)
            }), this)
        }), this)
    }, C._updateScale = function (e, t) {
        function n(e, t, n) {
            o(e.mapDimension(t.dim, !0), (function (n) {
                t.scale.unionExtentFromData(e, v(e, n))
            }))
        }

        o(this._axesList, (function (e) {
            e.scale.setExtent(1 / 0, -1 / 0)
        })), e.eachSeries((function (i) {
            if (_(i)) {
                var r = A(i, e), o = r[0], a = r[1];
                if (!y(o, t) || !y(a, t)) return;
                var s = this.getCartesian(o.componentIndex, a.componentIndex), l = i.getData(), c = s.getAxis("x"),
                    u = s.getAxis("y");
                "list" === l.type && (n(l, c, i), n(l, u, i))
            }
        }), this)
    }, C.getTooltipAxes = function (e) {
        var t = [], n = [];
        return o(this.getCartesians(), (function (i) {
            var r = null != e && "auto" !== e ? i.getAxis(e) : i.getBaseAxis(), o = i.getOtherAxis(r);
            s(t, r) < 0 && t.push(r), s(n, o) < 0 && n.push(o)
        })), {baseAxes: t, otherAxes: n}
    };
    var x = ["xAxis", "yAxis"];

    function A(e, t) {
        return a(x, (function (t) {
            return e.getReferringComponents(t)[0]
        }))
    }

    function _(e) {
        return "cartesian2d" === e.get("coordinateSystem")
    }

    b.create = function (e, t) {
        var n = [];
        return e.eachComponent("grid", (function (i, r) {
            var o = new b(i, e, t);
            o.name = "grid_" + r, o.resize(i, t, !0), i.coordinateSystem = o, n.push(o)
        })), e.eachSeries((function (e) {
            if (_(e)) {
                var t = A(e), n = t[0], i = t[1], r = n.getCoordSysModel().coordinateSystem;
                e.coordinateSystem = r.getCartesian(n.componentIndex, i.componentIndex)
            }
        })), n
    }, b.dimensions = b.prototype.dimensions = g.prototype.dimensions, m.register("cartesian2d", b);
    var S = b;
    e.exports = S
}, function (e, t, n) {
    var i = n(1), r = {
        updateSelectedMap: function (e) {
            this._targetList = i.isArray(e) ? e.slice() : [], this._selectTargetMap = i.reduce(e || [], (function (e, t) {
                return e.set(t.name, t), e
            }), i.createHashMap())
        }, select: function (e, t) {
            var n = null != t ? this._targetList[t] : this._selectTargetMap.get(e);
            "single" === this.get("selectedMode") && this._selectTargetMap.each((function (e) {
                e.selected = !1
            })), n && (n.selected = !0)
        }, unSelect: function (e, t) {
            var n = null != t ? this._targetList[t] : this._selectTargetMap.get(e);
            n && (n.selected = !1)
        }, toggleSelected: function (e, t) {
            var n = null != t ? this._targetList[t] : this._selectTargetMap.get(e);
            if (null != n) return this[n.selected ? "unSelect" : "select"](e, t), n.selected
        }, isSelected: function (e, t) {
            var n = null != t ? this._targetList[t] : this._selectTargetMap.get(e);
            return n && n.selected
        }
    };
    e.exports = r
}, function (e, t) {
    t.updateViewOnPan = function (e, t, n) {
        var i = e.target, r = i.position;
        r[0] += t, r[1] += n, i.dirty()
    }, t.updateViewOnZoom = function (e, t, n, i) {
        var r = e.target, o = e.zoomLimit, a = r.position, s = r.scale, l = e.zoom = e.zoom || 1;
        if (l *= t, o) {
            var c = o.min || 0, u = o.max || 1 / 0;
            l = Math.max(Math.min(u, l), c)
        }
        var h = l / e.zoom;
        e.zoom = l, a[0] -= (n - a[0]) * (h - 1), a[1] -= (i - a[1]) * (h - 1), s[0] *= h, s[1] *= h, r.dirty()
    }
}, function (e, t) {
    t.updateCenterAndZoom = function (e, t, n) {
        var i = e.getZoom(), r = e.getCenter(), o = t.zoom, a = e.dataToPoint(r);
        if (null != t.dx && null != t.dy) {
            a[0] -= t.dx, a[1] -= t.dy;
            r = e.pointToData(a);
            e.setCenter(r)
        }
        if (null != o) {
            if (n) {
                var s = n.min || 0, l = n.max || 1 / 0;
                o = Math.max(Math.min(i * o, l), s) / i
            }
            e.scale[0] *= o, e.scale[1] *= o;
            var c = e.position, u = (t.originX - c[0]) * (o - 1), h = (t.originY - c[1]) * (o - 1);
            c[0] -= u, c[1] -= h, e.updateTransform();
            r = e.pointToData(a);
            e.setCenter(r), e.setZoom(o * i)
        }
        return {center: e.getCenter(), zoom: e.getZoom()}
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(356), a = n(7), s = n(4), l = n(94), c = n(111);

    function u(e, t) {
        var n = e.get("boundingCoords");
        if (null != n) {
            var i = n[0], r = n[1];
            isNaN(i[0]) || isNaN(i[1]) || isNaN(r[0]) || isNaN(r[1]) || this.setBoundingRect(i[0], i[1], r[0] - i[0], r[1] - i[1])
        }
        var o, l = this.getBoundingRect(), c = e.get("layoutCenter"), u = e.get("layoutSize"), h = t.getWidth(),
            d = t.getHeight(), f = l.width / l.height * this.aspectScale, g = !1;
        if (c && u && (c = [s.parsePercent(c[0], h), s.parsePercent(c[1], d)], u = s.parsePercent(u, Math.min(h, d)), isNaN(c[0]) || isNaN(c[1]) || isNaN(u) || (g = !0)), g) {
            var p = {};
            f > 1 ? (p.width = u, p.height = u / f) : (p.height = u, p.width = u * f), p.y = c[1] - p.height / 2, p.x = c[0] - p.width / 2
        } else (o = e.getBoxLayoutParams()).aspect = f, p = a.getLayoutRect(o, {width: h, height: d});
        this.setViewRect(p.x, p.y, p.width, p.height), this.setCenter(e.get("center")), this.setZoom(e.get("zoom"))
    }

    function h(e, t) {
        r.each(t.get("geoCoord"), (function (t, n) {
            e.addGeoCoord(n, t)
        }))
    }

    var d = {
        dimensions: o.prototype.dimensions, create: function (e, t) {
            var n = [];
            e.eachComponent("geo", (function (e, i) {
                var r = e.get("map"), a = e.get("aspectScale"), s = !0, l = c.retrieveMap(r);
                l && l[0] && "svg" === l[0].type ? (null == a && (a = 1), s = !1) : null == a && (a = .75);
                var d = new o(r + i, r, e.get("nameMap"), s);
                d.aspectScale = a, d.zoomLimit = e.get("scaleLimit"), n.push(d), h(d, e), e.coordinateSystem = d, d.model = e, d.resize = u, d.resize(e, t)
            })), e.eachSeries((function (e) {
                if ("geo" === e.get("coordinateSystem")) {
                    var t = e.get("geoIndex") || 0;
                    e.coordinateSystem = n[t]
                }
            }));
            var i = {};
            return e.eachSeriesByType("map", (function (e) {
                if (!e.getHostGeoModel()) {
                    var t = e.getMapType();
                    i[t] = i[t] || [], i[t].push(e)
                }
            })), r.each(i, (function (e, i) {
                var a = r.map(e, (function (e) {
                    return e.get("nameMap")
                })), s = new o(i, i, r.mergeAll(a));
                s.zoomLimit = r.retrieve.apply(null, r.map(e, (function (e) {
                    return e.get("scaleLimit")
                }))), n.push(s), s.resize = u, s.aspectScale = e[0].get("aspectScale"), s.resize(e[0], t), r.each(e, (function (e) {
                    e.coordinateSystem = s, h(s, e)
                }))
            })), n
        }, getFilledRegions: function (e, t, n) {
            for (var i = (e || []).slice(), o = r.createHashMap(), a = 0; a < i.length; a++) o.set(i[a].name, i[a]);
            var s = l.load(t, n);
            return r.each(s.regions, (function (e) {
                var t = e.name;
                !o.get(t) && i.push({name: t})
            })), i
        }
    };
    i.registerCoordinateSystem("geo", d);
    var f = d;
    e.exports = f
}, function (e, t, n) {
    var i = n(1), r = n(9), o = n(16), a = n(10), s = n(81), l = r.applyTransform;

    function c() {
        s.call(this)
    }

    function u(e) {
        this.name = e, this.zoomLimit, s.call(this), this._roamTransformable = new c, this._rawTransformable = new c, this._center, this._zoom
    }

    function h(e, t, n, i) {
        var r = n.seriesModel, o = r ? r.coordinateSystem : null;
        return o === this ? o[e](i) : null
    }

    i.mixin(c, s), u.prototype = {
        constructor: u,
        type: "view",
        dimensions: ["x", "y"],
        setBoundingRect: function (e, t, n, i) {
            return this._rect = new a(e, t, n, i), this._rect
        },
        getBoundingRect: function () {
            return this._rect
        },
        setViewRect: function (e, t, n, i) {
            this.transformTo(e, t, n, i), this._viewRect = new a(e, t, n, i)
        },
        transformTo: function (e, t, n, i) {
            var r = this.getBoundingRect(), o = this._rawTransformable;
            o.transform = r.calculateTransform(new a(e, t, n, i)), o.decomposeTransform(), this._updateTransform()
        },
        setCenter: function (e) {
            e && (this._center = e, this._updateCenterAndZoom())
        },
        setZoom: function (e) {
            e = e || 1;
            var t = this.zoomLimit;
            t && (null != t.max && (e = Math.min(t.max, e)), null != t.min && (e = Math.max(t.min, e))), this._zoom = e, this._updateCenterAndZoom()
        },
        getDefaultCenter: function () {
            var e = this.getBoundingRect();
            return [e.x + e.width / 2, e.y + e.height / 2]
        },
        getCenter: function () {
            return this._center || this.getDefaultCenter()
        },
        getZoom: function () {
            return this._zoom || 1
        },
        getRoamTransform: function () {
            return this._roamTransformable.getLocalTransform()
        },
        _updateCenterAndZoom: function () {
            var e = this._rawTransformable.getLocalTransform(), t = this._roamTransformable,
                n = this.getDefaultCenter(), i = this.getCenter(), o = this.getZoom();
            i = r.applyTransform([], i, e), n = r.applyTransform([], n, e), t.origin = i, t.position = [n[0] - i[0], n[1] - i[1]], t.scale = [o, o], this._updateTransform()
        },
        _updateTransform: function () {
            var e = this._roamTransformable, t = this._rawTransformable;
            t.parent = e, e.updateTransform(), t.updateTransform(), o.copy(this.transform || (this.transform = []), t.transform || o.create()), this._rawTransform = t.getLocalTransform(), this.invTransform = this.invTransform || [], o.invert(this.invTransform, this.transform), this.decomposeTransform()
        },
        getTransformInfo: function () {
            var e = this._roamTransformable.transform, t = this._rawTransformable;
            return {
                roamTransform: e ? i.slice(e) : o.create(),
                rawScale: i.slice(t.scale),
                rawPosition: i.slice(t.position)
            }
        },
        getViewRect: function () {
            return this._viewRect
        },
        getViewRectAfterRoam: function () {
            var e = this.getBoundingRect().clone();
            return e.applyTransform(this.transform), e
        },
        dataToPoint: function (e, t, n) {
            var i = t ? this._rawTransform : this.transform;
            return n = n || [], i ? l(n, e, i) : r.copy(n, e)
        },
        pointToData: function (e) {
            var t = this.invTransform;
            return t ? l([], e, t) : [e[0], e[1]]
        },
        convertToPixel: i.curry(h, "dataToPoint"),
        convertFromPixel: i.curry(h, "pointToData"),
        containPoint: function (e) {
            return this.getViewRectAfterRoam().contain(e[0], e[1])
        }
    }, i.mixin(u, s);
    var d = u;
    e.exports = d
}, function (e, t, n) {
    var i = n(1), r = n(13), o = n(191), a = n(19), s = n(50), l = function (e, t) {
        this.name = e || "", this.depth = 0, this.height = 0, this.parentNode = null, this.dataIndex = -1, this.children = [], this.viewChildren = [], this.hostTree = t
    };

    function c(e, t) {
        this.root, this.data, this._nodes = [], this.hostModel = e, this.levelModels = i.map(t || [], (function (t) {
            return new r(t, e, e.ecModel)
        }))
    }

    l.prototype = {
        constructor: l, isRemoved: function () {
            return this.dataIndex < 0
        }, eachNode: function (e, t, n) {
            "function" == typeof e && (n = t, t = e, e = null), e = e || {}, i.isString(e) && (e = {order: e});
            var r, o = e.order || "preorder", a = this[e.attr || "children"];
            "preorder" === o && (r = t.call(n, this));
            for (var s = 0; !r && s < a.length; s++) a[s].eachNode(e, t, n);
            "postorder" === o && t.call(n, this)
        }, updateDepthAndHeight: function (e) {
            var t = 0;
            this.depth = e;
            for (var n = 0; n < this.children.length; n++) {
                var i = this.children[n];
                i.updateDepthAndHeight(e + 1), i.height > t && (t = i.height)
            }
            this.height = t + 1
        }, getNodeById: function (e) {
            if (this.getId() === e) return this;
            for (var t = 0, n = this.children, i = n.length; t < i; t++) {
                var r = n[t].getNodeById(e);
                if (r) return r
            }
        }, contains: function (e) {
            if (e === this) return !0;
            for (var t = 0, n = this.children, i = n.length; t < i; t++) {
                var r = n[t].contains(e);
                if (r) return r
            }
        }, getAncestors: function (e) {
            for (var t = [], n = e ? this : this.parentNode; n;) t.push(n), n = n.parentNode;
            return t.reverse(), t
        }, getValue: function (e) {
            var t = this.hostTree.data;
            return t.get(t.getDimension(e || "value"), this.dataIndex)
        }, setLayout: function (e, t) {
            this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, e, t)
        }, getLayout: function () {
            return this.hostTree.data.getItemLayout(this.dataIndex)
        }, getModel: function (e) {
            if (!(this.dataIndex < 0)) {
                var t = this.hostTree.data.getItemModel(this.dataIndex), n = this.getLevelModel();
                return n ? t.getModel(e, n.getModel(e)) : t.getModel(e)
            }
        }, getLevelModel: function () {
            return (this.hostTree.levelModels || [])[this.depth]
        }, setVisual: function (e, t) {
            this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, e, t)
        }, getVisual: function (e, t) {
            return this.hostTree.data.getItemVisual(this.dataIndex, e, t)
        }, getRawIndex: function () {
            return this.hostTree.data.getRawIndex(this.dataIndex)
        }, getId: function () {
            return this.hostTree.data.getId(this.dataIndex)
        }, isAncestorOf: function (e) {
            for (var t = e.parentNode; t;) {
                if (t === this) return !0;
                t = t.parentNode
            }
            return !1
        }, isDescendantOf: function (e) {
            return e !== this && e.isAncestorOf(this)
        }
    }, c.prototype = {
        constructor: c, type: "tree", eachNode: function (e, t, n) {
            this.root.eachNode(e, t, n)
        }, getNodeByDataIndex: function (e) {
            var t = this.data.getRawIndex(e);
            return this._nodes[t]
        }, getNodeByName: function (e) {
            return this.root.getNodeByName(e)
        }, update: function () {
            for (var e = this.data, t = this._nodes, n = 0, i = t.length; n < i; n++) t[n].dataIndex = -1;
            for (n = 0, i = e.count(); n < i; n++) t[e.getRawIndex(n)].dataIndex = n
        }, clearLayouts: function () {
            this.data.clearItemLayouts()
        }
    }, c.createTree = function (e, t, n, r) {
        var u = new c(t, n && n.levels), h = [], d = 1;
        !function e(t, n) {
            var r = t.value;
            d = Math.max(d, i.isArray(r) ? r.length : 1), h.push(t);
            var o = new l(t.name, u);
            n ? function (e, t) {
                var n = t.children;
                if (e.parentNode === t) return;
                n.push(e), e.parentNode = t
            }(o, n) : u.root = o, u._nodes.push(o);
            var a = t.children;
            if (a) for (var s = 0; s < a.length; s++) e(a[s], o)
        }(e), u.root.updateDepthAndHeight(0);
        var f = s(h, {coordDimensions: ["value"], dimensionsCount: d}), g = new a(f, t);
        return g.initData(h), r && r(g), o({mainData: g, struct: u, structAttr: "tree"}), u.update(), u
    };
    var u = c;
    e.exports = u
}, function (e, t, n) {
    var i = n(3), r = n(121);

    function o(e) {
        this._ctor = e || r, this.group = new i.Group
    }

    var a = o.prototype;

    function s(e) {
        var t = e.hostModel;
        return {
            lineStyle: t.getModel("lineStyle").getLineStyle(),
            hoverLineStyle: t.getModel("emphasis.lineStyle").getLineStyle(),
            labelModel: t.getModel("label"),
            hoverLabelModel: t.getModel("emphasis.label")
        }
    }

    function l(e) {
        return isNaN(e[0]) || isNaN(e[1])
    }

    function c(e) {
        return !l(e[0]) && !l(e[1])
    }

    a.isPersistent = function () {
        return !0
    }, a.updateData = function (e) {
        var t = this, n = t.group, i = t._lineData;
        t._lineData = e, i || n.removeAll();
        var r = s(e);
        e.diff(i).add((function (n) {
            !function (e, t, n, i) {
                if (!c(t.getItemLayout(n))) return;
                var r = new e._ctor(t, n, i);
                t.setItemGraphicEl(n, r), e.group.add(r)
            }(t, e, n, r)
        })).update((function (n, o) {
            !function (e, t, n, i, r, o) {
                var a = t.getItemGraphicEl(i);
                if (!c(n.getItemLayout(r))) return void e.group.remove(a);
                a ? a.updateData(n, r, o) : a = new e._ctor(n, r, o);
                n.setItemGraphicEl(r, a), e.group.add(a)
            }(t, i, e, o, n, r)
        })).remove((function (e) {
            n.remove(i.getItemGraphicEl(e))
        })).execute()
    }, a.updateLayout = function () {
        var e = this._lineData;
        e && e.eachItemGraphicEl((function (t, n) {
            t.updateLayout(e, n)
        }), this)
    }, a.incrementalPrepareUpdate = function (e) {
        this._seriesScope = s(e), this._lineData = null, this.group.removeAll()
    }, a.incrementalUpdate = function (e, t) {
        function n(e) {
            e.isGroup || function (e) {
                return e.animators && e.animators.length > 0
            }(e) || (e.incremental = e.useHoverLayer = !0)
        }

        for (var i = e.start; i < e.end; i++) {
            if (c(t.getItemLayout(i))) {
                var r = new this._ctor(t, i, this._seriesScope);
                r.traverse(n), this.group.add(r), t.setItemGraphicEl(i, r)
            }
        }
    }, a.remove = function () {
        this._clearIncremental(), this._incremental = null, this.group.removeAll()
    }, a._clearIncremental = function () {
        var e = this._incremental;
        e && e.clearDisplaybles()
    };
    var u = o;
    e.exports = u
}, function (e, t, n) {
    var i = n(1), r = n(9), o = n(20), a = n(379), s = n(3), l = n(4).round, c = ["fromSymbol", "toSymbol"];

    function u(e) {
        return "_" + e + "Type"
    }

    function h(e, t, n) {
        var r = t.getItemVisual(n, "color"), a = t.getItemVisual(n, e), s = t.getItemVisual(n, e + "Size");
        if (a && "none" !== a) {
            i.isArray(s) || (s = [s, s]);
            var l = o.createSymbol(a, -s[0] / 2, -s[1] / 2, s[0], s[1], r);
            return l.name = e, l
        }
    }

    function d(e, t) {
        e.x1 = t[0][0], e.y1 = t[0][1], e.x2 = t[1][0], e.y2 = t[1][1], e.percent = 1;
        var n = t[2];
        n ? (e.cpx1 = n[0], e.cpy1 = n[1]) : (e.cpx1 = NaN, e.cpy1 = NaN)
    }

    function f(e, t, n) {
        s.Group.call(this), this._createLine(e, t, n)
    }

    var g = f.prototype;
    g.beforeUpdate = function () {
        var e = this.childOfName("fromSymbol"), t = this.childOfName("toSymbol"), n = this.childOfName("label");
        if (e || t || !n.ignore) {
            for (var i = 1, o = this.parent; o;) o.scale && (i /= o.scale[0]), o = o.parent;
            var a = this.childOfName("line");
            if (this.__dirty || a.__dirty) {
                var s = a.shape.percent, l = a.pointAt(0), c = a.pointAt(s), u = r.sub([], c, l);
                if (r.normalize(u, u), e) {
                    e.attr("position", l);
                    var h = a.tangentAt(0);
                    e.attr("rotation", Math.PI / 2 - Math.atan2(h[1], h[0])), e.attr("scale", [i * s, i * s])
                }
                if (t) {
                    t.attr("position", c);
                    h = a.tangentAt(1);
                    t.attr("rotation", -Math.PI / 2 - Math.atan2(h[1], h[0])), t.attr("scale", [i * s, i * s])
                }
                if (!n.ignore) {
                    var d, f, g, p;
                    n.attr("position", c);
                    var m = n.__labelDistance, v = m[0] * i, y = m[1] * i, b = s / 2,
                        C = [(h = a.tangentAt(b))[1], -h[0]], w = a.pointAt(b);
                    C[1] > 0 && (C[0] = -C[0], C[1] = -C[1]);
                    var I, x = h[0] < 0 ? -1 : 1;
                    if ("start" !== n.__position && "end" !== n.__position) {
                        var A = -Math.atan2(h[1], h[0]);
                        c[0] < l[0] && (A = Math.PI + A), n.attr("rotation", A)
                    }
                    switch (n.__position) {
                        case"insideStartTop":
                        case"insideMiddleTop":
                        case"insideEndTop":
                        case"middle":
                            I = -y, g = "bottom";
                            break;
                        case"insideStartBottom":
                        case"insideMiddleBottom":
                        case"insideEndBottom":
                            I = y, g = "top";
                            break;
                        default:
                            I = 0, g = "middle"
                    }
                    switch (n.__position) {
                        case"end":
                            d = [u[0] * v + c[0], u[1] * y + c[1]], f = u[0] > .8 ? "left" : u[0] < -.8 ? "right" : "center", g = u[1] > .8 ? "top" : u[1] < -.8 ? "bottom" : "middle";
                            break;
                        case"start":
                            d = [-u[0] * v + l[0], -u[1] * y + l[1]], f = u[0] > .8 ? "right" : u[0] < -.8 ? "left" : "center", g = u[1] > .8 ? "bottom" : u[1] < -.8 ? "top" : "middle";
                            break;
                        case"insideStartTop":
                        case"insideStart":
                        case"insideStartBottom":
                            d = [v * x + l[0], l[1] + I], f = h[0] < 0 ? "right" : "left", p = [-v * x, -I];
                            break;
                        case"insideMiddleTop":
                        case"insideMiddle":
                        case"insideMiddleBottom":
                        case"middle":
                            d = [w[0], w[1] + I], f = "center", p = [0, -I];
                            break;
                        case"insideEndTop":
                        case"insideEnd":
                        case"insideEndBottom":
                            d = [-v * x + c[0], c[1] + I], f = h[0] >= 0 ? "right" : "left", p = [v * x, -I]
                    }
                    n.attr({
                        style: {textVerticalAlign: n.__verticalAlign || g, textAlign: n.__textAlign || f},
                        position: d,
                        scale: [i, i],
                        origin: p
                    })
                }
            }
        }
    }, g._createLine = function (e, t, n) {
        var r = e.hostModel, o = function (e) {
            var t = new a({name: "line", subPixelOptimize: !0});
            return d(t.shape, e), t
        }(e.getItemLayout(t));
        o.shape.percent = 0, s.initProps(o, {shape: {percent: 1}}, r, t), this.add(o);
        var l = new s.Text({name: "label", lineLabelOriginalOpacity: 1});
        this.add(l), i.each(c, (function (n) {
            var i = h(n, e, t);
            this.add(i), this[u(n)] = e.getItemVisual(t, n)
        }), this), this._updateCommonStl(e, t, n)
    }, g.updateData = function (e, t, n) {
        var r = e.hostModel, o = this.childOfName("line"), a = e.getItemLayout(t), l = {shape: {}};
        d(l.shape, a), s.updateProps(o, l, r, t), i.each(c, (function (n) {
            var i = e.getItemVisual(t, n), r = u(n);
            if (this[r] !== i) {
                this.remove(this.childOfName(n));
                var o = h(n, e, t);
                this.add(o)
            }
            this[r] = i
        }), this), this._updateCommonStl(e, t, n)
    }, g._updateCommonStl = function (e, t, n) {
        var r = e.hostModel, o = this.childOfName("line"), a = n && n.lineStyle, u = n && n.hoverLineStyle,
            h = n && n.labelModel, d = n && n.hoverLabelModel;
        if (!n || e.hasItemOption) {
            var f = e.getItemModel(t);
            a = f.getModel("lineStyle").getLineStyle(), u = f.getModel("emphasis.lineStyle").getLineStyle(), h = f.getModel("label"), d = f.getModel("emphasis.label")
        }
        var g = e.getItemVisual(t, "color"), p = i.retrieve3(e.getItemVisual(t, "opacity"), a.opacity, 1);
        o.useStyle(i.defaults({
            strokeNoScale: !0,
            fill: "none",
            stroke: g,
            opacity: p
        }, a)), o.hoverStyle = u, i.each(c, (function (e) {
            var t = this.childOfName(e);
            t && (t.setColor(g), t.setStyle({opacity: p}))
        }), this);
        var m, v, y = h.getShallow("show"), b = d.getShallow("show"), C = this.childOfName("label");
        if ((y || b) && (m = g || "#000", null == (v = r.getFormattedLabel(t, "normal", e.dataType)))) {
            var w = r.getRawValue(t);
            v = null == w ? e.getName(t) : isFinite(w) ? l(w) : w
        }
        var I = y ? v : null, x = b ? i.retrieve2(r.getFormattedLabel(t, "emphasis", e.dataType), v) : null,
            A = C.style;
        if (null != I || null != x) {
            s.setTextStyle(C.style, h, {text: I}, {autoColor: m}), C.__textAlign = A.textAlign, C.__verticalAlign = A.textVerticalAlign, C.__position = h.get("position") || "middle";
            var _ = h.get("distance");
            i.isArray(_) || (_ = [_, _]), C.__labelDistance = _
        }
        C.hoverStyle = null != x ? {
            text: x,
            textFill: d.getTextColor(!0),
            fontStyle: d.getShallow("fontStyle"),
            fontWeight: d.getShallow("fontWeight"),
            fontSize: d.getShallow("fontSize"),
            fontFamily: d.getShallow("fontFamily")
        } : {text: null}, C.ignore = !y && !b, s.setHoverStyle(this)
    }, g.highlight = function () {
        this.trigger("emphasis")
    }, g.downplay = function () {
        this.trigger("normal")
    }, g.updateLayout = function (e, t) {
        this.setLinePoints(e.getItemLayout(t))
    }, g.setLinePoints = function (e) {
        var t = this.childOfName("line");
        d(t.shape, e), t.dirty()
    }, i.inherits(f, s.Group);
    var p = f;
    e.exports = p
}, function (e, t) {
    t.getNodeGlobalScale = function (e) {
        var t = e.coordinateSystem;
        if ("view" !== t.type) return 1;
        var n = e.option.nodeScaleRatio, i = t.scale, r = i && i[0] || 1;
        return ((t.getZoom() - 1) * n + 1) / r
    }, t.getSymbolSize = function (e) {
        var t = e.getVisual("symbolSize");
        return t instanceof Array && (t = (t[0] + t[1]) / 2), +t
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(37), o = n(3), a = n(189), s = n(41), l = i.curry, c = i.each, u = i.map, h = Math.min,
        d = Math.max, f = Math.pow, g = {w: [0, 0], e: [0, 1], n: [1, 0], s: [1, 1]},
        p = {w: "ew", e: "ew", n: "ns", s: "ns", ne: "nesw", sw: "nesw", nw: "nwse", se: "nwse"}, m = {
            brushStyle: {lineWidth: 2, stroke: "rgba(0,0,0,0.3)", fill: "rgba(0,0,0,0.1)"},
            transformable: !0,
            brushMode: "single",
            removeOnClick: !1
        }, v = 0;

    function y(e) {
        r.call(this), this._zr = e, this.group = new o.Group, this._brushType, this._brushOption, this._panels, this._track = [], this._dragging, this._covers = [], this._creatingCover, this._creatingPanel, this._enableGlobalPan, this._uid = "brushController_" + v++, this._handlers = {}, c(z, (function (e, t) {
            this._handlers[t] = i.bind(e, this)
        }), this)
    }

    function b(e, t) {
        var n = $[t.brushType].createCover(e, t);
        return n.__brushOption = t, I(n, t), e.group.add(n), n
    }

    function C(e, t) {
        var n = A(t);
        return n.endCreating && (n.endCreating(e, t), I(t, t.__brushOption)), t
    }

    function w(e, t) {
        var n = t.__brushOption;
        A(t).updateCoverShape(e, t, n.range, n)
    }

    function I(e, t) {
        var n = t.z;
        null == n && (n = 1e4), e.traverse((function (e) {
            e.z = n, e.z2 = n
        }))
    }

    function x(e, t) {
        A(t).updateCommon(e, t), w(e, t)
    }

    function A(e) {
        return $[e.__brushOption.brushType]
    }

    function _(e, t, n) {
        var i, r = e._panels;
        if (!r) return !0;
        var o = e._transform;
        return c(r, (function (e) {
            e.isTargetByCursor(t, n, o) && (i = e)
        })), i
    }

    function S(e, t) {
        var n = e._panels;
        if (!n) return !0;
        var i = t.__brushOption.panelId;
        return null == i || n[i]
    }

    function k(e) {
        var t = e._covers, n = t.length;
        return c(t, (function (t) {
            e.group.remove(t)
        }), e), t.length = 0, !!n
    }

    function L(e, t) {
        var n = u(e._covers, (function (e) {
            var t = e.__brushOption, n = i.clone(t.range);
            return {brushType: t.brushType, panelId: t.panelId, range: n}
        }));
        e.trigger("brush", n, {isEnd: !!t.isEnd, removeOnClick: !!t.removeOnClick})
    }

    function T(e) {
        var t = e.length - 1;
        return t < 0 && (t = 0), [e[0], e[t]]
    }

    function O(e, t, n, i) {
        var r = new o.Group;
        return r.add(new o.Rect({
            name: "main",
            style: M(n),
            silent: !0,
            draggable: !0,
            cursor: "move",
            drift: l(e, t, r, "nswe"),
            ondragend: l(L, t, {isEnd: !0})
        })), c(i, (function (n) {
            r.add(new o.Rect({
                name: n,
                style: {opacity: 0},
                draggable: !0,
                silent: !0,
                invisible: !0,
                drift: l(e, t, r, n),
                ondragend: l(L, t, {isEnd: !0})
            }))
        })), r
    }

    function R(e, t, n, i) {
        var r = i.brushStyle.lineWidth || 0, o = d(r, 6), a = n[0][0], s = n[1][0], l = a - r / 2, c = s - r / 2,
            u = n[0][1], h = n[1][1], f = u - o + r / 2, g = h - o + r / 2, p = u - a, m = h - s, v = p + r, y = m + r;
        P(e, t, "main", a, s, p, m), i.transformable && (P(e, t, "w", l, c, o, y), P(e, t, "e", f, c, o, y), P(e, t, "n", l, c, v, o), P(e, t, "s", l, g, v, o), P(e, t, "nw", l, c, o, o), P(e, t, "ne", f, c, o, o), P(e, t, "sw", l, g, o, o), P(e, t, "se", f, g, o, o))
    }

    function E(e, t) {
        var n = t.__brushOption, i = n.transformable, r = t.childAt(0);
        r.useStyle(M(n)), r.attr({
            silent: !i,
            cursor: i ? "move" : "default"
        }), c(["w", "e", "n", "s", "se", "sw", "ne", "nw"], (function (n) {
            var r = t.childOfName(n), a = function e(t, n) {
                if (n.length > 1) return n = n.split(""), ("e" === (i = [e(t, n[0]), e(t, n[1])])[0] || "w" === i[0]) && i.reverse(), i.join("");
                var i;
                return {left: "w", right: "e", top: "n", bottom: "s"}[i = o.transformDirection({
                    w: "left",
                    e: "right",
                    n: "top",
                    s: "bottom"
                }[n], function (e) {
                    return o.getTransform(e.group)
                }(t))]
            }(e, n);
            r && r.attr({silent: !i, invisible: !i, cursor: i ? p[a] + "-resize" : null})
        }))
    }

    function P(e, t, n, i, r, o, a) {
        var s, l, c, u, f, g = t.childOfName(n);
        g && g.setShape((s = F(e, t, [[i, r], [i + o, r + a]]), l = h(s[0][0], s[1][0]), c = h(s[0][1], s[1][1]), u = d(s[0][0], s[1][0]), f = d(s[0][1], s[1][1]), {
            x: l,
            y: c,
            width: u - l,
            height: f - c
        }))
    }

    function M(e) {
        return i.defaults({strokeNoScale: !0}, e.brushStyle)
    }

    function N(e, t, n, i) {
        var r = [h(e, n), h(t, i)], o = [d(e, n), d(t, i)];
        return [[r[0], o[0]], [r[1], o[1]]]
    }

    function D(e, t, n, i, r, o, a, s) {
        var l = i.__brushOption, u = e(l.range), h = j(n, o, a);
        c(r.split(""), (function (e) {
            var t = g[e];
            u[t[0]][t[1]] += h[t[0]]
        })), l.range = t(N(u[0][0], u[1][0], u[0][1], u[1][1])), x(n, i), L(n, {isEnd: !1})
    }

    function B(e, t, n, i, r) {
        var o = t.__brushOption.range, a = j(e, n, i);
        c(o, (function (e) {
            e[0] += a[0], e[1] += a[1]
        })), x(e, t), L(e, {isEnd: !1})
    }

    function j(e, t, n) {
        var i = e.group, r = i.transformCoordToLocal(t, n), o = i.transformCoordToLocal(0, 0);
        return [r[0] - o[0], r[1] - o[1]]
    }

    function F(e, t, n) {
        var r = S(e, t);
        return r && !0 !== r ? r.clipPath(n, e._transform) : i.clone(n)
    }

    function H(e) {
        var t = e.event;
        t.preventDefault && t.preventDefault()
    }

    function W(e, t, n) {
        return e.childOfName("main").contain(t, n)
    }

    function V(e, t, n, r) {
        var o, a = e._creatingCover, s = e._creatingPanel, l = e._brushOption;
        if (e._track.push(n.slice()), function (e) {
            var t = e._track;
            if (!t.length) return !1;
            var n = t[t.length - 1], i = t[0], r = n[0] - i[0], o = n[1] - i[1];
            return f(r * r + o * o, .5) > 6
        }(e) || a) {
            if (s && !a) {
                "single" === l.brushMode && k(e);
                var c = i.clone(l);
                c.brushType = G(c.brushType, s), c.panelId = !0 === s ? null : s.panelId, a = e._creatingCover = b(e, c), e._covers.push(a)
            }
            if (a) {
                var u = $[G(e._brushType, s)];
                a.__brushOption.range = u.getCreatingRange(F(e, a, e._track)), r && (C(e, a), u.updateCommon(e, a)), w(e, a), o = {isEnd: r}
            }
        } else r && "single" === l.brushMode && l.removeOnClick && _(e, t, n) && k(e) && (o = {
            isEnd: r,
            removeOnClick: !0
        });
        return o
    }

    function G(e, t) {
        return "auto" === e ? t.defaultBrushType : e
    }

    y.prototype = {
        constructor: y, enableBrush: function (e) {
            var t, n;
            return this._brushType && (n = (t = this)._zr, a.release(n, "globalPan", t._uid), function (e, t) {
                c(t, (function (t, n) {
                    e.off(n, t)
                }))
            }(n, t._handlers), t._brushType = t._brushOption = null), e.brushType && function (e, t) {
                var n = e._zr;
                e._enableGlobalPan || a.take(n, "globalPan", e._uid);
                (function (e, t) {
                    c(t, (function (t, n) {
                        e.on(n, t)
                    }))
                })(n, e._handlers), e._brushType = t.brushType, e._brushOption = i.merge(i.clone(m), t, !0)
            }(this, e), this
        }, setPanels: function (e) {
            if (e && e.length) {
                var t = this._panels = {};
                i.each(e, (function (e) {
                    t[e.panelId] = i.clone(e)
                }))
            } else this._panels = null;
            return this
        }, mount: function (e) {
            e = e || {}, this._enableGlobalPan = e.enableGlobalPan;
            var t = this.group;
            return this._zr.add(t), t.attr({
                position: e.position || [0, 0],
                rotation: e.rotation || 0,
                scale: e.scale || [1, 1]
            }), this._transform = t.getLocalTransform(), this
        }, eachCover: function (e, t) {
            c(this._covers, e, t)
        }, updateCovers: function (e) {
            e = i.map(e, (function (e) {
                return i.merge(i.clone(m), e, !0)
            }));
            var t = this._covers, n = this._covers = [], r = this, o = this._creatingCover;
            return new s(t, e, (function (e, t) {
                return a(e.__brushOption, t)
            }), a).add(l).update(l).remove((function (e) {
                t[e] !== o && r.group.remove(t[e])
            })).execute(), this;

            function a(e, t) {
                return (null != e.id ? e.id : "\0-brush-index-" + t) + "-" + e.brushType
            }

            function l(i, a) {
                var s = e[i];
                if (null != a && t[a] === o) n[i] = t[a]; else {
                    var l = n[i] = null != a ? (t[a].__brushOption = s, t[a]) : C(r, b(r, s));
                    x(r, l)
                }
            }
        }, unmount: function () {
            return this.enableBrush(!1), k(this), this._zr.remove(this.group), this
        }, dispose: function () {
            this.unmount(), this.off()
        }
    }, i.mixin(y, r);
    var z = {
        mousedown: function (e) {
            if (this._dragging) Z(this, e); else if (!e.target || !e.target.draggable) {
                H(e);
                var t = this.group.transformCoordToLocal(e.offsetX, e.offsetY);
                this._creatingCover = null, (this._creatingPanel = _(this, e, t)) && (this._dragging = !0, this._track = [t.slice()])
            }
        }, mousemove: function (e) {
            var t = e.offsetX, n = e.offsetY, i = this.group.transformCoordToLocal(t, n);
            if (function (e, t, n) {
                if (e._brushType && !function (e, t, n) {
                    var i = e._zr;
                    return t < 0 || t > i.getWidth() || n < 0 || n > i.getHeight()
                }(e, t)) {
                    var i = e._zr, r = e._covers, o = _(e, t, n);
                    if (!e._dragging) for (var a = 0; a < r.length; a++) {
                        var s = r[a].__brushOption;
                        if (o && (!0 === o || s.panelId === o.panelId) && $[s.brushType].contain(r[a], n[0], n[1])) return
                    }
                    o && i.setCursorStyle("crosshair")
                }
            }(this, e, i), this._dragging) {
                H(e);
                var r = V(this, e, i, !1);
                r && L(this, r)
            }
        }, mouseup: function (e) {
            Z(this, e)
        }
    };

    function Z(e, t) {
        if (e._dragging) {
            H(t);
            var n = t.offsetX, i = t.offsetY, r = e.group.transformCoordToLocal(n, i), o = V(e, t, r, !0);
            e._dragging = !1, e._track = [], e._creatingCover = null, o && L(e, o)
        }
    }

    var $ = {
        lineX: K(0), lineY: K(1), rect: {
            createCover: function (e, t) {
                return O(l(D, (function (e) {
                    return e
                }), (function (e) {
                    return e
                })), e, t, ["w", "e", "n", "s", "se", "sw", "ne", "nw"])
            }, getCreatingRange: function (e) {
                var t = T(e);
                return N(t[1][0], t[1][1], t[0][0], t[0][1])
            }, updateCoverShape: function (e, t, n, i) {
                R(e, t, n, i)
            }, updateCommon: E, contain: W
        }, polygon: {
            createCover: function (e, t) {
                var n = new o.Group;
                return n.add(new o.Polyline({name: "main", style: M(t), silent: !0})), n
            }, getCreatingRange: function (e) {
                return e
            }, endCreating: function (e, t) {
                t.remove(t.childAt(0)), t.add(new o.Polygon({
                    name: "main",
                    draggable: !0,
                    drift: l(B, e, t),
                    ondragend: l(L, e, {isEnd: !0})
                }))
            }, updateCoverShape: function (e, t, n, i) {
                t.childAt(0).setShape({points: F(e, t, n)})
            }, updateCommon: E, contain: W
        }
    };

    function K(e) {
        return {
            createCover: function (t, n) {
                return O(l(D, (function (t) {
                    var n = [t, [0, 100]];
                    return e && n.reverse(), n
                }), (function (t) {
                    return t[e]
                })), t, n, [["w", "e"], ["n", "s"]][e])
            }, getCreatingRange: function (t) {
                var n = T(t);
                return [h(n[0][e], n[1][e]), d(n[0][e], n[1][e])]
            }, updateCoverShape: function (t, n, i, r) {
                var o, a = S(t, n);
                if (!0 !== a && a.getLinearBrushOtherExtent) o = a.getLinearBrushOtherExtent(e, t._transform); else {
                    var s = t._zr;
                    o = [0, [s.getWidth(), s.getHeight()][1 - e]]
                }
                var l = [i, o];
                e && l.reverse(), R(t, n, l, r)
            }, updateCommon: E, contain: W
        }
    }

    var X = y;
    e.exports = X
}, function (e, t, n) {
    var i = n(1), r = n(28), o = n(3), a = n(92), s = n(24), l = n(32), c = (0, n(5).makeInner)(), u = i.clone,
        h = i.bind;

    function d() {
    }

    function f(e, t, n, r) {
        (function e(t, n) {
            if (i.isObject(t) && i.isObject(n)) {
                var r = !0;
                return i.each(n, (function (n, i) {
                    r = r && e(t[i], n)
                })), !!r
            }
            return t === n
        })(c(n).lastProp, r) || (c(n).lastProp = r, t ? o.updateProps(n, r, e) : (n.stopAnimation(), n.attr(r)))
    }

    function g(e, t) {
        e[t.get("label.show") ? "show" : "hide"]()
    }

    function p(e) {
        return {position: e.position.slice(), rotation: e.rotation || 0}
    }

    function m(e, t, n) {
        var i = t.get("z"), r = t.get("zlevel");
        e && e.traverse((function (e) {
            "group" !== e.type && (null != i && (e.z = i), null != r && (e.zlevel = r), e.silent = n)
        }))
    }

    d.prototype = {
        _group: null,
        _lastGraphicKey: null,
        _handle: null,
        _dragging: !1,
        _lastValue: null,
        _lastStatus: null,
        _payloadInfo: null,
        animationThreshold: 15,
        render: function (e, t, n, r) {
            var a = t.get("value"), s = t.get("status");
            if (this._axisModel = e, this._axisPointerModel = t, this._api = n, r || this._lastValue !== a || this._lastStatus !== s) {
                this._lastValue = a, this._lastStatus = s;
                var l = this._group, c = this._handle;
                if (!s || "hide" === s) return l && l.hide(), void (c && c.hide());
                l && l.show(), c && c.show();
                var u = {};
                this.makeElOption(u, a, e, t, n);
                var h = u.graphicKey;
                h !== this._lastGraphicKey && this.clear(n), this._lastGraphicKey = h;
                var d = this._moveAnimation = this.determineAnimation(e, t);
                if (l) {
                    var g = i.curry(f, t, d);
                    this.updatePointerEl(l, u, g, t), this.updateLabelEl(l, u, g, t)
                } else l = this._group = new o.Group, this.createPointerEl(l, u, e, t), this.createLabelEl(l, u, e, t), n.getZr().add(l);
                m(l, t, !0), this._renderHandle(a)
            }
        },
        remove: function (e) {
            this.clear(e)
        },
        dispose: function (e) {
            this.clear(e)
        },
        determineAnimation: function (e, t) {
            var n = t.get("animation"), i = e.axis, r = "category" === i.type, o = t.get("snap");
            if (!o && !r) return !1;
            if ("auto" === n || null == n) {
                var s = this.animationThreshold;
                if (r && i.getBandWidth() > s) return !0;
                if (o) {
                    var l = a.getAxisInfo(e).seriesDataCount, c = i.getExtent();
                    return Math.abs(c[0] - c[1]) / l > s
                }
                return !1
            }
            return !0 === n
        },
        makeElOption: function (e, t, n, i, r) {
        },
        createPointerEl: function (e, t, n, i) {
            var r = t.pointer;
            if (r) {
                var a = c(e).pointerEl = new o[r.type](u(t.pointer));
                e.add(a)
            }
        },
        createLabelEl: function (e, t, n, i) {
            if (t.label) {
                var r = c(e).labelEl = new o.Rect(u(t.label));
                e.add(r), g(r, i)
            }
        },
        updatePointerEl: function (e, t, n) {
            var i = c(e).pointerEl;
            i && t.pointer && (i.setStyle(t.pointer.style), n(i, {shape: t.pointer.shape}))
        },
        updateLabelEl: function (e, t, n, i) {
            var r = c(e).labelEl;
            r && (r.setStyle(t.label.style), n(r, {shape: t.label.shape, position: t.label.position}), g(r, i))
        },
        _renderHandle: function (e) {
            if (!this._dragging && this.updateHandleTransform) {
                var t, n = this._axisPointerModel, r = this._api.getZr(), a = this._handle, c = n.getModel("handle"),
                    u = n.get("status");
                if (!c.get("show") || !u || "hide" === u) return a && r.remove(a), void (this._handle = null);
                this._handle || (t = !0, a = this._handle = o.createIcon(c.get("icon"), {
                    cursor: "move",
                    draggable: !0,
                    onmousemove: function (e) {
                        s.stop(e.event)
                    },
                    onmousedown: h(this._onHandleDragMove, this, 0, 0),
                    drift: h(this._onHandleDragMove, this),
                    ondragend: h(this._onHandleDragEnd, this)
                }), r.add(a)), m(a, n, !1);
                a.setStyle(c.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
                var d = c.get("size");
                i.isArray(d) || (d = [d, d]), a.attr("scale", [d[0] / 2, d[1] / 2]), l.createOrUpdate(this, "_doDispatchAxisPointer", c.get("throttle") || 0, "fixRate"), this._moveHandleToValue(e, t)
            }
        },
        _moveHandleToValue: function (e, t) {
            f(this._axisPointerModel, !t && this._moveAnimation, this._handle, p(this.getHandleTransform(e, this._axisModel, this._axisPointerModel)))
        },
        _onHandleDragMove: function (e, t) {
            var n = this._handle;
            if (n) {
                this._dragging = !0;
                var i = this.updateHandleTransform(p(n), [e, t], this._axisModel, this._axisPointerModel);
                this._payloadInfo = i, n.stopAnimation(), n.attr(p(i)), c(n).lastProp = null, this._doDispatchAxisPointer()
            }
        },
        _doDispatchAxisPointer: function () {
            if (this._handle) {
                var e = this._payloadInfo, t = this._axisModel;
                this._api.dispatchAction({
                    type: "updateAxisPointer",
                    x: e.cursorPoint[0],
                    y: e.cursorPoint[1],
                    tooltipOption: e.tooltipOption,
                    axesInfo: [{axisDim: t.axis.dim, axisIndex: t.componentIndex}]
                })
            }
        },
        _onHandleDragEnd: function (e) {
            if (this._dragging = !1, this._handle) {
                var t = this._axisPointerModel.get("value");
                this._moveHandleToValue(t), this._api.dispatchAction({type: "hideTip"})
            }
        },
        getHandleTransform: null,
        updateHandleTransform: null,
        clear: function (e) {
            this._lastValue = null, this._lastStatus = null;
            var t = e.getZr(), n = this._group, i = this._handle;
            t && n && (this._lastGraphicKey = null, n && t.remove(n), i && t.remove(i), this._group = null, this._handle = null, this._payloadInfo = null)
        },
        doClear: function () {
        },
        buildLabel: function (e, t, n) {
            return {x: e[n = n || 0], y: e[1 - n], width: t[n], height: t[1 - n]}
        }
    }, d.prototype.constructor = d, r.enableClassExtend(d);
    var v = d;
    e.exports = v
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(473), o = n(4).parsePercent, a = n(22), s = a.createScaleByModel, l = a.niceScaleExtent,
        c = n(21), u = n(27).getStackedDimension;

    function h(e, t) {
        var n = this, r = n.getAngleAxis(), o = n.getRadiusAxis();
        if (r.scale.setExtent(1 / 0, -1 / 0), o.scale.setExtent(1 / 0, -1 / 0), e.eachSeries((function (e) {
            if (e.coordinateSystem === n) {
                var t = e.getData();
                i.each(t.mapDimension("radius", !0), (function (e) {
                    o.scale.unionExtentFromData(t, u(t, e))
                })), i.each(t.mapDimension("angle", !0), (function (e) {
                    r.scale.unionExtentFromData(t, u(t, e))
                }))
            }
        })), l(r.scale, r.model), l(o.scale, o.model), "category" === r.type && !r.onBand) {
            var a = r.getExtent(), s = 360 / r.scale.count();
            r.inverse ? a[1] += s : a[1] -= s, r.setExtent(a[0], a[1])
        }
    }

    function d(e, t) {
        if (e.type = t.get("type"), e.scale = s(t), e.onBand = t.get("boundaryGap") && "category" === e.type, e.inverse = t.get("inverse"), "angleAxis" === t.mainType) {
            e.inverse ^= t.get("clockwise");
            var n = t.get("startAngle");
            e.setExtent(n, n + (e.inverse ? -360 : 360))
        }
        t.axis = e, e.model = t
    }

    n(476);
    var f = {
        dimensions: r.prototype.dimensions, create: function (e, t) {
            var n = [];
            return e.eachComponent("polar", (function (e, a) {
                var s = new r(a);
                s.update = h;
                var l = s.getRadiusAxis(), c = s.getAngleAxis(), u = e.findAxisModel("radiusAxis"),
                    f = e.findAxisModel("angleAxis");
                d(l, u), d(c, f), function (e, t, n) {
                    var r = t.get("center"), a = n.getWidth(), s = n.getHeight();
                    e.cx = o(r[0], a), e.cy = o(r[1], s);
                    var l = e.getRadiusAxis(), c = Math.min(a, s) / 2, u = t.get("radius");
                    null == u ? u = [0, "100%"] : i.isArray(u) || (u = [0, u]), u = [o(u[0], c), o(u[1], c)], l.inverse ? l.setExtent(u[1], u[0]) : l.setExtent(u[0], u[1])
                }(s, e, t), n.push(s), e.coordinateSystem = s, s.model = e
            })), e.eachSeries((function (t) {
                if ("polar" === t.get("coordinateSystem")) {
                    var n = e.queryComponents({mainType: "polar", index: t.get("polarIndex"), id: t.get("polarId")})[0];
                    t.coordinateSystem = n.coordinateSystem
                }
            })), n
        }
    };
    c.register("polar", f)
}, function (e, t, n) {
    n(14).registerSubTypeDefaulter("dataZoom", (function () {
        return "slider"
    }))
}, function (e, t, n) {
    var i = n(1), r = n(8), o = ["cartesian2d", "polar", "singleAxis"];

    function a(e, t) {
        e = e.slice();
        var n = i.map(e, r.capitalFirst);
        t = (t || []).slice();
        var o = i.map(t, r.capitalFirst);
        return function (r, a) {
            i.each(e, (function (e, i) {
                for (var s = {name: e, capital: n[i]}, l = 0; l < t.length; l++) s[t[l]] = e + o[l];
                r.call(a, s)
            }))
        }
    }

    var s = a(["x", "y", "z", "radius", "angle", "single"], ["axisIndex", "axis", "index", "id"]);
    t.isCoordSupported = function (e) {
        return i.indexOf(o, e) >= 0
    }, t.createNameEach = a, t.eachAxisDim = s, t.createLinkedNodesFinder = function (e, t, n) {
        return function (o) {
            var a, s = {nodes: [], records: {}};
            if (t((function (e) {
                s.records[e.name] = {}
            })), !o) return s;
            r(o, s);
            do {
                a = !1, e(l)
            } while (a);

            function l(e) {
                !function (e, t) {
                    return i.indexOf(t.nodes, e) >= 0
                }(e, s) && function (e, r) {
                    var o = !1;
                    return t((function (t) {
                        i.each(n(e, t) || [], (function (e) {
                            r.records[t.name][e] && (o = !0)
                        }))
                    })), o
                }(e, s) && (r(e, s), a = !0)
            }

            return s
        };

        function r(e, r) {
            r.nodes.push(e), t((function (t) {
                i.each(n(e, t) || [], (function (e) {
                    r.records[t.name][e] = !0
                }))
            }))
        }
    }
}, function (e, t, n) {
    var i = n(2), r = n(1), o = r.createHashMap, a = r.each;
    i.registerProcessor({
        getTargetSeries: function (e) {
            var t = o();
            return e.eachComponent("dataZoom", (function (e) {
                e.eachTargetAxis((function (e, n, i) {
                    var r = i.getAxisProxy(e.name, n);
                    a(r.getTargetSeriesModels(), (function (e) {
                        t.set(e.uid, e)
                    }))
                }))
            })), t
        }, modifyOutputEnd: !0, overallReset: function (e, t) {
            e.eachComponent("dataZoom", (function (e) {
                e.eachTargetAxis((function (e, n, i) {
                    i.getAxisProxy(e.name, n).reset(i, t)
                })), e.eachTargetAxis((function (e, n, i) {
                    i.getAxisProxy(e.name, n).filterData(i, t)
                }))
            })), e.eachComponent("dataZoom", (function (e) {
                var t = e.findRepresentativeAxisProxy(), n = t.getDataPercentWindow(), i = t.getDataValueWindow();
                e.setCalculatedRange({start: n[0], end: n[1], startValue: i[0], endValue: i[1]})
            }))
        }
    })
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(127);
    i.registerAction("dataZoom", (function (e, t) {
        var n = o.createLinkedNodesFinder(r.bind(t.eachComponent, t, "dataZoom"), o.eachAxisDim, (function (e, t) {
            return e.get(t.axisIndex)
        })), i = [];
        t.eachComponent({mainType: "dataZoom", query: e}, (function (e, t) {
            i.push.apply(i, n(e).nodes)
        })), r.each(i, (function (t, n) {
            t.setRawRange({start: e.start, end: e.end, startValue: e.startValue, endValue: e.endValue})
        }))
    }))
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(12), a = n(5), s = n(8), l = n(109), c = s.addCommas, u = s.encodeHTML;

    function h(e) {
        a.defaultEmphasis(e, "label", ["show"])
    }

    var d = i.extendComponentModel({
        type: "marker", dependencies: ["series", "grid", "polar", "geo"], init: function (e, t, n) {
            this.mergeDefaultAndTheme(e, n), this._mergeOption(e, n, !1, !0)
        }, isAnimationEnabled: function () {
            if (o.node) return !1;
            var e = this.__hostSeries;
            return this.getShallow("animation") && e && e.isAnimationEnabled()
        }, mergeOption: function (e, t) {
            this._mergeOption(e, t, !1, !1)
        }, _mergeOption: function (e, t, n, i) {
            var o = this.constructor, a = this.mainType + "Model";
            n || t.eachSeries((function (e) {
                var n = e.get(this.mainType, !0), s = e[a];
                n && n.data ? (s ? s._mergeOption(n, t, !0) : (i && h(n), r.each(n.data, (function (e) {
                    e instanceof Array ? (h(e[0]), h(e[1])) : h(e)
                })), s = new o(n, this, t), r.extend(s, {
                    mainType: this.mainType,
                    seriesIndex: e.seriesIndex,
                    name: e.name,
                    createdBySelf: !0
                }), s.__hostSeries = e), e[a] = s) : e[a] = null
            }), this)
        }, formatTooltip: function (e) {
            var t = this.getData(), n = this.getRawValue(e), i = r.isArray(n) ? r.map(n, c).join(", ") : c(n),
                o = t.getName(e), a = u(this.name);
            return (null != n || o) && (a += "<br />"), o && (a += u(o), null != n && (a += " : ")), null != n && (a += u(i)), a
        }, getData: function () {
            return this._data
        }, setData: function (e) {
            this._data = e
        }
    });
    r.mixin(d, l);
    var f = d;
    e.exports = f
}, function (e, t, n) {
    var i = n(1), r = n(4), o = n(27).isDimensionStacked, a = i.indexOf;

    function s(e, t, n, i, a, s) {
        var l = [], c = o(t, i) ? t.getCalculationInfo("stackResultDimension") : i, u = h(t, c, e),
            d = t.indicesOfNearest(c, u)[0];
        l[a] = t.get(n, d), l[s] = t.get(c, d);
        var f = t.get(i, d), g = r.getPrecision(t.get(i, d));
        return (g = Math.min(g, 20)) >= 0 && (l[s] = +l[s].toFixed(g)), [l, f]
    }

    var l = i.curry, c = {min: l(s, "min"), max: l(s, "max"), average: l(s, "average")};

    function u(e, t, n, i) {
        var r = {};
        return null != e.valueIndex || null != e.valueDim ? (r.valueDataDim = null != e.valueIndex ? t.getDimension(e.valueIndex) : e.valueDim, r.valueAxis = n.getAxis(function (e, t) {
            var n = e.getData(), i = n.dimensions;
            t = n.getDimension(t);
            for (var r = 0; r < i.length; r++) {
                var o = n.getDimensionInfo(i[r]);
                if (o.name === t) return o.coordDim
            }
        }(i, r.valueDataDim)), r.baseAxis = n.getOtherAxis(r.valueAxis), r.baseDataDim = t.mapDimension(r.baseAxis.dim)) : (r.baseAxis = i.getBaseAxis(), r.valueAxis = n.getOtherAxis(r.baseAxis), r.baseDataDim = t.mapDimension(r.baseAxis.dim), r.valueDataDim = t.mapDimension(r.valueAxis.dim)), r
    }

    function h(e, t, n) {
        if ("average" === n) {
            var i = 0, r = 0;
            return e.each(t, (function (e, t) {
                isNaN(e) || (i += e, r++)
            })), i / r
        }
        return "median" === n ? e.getMedian(t) : e.getDataExtent(t, !0)["max" === n ? 1 : 0]
    }

    t.dataTransform = function (e, t) {
        var n = e.getData(), r = e.coordinateSystem;
        if (t && !function (e) {
            return !isNaN(parseFloat(e.x)) && !isNaN(parseFloat(e.y))
        }(t) && !i.isArray(t.coord) && r) {
            var o = r.dimensions, s = u(t, n, r, e);
            if ((t = i.clone(t)).type && c[t.type] && s.baseAxis && s.valueAxis) {
                var l = a(o, s.baseAxis.dim), d = a(o, s.valueAxis.dim),
                    f = c[t.type](n, s.baseDataDim, s.valueDataDim, l, d);
                t.coord = f[0], t.value = f[1]
            } else {
                for (var g = [null != t.xAxis ? t.xAxis : t.radiusAxis, null != t.yAxis ? t.yAxis : t.angleAxis], p = 0; p < 2; p++) c[g[p]] && (g[p] = h(n, n.mapDimension(o[p]), g[p]));
                t.coord = g
            }
        }
        return t
    }, t.getAxisInfo = u, t.dataFilter = function (e, t) {
        return !(e && e.containData && t.coord && !function (e) {
            return !(isNaN(parseFloat(e.x)) && isNaN(parseFloat(e.y)))
        }(t)) || e.containData(t.coord)
    }, t.dimValueGetter = function (e, t, n, i) {
        return i < 2 ? e.coord && e.coord[i] : e.value
    }, t.numCalculate = h
}, function (e, t, n) {
    var i = n(2), r = n(1), o = i.extendComponentView({
        type: "marker", init: function () {
            this.markerGroupMap = r.createHashMap()
        }, render: function (e, t, n) {
            var i = this.markerGroupMap;
            i.each((function (e) {
                e.__keep = !1
            }));
            var r = this.type + "Model";
            t.eachSeries((function (e) {
                var i = e[r];
                i && this.renderSeries(e, i, t, n)
            }), this), i.each((function (e) {
                !e.__keep && this.group.remove(e.group)
            }), this)
        }, renderSeries: function () {
        }
    });
    e.exports = o
}, function (e, t, n) {
    var i = n(134).createElement, r = n(48), o = n(10), a = n(16), s = n(17), l = n(84), c = n(39), u = r.CMD,
        h = Array.prototype.join, d = Math.round, f = Math.sin, g = Math.cos, p = Math.PI, m = 2 * Math.PI, v = 180 / p;

    function y(e) {
        return d(1e4 * e) / 1e4
    }

    function b(e) {
        return e < 1e-4 && e > -1e-4
    }

    function C(e, t) {
        t && w(e, "transform", "matrix(" + h.call(t, ",") + ")")
    }

    function w(e, t, n) {
        (!n || "linear" !== n.type && "radial" !== n.type) && e.setAttribute(t, n)
    }

    function I(e, t, n, i) {
        if (function (e, t) {
            var n = t ? e.textFill : e.fill;
            return null != n && "none" !== n
        }(t, n)) {
            var r = n ? t.textFill : t.fill;
            w(e, "fill", r = "transparent" === r ? "none" : r), w(e, "fill-opacity", null != t.fillOpacity ? t.fillOpacity * t.opacity : t.opacity)
        } else w(e, "fill", "none");
        if (function (e, t) {
            var n = t ? e.textStroke : e.stroke;
            return null != n && "none" !== n
        }(t, n)) {
            var o = n ? t.textStroke : t.stroke;
            w(e, "stroke", o = "transparent" === o ? "none" : o), w(e, "stroke-width", (n ? t.textStrokeWidth : t.lineWidth) / (!n && t.strokeNoScale ? i.getLineScale() : 1)), w(e, "paint-order", n ? "stroke" : "fill"), w(e, "stroke-opacity", null != t.strokeOpacity ? t.strokeOpacity : t.opacity), t.lineDash ? (w(e, "stroke-dasharray", t.lineDash.join(",")), w(e, "stroke-dashoffset", d(t.lineDashOffset || 0))) : w(e, "stroke-dasharray", ""), t.lineCap && w(e, "stroke-linecap", t.lineCap), t.lineJoin && w(e, "stroke-linejoin", t.lineJoin), t.miterLimit && w(e, "stroke-miterlimit", t.miterLimit)
        } else w(e, "stroke", "none")
    }

    var x = {};
    x.brush = function (e) {
        var t = e.style, n = e.__svgEl;
        n || (n = i("path"), e.__svgEl = n), e.path || e.createPathProxy();
        var r = e.path;
        if (e.__dirtyPath) {
            r.beginPath(), r.subPixelOptimize = !1, e.buildPath(r, e.shape), e.__dirtyPath = !1;
            var o = function (e) {
                for (var t = [], n = e.data, i = e.len(), r = 0; r < i;) {
                    var o = "", a = 0;
                    switch (n[r++]) {
                        case u.M:
                            o = "M", a = 2;
                            break;
                        case u.L:
                            o = "L", a = 2;
                            break;
                        case u.Q:
                            o = "Q", a = 4;
                            break;
                        case u.C:
                            o = "C", a = 6;
                            break;
                        case u.A:
                            var s = n[r++], l = n[r++], c = n[r++], h = n[r++], C = n[r++], w = n[r++], I = n[r++],
                                x = n[r++], A = Math.abs(w), _ = b(A - m) || (x ? w >= m : -w >= m),
                                S = w > 0 ? w % m : w % m + m, k = !1;
                            k = !!_ || !b(A) && S >= p == !!x;
                            var L = y(s + c * g(C)), T = y(l + h * f(C));
                            _ && (w = x ? m - 1e-4 : 1e-4 - m, k = !0, 9 === r && t.push("M", L, T));
                            var O = y(s + c * g(C + w)), R = y(l + h * f(C + w));
                            t.push("A", y(c), y(h), d(I * v), +k, +x, O, R);
                            break;
                        case u.Z:
                            o = "Z";
                            break;
                        case u.R:
                            O = y(n[r++]), R = y(n[r++]);
                            var E = y(n[r++]), P = y(n[r++]);
                            t.push("M", O, R, "L", O + E, R, "L", O + E, R + P, "L", O, R + P, "L", O, R)
                    }
                    o && t.push(o);
                    for (var M = 0; M < a; M++) t.push(y(n[r++]))
                }
                return t.join(" ")
            }(r);
            o.indexOf("NaN") < 0 && w(n, "d", o)
        }
        I(n, t, !1, e), C(n, e.transform), null != t.text ? O(e, e.getBoundingRect()) : E(e)
    };
    var A = {
            brush: function (e) {
                var t = e.style, n = t.image;
                n instanceof HTMLImageElement && (n = n.src);
                if (n) {
                    var r = t.x || 0, o = t.y || 0, a = t.width, s = t.height, l = e.__svgEl;
                    l || (l = i("image"), e.__svgEl = l), n !== e.__imageSrc && (!function (e, t, n) {
                        e.setAttributeNS("http://www.w3.org/1999/xlink", t, n)
                    }(l, "href", n), e.__imageSrc = n), w(l, "width", a), w(l, "height", s), w(l, "x", r), w(l, "y", o), C(l, e.transform), null != t.text ? O(e, e.getBoundingRect()) : E(e)
                }
            }
        }, _ = {}, S = new o, k = {}, L = [], T = {left: "start", right: "end", center: "middle", middle: "middle"},
        O = function (e, t) {
            var n = e.style, r = e.transform, o = e instanceof c || n.transformText;
            e.__dirty && l.normalizeTextStyle(n, !0);
            var u = n.text;
            if (null != u && (u += ""), l.needDrawText(u, n)) {
                null == u && (u = ""), !o && r && (S.copy(t), S.applyTransform(r), t = S);
                var h = e.__textSvgEl;
                h || (h = i("text"), e.__textSvgEl = h);
                var d = h.style, f = n.font || s.DEFAULT_FONT, g = h.__computedFont;
                f !== h.__styleFont && (d.font = h.__styleFont = f, g = h.__computedFont = d.font);
                var p = n.textPadding, m = n.textLineHeight, v = e.__textCotentBlock;
                v && !e.__dirtyText || (v = e.__textCotentBlock = s.parsePlainText(u, g, p, m, n.truncate));
                var y = v.outerHeight, b = v.lineHeight;
                l.getBoxPosition(k, e, n, t);
                var w = k.baseX, x = k.baseY, A = k.textAlign || "left", _ = k.textVerticalAlign;
                !function (e, t, n, i, r, o, s) {
                    a.identity(L), t && n && a.copy(L, n);
                    var l = i.textRotation;
                    if (r && l) {
                        var c = i.textOrigin;
                        "center" === c ? (o = r.width / 2 + r.x, s = r.height / 2 + r.y) : c && (o = c[0] + r.x, s = c[1] + r.y), L[4] -= o, L[5] -= s, a.rotate(L, L, l), L[4] += o, L[5] += s
                    }
                    C(e, L)
                }(h, o, r, n, t, w, x);
                var T = w, O = s.adjustTextY(x, y, _);
                p && (T = function (e, t, n) {
                    return "right" === t ? e - n[1] : "center" === t ? e + n[3] / 2 - n[1] / 2 : e + n[3]
                }(w, A, p), O += p[0]), O += b / 2, I(h, n, !0, e);
                var E = v.canCacheByTextString, P = e.__tspanList || (e.__tspanList = []), M = P.length;
                if (E && e.__canCacheByTextString && e.__text === u) {
                    if (e.__dirtyText && M) for (var N = 0; N < M; ++N) R(P[N], A, T, O + N * b)
                } else {
                    e.__text = u, e.__canCacheByTextString = E;
                    var D = v.lines, B = D.length;
                    for (N = 0; N < B; N++) {
                        var j = P[N], F = D[N];
                        j ? j.__zrText !== F && (j.innerHTML = "", j.appendChild(document.createTextNode(F))) : (j = P[N] = i("tspan"), h.appendChild(j), j.appendChild(document.createTextNode(F))), R(j, A, T, O + N * b)
                    }
                    if (M > B) {
                        for (; N < M; N++) h.removeChild(P[N]);
                        P.length = B
                    }
                }
            }
        };

    function R(e, t, n, i) {
        w(e, "dominant-baseline", "middle"), w(e, "text-anchor", T[t]), w(e, "x", n), w(e, "y", i)
    }

    function E(e) {
        e && e.__textSvgEl && (e.__textSvgEl.parentNode && e.__textSvgEl.parentNode.removeChild(e.__textSvgEl), e.__textSvgEl = null, e.__tspanList = [], e.__text = null)
    }

    _.drawRectText = O, _.brush = function (e) {
        null != e.style.text ? O(e, !1) : E(e)
    }, t.path = x, t.image = A, t.text = _
}, function (e, t) {
    t.createElement = function (e) {
        return document.createElementNS("http://www.w3.org/2000/svg", e)
    }
}, function (e, t, n) {
    var i = n(134).createElement, r = n(1), o = n(11), a = n(46), s = n(39), l = n(133), c = l.path, u = l.image,
        h = l.text;

    function d(e, t, n, i, r) {
        this._zrId = e, this._svgRoot = t, this._tagNames = "string" == typeof n ? [n] : n, this._markLabel = i, this._domName = r || "_dom", this.nextId = 0
    }

    d.prototype.createElement = i, d.prototype.getDefs = function (e) {
        var t = this._svgRoot, n = this._svgRoot.getElementsByTagName("defs");
        return 0 === n.length ? e ? ((n = t.insertBefore(this.createElement("defs"), t.firstChild)).contains || (n.contains = function (e) {
            var t = n.children;
            if (!t) return !1;
            for (var i = t.length - 1; i >= 0; --i) if (t[i] === e) return !0;
            return !1
        }), n) : null : n[0]
    }, d.prototype.update = function (e, t) {
        if (e) {
            var n = this.getDefs(!1);
            if (e[this._domName] && n.contains(e[this._domName])) "function" == typeof t && t(e); else {
                var i = this.add(e);
                i && (e[this._domName] = i)
            }
        }
    }, d.prototype.addDom = function (e) {
        this.getDefs(!0).appendChild(e)
    }, d.prototype.removeDom = function (e) {
        var t = this.getDefs(!1);
        t && e[this._domName] && (t.removeChild(e[this._domName]), e[this._domName] = null)
    }, d.prototype.getDoms = function () {
        var e = this.getDefs(!1);
        if (!e) return [];
        var t = [];
        return r.each(this._tagNames, (function (n) {
            var i = e.getElementsByTagName(n);
            t = t.concat([].slice.call(i))
        })), t
    }, d.prototype.markAllUnused = function () {
        var e = this.getDoms(), t = this;
        r.each(e, (function (e) {
            e[t._markLabel] = "0"
        }))
    }, d.prototype.markUsed = function (e) {
        e && (e[this._markLabel] = "1")
    }, d.prototype.removeUnused = function () {
        var e = this.getDefs(!1);
        if (e) {
            var t = this.getDoms(), n = this;
            r.each(t, (function (t) {
                "1" !== t[n._markLabel] && e.removeChild(t)
            }))
        }
    }, d.prototype.getSvgProxy = function (e) {
        return e instanceof o ? c : e instanceof a ? u : e instanceof s ? h : c
    }, d.prototype.getTextSvgElement = function (e) {
        return e.__textSvgEl
    }, d.prototype.getSvgElement = function (e) {
        return e.__svgEl
    };
    var f = d;
    e.exports = f
}, function (e, t) {
    var n;
    n = function () {
        return this
    }();
    try {
        n = n || new Function("return this")()
    } catch (e) {
        "object" == typeof window && (n = window)
    }
    e.exports = n
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), r = n(58), o = a(n(59));

    function a(e) {
        return e && e.__esModule ? e : {default: e}
    }

    var s = function (e) {
        function t(e, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t);
            var i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
            return i.fontSize = !n.flat && n.fontSize > 10 * n.width ? 10 * n.width : n.fontSize, i.guardHeight = n.height + i.fontSize / 2 + n.textMargin, i
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), i(t, [{
            key: "encode", value: function () {
                return this.options.flat ? this.encodeFlat() : this.encodeGuarded()
            }
        }, {
            key: "leftText", value: function (e, t) {
                return this.text.substr(e, t)
            }
        }, {
            key: "leftEncode", value: function (e, t) {
                return (0, o.default)(e, t)
            }
        }, {
            key: "rightText", value: function (e, t) {
                return this.text.substr(e, t)
            }
        }, {
            key: "rightEncode", value: function (e, t) {
                return (0, o.default)(e, t)
            }
        }, {
            key: "encodeGuarded", value: function () {
                var e = {fontSize: this.fontSize}, t = {height: this.guardHeight};
                return [{data: r.SIDE_BIN, options: t}, {
                    data: this.leftEncode(),
                    text: this.leftText(),
                    options: e
                }, {data: r.MIDDLE_BIN, options: t}, {
                    data: this.rightEncode(),
                    text: this.rightText(),
                    options: e
                }, {data: r.SIDE_BIN, options: t}]
            }
        }, {
            key: "encodeFlat", value: function () {
                return {
                    data: [r.SIDE_BIN, this.leftEncode(), r.MIDDLE_BIN, this.rightEncode(), r.SIDE_BIN].join(""),
                    text: this.text
                }
            }
        }]), t
    }(a(n(18)).default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }();
    t.checksum = s;
    var r = o(n(59));

    function o(e) {
        return e && e.__esModule ? e : {default: e}
    }

    var a = function (e) {
        function t(e, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), -1 !== e.search(/^[0-9]{11}$/) && (e += s(e));
            var i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
            return i.displayValue = n.displayValue, n.fontSize > 10 * n.width ? i.fontSize = 10 * n.width : i.fontSize = n.fontSize, i.guardHeight = n.height + i.fontSize / 2 + n.textMargin, i
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), i(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]{12}$/) && this.data[11] == s(this.data)
            }
        }, {
            key: "encode", value: function () {
                return this.options.flat ? this.flatEncoding() : this.guardedEncoding()
            }
        }, {
            key: "flatEncoding", value: function () {
                var e = "";
                return e += "101", e += (0, r.default)(this.data.substr(0, 6), "LLLLLL"), e += "01010", e += (0, r.default)(this.data.substr(6, 6), "RRRRRR"), {
                    data: e += "101",
                    text: this.text
                }
            }
        }, {
            key: "guardedEncoding", value: function () {
                var e = [];
                return this.displayValue && e.push({
                    data: "00000000",
                    text: this.text.substr(0, 1),
                    options: {textAlign: "left", fontSize: this.fontSize}
                }), e.push({
                    data: "101" + (0, r.default)(this.data[0], "L"),
                    options: {height: this.guardHeight}
                }), e.push({
                    data: (0, r.default)(this.data.substr(1, 5), "LLLLL"),
                    text: this.text.substr(1, 5),
                    options: {fontSize: this.fontSize}
                }), e.push({
                    data: "01010",
                    options: {height: this.guardHeight}
                }), e.push({
                    data: (0, r.default)(this.data.substr(6, 5), "RRRRR"),
                    text: this.text.substr(6, 5),
                    options: {fontSize: this.fontSize}
                }), e.push({
                    data: (0, r.default)(this.data[11], "R") + "101",
                    options: {height: this.guardHeight}
                }), this.displayValue && e.push({
                    data: "00000000",
                    text: this.text.substr(11, 1),
                    options: {textAlign: "right", fontSize: this.fontSize}
                }), e
            }
        }]), t
    }(o(n(18)).default);

    function s(e) {
        var t, n = 0;
        for (t = 1; t < 11; t += 2) n += parseInt(e[t]);
        for (t = 0; t < 11; t += 2) n += 3 * parseInt(e[t]);
        return (10 - n % 10) % 10
    }

    t.default = a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(247), a = n(18);

    function s(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function l(e, t) {
        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return !t || "object" != typeof t && "function" != typeof t ? e : t
    }

    var c = function (e) {
        function t() {
            return s(this, t), l(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^([0-9]{2})+$/)
            }
        }, {
            key: "encode", value: function () {
                var e = this, t = this.data.match(/.{2}/g).map((function (t) {
                    return e.encodePair(t)
                })).join("");
                return {data: o.START_BIN + t + o.END_BIN, text: this.text}
            }
        }, {
            key: "encodePair", value: function (e) {
                var t = o.BINARIES[e[1]];
                return o.BINARIES[e[0]].split("").map((function (e, n) {
                    return ("1" === e ? "111" : "1") + ("1" === t[n] ? "000" : "0")
                })).join("")
            }
        }]), t
    }(((i = a) && i.__esModule ? i : {default: i}).default);
    t.default = c
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
        var t = ["width", "height", "textMargin", "fontSize", "margin", "marginTop", "marginBottom", "marginLeft", "marginRight"];
        for (var n in t) t.hasOwnProperty(n) && (n = t[n], "string" == typeof e[n] && (e[n] = parseInt(e[n], 10)));
        "string" == typeof e.displayValue && (e.displayValue = "false" != e.displayValue);
        return e
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = {
        width: 2,
        height: 100,
        format: "auto",
        displayValue: !0,
        fontOptions: "",
        font: "monospace",
        text: void 0,
        textAlign: "center",
        textPosition: "bottom",
        textMargin: 2,
        fontSize: 20,
        background: "#ffffff",
        lineColor: "#000000",
        margin: 10,
        marginTop: void 0,
        marginBottom: void 0,
        marginLeft: void 0,
        marginRight: void 0,
        valid: function () {
        }
    };
    t.default = i
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.getTotalWidthOfEncodings = t.calculateEncodingAttributes = t.getBarcodePadding = t.getEncodingHeight = t.getMaximumHeightOfEncodings = void 0;
    var i, r = n(79), o = (i = r) && i.__esModule ? i : {default: i};

    function a(e, t) {
        return t.height + (t.displayValue && e.text.length > 0 ? t.fontSize + t.textMargin : 0) + t.marginTop + t.marginBottom
    }

    function s(e, t, n) {
        if (n.displayValue && t < e) {
            if ("center" == n.textAlign) return Math.floor((e - t) / 2);
            if ("left" == n.textAlign) return 0;
            if ("right" == n.textAlign) return Math.floor(e - t)
        }
        return 0
    }

    function l(e, t, n) {
        var i;
        if (n) i = n; else {
            if ("undefined" == typeof document) return 0;
            i = document.createElement("canvas").getContext("2d")
        }
        return i.font = t.fontOptions + " " + t.fontSize + "px " + t.font, i.measureText(e).width
    }

    t.getMaximumHeightOfEncodings = function (e) {
        for (var t = 0, n = 0; n < e.length; n++) e[n].height > t && (t = e[n].height);
        return t
    }, t.getEncodingHeight = a, t.getBarcodePadding = s, t.calculateEncodingAttributes = function (e, t, n) {
        for (var i = 0; i < e.length; i++) {
            var r, c = e[i], u = (0, o.default)(t, c.options);
            r = u.displayValue ? l(c.text, u, n) : 0;
            var h = c.data.length * u.width;
            c.width = Math.ceil(Math.max(r, h)), c.height = a(c, u), c.barcodePadding = s(r, h, u)
        }
    }, t.getTotalWidthOfEncodings = function (e) {
        for (var t = 0, n = 0; n < e.length; n++) t += e[n].width;
        return t
    }
}, function (e, t, n) {
    "use strict";

    function i(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function r(e, t) {
        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return !t || "object" != typeof t && "function" != typeof t ? e : t
    }

    function o(e, t) {
        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
        e.prototype = Object.create(t && t.prototype, {
            constructor: {
                value: e,
                enumerable: !1,
                writable: !0,
                configurable: !0
            }
        }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
    }

    Object.defineProperty(t, "__esModule", {value: !0});
    var a = function (e) {
        function t(e, n) {
            i(this, t);
            var o = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
            return o.name = "InvalidInputException", o.symbology = e, o.input = n, o.message = '"' + o.input + '" is not a valid input for ' + o.symbology, o
        }

        return o(t, Error), t
    }(), s = function (e) {
        function t() {
            i(this, t);
            var e = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
            return e.name = "InvalidElementException", e.message = "Not supported type to render on", e
        }

        return o(t, Error), t
    }(), l = function (e) {
        function t() {
            i(this, t);
            var e = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this));
            return e.name = "NoElementException", e.message = "No element to render on.", e
        }

        return o(t, Error), t
    }();
    t.InvalidInputException = a, t.InvalidElementException = s, t.NoElementException = l
}, function (e, t) {
    var n = 2311;
    e.exports = function () {
        return n++
    }
}, function (e, t, n) {
    var i = n(12), r = n(268).buildTransformer, o = [];

    function a(e, t, n, o, a) {
        if (t.getBoundingClientRect && i.domSupported && !s(t)) {
            var l = t.___zrEVENTSAVED || (t.___zrEVENTSAVED = {}), c = function (e, t, n) {
                for (var i = n ? "invTrans" : "trans", o = t[i], a = t.srcCoords, s = !0, l = [], c = [], u = 0; u < 4; u++) {
                    var h = e[u].getBoundingClientRect(), d = 2 * u, f = h.left, g = h.top;
                    l.push(f, g), s = s && a && f === a[d] && g === a[d + 1], c.push(e[u].offsetLeft, e[u].offsetTop)
                }
                return s && o ? o : (t.srcCoords = l, t[i] = n ? r(c, l) : r(l, c))
            }(function (e, t) {
                var n = t.markers;
                if (n) return n;
                n = t.markers = [];
                for (var i = ["left", "right"], r = ["top", "bottom"], o = 0; o < 4; o++) {
                    var a = document.createElement("div"), s = a.style, l = o % 2, c = (o >> 1) % 2;
                    s.cssText = ["position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", i[l] + ":0", r[c] + ":0", i[1 - l] + ":auto", r[1 - c] + ":auto", ""].join("!important;"), e.appendChild(a), n.push(a)
                }
                return n
            }(t, l), l, a);
            if (c) return c(e, n, o), !0
        }
        return !1
    }

    function s(e) {
        return "CANVAS" === e.nodeName.toUpperCase()
    }

    t.transformLocalCoord = function (e, t, n, i, r) {
        return a(o, t, i, r, !0) && a(e, n, o[0], o[1])
    }, t.transformCoordWithViewport = a, t.isCanvasEl = s
}, function (e, t, n) {
    var i = n(144), r = n(37), o = n(81), a = n(271), s = n(1), l = function (e) {
        o.call(this, e), r.call(this, e), a.call(this, e), this.id = e.id || i()
    };
    l.prototype = {
        type: "element", name: "", __zr: null, ignore: !1, clipPath: null, isGroup: !1, drift: function (e, t) {
            switch (this.draggable) {
                case"horizontal":
                    t = 0;
                    break;
                case"vertical":
                    e = 0
            }
            var n = this.transform;
            n || (n = this.transform = [1, 0, 0, 1, 0, 0]), n[4] += e, n[5] += t, this.decomposeTransform(), this.dirty(!1)
        }, beforeUpdate: function () {
        }, afterUpdate: function () {
        }, update: function () {
            this.updateTransform()
        }, traverse: function (e, t) {
        }, attrKV: function (e, t) {
            if ("position" === e || "scale" === e || "origin" === e) {
                if (t) {
                    var n = this[e];
                    n || (n = this[e] = []), n[0] = t[0], n[1] = t[1]
                }
            } else this[e] = t
        }, hide: function () {
            this.ignore = !0, this.__zr && this.__zr.refresh()
        }, show: function () {
            this.ignore = !1, this.__zr && this.__zr.refresh()
        }, attr: function (e, t) {
            if ("string" == typeof e) this.attrKV(e, t); else if (s.isObject(e)) for (var n in e) e.hasOwnProperty(n) && this.attrKV(n, e[n]);
            return this.dirty(!1), this
        }, setClipPath: function (e) {
            var t = this.__zr;
            t && e.addSelfToZr(t), this.clipPath && this.clipPath !== e && this.removeClipPath(), this.clipPath = e, e.__zr = t, e.__clipTarget = this, this.dirty(!1)
        }, removeClipPath: function () {
            var e = this.clipPath;
            e && (e.__zr && e.removeSelfFromZr(e.__zr), e.__zr = null, e.__clipTarget = null, this.clipPath = null, this.dirty(!1))
        }, addSelfToZr: function (e) {
            this.__zr = e;
            var t = this.animators;
            if (t) for (var n = 0; n < t.length; n++) e.animation.addAnimator(t[n]);
            this.clipPath && this.clipPath.addSelfToZr(e)
        }, removeSelfFromZr: function (e) {
            this.__zr = null;
            var t = this.animators;
            if (t) for (var n = 0; n < t.length; n++) e.animation.removeAnimator(t[n]);
            this.clipPath && this.clipPath.removeSelfFromZr(e)
        }
    }, s.mixin(l, a), s.mixin(l, o), s.mixin(l, r);
    var c = l;
    e.exports = c
}, function (e, t, n) {
    var i = n(272), r = n(25), o = n(1).isArrayLike, a = Array.prototype.slice;

    function s(e, t) {
        return e[t]
    }

    function l(e, t, n) {
        e[t] = n
    }

    function c(e, t, n) {
        return (t - e) * n + e
    }

    function u(e, t, n) {
        return n > .5 ? t : e
    }

    function h(e, t, n, i, r) {
        var o = e.length;
        if (1 === r) for (var a = 0; a < o; a++) i[a] = c(e[a], t[a], n); else {
            var s = o && e[0].length;
            for (a = 0; a < o; a++) for (var l = 0; l < s; l++) i[a][l] = c(e[a][l], t[a][l], n)
        }
    }

    function d(e, t, n) {
        var i = e.length, r = t.length;
        if (i !== r) if (i > r) e.length = r; else for (var o = i; o < r; o++) e.push(1 === n ? t[o] : a.call(t[o]));
        var s = e[0] && e[0].length;
        for (o = 0; o < e.length; o++) if (1 === n) isNaN(e[o]) && (e[o] = t[o]); else for (var l = 0; l < s; l++) isNaN(e[o][l]) && (e[o][l] = t[o][l])
    }

    function f(e, t, n) {
        if (e === t) return !0;
        var i = e.length;
        if (i !== t.length) return !1;
        if (1 === n) {
            for (var r = 0; r < i; r++) if (e[r] !== t[r]) return !1
        } else {
            var o = e[0].length;
            for (r = 0; r < i; r++) for (var a = 0; a < o; a++) if (e[r][a] !== t[r][a]) return !1
        }
        return !0
    }

    function g(e, t, n, i, r, o, a, s, l) {
        var c = e.length;
        if (1 === l) for (var u = 0; u < c; u++) s[u] = p(e[u], t[u], n[u], i[u], r, o, a); else {
            var h = e[0].length;
            for (u = 0; u < c; u++) for (var d = 0; d < h; d++) s[u][d] = p(e[u][d], t[u][d], n[u][d], i[u][d], r, o, a)
        }
    }

    function p(e, t, n, i, r, o, a) {
        var s = .5 * (n - e), l = .5 * (i - t);
        return (2 * (t - n) + s + l) * a + (-3 * (t - n) - 2 * s - l) * o + s * r + t
    }

    function m(e) {
        if (o(e)) {
            var t = e.length;
            if (o(e[0])) {
                for (var n = [], i = 0; i < t; i++) n.push(a.call(e[i]));
                return n
            }
            return a.call(e)
        }
        return e
    }

    function v(e) {
        return e[0] = Math.floor(e[0]), e[1] = Math.floor(e[1]), e[2] = Math.floor(e[2]), "rgba(" + e.join(",") + ")"
    }

    function y(e, t, n, a, s, l) {
        var m = e._getter, y = e._setter, b = "spline" === t, C = a.length;
        if (C) {
            var w, I = a[0].value, x = o(I), A = !1, _ = !1, S = x ? function (e) {
                var t = e[e.length - 1].value;
                return o(t && t[0]) ? 2 : 1
            }(a) : 0;
            a.sort((function (e, t) {
                return e.time - t.time
            })), w = a[C - 1].time;
            for (var k = [], L = [], T = a[0].value, O = !0, R = 0; R < C; R++) {
                k.push(a[R].time / w);
                var E = a[R].value;
                if (x && f(E, T, S) || !x && E === T || (O = !1), T = E, "string" == typeof E) {
                    var P = r.parse(E);
                    P ? (E = P, A = !0) : _ = !0
                }
                L.push(E)
            }
            if (l || !O) {
                var M = L[C - 1];
                for (R = 0; R < C - 1; R++) x ? d(L[R], M, S) : !isNaN(L[R]) || isNaN(M) || _ || A || (L[R] = M);
                x && d(m(e._target, s), M, S);
                var N, D, B, j, F, H = 0, W = 0;
                if (A) var V = [0, 0, 0, 0];
                var G = new i({
                    target: e._target, life: w, loop: e._loop, delay: e._delay, onframe: function (e, t) {
                        var n;
                        if (t < 0) n = 0; else if (t < W) {
                            for (n = Math.min(H + 1, C - 1); n >= 0 && !(k[n] <= t); n--) ;
                            n = Math.min(n, C - 2)
                        } else {
                            for (n = H; n < C && !(k[n] > t); n++) ;
                            n = Math.min(n - 1, C - 2)
                        }
                        H = n, W = t;
                        var i = k[n + 1] - k[n];
                        if (0 !== i) if (N = (t - k[n]) / i, b) if (B = L[n], D = L[0 === n ? n : n - 1], j = L[n > C - 2 ? C - 1 : n + 1], F = L[n > C - 3 ? C - 1 : n + 2], x) g(D, B, j, F, N, N * N, N * N * N, m(e, s), S); else {
                            if (A) r = g(D, B, j, F, N, N * N, N * N * N, V, 1), r = v(V); else {
                                if (_) return u(B, j, N);
                                r = p(D, B, j, F, N, N * N, N * N * N)
                            }
                            y(e, s, r)
                        } else if (x) h(L[n], L[n + 1], N, m(e, s), S); else {
                            var r;
                            if (A) h(L[n], L[n + 1], N, V, 1), r = v(V); else {
                                if (_) return u(L[n], L[n + 1], N);
                                r = c(L[n], L[n + 1], N)
                            }
                            y(e, s, r)
                        }
                    }, ondestroy: n
                });
                return t && "spline" !== t && (G.easing = t), G
            }
        }
    }

    var b = function (e, t, n, i) {
        this._tracks = {}, this._target = e, this._loop = t || !1, this._getter = n || s, this._setter = i || l, this._clipCount = 0, this._delay = 0, this._doneList = [], this._onframeList = [], this._clipList = []
    };
    b.prototype = {
        when: function (e, t) {
            var n = this._tracks;
            for (var i in t) if (t.hasOwnProperty(i)) {
                if (!n[i]) {
                    n[i] = [];
                    var r = this._getter(this._target, i);
                    if (null == r) continue;
                    0 !== e && n[i].push({time: 0, value: m(r)})
                }
                n[i].push({time: e, value: t[i]})
            }
            return this
        }, during: function (e) {
            return this._onframeList.push(e), this
        }, pause: function () {
            for (var e = 0; e < this._clipList.length; e++) this._clipList[e].pause();
            this._paused = !0
        }, resume: function () {
            for (var e = 0; e < this._clipList.length; e++) this._clipList[e].resume();
            this._paused = !1
        }, isPaused: function () {
            return !!this._paused
        }, _doneCallback: function () {
            this._tracks = {}, this._clipList.length = 0;
            for (var e = this._doneList, t = e.length, n = 0; n < t; n++) e[n].call(this)
        }, start: function (e, t) {
            var n, i = this, r = 0, o = function () {
                --r || i._doneCallback()
            };
            for (var a in this._tracks) if (this._tracks.hasOwnProperty(a)) {
                var s = y(this, e, o, this._tracks[a], a, t);
                s && (this._clipList.push(s), r++, this.animation && this.animation.addClip(s), n = s)
            }
            if (n) {
                var l = n.onframe;
                n.onframe = function (e, t) {
                    l(e, t);
                    for (var n = 0; n < i._onframeList.length; n++) i._onframeList[n](e, t)
                }
            }
            return r || this._doneCallback(), this
        }, stop: function (e) {
            for (var t = this._clipList, n = this.animation, i = 0; i < t.length; i++) {
                var r = t[i];
                e && r.onframe(this._target, 1), n && n.removeClip(r)
            }
            t.length = 0
        }, delay: function (e) {
            return this._delay = e, this
        }, done: function (e) {
            return e && this._doneList.push(e), this
        }, getClips: function () {
            return this._clipList
        }
    };
    var C = b;
    e.exports = C
}, function (e, t) {
    var n = function () {
        this.head = null, this.tail = null, this._len = 0
    }, i = n.prototype;
    i.insert = function (e) {
        var t = new r(e);
        return this.insertEntry(t), t
    }, i.insertEntry = function (e) {
        this.head ? (this.tail.next = e, e.prev = this.tail, e.next = null, this.tail = e) : this.head = this.tail = e, this._len++
    }, i.remove = function (e) {
        var t = e.prev, n = e.next;
        t ? t.next = n : this.head = n, n ? n.prev = t : this.tail = t, e.next = e.prev = null, this._len--
    }, i.len = function () {
        return this._len
    }, i.clear = function () {
        this.head = this.tail = null, this._len = 0
    };
    var r = function (e) {
        this.value = e, this.next, this.prev
    }, o = function (e) {
        this._list = new n, this._map = {}, this._maxSize = e || 10, this._lastRemovedEntry = null
    }, a = o.prototype;
    a.put = function (e, t) {
        var n = this._list, i = this._map, o = null;
        if (null == i[e]) {
            var a = n.len(), s = this._lastRemovedEntry;
            if (a >= this._maxSize && a > 0) {
                var l = n.head;
                n.remove(l), delete i[l.key], o = l.value, this._lastRemovedEntry = l
            }
            s ? s.value = t : s = new r(t), s.key = e, n.insertEntry(s), i[e] = s
        }
        return o
    }, a.get = function (e) {
        var t = this._map[e], n = this._list;
        if (null != t) return t !== n.tail && (n.remove(t), n.insertEntry(t)), t.value
    }, a.clear = function () {
        this._list.clear(), this._map = {}
    };
    var s = o;
    e.exports = s
}, function (e, t) {
    var n = {
        shadowBlur: 1,
        shadowOffsetX: 1,
        shadowOffsetY: 1,
        textShadowBlur: 1,
        textShadowOffsetX: 1,
        textShadowOffsetY: 1,
        textBoxShadowBlur: 1,
        textBoxShadowOffsetX: 1,
        textBoxShadowOffsetY: 1
    };
    e.exports = function (e, t, i) {
        return n.hasOwnProperty(t) ? i * e.dpr : i
    }
}, function (e, t) {
    var n = function (e, t) {
        this.image = e, this.repeat = t, this.type = "pattern"
    };
    n.prototype.getCanvasPattern = function (e) {
        return e.createPattern(this.image, this.repeat || "repeat")
    };
    var i = n;
    e.exports = i
}, function (e, t) {
    var n = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (e) {
        setTimeout(e, 16)
    };
    e.exports = n
}, function (e, t, n) {
    var i = n(84), r = n(10), o = n(83).WILL_BE_RESTORED, a = new r, s = function () {
    };
    s.prototype = {
        constructor: s, drawRectText: function (e, t) {
            var n = this.style;
            t = n.textRect || t, this.__dirty && i.normalizeTextStyle(n, !0);
            var r = n.text;
            if (null != r && (r += ""), i.needDrawText(r, n)) {
                e.save();
                var s = this.transform;
                n.transformText ? this.setTransform(e) : s && (a.copy(t), a.applyTransform(s), t = a), i.renderText(this, e, r, n, t, o), e.restore()
            }
        }
    };
    var l = s;
    e.exports = l
}, function (e, t) {
    t.buildPath = function (e, t) {
        var n, i, r, o, a, s = t.x, l = t.y, c = t.width, u = t.height, h = t.r;
        c < 0 && (s += c, c = -c), u < 0 && (l += u, u = -u), "number" == typeof h ? n = i = r = o = h : h instanceof Array ? 1 === h.length ? n = i = r = o = h[0] : 2 === h.length ? (n = r = h[0], i = o = h[1]) : 3 === h.length ? (n = h[0], i = o = h[1], r = h[2]) : (n = h[0], i = h[1], r = h[2], o = h[3]) : n = i = r = o = 0, n + i > c && (n *= c / (a = n + i), i *= c / a), r + o > c && (r *= c / (a = r + o), o *= c / a), i + r > u && (i *= u / (a = i + r), r *= u / a), n + o > u && (n *= u / (a = n + o), o *= u / a), e.moveTo(s + n, l), e.lineTo(s + c - i, l), 0 !== i && e.arc(s + c - i, l + i, i, -Math.PI / 2, 0), e.lineTo(s + c, l + u - r), 0 !== r && e.arc(s + c - r, l + u - r, r, 0, Math.PI / 2), e.lineTo(s + o, l + u), 0 !== o && e.arc(s + o, l + u - o, o, Math.PI / 2, Math.PI), e.lineTo(s, l + n), 0 !== n && e.arc(s + n, l + n, n, Math.PI, 1.5 * Math.PI)
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = i.each, o = i.filter, a = i.map, s = i.isArray, l = i.indexOf, c = i.isObject, u = i.isString,
        h = i.createHashMap, d = i.assert, f = i.clone, g = i.merge, p = i.extend, m = i.mixin, v = n(5), y = n(13),
        b = n(14), C = n(295), w = n(166), I = n(29).resetSourceDefaulter, x = y.extend({
            init: function (e, t, n, i) {
                n = n || {}, this.option = null, this._theme = new y(n), this._optionManager = i
            }, setOption: function (e, t) {
                d(!("\0_ec_inner" in e), "please use chart.getOption()"), this._optionManager.setOption(e, t), this.resetOption(null)
            }, resetOption: function (e) {
                var t = !1, n = this._optionManager;
                if (!e || "recreate" === e) {
                    var i = n.mountOption("recreate" === e);
                    this.option && "recreate" !== e ? (this.restoreData(), this.mergeOption(i)) : A.call(this, i), t = !0
                }
                if ("timeline" !== e && "media" !== e || this.restoreData(), !e || "recreate" === e || "timeline" === e) {
                    var o = n.getTimelineOption(this);
                    o && (this.mergeOption(o), t = !0)
                }
                if (!e || "recreate" === e || "media" === e) {
                    var a = n.getMediaOption(this, this._api);
                    a.length && r(a, (function (e) {
                        this.mergeOption(e, t = !0)
                    }), this)
                }
                return t
            }, mergeOption: function (e) {
                var t = this.option, n = this._componentsMap, i = [];
                I(this), r(e, (function (e, n) {
                    null != e && (b.hasClass(n) ? n && i.push(n) : t[n] = null == t[n] ? f(e) : g(t[n], e, !0))
                })), b.topologicalTravel(i, b.getAllClassMainTypes(), (function (i, o) {
                    var a = v.normalizeToArray(e[i]), l = v.mappingToExists(n.get(i), a);
                    v.makeIdAndName(l), r(l, (function (e, t) {
                        var n = e.option;
                        c(n) && (e.keyInfo.mainType = i, e.keyInfo.subType = function (e, t, n) {
                            return t.type ? t.type : n ? n.subType : b.determineSubType(e, t)
                        }(i, n, e.exist))
                    }));
                    var u = function (e, t) {
                        s(t) || (t = t ? [t] : []);
                        var n = {};
                        return r(t, (function (t) {
                            n[t] = (e.get(t) || []).slice()
                        })), n
                    }(n, o);
                    t[i] = [], n.set(i, []), r(l, (function (e, r) {
                        var o = e.exist, a = e.option;
                        if (d(c(a) || o, "Empty component definition"), a) {
                            var s = b.getClass(i, e.keyInfo.subType, !0);
                            if (o && o.constructor === s) o.name = e.keyInfo.name, o.mergeOption(a, this), o.optionUpdated(a, !1); else {
                                var l = p({dependentModels: u, componentIndex: r}, e.keyInfo);
                                o = new s(a, this, this, l), p(o, l), o.init(a, this, this, l), o.optionUpdated(null, !0)
                            }
                        } else o.mergeOption({}, this), o.optionUpdated({}, !1);
                        n.get(i)[r] = o, t[i][r] = o.option
                    }), this), "series" === i && _(this, n.get("series"))
                }), this), this._seriesIndicesMap = h(this._seriesIndices = this._seriesIndices || [])
            }, getOption: function () {
                var e = f(this.option);
                return r(e, (function (t, n) {
                    if (b.hasClass(n)) {
                        for (var i = (t = v.normalizeToArray(t)).length - 1; i >= 0; i--) v.isIdInner(t[i]) && t.splice(i, 1);
                        e[n] = t
                    }
                })), delete e["\0_ec_inner"], e
            }, getTheme: function () {
                return this._theme
            }, getComponent: function (e, t) {
                var n = this._componentsMap.get(e);
                if (n) return n[t || 0]
            }, queryComponents: function (e) {
                var t = e.mainType;
                if (!t) return [];
                var n, i = e.index, r = e.id, c = e.name, u = this._componentsMap.get(t);
                if (!u || !u.length) return [];
                if (null != i) s(i) || (i = [i]), n = o(a(i, (function (e) {
                    return u[e]
                })), (function (e) {
                    return !!e
                })); else if (null != r) {
                    var h = s(r);
                    n = o(u, (function (e) {
                        return h && l(r, e.id) >= 0 || !h && e.id === r
                    }))
                } else if (null != c) {
                    var d = s(c);
                    n = o(u, (function (e) {
                        return d && l(c, e.name) >= 0 || !d && e.name === c
                    }))
                } else n = u.slice();
                return S(n, e)
            }, findComponents: function (e) {
                var t, n, i, r, a, s = e.query, l = e.mainType,
                    c = (n = l + "Index", i = l + "Id", r = l + "Name", !(t = s) || null == t[n] && null == t[i] && null == t[r] ? null : {
                        mainType: l,
                        index: t[n],
                        id: t[i],
                        name: t[r]
                    }), u = c ? this.queryComponents(c) : this._componentsMap.get(l);
                return a = S(u, e), e.filter ? o(a, e.filter) : a
            }, eachComponent: function (e, t, n) {
                var i = this._componentsMap;
                if ("function" == typeof e) n = t, t = e, i.each((function (e, i) {
                    r(e, (function (e, r) {
                        t.call(n, i, e, r)
                    }))
                })); else if (u(e)) r(i.get(e), t, n); else if (c(e)) {
                    var o = this.findComponents(e);
                    r(o, t, n)
                }
            }, getSeriesByName: function (e) {
                var t = this._componentsMap.get("series");
                return o(t, (function (t) {
                    return t.name === e
                }))
            }, getSeriesByIndex: function (e) {
                return this._componentsMap.get("series")[e]
            }, getSeriesByType: function (e) {
                var t = this._componentsMap.get("series");
                return o(t, (function (t) {
                    return t.subType === e
                }))
            }, getSeries: function () {
                return this._componentsMap.get("series").slice()
            }, getSeriesCount: function () {
                return this._componentsMap.get("series").length
            }, eachSeries: function (e, t) {
                r(this._seriesIndices, (function (n) {
                    var i = this._componentsMap.get("series")[n];
                    e.call(t, i, n)
                }), this)
            }, eachRawSeries: function (e, t) {
                r(this._componentsMap.get("series"), e, t)
            }, eachSeriesByType: function (e, t, n) {
                r(this._seriesIndices, (function (i) {
                    var r = this._componentsMap.get("series")[i];
                    r.subType === e && t.call(n, r, i)
                }), this)
            }, eachRawSeriesByType: function (e, t, n) {
                return r(this.getSeriesByType(e), t, n)
            }, isSeriesFiltered: function (e) {
                return null == this._seriesIndicesMap.get(e.componentIndex)
            }, getCurrentSeriesIndices: function () {
                return (this._seriesIndices || []).slice()
            }, filterSeries: function (e, t) {
                _(this, o(this._componentsMap.get("series"), e, t))
            }, restoreData: function (e) {
                var t = this._componentsMap;
                _(this, t.get("series"));
                var n = [];
                t.each((function (e, t) {
                    n.push(t)
                })), b.topologicalTravel(n, b.getAllClassMainTypes(), (function (n, i) {
                    r(t.get(n), (function (t) {
                        ("series" !== n || !function (e, t) {
                            if (t) {
                                var n = t.seiresIndex, i = t.seriesId, r = t.seriesName;
                                return null != n && e.componentIndex !== n || null != i && e.id !== i || null != r && e.name !== r
                            }
                        }(t, e)) && t.restoreData()
                    }))
                }))
            }
        });

    function A(e) {
        var t, n, i;
        e = e, this.option = {}, this.option["\0_ec_inner"] = 1, this._componentsMap = h({series: []}), this._seriesIndices, this._seriesIndicesMap, t = e, n = this._theme.option, i = t.color && !t.colorLayer, r(n, (function (e, n) {
            "colorLayer" === n && i || b.hasClass(n) || ("object" == typeof e ? t[n] = t[n] ? g(t[n], e, !1) : f(e) : null == t[n] && (t[n] = e))
        })), g(e, C, !1), this.mergeOption(e)
    }

    function _(e, t) {
        e._seriesIndicesMap = h(e._seriesIndices = a(t, (function (e) {
            return e.componentIndex
        })) || [])
    }

    function S(e, t) {
        return t.hasOwnProperty("subType") ? o(e, (function (e) {
            return e.subType === t.subType
        })) : e
    }

    m(x, w);
    var k = x;
    e.exports = k
}, function (e, t, n) {
    var i = n(11), r = n(48), o = n(284), a = Math.sqrt, s = Math.sin, l = Math.cos, c = Math.PI, u = function (e) {
        return Math.sqrt(e[0] * e[0] + e[1] * e[1])
    }, h = function (e, t) {
        return (e[0] * t[0] + e[1] * t[1]) / (u(e) * u(t))
    }, d = function (e, t) {
        return (e[0] * t[1] < e[1] * t[0] ? -1 : 1) * Math.acos(h(e, t))
    };

    function f(e, t, n, i, r, o, u, f, g, p, m) {
        var v = g * (c / 180), y = l(v) * (e - n) / 2 + s(v) * (t - i) / 2,
            b = -1 * s(v) * (e - n) / 2 + l(v) * (t - i) / 2, C = y * y / (u * u) + b * b / (f * f);
        C > 1 && (u *= a(C), f *= a(C));
        var w = (r === o ? -1 : 1) * a((u * u * (f * f) - u * u * (b * b) - f * f * (y * y)) / (u * u * (b * b) + f * f * (y * y))) || 0,
            I = w * u * b / f, x = w * -f * y / u, A = (e + n) / 2 + l(v) * I - s(v) * x,
            _ = (t + i) / 2 + s(v) * I + l(v) * x, S = d([1, 0], [(y - I) / u, (b - x) / f]),
            k = [(y - I) / u, (b - x) / f], L = [(-1 * y - I) / u, (-1 * b - x) / f], T = d(k, L);
        h(k, L) <= -1 && (T = c), h(k, L) >= 1 && (T = 0), 0 === o && T > 0 && (T -= 2 * c), 1 === o && T < 0 && (T += 2 * c), m.addData(p, A, _, u, f, S, T, v, o)
    }

    var g = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi, p = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;

    function m(e, t) {
        var n = function (e) {
            if (!e) return new r;
            for (var t, n = 0, i = 0, o = n, a = i, s = new r, l = r.CMD, c = e.match(g), u = 0; u < c.length; u++) {
                for (var h, d = c[u], m = d.charAt(0), v = d.match(p) || [], y = v.length, b = 0; b < y; b++) v[b] = parseFloat(v[b]);
                for (var C = 0; C < y;) {
                    var w, I, x, A, _, S, k, L = n, T = i;
                    switch (m) {
                        case"l":
                            n += v[C++], i += v[C++], h = l.L, s.addData(h, n, i);
                            break;
                        case"L":
                            n = v[C++], i = v[C++], h = l.L, s.addData(h, n, i);
                            break;
                        case"m":
                            n += v[C++], i += v[C++], h = l.M, s.addData(h, n, i), o = n, a = i, m = "l";
                            break;
                        case"M":
                            n = v[C++], i = v[C++], h = l.M, s.addData(h, n, i), o = n, a = i, m = "L";
                            break;
                        case"h":
                            n += v[C++], h = l.L, s.addData(h, n, i);
                            break;
                        case"H":
                            n = v[C++], h = l.L, s.addData(h, n, i);
                            break;
                        case"v":
                            i += v[C++], h = l.L, s.addData(h, n, i);
                            break;
                        case"V":
                            i = v[C++], h = l.L, s.addData(h, n, i);
                            break;
                        case"C":
                            h = l.C, s.addData(h, v[C++], v[C++], v[C++], v[C++], v[C++], v[C++]), n = v[C - 2], i = v[C - 1];
                            break;
                        case"c":
                            h = l.C, s.addData(h, v[C++] + n, v[C++] + i, v[C++] + n, v[C++] + i, v[C++] + n, v[C++] + i), n += v[C - 2], i += v[C - 1];
                            break;
                        case"S":
                            w = n, I = i;
                            var O = s.len(), R = s.data;
                            t === l.C && (w += n - R[O - 4], I += i - R[O - 3]), h = l.C, L = v[C++], T = v[C++], n = v[C++], i = v[C++], s.addData(h, w, I, L, T, n, i);
                            break;
                        case"s":
                            w = n, I = i;
                            O = s.len(), R = s.data;
                            t === l.C && (w += n - R[O - 4], I += i - R[O - 3]), h = l.C, L = n + v[C++], T = i + v[C++], n += v[C++], i += v[C++], s.addData(h, w, I, L, T, n, i);
                            break;
                        case"Q":
                            L = v[C++], T = v[C++], n = v[C++], i = v[C++], h = l.Q, s.addData(h, L, T, n, i);
                            break;
                        case"q":
                            L = v[C++] + n, T = v[C++] + i, n += v[C++], i += v[C++], h = l.Q, s.addData(h, L, T, n, i);
                            break;
                        case"T":
                            w = n, I = i;
                            O = s.len(), R = s.data;
                            t === l.Q && (w += n - R[O - 4], I += i - R[O - 3]), n = v[C++], i = v[C++], h = l.Q, s.addData(h, w, I, n, i);
                            break;
                        case"t":
                            w = n, I = i;
                            O = s.len(), R = s.data;
                            t === l.Q && (w += n - R[O - 4], I += i - R[O - 3]), n += v[C++], i += v[C++], h = l.Q, s.addData(h, w, I, n, i);
                            break;
                        case"A":
                            x = v[C++], A = v[C++], _ = v[C++], S = v[C++], k = v[C++], f(L = n, T = i, n = v[C++], i = v[C++], S, k, x, A, _, h = l.A, s);
                            break;
                        case"a":
                            x = v[C++], A = v[C++], _ = v[C++], S = v[C++], k = v[C++], f(L = n, T = i, n += v[C++], i += v[C++], S, k, x, A, _, h = l.A, s)
                    }
                }
                "z" !== m && "Z" !== m || (h = l.Z, s.addData(h), n = o, i = a), t = h
            }
            return s.toStatic(), s
        }(e);
        return (t = t || {}).buildPath = function (e) {
            if (e.setData) {
                e.setData(n.data), (t = e.getContext()) && e.rebuildPath(t)
            } else {
                var t = e;
                n.rebuildPath(t)
            }
        }, t.applyTransform = function (e) {
            o(n, e), this.dirty(!0)
        }, t
    }

    t.createFromString = function (e, t) {
        return new i(m(e, t))
    }, t.extendFromString = function (e, t) {
        return i.extend(m(e, t))
    }, t.mergePath = function (e, t) {
        for (var n = [], r = e.length, o = 0; o < r; o++) {
            var a = e[o];
            a.path || a.createPathProxy(), a.__dirtyPath && a.buildPath(a.path, a.shape, !0), n.push(a.path)
        }
        var s = new i(t);
        return s.createPathProxy(), s.buildPath = function (e) {
            e.appendPath(n);
            var t = e.getContext();
            t && e.rebuildPath(t)
        }, s
    }
}, function (e, t) {
    t.containStroke = function (e, t, n, i, r, o, a) {
        if (0 === r) return !1;
        var s = r, l = 0;
        if (a > t + s && a > i + s || a < t - s && a < i - s || o > e + s && o > n + s || o < e - s && o < n - s) return !1;
        if (e === n) return Math.abs(o - e) <= s / 2;
        var c = (l = (t - i) / (e - n)) * o - a + (e * i - n * t) / (e - n);
        return c * c / (l * l + 1) <= s / 2 * s / 2
    }
}, function (e, t, n) {
    var i = n(31).quadraticProjectPoint;
    t.containStroke = function (e, t, n, r, o, a, s, l, c) {
        if (0 === s) return !1;
        var u = s;
        return !(c > t + u && c > r + u && c > a + u || c < t - u && c < r - u && c < a - u || l > e + u && l > n + u && l > o + u || l < e - u && l < n - u && l < o - u) && i(e, t, n, r, o, a, l, c, null) <= u / 2
    }
}, function (e, t) {
    var n = 2 * Math.PI;
    t.normalizeRadian = function (e) {
        return (e %= n) < 0 && (e += n), e
    }
}, function (e, t) {
    e.exports = function (e, t, n, i, r, o) {
        if (o > t && o > i || o < t && o < i) return 0;
        if (i === t) return 0;
        var a = i < t ? 1 : -1, s = (o - t) / (i - t);
        1 !== s && 0 !== s || (a = i < t ? .5 : -.5);
        var l = s * (n - e) + e;
        return l === r ? 1 / 0 : l > r ? a : 0
    }
}, function (e, t, n) {
    var i = n(11).extend({
        type: "circle", shape: {cx: 0, cy: 0, r: 0}, buildPath: function (e, t, n) {
            n && e.moveTo(t.cx + t.r, t.cy), e.arc(t.cx, t.cy, t.r, 0, 2 * Math.PI, !0)
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(12), r = [["shadowBlur", 0], ["shadowColor", "#000"], ["shadowOffsetX", 0], ["shadowOffsetY", 0]];
    e.exports = function (e) {
        return i.browser.ie && i.browser.version >= 11 ? function () {
            var t, n = this.__clipPaths, i = this.style;
            if (n) for (var o = 0; o < n.length; o++) {
                var a = n[o], s = a && a.shape, l = a && a.type;
                if (s && ("sector" === l && s.startAngle === s.endAngle || "rect" === l && (!s.width || !s.height))) {
                    for (var c = 0; c < r.length; c++) r[c][2] = i[r[c][0]], i[r[c][0]] = r[c][1];
                    t = !0;
                    break
                }
            }
            if (e.apply(this, arguments), t) for (c = 0; c < r.length; c++) i[r[c][0]] = r[c][2]
        } : e
    }
}, function (e, t, n) {
    var i = n(11), r = n(163), o = i.extend({
        type: "polygon",
        shape: {points: null, smooth: !1, smoothConstraint: null},
        buildPath: function (e, t) {
            r.buildPath(e, t, !0)
        }
    });
    e.exports = o
}, function (e, t, n) {
    var i = n(287), r = n(288);
    t.buildPath = function (e, t, n) {
        var o = t.points, a = t.smooth;
        if (o && o.length >= 2) {
            if (a && "spline" !== a) {
                var s = r(o, a, n, t.smoothConstraint);
                e.moveTo(o[0][0], o[0][1]);
                for (var l = o.length, c = 0; c < (n ? l : l - 1); c++) {
                    var u = s[2 * c], h = s[2 * c + 1], d = o[(c + 1) % l];
                    e.bezierCurveTo(u[0], u[1], h[0], h[1], d[0], d[1])
                }
            } else {
                "spline" === a && (o = i(o, n)), e.moveTo(o[0][0], o[0][1]);
                c = 1;
                for (var f = o.length; c < f; c++) e.lineTo(o[c][0], o[c][1])
            }
            n && e.closePath()
        }
    }
}, function (e, t, n) {
    var i = n(11), r = n(163), o = i.extend({
        type: "polyline",
        shape: {points: null, smooth: !1, smoothConstraint: null},
        style: {stroke: "#000", fill: null},
        buildPath: function (e, t) {
            r.buildPath(e, t, !1)
        }
    });
    e.exports = o
}, function (e, t, n) {
    var i = n(11), r = n(106).subPixelOptimizeLine, o = {}, a = i.extend({
        type: "line",
        shape: {x1: 0, y1: 0, x2: 0, y2: 0, percent: 1},
        style: {stroke: "#000", fill: null},
        buildPath: function (e, t) {
            var n, i, a, s;
            this.subPixelOptimize ? (r(o, t, this.style), n = o.x1, i = o.y1, a = o.x2, s = o.y2) : (n = t.x1, i = t.y1, a = t.x2, s = t.y2);
            var l = t.percent;
            0 !== l && (e.moveTo(n, i), l < 1 && (a = n * (1 - l) + a * l, s = i * (1 - l) + s * l), e.lineTo(a, s))
        },
        pointAt: function (e) {
            var t = this.shape;
            return [t.x1 * (1 - e) + t.x2 * e, t.y1 * (1 - e) + t.y2 * e]
        }
    });
    e.exports = a
}, function (e, t, n) {
    var i = n(5), r = i.makeInner, o = i.normalizeToArray, a = r();
    var s = {
        clearColorPalette: function () {
            a(this).colorIdx = 0, a(this).colorNameMap = {}
        }, getColorFromPalette: function (e, t, n) {
            var i = a(t = t || this), r = i.colorIdx || 0, s = i.colorNameMap = i.colorNameMap || {};
            if (s.hasOwnProperty(e)) return s[e];
            var l = o(this.get("color", !0)), c = this.get("colorLayer", !0), u = null != n && c ? function (e, t) {
                for (var n = e.length, i = 0; i < n; i++) if (e[i].length > t) return e[i];
                return e[n - 1]
            }(c, n) : l;
            if ((u = u || l) && u.length) {
                var h = u[r];
                return e && (s[e] = h), i.colorIdx = (r + 1) % u.length, h
            }
        }
    };
    e.exports = s
}, function (e, t, n) {
    var i = n(1),
        r = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel"];
    var o = function (e) {
        i.each(r, (function (t) {
            this[t] = i.bind(e[t], e)
        }), this)
    };
    e.exports = o
}, function (e, t, n) {
    var i = n(14), r = n(86), o = n(29).detectSourceFormat, a = n(66).SERIES_LAYOUT_BY_COLUMN;
    i.extend({
        type: "dataset",
        defaultOption: {seriesLayoutBy: a, sourceHeader: null, dimensions: null, source: null},
        optionUpdated: function () {
            o(this)
        }
    }), r.extend({type: "dataset"})
}, function (e, t, n) {
    var i = n(38), r = n(46), o = n(39), a = n(160), s = n(105), l = n(306), c = n(165), u = n(11), h = n(162),
        d = n(164), f = n(107), g = n(103), p = n(16), m = n(155).createFromString, v = n(1), y = v.isString,
        b = v.extend, C = v.defaults, w = v.trim, I = v.each, x = /[\s,]+/;

    function A(e) {
        y(e) && (e = (new DOMParser).parseFromString(e, "text/xml"));
        for (9 === e.nodeType && (e = e.firstChild); "svg" !== e.nodeName.toLowerCase() || 1 !== e.nodeType;) e = e.nextSibling;
        return e
    }

    function _() {
        this._defs = {}, this._root = null, this._isDefine = !1, this._isText = !1
    }

    _.prototype.parse = function (e, t) {
        t = t || {};
        var n = A(e);
        if (!n) throw new Error("Illegal svg");
        var r = new i;
        this._root = r;
        var o = n.getAttribute("viewBox") || "", a = parseFloat(n.getAttribute("width") || t.width),
            l = parseFloat(n.getAttribute("height") || t.height);
        isNaN(a) && (a = null), isNaN(l) && (l = null), R(n, r, null, !0);
        for (var c, u, h = n.firstChild; h;) this._parseNode(h, r), h = h.nextSibling;
        if (o) {
            var d = w(o).split(x);
            d.length >= 4 && (c = {
                x: parseFloat(d[0] || 0),
                y: parseFloat(d[1] || 0),
                width: parseFloat(d[2]),
                height: parseFloat(d[3])
            })
        }
        if (c && null != a && null != l && (u = D(c, a, l), !t.ignoreViewBox)) {
            var f = r;
            (r = new i).add(f), f.scale = u.scale.slice(), f.position = u.position.slice()
        }
        return t.ignoreRootClip || null == a || null == l || r.setClipPath(new s({
            shape: {
                x: 0,
                y: 0,
                width: a,
                height: l
            }
        })), {root: r, width: a, height: l, viewBoxRect: c, viewBoxTransform: u}
    }, _.prototype._parseNode = function (e, t) {
        var n, i, r = e.nodeName.toLowerCase();
        if ("defs" === r ? this._isDefine = !0 : "text" === r && (this._isText = !0), this._isDefine) {
            if (i = k[r]) {
                var o = i.call(this, e), a = e.getAttribute("id");
                a && (this._defs[a] = o)
            }
        } else (i = S[r]) && (n = i.call(this, e, t), t.add(n));
        for (var s = e.firstChild; s;) 1 === s.nodeType && this._parseNode(s, n), 3 === s.nodeType && this._isText && this._parseText(s, n), s = s.nextSibling;
        "defs" === r ? this._isDefine = !1 : "text" === r && (this._isText = !1)
    }, _.prototype._parseText = function (e, t) {
        if (1 === e.nodeType) {
            var n = e.getAttribute("dx") || 0, i = e.getAttribute("dy") || 0;
            this._textX += parseFloat(n), this._textY += parseFloat(i)
        }
        var r = new o({
            style: {text: e.textContent, transformText: !0},
            position: [this._textX || 0, this._textY || 0]
        });
        L(t, r), R(e, r, this._defs);
        var a = r.style.fontSize;
        a && a < 9 && (r.style.fontSize = 9, r.scale = r.scale || [1, 1], r.scale[0] *= a / 9, r.scale[1] *= a / 9);
        var s = r.getBoundingRect();
        return this._textX += s.width, t.add(r), r
    };
    var S = {
        g: function (e, t) {
            var n = new i;
            return L(t, n), R(e, n, this._defs), n
        }, rect: function (e, t) {
            var n = new s;
            return L(t, n), R(e, n, this._defs), n.setShape({
                x: parseFloat(e.getAttribute("x") || 0),
                y: parseFloat(e.getAttribute("y") || 0),
                width: parseFloat(e.getAttribute("width") || 0),
                height: parseFloat(e.getAttribute("height") || 0)
            }), n
        }, circle: function (e, t) {
            var n = new a;
            return L(t, n), R(e, n, this._defs), n.setShape({
                cx: parseFloat(e.getAttribute("cx") || 0),
                cy: parseFloat(e.getAttribute("cy") || 0),
                r: parseFloat(e.getAttribute("r") || 0)
            }), n
        }, line: function (e, t) {
            var n = new c;
            return L(t, n), R(e, n, this._defs), n.setShape({
                x1: parseFloat(e.getAttribute("x1") || 0),
                y1: parseFloat(e.getAttribute("y1") || 0),
                x2: parseFloat(e.getAttribute("x2") || 0),
                y2: parseFloat(e.getAttribute("y2") || 0)
            }), n
        }, ellipse: function (e, t) {
            var n = new l;
            return L(t, n), R(e, n, this._defs), n.setShape({
                cx: parseFloat(e.getAttribute("cx") || 0),
                cy: parseFloat(e.getAttribute("cy") || 0),
                rx: parseFloat(e.getAttribute("rx") || 0),
                ry: parseFloat(e.getAttribute("ry") || 0)
            }), n
        }, polygon: function (e, t) {
            var n = e.getAttribute("points");
            n && (n = T(n));
            var i = new h({shape: {points: n || []}});
            return L(t, i), R(e, i, this._defs), i
        }, polyline: function (e, t) {
            var n = new u;
            L(t, n), R(e, n, this._defs);
            var i = e.getAttribute("points");
            return i && (i = T(i)), new d({shape: {points: i || []}})
        }, image: function (e, t) {
            var n = new r;
            return L(t, n), R(e, n, this._defs), n.setStyle({
                image: e.getAttribute("xlink:href"),
                x: e.getAttribute("x"),
                y: e.getAttribute("y"),
                width: e.getAttribute("width"),
                height: e.getAttribute("height")
            }), n
        }, text: function (e, t) {
            var n = e.getAttribute("x") || 0, r = e.getAttribute("y") || 0, o = e.getAttribute("dx") || 0,
                a = e.getAttribute("dy") || 0;
            this._textX = parseFloat(n) + parseFloat(o), this._textY = parseFloat(r) + parseFloat(a);
            var s = new i;
            return L(t, s), R(e, s, this._defs), s
        }, tspan: function (e, t) {
            var n = e.getAttribute("x"), r = e.getAttribute("y");
            null != n && (this._textX = parseFloat(n)), null != r && (this._textY = parseFloat(r));
            var o = e.getAttribute("dx") || 0, a = e.getAttribute("dy") || 0, s = new i;
            return L(t, s), R(e, s, this._defs), this._textX += o, this._textY += a, s
        }, path: function (e, t) {
            var n = e.getAttribute("d") || "", i = m(n);
            return L(t, i), R(e, i, this._defs), i
        }
    }, k = {
        lineargradient: function (e) {
            var t = parseInt(e.getAttribute("x1") || 0, 10), n = parseInt(e.getAttribute("y1") || 0, 10),
                i = parseInt(e.getAttribute("x2") || 10, 10), r = parseInt(e.getAttribute("y2") || 0, 10),
                o = new f(t, n, i, r);
            return function (e, t) {
                var n = e.firstChild;
                for (; n;) {
                    if (1 === n.nodeType) {
                        var i = n.getAttribute("offset");
                        i = i.indexOf("%") > 0 ? parseInt(i, 10) / 100 : i ? parseFloat(i) : 0;
                        var r = n.getAttribute("stop-color") || "#000000";
                        t.addColorStop(i, r)
                    }
                    n = n.nextSibling
                }
            }(e, o), o
        }, radialgradient: function (e) {
        }
    };

    function L(e, t) {
        e && e.__inheritedStyle && (t.__inheritedStyle || (t.__inheritedStyle = {}), C(t.__inheritedStyle, e.__inheritedStyle))
    }

    function T(e) {
        for (var t = w(e).split(x), n = [], i = 0; i < t.length; i += 2) {
            var r = parseFloat(t[i]), o = parseFloat(t[i + 1]);
            n.push([r, o])
        }
        return n
    }

    var O = {
        fill: "fill",
        stroke: "stroke",
        "stroke-width": "lineWidth",
        opacity: "opacity",
        "fill-opacity": "fillOpacity",
        "stroke-opacity": "strokeOpacity",
        "stroke-dasharray": "lineDash",
        "stroke-dashoffset": "lineDashOffset",
        "stroke-linecap": "lineCap",
        "stroke-linejoin": "lineJoin",
        "stroke-miterlimit": "miterLimit",
        "font-family": "fontFamily",
        "font-size": "fontSize",
        "font-style": "fontStyle",
        "font-weight": "fontWeight",
        "text-align": "textAlign",
        "alignment-baseline": "textBaseline"
    };

    function R(e, t, n, i) {
        var r = t.__inheritedStyle || {}, o = "text" === t.type;
        if (1 === e.nodeType && (function (e, t) {
            var n = e.getAttribute("transform");
            if (n) {
                n = n.replace(/,/g, " ");
                var i = null, r = [];
                n.replace(M, (function (e, t, n) {
                    r.push(t, n)
                }));
                for (var o = r.length - 1; o > 0; o -= 2) {
                    var a = r[o], s = r[o - 1];
                    switch (i = i || p.create(), s) {
                        case"translate":
                            a = w(a).split(x), p.translate(i, i, [parseFloat(a[0]), parseFloat(a[1] || 0)]);
                            break;
                        case"scale":
                            a = w(a).split(x), p.scale(i, i, [parseFloat(a[0]), parseFloat(a[1] || a[0])]);
                            break;
                        case"rotate":
                            a = w(a).split(x), p.rotate(i, i, parseFloat(a[0]));
                            break;
                        case"skew":
                            a = w(a).split(x), console.warn("Skew transform is not supported yet");
                            break;
                        case"matrix":
                            a = w(a).split(x);
                            i[0] = parseFloat(a[0]), i[1] = parseFloat(a[1]), i[2] = parseFloat(a[2]), i[3] = parseFloat(a[3]), i[4] = parseFloat(a[4]), i[5] = parseFloat(a[5])
                    }
                }
                t.setLocalTransform(i)
            }
        }(e, t), b(r, function (e) {
            var t = e.getAttribute("style"), n = {};
            if (!t) return n;
            var i, r = {};
            N.lastIndex = 0;
            for (; null != (i = N.exec(t));) r[i[1]] = i[2];
            for (var o in O) O.hasOwnProperty(o) && null != r[o] && (n[O[o]] = r[o]);
            return n
        }(e)), !i)) for (var a in O) if (O.hasOwnProperty(a)) {
            var s = e.getAttribute(a);
            null != s && (r[O[a]] = s)
        }
        var l = o ? "textFill" : "fill", c = o ? "textStroke" : "stroke";
        t.style = t.style || new g;
        var u = t.style;
        null != r.fill && u.set(l, P(r.fill, n)), null != r.stroke && u.set(c, P(r.stroke, n)), I(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize"], (function (e) {
            var t = "lineWidth" === e && o ? "textStrokeWidth" : e;
            null != r[e] && u.set(t, parseFloat(r[e]))
        })), r.textBaseline && "auto" !== r.textBaseline || (r.textBaseline = "alphabetic"), "alphabetic" === r.textBaseline && (r.textBaseline = "bottom"), "start" === r.textAlign && (r.textAlign = "left"), "end" === r.textAlign && (r.textAlign = "right"), I(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline"], (function (e) {
            null != r[e] && u.set(e, r[e])
        })), r.lineDash && (t.style.lineDash = w(r.lineDash).split(x)), u[c] && "none" !== u[c] && (t[c] = !0), t.__inheritedStyle = r
    }

    var E = /url\(\s*#(.*?)\)/;

    function P(e, t) {
        var n = t && e && e.match(E);
        return n ? t[w(n[1])] : e
    }

    var M = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g;
    var N = /([^\s:;]+)\s*:\s*([^:;]+)/g;

    function D(e, t, n) {
        var i = t / e.width, r = n / e.height, o = Math.min(i, r);
        return {scale: [o, o], position: [-(e.x + e.width / 2) * o + t / 2, -(e.y + e.height / 2) * o + n / 2]}
    }

    t.parseXML = A, t.makeViewBoxTransform = D, t.parseSVG = function (e, t) {
        return (new _).parse(e, t)
    }
}, function (e, t, n) {
    var i = n(80);
    t.zrender = i;
    var r = n(16);
    t.matrix = r;
    var o = n(9);
    t.vector = o;
    var a = n(1), s = n(25);
    t.color = s;
    var l = n(3), c = n(4);
    t.number = c;
    var u = n(8);
    t.format = u;
    var h = n(32);
    h.throttle;
    t.throttle = h.throttle;
    var d = n(307);
    t.helper = d;
    var f = n(176);
    t.parseGeoJSON = f;
    var g = n(19);
    t.List = g;
    var p = n(13);
    t.Model = p;
    var m = n(34);
    t.Axis = m;
    var v = n(12);
    t.env = v;
    var y = f, b = {};
    a.each(["map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge"], (function (e) {
        b[e] = a[e]
    }));
    var C = {};
    a.each(["extendShape", "extendPath", "makePath", "makeImage", "mergePath", "resizePath", "createIcon", "setHoverStyle", "setLabelStyle", "setTextStyle", "setText", "getFont", "updateProps", "initProps", "getTransform", "clipPointsByRect", "clipRectByRect", "registerShape", "getShapeClass", "Group", "Image", "Text", "Circle", "Sector", "Ring", "Polygon", "Polyline", "Rect", "Line", "BezierCurve", "Arc", "IncrementalDisplayable", "CompoundPath", "LinearGradient", "RadialGradient", "BoundingRect"], (function (e) {
        C[e] = l[e]
    })), t.parseGeoJson = y, t.util = b, t.graphic = C
}, function (e, t, n) {
    var i = n(1);
    var r = function (e) {
        null != e && i.extend(this, e), this.otherDims = {}
    };
    e.exports = r
}, function (e, t, n) {
    var i = n(1), r = i.createHashMap, o = i.each, a = i.isString, s = i.defaults, l = i.extend, c = i.isObject,
        u = i.clone, h = n(5).normalizeToArray, d = n(29), f = d.guessOrdinal, g = d.BE_ORDINAL, p = n(65),
        m = n(67).OTHER_DIMENSIONS, v = n(171);

    function y(e, t, n) {
        if (n || null != t.get(e)) {
            for (var i = 0; null != t.get(e + i);) i++;
            e += i
        }
        return t.set(e, !0), e
    }

    var b = function (e, t, n) {
        p.isInstance(t) || (t = p.seriesDataToSource(t)), n = n || {}, e = (e || []).slice();
        for (var i = (n.dimsDef || []).slice(), d = r(), b = r(), C = [], w = function (e, t, n, i) {
            var r = Math.max(e.dimensionsDetectCount || 1, t.length, n.length, i || 0);
            return o(t, (function (e) {
                var t = e.dimsDef;
                t && (r = Math.max(r, t.length))
            })), r
        }(t, e, i, n.dimCount), I = 0; I < w; I++) {
            var x = i[I] = l({}, c(i[I]) ? i[I] : {name: i[I]}), A = x.name, _ = C[I] = new v;
            null != A && null == d.get(A) && (_.name = _.displayName = A, d.set(A, I)), null != x.type && (_.type = x.type), null != x.displayName && (_.displayName = x.displayName)
        }
        var S = n.encodeDef;
        !S && n.encodeDefaulter && (S = n.encodeDefaulter(t, w)), (S = r(S)).each((function (e, t) {
            if (1 === (e = h(e).slice()).length && !a(e[0]) && e[0] < 0) S.set(t, !1); else {
                var n = S.set(t, []);
                o(e, (function (e, i) {
                    a(e) && (e = d.get(e)), null != e && e < w && (n[i] = e, L(C[e], t, i))
                }))
            }
        }));
        var k = 0;

        function L(e, t, n) {
            null != m.get(t) ? e.otherDims[t] = n : (e.coordDim = t, e.coordDimIndex = n, b.set(t, !0))
        }

        o(e, (function (e, t) {
            var n, i, r;
            if (a(e)) n = e, e = {}; else {
                n = e.name;
                var l = e.ordinalMeta;
                e.ordinalMeta = null, (e = u(e)).ordinalMeta = l, i = e.dimsDef, r = e.otherDims, e.name = e.coordDim = e.coordDimIndex = e.dimsDef = e.otherDims = null
            }
            if (!1 !== (d = S.get(n))) {
                var d;
                if (!(d = h(d)).length) for (var f = 0; f < (i && i.length || 1); f++) {
                    for (; k < C.length && null != C[k].coordDim;) k++;
                    k < C.length && d.push(k++)
                }
                o(d, (function (t, o) {
                    var a = C[t];
                    if (L(s(a, e), n, o), null == a.name && i) {
                        var l = i[o];
                        !c(l) && (l = {name: l}), a.name = a.displayName = l.name, a.defaultTooltip = l.defaultTooltip
                    }
                    r && s(a.otherDims, r)
                }))
            }
        }));
        var T = n.generateCoord, O = n.generateCoordCount, R = null != O;
        O = T ? O || 1 : 0;
        for (var E = T || "value", P = 0; P < w; P++) {
            null == (_ = C[P] = C[P] || new v).coordDim && (_.coordDim = y(E, b, R), _.coordDimIndex = 0, (!T || O <= 0) && (_.isExtraCoord = !0), O--), null == _.name && (_.name = y(_.coordDim, d)), null != _.type || f(t, P, _.name) !== g.Must && (!_.isExtraCoord || null == _.otherDims.itemName && null == _.otherDims.seriesName) || (_.type = "ordinal")
        }
        return C
    };
    e.exports = b
}, function (e, t, n) {
    var i = n(1), r = i.createHashMap, o = i.isObject, a = i.map;

    function s(e) {
        this.categories = e.categories || [], this._needCollect = e.needCollect, this._deduplication = e.deduplication, this._map
    }

    s.createByAxisModel = function (e) {
        var t = e.option, n = t.data, i = n && a(n, u);
        return new s({categories: i, needCollect: !i, deduplication: !1 !== t.dedplication})
    };
    var l = s.prototype;

    function c(e) {
        return e._map || (e._map = r(e.categories))
    }

    function u(e) {
        return o(e) && null != e.value ? e.value : e + ""
    }

    l.getOrdinal = function (e) {
        return c(this).get(e)
    }, l.parseAndCollect = function (e) {
        var t, n = this._needCollect;
        if ("string" != typeof e && !n) return e;
        if (n && !this._deduplication) return t = this.categories.length, this.categories[t] = e, t;
        var i = c(this);
        return null == (t = i.get(e)) && (n ? (t = this.categories.length, this.categories[t] = e, i.set(e, t)) : t = NaN), t
    };
    var h = s;
    e.exports = h
}, function (e, t, n) {
    var i = n(4), r = i.round;

    function o(e) {
        return i.getPrecisionSafe(e) + 2
    }

    function a(e, t, n) {
        e[t] = Math.max(Math.min(e[t], n[1]), n[0])
    }

    function s(e, t) {
        !isFinite(e[0]) && (e[0] = t[0]), !isFinite(e[1]) && (e[1] = t[1]), a(e, 0, t), a(e, 1, t), e[0] > e[1] && (e[0] = e[1])
    }

    t.intervalScaleNiceTicks = function (e, t, n, a) {
        var l = {}, c = e[1] - e[0], u = l.interval = i.nice(c / t, !0);
        null != n && u < n && (u = l.interval = n), null != a && u > a && (u = l.interval = a);
        var h = l.intervalPrecision = o(u);
        return s(l.niceTickExtent = [r(Math.ceil(e[0] / u) * u, h), r(Math.floor(e[1] / u) * u, h)], e), l
    }, t.getIntervalPrecision = o, t.fixExtent = s
}, function (e, t, n) {
    var i = n(1), r = n(87), o = n(4), a = n(88), s = r.prototype, l = a.prototype, c = o.getPrecisionSafe, u = o.round,
        h = Math.floor, d = Math.ceil, f = Math.pow, g = Math.log, p = r.extend({
            type: "log", base: 10, $constructor: function () {
                r.apply(this, arguments), this._originalScale = new a
            }, getTicks: function (e) {
                var t = this._originalScale, n = this._extent, r = t.getExtent();
                return i.map(l.getTicks.call(this, e), (function (e) {
                    var i = o.round(f(this.base, e));
                    return i = e === n[0] && t.__fixMin ? m(i, r[0]) : i, i = e === n[1] && t.__fixMax ? m(i, r[1]) : i
                }), this)
            }, getMinorTicks: l.getMinorTicks, getLabel: l.getLabel, scale: function (e) {
                return e = s.scale.call(this, e), f(this.base, e)
            }, setExtent: function (e, t) {
                var n = this.base;
                e = g(e) / g(n), t = g(t) / g(n), l.setExtent.call(this, e, t)
            }, getExtent: function () {
                var e = this.base, t = s.getExtent.call(this);
                t[0] = f(e, t[0]), t[1] = f(e, t[1]);
                var n = this._originalScale, i = n.getExtent();
                return n.__fixMin && (t[0] = m(t[0], i[0])), n.__fixMax && (t[1] = m(t[1], i[1])), t
            }, unionExtent: function (e) {
                this._originalScale.unionExtent(e);
                var t = this.base;
                e[0] = g(e[0]) / g(t), e[1] = g(e[1]) / g(t), s.unionExtent.call(this, e)
            }, unionExtentFromData: function (e, t) {
                this.unionExtent(e.getApproximateExtent(t))
            }, niceTicks: function (e) {
                e = e || 10;
                var t = this._extent, n = t[1] - t[0];
                if (!(n === 1 / 0 || n <= 0)) {
                    var i = o.quantity(n);
                    for (e / n * i <= .5 && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && Math.abs(i) > 0;) i *= 10;
                    var r = [o.round(d(t[0] / i) * i), o.round(h(t[1] / i) * i)];
                    this._interval = i, this._niceExtent = r
                }
            }, niceExtent: function (e) {
                l.niceExtent.call(this, e);
                var t = this._originalScale;
                t.__fixMin = e.fixMin, t.__fixMax = e.fixMax
            }
        });

    function m(e, t) {
        return u(e, c(t))
    }

    i.each(["contain", "normalize"], (function (e) {
        p.prototype[e] = function (t) {
            return t = g(t) / g(this.base), s[e].call(this, t)
        }
    })), p.create = function () {
        return new p
    };
    var v = p;
    e.exports = v
}, function (e, t, n) {
    var i = n(1), r = n(177);

    function o(e, t, n) {
        for (var i = [], r = t[0], o = t[1], a = 0; a < e.length; a += 2) {
            var s = e.charCodeAt(a) - 64, l = e.charCodeAt(a + 1) - 64;
            s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), r = s += r, o = l += o, i.push([s / n, l / n])
        }
        return i
    }

    e.exports = function (e, t) {
        return function (e) {
            if (!e.UTF8Encoding) return e;
            var t = e.UTF8Scale;
            null == t && (t = 1024);
            for (var n = e.features, i = 0; i < n.length; i++) for (var r = n[i].geometry, a = r.coordinates, s = r.encodeOffsets, l = 0; l < a.length; l++) {
                var c = a[l];
                if ("Polygon" === r.type) a[l] = o(c, s[l], t); else if ("MultiPolygon" === r.type) for (var u = 0; u < c.length; u++) {
                    var h = c[u];
                    c[u] = o(h, s[l][u], t)
                }
            }
            e.UTF8Encoding = !1
        }(e), i.map(i.filter(e.features, (function (e) {
            return e.geometry && e.properties && e.geometry.coordinates.length > 0
        })), (function (e) {
            var n = e.properties, o = e.geometry, a = o.coordinates, s = [];
            "Polygon" === o.type && s.push({
                type: "polygon",
                exterior: a[0],
                interiors: a.slice(1)
            }), "MultiPolygon" === o.type && i.each(a, (function (e) {
                e[0] && s.push({type: "polygon", exterior: e[0], interiors: e.slice(1)})
            }));
            var l = new r(n[t || "name"], s, n.cp);
            return l.properties = n, l
        }))
    }
}, function (e, t, n) {
    var i = n(10), r = n(63), o = n(9), a = n(178);

    function s(e, t, n) {
        if (this.name = e, this.geometries = t, n) n = [n[0], n[1]]; else {
            var i = this.getBoundingRect();
            n = [i.x + i.width / 2, i.y + i.height / 2]
        }
        this.center = n
    }

    s.prototype = {
        constructor: s, properties: null, getBoundingRect: function () {
            var e = this._rect;
            if (e) return e;
            for (var t = Number.MAX_VALUE, n = [t, t], a = [-t, -t], s = [], l = [], c = this.geometries, u = 0; u < c.length; u++) if ("polygon" === c[u].type) {
                var h = c[u].exterior;
                r.fromPoints(h, s, l), o.min(n, n, s), o.max(a, a, l)
            }
            return 0 === u && (n[0] = n[1] = a[0] = a[1] = 0), this._rect = new i(n[0], n[1], a[0] - n[0], a[1] - n[1])
        }, contain: function (e) {
            var t = this.getBoundingRect(), n = this.geometries;
            if (!t.contain(e[0], e[1])) return !1;
            e:for (var i = 0, r = n.length; i < r; i++) if ("polygon" === n[i].type) {
                var o = n[i].exterior, s = n[i].interiors;
                if (a.contain(o, e[0], e[1])) {
                    for (var l = 0; l < (s ? s.length : 0); l++) if (a.contain(s[l])) continue e;
                    return !0
                }
            }
            return !1
        }, transformTo: function (e, t, n, r) {
            var a = this.getBoundingRect(), s = a.width / a.height;
            n ? r || (r = n / s) : n = s * r;
            for (var l = new i(e, t, n, r), c = a.calculateTransform(l), u = this.geometries, h = 0; h < u.length; h++) if ("polygon" === u[h].type) {
                for (var d = u[h].exterior, f = u[h].interiors, g = 0; g < d.length; g++) o.applyTransform(d[g], d[g], c);
                for (var p = 0; p < (f ? f.length : 0); p++) for (g = 0; g < f[p].length; g++) o.applyTransform(f[p][g], f[p][g], c)
            }
            (a = this._rect).copy(l), this.center = [a.x + a.width / 2, a.y + a.height / 2]
        }, cloneShallow: function (e) {
            null == e && (e = this.name);
            var t = new s(e, this.geometries, this.center);
            return t._rect = this._rect, t.transformTo = null, t
        }
    };
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(159);

    function r(e, t) {
        return Math.abs(e - t) < 1e-8
    }

    t.contain = function (e, t, n) {
        var o = 0, a = e[0];
        if (!a) return !1;
        for (var s = 1; s < e.length; s++) {
            var l = e[s];
            o += i(a[0], a[1], l[0], l[1], t, n), a = l
        }
        var c = e[0];
        return r(a[0], c[0]) && r(a[1], c[1]) || (o += i(a[0], a[1], c[0], c[1], t, n)), 0 !== o
    }
}, function (e, t, n) {
    var i = n(27).isDimensionStacked, r = n(1).map;
    t.prepareDataCoordInfo = function (e, t, n) {
        var o, a = e.getBaseAxis(), s = e.getOtherAxis(a), l = function (e, t) {
                var n = 0, i = e.scale.getExtent();
                "start" === t ? n = i[0] : "end" === t ? n = i[1] : i[0] > 0 ? n = i[0] : i[1] < 0 && (n = i[1]);
                return n
            }(s, n), c = a.dim, u = s.dim, h = t.mapDimension(u), d = t.mapDimension(c),
            f = "x" === u || "radius" === u ? 1 : 0, g = r(e.dimensions, (function (e) {
                return t.mapDimension(e)
            })), p = t.getCalculationInfo("stackResultDimension");
        return (o |= i(t, g[0])) && (g[0] = p), (o |= i(t, g[1])) && (g[1] = p), {
            dataDimsForPoint: g,
            valueStart: l,
            valueAxisDim: u,
            baseAxisDim: c,
            stacked: !!o,
            valueDim: h,
            baseDim: d,
            baseDataOffset: f,
            stackedOverDimension: t.getCalculationInfo("stackedOverDimension")
        }
    }, t.getStackedOnPoint = function (e, t, n, i) {
        var r = NaN;
        e.stacked && (r = n.get(n.getCalculationInfo("stackedOverDimension"), i)), isNaN(r) && (r = e.valueStart);
        var o = e.baseDataOffset, a = [];
        return a[o] = n.get(e.baseDim, i), a[1 - o] = r, t.dataToPoint(a)
    }
}, function (e, t, n) {
    var i = n(11), r = n(9), o = n(161), a = r.min, s = r.max, l = r.scaleAndAdd, c = r.copy, u = [], h = [], d = [];

    function f(e) {
        return isNaN(e[0]) || isNaN(e[1])
    }

    function g(e, t, n, i, r, o, a, s, l, c, u) {
        return "none" !== c && c ? p.apply(this, arguments) : m.apply(this, arguments)
    }

    function p(e, t, n, i, r, o, a, s, l, u, g) {
        for (var p = 0, m = n, v = 0; v < i; v++) {
            var y = t[m];
            if (m >= r || m < 0) break;
            if (f(y)) {
                if (g) {
                    m += o;
                    continue
                }
                break
            }
            if (m === n) e[o > 0 ? "moveTo" : "lineTo"](y[0], y[1]); else if (l > 0) {
                var b = t[p], C = "y" === u ? 1 : 0, w = (y[C] - b[C]) * l;
                c(h, b), h[C] = b[C] + w, c(d, y), d[C] = y[C] - w, e.bezierCurveTo(h[0], h[1], d[0], d[1], y[0], y[1])
            } else e.lineTo(y[0], y[1]);
            p = m, m += o
        }
        return v
    }

    function m(e, t, n, i, o, g, p, m, v, y, b) {
        for (var C = 0, w = n, I = 0; I < i; I++) {
            var x = t[w];
            if (w >= o || w < 0) break;
            if (f(x)) {
                if (b) {
                    w += g;
                    continue
                }
                break
            }
            if (w === n) e[g > 0 ? "moveTo" : "lineTo"](x[0], x[1]), c(h, x); else if (v > 0) {
                var A = w + g, _ = t[A];
                if (b) for (; _ && f(t[A]);) _ = t[A += g];
                var S = .5, k = t[C];
                if (!(_ = t[A]) || f(_)) c(d, x); else {
                    var L, T;
                    if (f(_) && !b && (_ = x), r.sub(u, _, k), "x" === y || "y" === y) {
                        var O = "x" === y ? 0 : 1;
                        L = Math.abs(x[O] - k[O]), T = Math.abs(x[O] - _[O])
                    } else L = r.dist(x, k), T = r.dist(x, _);
                    l(d, x, u, -v * (1 - (S = T / (T + L))))
                }
                a(h, h, m), s(h, h, p), a(d, d, m), s(d, d, p), e.bezierCurveTo(h[0], h[1], d[0], d[1], x[0], x[1]), l(h, x, u, v * S)
            } else e.lineTo(x[0], x[1]);
            C = w, w += g
        }
        return I
    }

    function v(e, t) {
        var n = [1 / 0, 1 / 0], i = [-1 / 0, -1 / 0];
        if (t) for (var r = 0; r < e.length; r++) {
            var o = e[r];
            o[0] < n[0] && (n[0] = o[0]), o[1] < n[1] && (n[1] = o[1]), o[0] > i[0] && (i[0] = o[0]), o[1] > i[1] && (i[1] = o[1])
        }
        return {min: t ? n : i, max: t ? i : n}
    }

    var y = i.extend({
        type: "ec-polyline",
        shape: {points: [], smooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1},
        style: {fill: null, stroke: "#000"},
        brush: o(i.prototype.brush),
        buildPath: function (e, t) {
            var n = t.points, i = 0, r = n.length, o = v(n, t.smoothConstraint);
            if (t.connectNulls) {
                for (; r > 0 && f(n[r - 1]); r--) ;
                for (; i < r && f(n[i]); i++) ;
            }
            for (; i < r;) i += g(e, n, i, r, r, 1, o.min, o.max, t.smooth, t.smoothMonotone, t.connectNulls) + 1
        }
    }), b = i.extend({
        type: "ec-polygon",
        shape: {
            points: [],
            stackedOnPoints: [],
            smooth: 0,
            stackedOnSmooth: 0,
            smoothConstraint: !0,
            smoothMonotone: null,
            connectNulls: !1
        },
        brush: o(i.prototype.brush),
        buildPath: function (e, t) {
            var n = t.points, i = t.stackedOnPoints, r = 0, o = n.length, a = t.smoothMonotone,
                s = v(n, t.smoothConstraint), l = v(i, t.smoothConstraint);
            if (t.connectNulls) {
                for (; o > 0 && f(n[o - 1]); o--) ;
                for (; r < o && f(n[r]); r++) ;
            }
            for (; r < o;) {
                var c = g(e, n, r, o, o, 1, s.min, s.max, t.smooth, a, t.connectNulls);
                g(e, i, r + c - 1, c, o, -1, l.min, l.max, t.stackedOnSmooth, a, t.connectNulls), r += c + 1, e.closePath()
            }
        }
    });
    t.Polyline = y, t.Polygon = b
}, function (e, t, n) {
    var i = n(1), r = n(14), o = n(91), a = n(51), s = r.extend({
        type: "cartesian2dAxis", axis: null, init: function () {
            s.superApply(this, "init", arguments), this.resetRange()
        }, mergeOption: function () {
            s.superApply(this, "mergeOption", arguments), this.resetRange()
        }, restoreData: function () {
            s.superApply(this, "restoreData", arguments), this.resetRange()
        }, getCoordSysModel: function () {
            return this.ecModel.queryComponents({
                mainType: "grid",
                index: this.option.gridIndex,
                id: this.option.gridId
            })[0]
        }
    });

    function l(e, t) {
        return t.type || (t.data ? "category" : "value")
    }

    i.merge(s.prototype, a);
    var c = {offset: 0};
    o("x", s, l, c), o("y", s, l, c);
    var u = s;
    e.exports = u
}, function (e, t, n) {
    var i = n(1), r = {
        show: !0,
        zlevel: 0,
        z: 0,
        inverse: !1,
        name: "",
        nameLocation: "end",
        nameRotate: null,
        nameTruncate: {maxWidth: null, ellipsis: "...", placeholder: "."},
        nameTextStyle: {},
        nameGap: 15,
        silent: !1,
        triggerEvent: !1,
        tooltip: {show: !1},
        axisPointer: {},
        axisLine: {
            show: !0,
            onZero: !0,
            onZeroAxisIndex: null,
            lineStyle: {color: "#333", width: 1, type: "solid"},
            symbol: ["none", "none"],
            symbolSize: [10, 15]
        },
        axisTick: {show: !0, inside: !1, length: 5, lineStyle: {width: 1}},
        axisLabel: {show: !0, inside: !1, rotate: 0, showMinLabel: null, showMaxLabel: null, margin: 8, fontSize: 12},
        splitLine: {show: !0, lineStyle: {color: ["#ccc"], width: 1, type: "solid"}},
        splitArea: {show: !1, areaStyle: {color: ["rgba(250,250,250,0.3)", "rgba(200,200,200,0.3)"]}}
    }, o = {};
    o.categoryAxis = i.merge({
        boundaryGap: !0,
        deduplication: null,
        splitLine: {show: !1},
        axisTick: {alignWithLabel: !1, interval: "auto"},
        axisLabel: {interval: "auto"}
    }, r), o.valueAxis = i.merge({
        boundaryGap: [0, 0],
        splitNumber: 5,
        minorTick: {show: !1, splitNumber: 5, length: 3, lineStyle: {}},
        minorSplitLine: {show: !1, lineStyle: {color: "#eee", width: 1}}
    }, r), o.timeAxis = i.defaults({
        scale: !0,
        min: "dataMin",
        max: "dataMax"
    }, o.valueAxis), o.logAxis = i.defaults({scale: !0, logBase: 10}, o.valueAxis);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1);
    t.layout = function (e, t, n) {
        n = n || {};
        var r = e.coordinateSystem, o = t.axis, a = {}, s = o.getAxesOnZeroOf()[0], l = o.position,
            c = s ? "onZero" : l, u = o.dim, h = r.getRect(), d = [h.x, h.x + h.width, h.y, h.y + h.height],
            f = {left: 0, right: 1, top: 0, bottom: 1, onZero: 2}, g = t.get("offset") || 0,
            p = "x" === u ? [d[2] - g, d[3] + g] : [d[0] - g, d[1] + g];
        if (s) {
            var m = s.toGlobalCoord(s.dataToCoord(0));
            p[f.onZero] = Math.max(Math.min(m, p[1]), p[0])
        }
        a.position = ["y" === u ? p[f[c]] : d[0], "x" === u ? p[f[c]] : d[3]], a.rotation = Math.PI / 2 * ("x" === u ? 0 : 1), a.labelDirection = a.tickDirection = a.nameDirection = {
            top: -1,
            bottom: 1,
            left: -1,
            right: 1
        }[l], a.labelOffset = s ? p[f[l]] - p[f.onZero] : 0, t.get("axisTick.inside") && (a.tickDirection = -a.tickDirection), i.retrieve(n.labelInside, t.get("axisLabel.inside")) && (a.labelDirection = -a.labelDirection);
        var v = t.get("axisLabel.rotate");
        return a.labelRotate = "top" === c ? -v : v, a.z2 = 1, a
    }
}, function (e, t, n) {
    var i = n(1), r = n(3);
    t.rectCoordAxisBuildSplitArea = function (e, t, n, o) {
        var a = n.axis;
        if (!a.scale.isBlank()) {
            var s = n.getModel("splitArea"), l = s.getModel("areaStyle"), c = l.get("color"),
                u = o.coordinateSystem.getRect(), h = a.getTicksCoords({tickModel: s, clamp: !0});
            if (h.length) {
                var d = c.length, f = e.__splitAreaColors, g = i.createHashMap(), p = 0;
                if (f) for (var m = 0; m < h.length; m++) {
                    var v = f.get(h[m].tickValue);
                    if (null != v) {
                        p = (v + (d - 1) * m) % d;
                        break
                    }
                }
                var y = a.toGlobalCoord(h[0].coord), b = l.getAreaStyle();
                c = i.isArray(c) ? c : [c];
                for (m = 1; m < h.length; m++) {
                    var C, w, I, x, A = a.toGlobalCoord(h[m].coord);
                    a.isHorizontal() ? (C = y, w = u.y, I = A - C, x = u.height, y = C + I) : (C = u.x, w = y, I = u.width, y = w + (x = A - w));
                    var _ = h[m - 1].tickValue;
                    null != _ && g.set(_, p), t.add(new r.Rect({
                        anid: null != _ ? "area_" + _ : null,
                        shape: {x: C, y: w, width: I, height: x},
                        style: i.defaults({fill: c[p]}, b),
                        silent: !0
                    })), p = (p + 1) % d
                }
                e.__splitAreaColors = g
            }
        }
    }, t.rectCoordAxisHandleRemove = function (e) {
        e.__splitAreaColors = null
    }
}, function (e, t, n) {
    var i = n(15), r = n(30), o = i.extend({
        type: "series.__base_bar__",
        getInitialData: function (e, t) {
            return r(this.getSource(), this, {useEncodeDefaulter: !0})
        },
        getMarkerPosition: function (e) {
            var t = this.coordinateSystem;
            if (t) {
                var n = t.dataToPoint(t.clampData(e)), i = this.getData(), r = i.getLayout("offset"),
                    o = i.getLayout("size");
                return n[t.getBaseAxis().isHorizontal() ? 0 : 1] += r + o / 2, n
            }
            return [NaN, NaN]
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            barMinHeight: 0,
            barMinAngle: 0,
            large: !1,
            largeThreshold: 400,
            progressive: 3e3,
            progressiveChunkMode: "mod",
            itemStyle: {},
            emphasis: {}
        }
    });
    e.exports = o
}, function (e, t, n) {
    var i = n(3), r = n(112).getDefaultLabel;

    function o(e, t) {
        "outside" === e.textPosition && (e.textPosition = t)
    }

    t.setLabel = function (e, t, n, a, s, l, c) {
        var u = n.getModel("label"), h = n.getModel("emphasis.label");
        i.setLabelStyle(e, t, u, h, {
            labelFetcher: s,
            labelDataIndex: l,
            defaultText: r(s.getData(), l),
            isRectText: !0,
            autoColor: a
        }), o(e), o(t)
    }
}, function (e, t, n) {
    var i = n(2), r = n(1);
    e.exports = function (e, t) {
        r.each(t, (function (t) {
            t.update = "updateView", i.registerAction(t, (function (n, i) {
                var r = {};
                return i.eachComponent({mainType: "series", subType: e, query: n}, (function (e) {
                    e[t.method] && e[t.method](n.name, n.dataIndex);
                    var i = e.getData();
                    i.each((function (t) {
                        var n = i.getName(t);
                        r[n] = e.isSelected(n) || !1
                    }))
                })), {name: n.name, selected: r, seriesId: n.seriesId}
            }))
        }))
    }
}, function (e, t, n) {
    var i = n(1), r = n(74), o = n(115), a = n(95).onIrrelevantElement, s = n(3), l = n(94), c = n(64).getUID,
        u = n(81);

    function h(e) {
        var t = e.getItemStyle(), n = e.get("areaColor");
        return null != n && (t.fill = n), t
    }

    function d(e, t) {
        t.eachChild((function (t) {
            i.each(t.__regions, (function (n) {
                t.trigger(e.isSelected(n.name) ? "emphasis" : "normal")
            }))
        }))
    }

    function f(e, t) {
        var n = new s.Group;
        this.uid = c("ec_map_draw"), this._controller = new r(e.getZr()), this._controllerHost = {target: t ? n : null}, this.group = n, this._updateGroup = t, this._mouseDownFlag, this._mapName, this._initialized, n.add(this._regionsGroup = new s.Group), n.add(this._backgroundGroup = new s.Group)
    }

    f.prototype = {
        constructor: f, draw: function (e, t, n, r, o) {
            var a = "geo" === e.mainType, l = e.getData && e.getData();
            a && t.eachComponent({mainType: "series", subType: "map"}, (function (t) {
                l || t.getHostGeoModel() !== e || (l = t.getData())
            }));
            var c = e.coordinateSystem;
            this._updateBackground(c);
            var f, g = this._regionsGroup, p = this.group, m = c.getTransformInfo(), v = !g.childAt(0) || o;
            if (v) p.transform = m.roamTransform, p.decomposeTransform(), p.dirty(); else {
                var y = new u;
                y.transform = m.roamTransform, y.decomposeTransform();
                var b = {scale: y.scale, position: y.position};
                f = y.scale, s.updateProps(p, b, e)
            }
            var C = m.rawScale, w = m.rawPosition;
            g.removeAll();
            var I = ["itemStyle"], x = ["emphasis", "itemStyle"], A = ["label"], _ = ["emphasis", "label"],
                S = i.createHashMap();
            i.each(c.regions, (function (t) {
                var n = S.get(t.name) || S.set(t.name, new s.Group),
                    r = new s.CompoundPath({segmentIgnoreThreshold: 1, shape: {paths: []}});
                n.add(r);
                var o, c = (B = e.getRegionModel(t.name) || e).getModel(I), u = B.getModel(x), d = h(c), m = h(u),
                    y = B.getModel(A), b = B.getModel(_);
                if (l) {
                    o = l.indexOfName(t.name);
                    var k = l.getItemVisual(o, "color", !0);
                    k && (d.fill = k)
                }
                var L = function (e) {
                    return [e[0] * C[0] + w[0], e[1] * C[1] + w[1]]
                };
                i.each(t.geometries, (function (e) {
                    if ("polygon" === e.type) {
                        for (var t = [], n = 0; n < e.exterior.length; ++n) t.push(L(e.exterior[n]));
                        r.shape.paths.push(new s.Polygon({segmentIgnoreThreshold: 1, shape: {points: t}}));
                        for (n = 0; n < (e.interiors ? e.interiors.length : 0); ++n) {
                            for (var i = e.interiors[n], o = (t = [], 0); o < i.length; ++o) t.push(L(i[o]));
                            r.shape.paths.push(new s.Polygon({segmentIgnoreThreshold: 1, shape: {points: t}}))
                        }
                    }
                })), r.setStyle(d), r.style.strokeNoScale = !0, r.culling = !0;
                var T = y.get("show"), O = b.get("show"), R = l && isNaN(l.get(l.mapDimension("value"), o)),
                    E = l && l.getItemLayout(o);
                if (a || R && (T || O) || E && E.showLabel) {
                    var P, M = a ? t.name : o;
                    (!l || o >= 0) && (P = e);
                    var N = new s.Text({
                        position: L(t.center.slice()),
                        scale: [1 / p.scale[0], 1 / p.scale[1]],
                        z2: 10,
                        silent: !0
                    });
                    if (s.setLabelStyle(N.style, N.hoverStyle = {}, y, b, {
                        labelFetcher: P,
                        labelDataIndex: M,
                        defaultText: t.name,
                        useInsideStyle: !1
                    }, {textAlign: "center", textVerticalAlign: "middle"}), !v) {
                        var D = [1 / f[0], 1 / f[1]];
                        s.updateProps(N, {scale: D}, e)
                    }
                    n.add(N)
                }
                if (l) l.setItemGraphicEl(o, n); else {
                    var B = e.getRegionModel(t.name);
                    r.eventData = {
                        componentType: "geo",
                        componentIndex: e.componentIndex,
                        geoIndex: e.componentIndex,
                        name: t.name,
                        region: B && B.option || {}
                    }
                }
                (n.__regions || (n.__regions = [])).push(t), n.highDownSilentOnTouch = !!e.get("selectedMode"), s.setHoverStyle(n, m), g.add(n)
            })), this._updateController(e, t, n), function (e, t, n, r, o) {
                n.off("click"), n.off("mousedown"), t.get("selectedMode") && (n.on("mousedown", (function () {
                    e._mouseDownFlag = !0
                })), n.on("click", (function (a) {
                    if (e._mouseDownFlag) {
                        e._mouseDownFlag = !1;
                        for (var s = a.target; !s.__regions;) s = s.parent;
                        if (s) {
                            var l = {
                                type: ("geo" === t.mainType ? "geo" : "map") + "ToggleSelect",
                                batch: i.map(s.__regions, (function (e) {
                                    return {name: e.name, from: o.uid}
                                }))
                            };
                            l[t.mainType + "Id"] = t.id, r.dispatchAction(l), d(t, n)
                        }
                    }
                })))
            }(this, e, g, n, r), d(e, g)
        }, remove: function () {
            this._regionsGroup.removeAll(), this._backgroundGroup.removeAll(), this._controller.dispose(), this._mapName && l.removeGraphic(this._mapName, this.uid), this._mapName = null, this._controllerHost = {}
        }, _updateBackground: function (e) {
            var t = e.map;
            this._mapName !== t && i.each(l.makeGraphic(t, this.uid), (function (e) {
                this._backgroundGroup.add(e)
            }), this), this._mapName = t
        }, _updateController: function (e, t, n) {
            var r = e.coordinateSystem, s = this._controller, l = this._controllerHost;
            l.zoomLimit = e.get("scaleLimit"), l.zoom = r.getZoom(), s.enable(e.get("roam") || !1);
            var c = e.mainType;

            function u() {
                var t = {type: "geoRoam", componentType: c};
                return t[c + "Id"] = e.id, t
            }

            s.off("pan").on("pan", (function (e) {
                this._mouseDownFlag = !1, o.updateViewOnPan(l, e.dx, e.dy), n.dispatchAction(i.extend(u(), {
                    dx: e.dx,
                    dy: e.dy
                }))
            }), this), s.off("zoom").on("zoom", (function (e) {
                if (this._mouseDownFlag = !1, o.updateViewOnZoom(l, e.scale, e.originX, e.originY), n.dispatchAction(i.extend(u(), {
                    zoom: e.scale,
                    originX: e.originX,
                    originY: e.originY
                })), this._updateGroup) {
                    var t = this.group.scale;
                    this._regionsGroup.traverse((function (e) {
                        "text" === e.type && e.attr("scale", [1 / t[0], 1 / t[1]])
                    }))
                }
            }), this), s.setPointerChecker((function (t, i, o) {
                return r.getViewRectAfterRoam().contain(i, o) && !a(t, n, e)
            }))
        }
    };
    var g = f;
    e.exports = g
}, function (e, t, n) {
    var i = n(2), r = "\0_ec_interaction_mutex";

    function o(e) {
        return e[r] || (e[r] = {})
    }

    i.registerAction({type: "takeGlobalCursor", event: "globalCursorTaken", update: "update"}, (function () {
    })), t.take = function (e, t, n) {
        o(e)[t] = n
    }, t.release = function (e, t, n) {
        var i = o(e);
        i[t] === n && (i[t] = null)
    }, t.isTaken = function (e, t) {
        return !!o(e)[t]
    }
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(116).updateCenterAndZoom;
    i.registerAction({type: "geoRoam", event: "geoRoam", update: "updateTransform"}, (function (e, t) {
        var n = e.componentType || "series";
        t.eachComponent({mainType: n, query: e}, (function (t) {
            var i = t.coordinateSystem;
            if ("geo" === i.type) {
                var a = o(i, e, t.get("scaleLimit"));
                t.setCenter && t.setCenter(a.center), t.setZoom && t.setZoom(a.zoom), "series" === n && r.each(t.seriesGroup, (function (e) {
                    e.setCenter(a.center), e.setZoom(a.zoom)
                }))
            }
        }))
    }))
}, function (e, t, n) {
    var i = n(1), r = i.each, o = "\0__link_datas", a = "\0__link_mainData";

    function s(e, t) {
        if ((r = this)[a] === r) {
            var n = i.extend({}, this[o]);
            n[this.dataType] = t, h(t, n, e)
        } else d(t, this.dataType, this[a], e);
        var r;
        return t
    }

    function l(e, t) {
        return e.struct && e.struct.update(this), t
    }

    function c(e, t) {
        return r(t[o], (function (n, i) {
            n !== t && d(n.cloneShallow(), i, t, e)
        })), t
    }

    function u(e) {
        var t = this[a];
        return null == e || null == t ? t : t[o][e]
    }

    function h(e, t, n) {
        e[o] = {}, r(t, (function (t, i) {
            d(t, i, e, n)
        }))
    }

    function d(e, t, n, i) {
        n[o][t] = e, e[a] = n, e.dataType = t, i.struct && (e[i.structAttr] = i.struct, i.struct[i.datasAttr[t]] = e), e.getLinkedData = u
    }

    var f = function (e) {
        var t = e.mainData, n = e.datas;
        n || (n = {main: t}, e.datasAttr = {main: "data"}), e.datas = e.mainData = null, h(t, n, e), r(n, (function (n) {
            r(t.TRANSFERABLE_METHODS, (function (t) {
                n.wrapMethod(t, i.curry(s, e))
            }))
        })), t.wrapMethod("cloneShallow", i.curry(c, e)), r(t.CHANGABLE_METHODS, (function (n) {
            t.wrapMethod(n, i.curry(l, e))
        })), i.assert(n[t.dataType] === t)
    };
    e.exports = f
}, function (e, t, n) {
    var i = n(7);

    function r(e) {
        var t = e.children;
        return t.length && e.isExpand ? t[t.length - 1] : e.hierNode.thread
    }

    function o(e) {
        var t = e.children;
        return t.length && e.isExpand ? t[0] : e.hierNode.thread
    }

    function a(e, t, n) {
        return e.hierNode.ancestor.parentNode === t.parentNode ? e.hierNode.ancestor : n
    }

    function s(e, t, n) {
        var i = n / (t.hierNode.i - e.hierNode.i);
        t.hierNode.change -= i, t.hierNode.shift += n, t.hierNode.modifier += n, t.hierNode.prelim += n, e.hierNode.change += i
    }

    function l(e, t) {
        return e.parentNode === t.parentNode ? 1 : 2
    }

    t.init = function (e) {
        e.hierNode = {
            defaultAncestor: null,
            ancestor: e,
            prelim: 0,
            modifier: 0,
            change: 0,
            shift: 0,
            i: 0,
            thread: null
        };
        for (var t, n, i = [e]; t = i.pop();) if (n = t.children, t.isExpand && n.length) for (var r = n.length - 1; r >= 0; r--) {
            var o = n[r];
            o.hierNode = {
                defaultAncestor: null,
                ancestor: o,
                prelim: 0,
                modifier: 0,
                change: 0,
                shift: 0,
                i: r,
                thread: null
            }, i.push(o)
        }
    }, t.firstWalk = function (e, t) {
        var n = e.isExpand ? e.children : [], i = e.parentNode.children, l = e.hierNode.i ? i[e.hierNode.i - 1] : null;
        if (n.length) {
            !function (e) {
                var t = e.children, n = t.length, i = 0, r = 0;
                for (; --n >= 0;) {
                    var o = t[n];
                    o.hierNode.prelim += i, o.hierNode.modifier += i, r += o.hierNode.change, i += o.hierNode.shift + r
                }
            }(e);
            var c = (n[0].hierNode.prelim + n[n.length - 1].hierNode.prelim) / 2;
            l ? (e.hierNode.prelim = l.hierNode.prelim + t(e, l), e.hierNode.modifier = e.hierNode.prelim - c) : e.hierNode.prelim = c
        } else l && (e.hierNode.prelim = l.hierNode.prelim + t(e, l));
        e.parentNode.hierNode.defaultAncestor = function (e, t, n, i) {
            if (t) {
                for (var l = e, c = e, u = c.parentNode.children[0], h = t, d = l.hierNode.modifier, f = c.hierNode.modifier, g = u.hierNode.modifier, p = h.hierNode.modifier; h = r(h), c = o(c), h && c;) {
                    l = r(l), u = o(u), l.hierNode.ancestor = e;
                    var m = h.hierNode.prelim + p - c.hierNode.prelim - f + i(h, c);
                    m > 0 && (s(a(h, e, n), e, m), f += m, d += m), p += h.hierNode.modifier, f += c.hierNode.modifier, d += l.hierNode.modifier, g += u.hierNode.modifier
                }
                h && !r(l) && (l.hierNode.thread = h, l.hierNode.modifier += p - d), c && !o(u) && (u.hierNode.thread = c, u.hierNode.modifier += f - g, n = e)
            }
            return n
        }(e, l, e.parentNode.hierNode.defaultAncestor || i[0], t)
    }, t.secondWalk = function (e) {
        var t = e.hierNode.prelim + e.parentNode.hierNode.modifier;
        e.setLayout({x: t}, !0), e.hierNode.modifier += e.parentNode.hierNode.modifier
    }, t.separation = function (e) {
        return arguments.length ? e : l
    }, t.radialCoordinate = function (e, t) {
        var n = {};
        return e -= Math.PI / 2, n.x = t * Math.cos(e), n.y = t * Math.sin(e), n
    }, t.getViewRect = function (e, t) {
        return i.getLayoutRect(e.getBoxLayoutParams(), {width: t.getWidth(), height: t.getHeight()})
    }
}, function (e, t, n) {
    var i = n(1), r = n(19), o = n(377), a = n(191), s = n(50), l = n(21), c = n(30);
    e.exports = function (e, t, n, u, h) {
        for (var d = new o(u), f = 0; f < e.length; f++) d.addNode(i.retrieve(e[f].id, e[f].name, f), f);
        var g = [], p = [], m = 0;
        for (f = 0; f < t.length; f++) {
            var v = t[f], y = v.source, b = v.target;
            d.addEdge(y, b, m) && (p.push(v), g.push(i.retrieve(v.id, y + " > " + b)), m++)
        }
        var C, w = n.get("coordinateSystem");
        if ("cartesian2d" === w || "polar" === w) C = c(e, n); else {
            var I = l.get(w), x = I && "view" !== I.type && I.dimensions || [];
            i.indexOf(x, "value") < 0 && x.concat(["value"]);
            var A = s(e, {coordDimensions: x});
            (C = new r(A, n)).initData(e)
        }
        var _ = new r(["value"], n);
        return _.initData(p, g), h && h(C, _), a({
            mainData: C,
            struct: d,
            structAttr: "graph",
            datas: {node: C, edge: _},
            datasAttr: {node: "data", edge: "edgeData"}
        }), d.update(), d
    }
}, function (e, t, n) {
    var i = n(2);
    i.registerAction({
        type: "focusNodeAdjacency",
        event: "focusNodeAdjacency",
        update: "series:focusNodeAdjacency"
    }, (function () {
    })), i.registerAction({
        type: "unfocusNodeAdjacency",
        event: "unfocusNodeAdjacency",
        update: "series:unfocusNodeAdjacency"
    }, (function () {
    }))
}, function (e, t, n) {
    var i = n(9);

    function r(e) {
        e.eachEdge((function (e) {
            var t = e.getModel().get("lineStyle.curveness") || 0, n = i.clone(e.node1.getLayout()),
                r = i.clone(e.node2.getLayout()), o = [n, r];
            +t && o.push([(n[0] + r[0]) / 2 - (n[1] - r[1]) * t, (n[1] + r[1]) / 2 - (r[0] - n[0]) * t]), e.setLayout(o)
        }))
    }

    t.simpleLayout = function (e) {
        var t = e.coordinateSystem;
        if (!t || "view" === t.type) {
            var n = e.getGraph();
            n.eachNode((function (e) {
                var t = e.getModel();
                e.setLayout([+t.get("x"), +t.get("y")])
            })), r(n)
        }
    }, t.simpleLayoutEdge = r
}, function (e, t, n) {
    var i = n(9), r = n(122), o = r.getSymbolSize, a = r.getNodeGlobalScale, s = Math.PI, l = [];
    var c = {
        value: function (e, t, n, i, r, o, a, s) {
            var l = 0, c = i.getSum("value"), u = 2 * Math.PI / (c || s);
            n.eachNode((function (e) {
                var t = e.getValue("value"), n = u * (c ? t : 1) / 2;
                l += n, e.setLayout([r * Math.cos(l) + o, r * Math.sin(l) + a]), l += n
            }))
        }, symbolSize: function (e, t, n, i, r, c, u, h) {
            var d = 0;
            l.length = h;
            var f = a(e);
            n.eachNode((function (e) {
                var t = o(e);
                isNaN(t) && (t = 2), t < 0 && (t = 0), t *= f;
                var n = Math.asin(t / 2 / r);
                isNaN(n) && (n = s / 2), l[e.dataIndex] = n, d += 2 * n
            }));
            var g = (2 * s - d) / h / 2, p = 0;
            n.eachNode((function (e) {
                var t = g + l[e.dataIndex];
                p += t, e.setLayout([r * Math.cos(p) + c, r * Math.sin(p) + u]), p += t
            }))
        }
    };
    t.circularLayout = function (e, t) {
        var n = e.coordinateSystem;
        if (!n || "view" === n.type) {
            var r = n.getBoundingRect(), o = e.getData(), a = o.graph, s = r.width / 2 + r.x, l = r.height / 2 + r.y,
                u = Math.min(r.width, r.height) / 2, h = o.count();
            o.setLayout({cx: s, cy: l}), h && (c[t](e, n, a, o, u, s, l, h), a.eachEdge((function (e) {
                var t, n = e.getModel().get("lineStyle.curveness") || 0, r = i.clone(e.node1.getLayout()),
                    o = i.clone(e.node2.getLayout()), a = (r[0] + o[0]) / 2, c = (r[1] + o[1]) / 2;
                +n && (t = [s * (n *= 3) + a * (1 - n), l * n + c * (1 - n)]), e.setLayout([r, o, t])
            })))
        }
    }
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(32), a = n(399);
    n(198), n(402), n(404);
    i.extendComponentView({
        type: "parallel", render: function (e, t, n) {
            this._model = e, this._api = n, this._handlers || (this._handlers = {}, r.each(s, (function (e, t) {
                n.getZr().on(t, this._handlers[t] = r.bind(e, this))
            }), this)), o.createOrUpdate(this, "_throttledDispatchExpand", e.get("axisExpandRate"), "fixRate")
        }, dispose: function (e, t) {
            r.each(this._handlers, (function (e, n) {
                t.getZr().off(n, e)
            })), this._handlers = null
        }, _throttledDispatchExpand: function (e) {
            this._dispatchExpand(e)
        }, _dispatchExpand: function (e) {
            e && this._api.dispatchAction(r.extend({type: "parallelAxisExpand"}, e))
        }
    });
    var s = {
        mousedown: function (e) {
            l(this, "click") && (this._mouseDownPoint = [e.offsetX, e.offsetY])
        }, mouseup: function (e) {
            var t = this._mouseDownPoint;
            if (l(this, "click") && t) {
                var n = [e.offsetX, e.offsetY];
                if (Math.pow(t[0] - n[0], 2) + Math.pow(t[1] - n[1], 2) > 5) return;
                var i = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);
                "none" !== i.behavior && this._dispatchExpand({axisExpandWindow: i.axisExpandWindow})
            }
            this._mouseDownPoint = null
        }, mousemove: function (e) {
            if (!this._mouseDownPoint && l(this, "mousemove")) {
                var t = this._model, n = t.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]),
                    i = n.behavior;
                "jump" === i && this._throttledDispatchExpand.debounceNextCall(t.get("axisExpandDebounce")), this._throttledDispatchExpand("none" === i ? null : {
                    axisExpandWindow: n.axisExpandWindow,
                    animation: "jump" === i && null
                })
            }
        }
    };

    function l(e, t) {
        var n = e._model;
        return n.get("axisExpandable") && n.get("axisExpandTriggerOn") === t
    }

    i.registerPreprocessor(a)
}, function (e, t, n) {
    var i = n(400);
    n(21).register("parallel", {
        create: function (e, t) {
            var n = [];
            return e.eachComponent("parallel", (function (r, o) {
                var a = new i(r, e, t);
                a.name = "parallel_" + o, a.resize(r, t), r.coordinateSystem = a, a.model = r, n.push(a)
            })), e.eachSeries((function (t) {
                if ("parallel" === t.get("coordinateSystem")) {
                    var n = e.queryComponents({
                        mainType: "parallel",
                        index: t.get("parallelIndex"),
                        id: t.get("parallelId")
                    })[0];
                    t.coordinateSystem = n.coordinateSystem
                }
            })), n
        }
    })
}, function (e, t, n) {
    var i = n(10), r = n(95).onIrrelevantElement, o = n(3);

    function a(e) {
        return i.create(e)
    }

    t.makeRectPanelClipPath = function (e) {
        return e = a(e), function (t, n) {
            return o.clipPointsByRect(t, e)
        }
    }, t.makeLinearBrushOtherExtent = function (e, t) {
        return e = a(e), function (n) {
            var i = null != t ? t : n, r = i ? e.width : e.height, o = i ? e.x : e.y;
            return [o, o + (r || 0)]
        }
    }, t.makeRectIsTargetByCursor = function (e, t, n) {
        return e = a(e), function (i, o, a) {
            return e.contain(o[0], o[1]) && !r(i, t, n)
        }
    }
}, function (e, t, n) {
    var i = n(52), r = n(1), o = n(67).getDimensionTypeByAxis, a = n(29).makeSeriesEncodeForAxisCoordSys, s = {
        _baseAxisDim: null, getInitialData: function (e, t) {
            var n, s, l = t.getComponent("xAxis", this.get("xAxisIndex")),
                c = t.getComponent("yAxis", this.get("yAxisIndex")), u = l.get("type"), h = c.get("type");
            "category" === u ? (e.layout = "horizontal", n = l.getOrdinalMeta(), s = !0) : "category" === h ? (e.layout = "vertical", n = c.getOrdinalMeta(), s = !0) : e.layout = e.layout || "horizontal";
            var d = ["x", "y"], f = "horizontal" === e.layout ? 0 : 1, g = this._baseAxisDim = d[f], p = d[1 - f],
                m = [l, c], v = m[f].get("type"), y = m[1 - f].get("type"), b = e.data;
            if (b && s) {
                var C = [];
                r.each(b, (function (e, t) {
                    var n;
                    e.value && r.isArray(e.value) ? (n = e.value.slice(), e.value.unshift(t)) : r.isArray(e) ? (n = e.slice(), e.unshift(t)) : n = e, C.push(n)
                })), e.data = C
            }
            var w = this.defaultValueDimensions, I = [{
                name: g,
                type: o(v),
                ordinalMeta: n,
                otherDims: {tooltip: !1, itemName: 0},
                dimsDef: ["base"]
            }, {name: p, type: o(y), dimsDef: w.slice()}];
            return i(this, {coordDimensions: I, dimensionsCount: w.length + 1, encodeDefaulter: r.curry(a, I, this)})
        }, getBaseAxis: function () {
            var e = this._baseAxisDim;
            return this.ecModel.getComponent(e + "Axis", this.get(e + "AxisIndex")).axis
        }
    };
    t.seriesModelMixin = s
}, function (e, t, n) {
    var i = n(3), r = n(121), o = n(1), a = n(20).createSymbol, s = n(9), l = n(31);

    function c(e, t, n) {
        i.Group.call(this), this.add(this.createLine(e, t, n)), this._updateEffectSymbol(e, t)
    }

    var u = c.prototype;
    u.createLine = function (e, t, n) {
        return new r(e, t, n)
    }, u._updateEffectSymbol = function (e, t) {
        var n = e.getItemModel(t).getModel("effect"), i = n.get("symbolSize"), r = n.get("symbol");
        o.isArray(i) || (i = [i, i]);
        var s = n.get("color") || e.getItemVisual(t, "color"), l = this.childAt(1);
        this._symbolType !== r && (this.remove(l), (l = a(r, -.5, -.5, 1, 1, s)).z2 = 100, l.culling = !0, this.add(l)), l && (l.setStyle("shadowColor", s), l.setStyle(n.getItemStyle(["color"])), l.attr("scale", i), l.setColor(s), l.attr("scale", i), this._symbolType = r, this._symbolScale = i, this._updateEffectAnimation(e, n, t))
    }, u._updateEffectAnimation = function (e, t, n) {
        var i = this.childAt(1);
        if (i) {
            var r = this, a = e.getItemLayout(n), s = 1e3 * t.get("period"), l = t.get("loop"),
                c = t.get("constantSpeed"), u = o.retrieve(t.get("delay"), (function (t) {
                    return t / e.count() * s / 3
                })), h = "function" == typeof u;
            if (i.ignore = !0, this.updateAnimationPoints(i, a), c > 0 && (s = this.getLineLength(i) / c * 1e3), s !== this._period || l !== this._loop) {
                i.stopAnimation();
                var d = u;
                h && (d = u(n)), i.__t > 0 && (d = -s * i.__t), i.__t = 0;
                var f = i.animate("", l).when(s, {__t: 1}).delay(d).during((function () {
                    r.updateSymbolPosition(i)
                }));
                l || f.done((function () {
                    r.remove(i)
                })), f.start()
            }
            this._period = s, this._loop = l
        }
    }, u.getLineLength = function (e) {
        return s.dist(e.__p1, e.__cp1) + s.dist(e.__cp1, e.__p2)
    }, u.updateAnimationPoints = function (e, t) {
        e.__p1 = t[0], e.__p2 = t[1], e.__cp1 = t[2] || [(t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2]
    }, u.updateData = function (e, t, n) {
        this.childAt(0).updateData(e, t, n), this._updateEffectSymbol(e, t)
    }, u.updateSymbolPosition = function (e) {
        var t = e.__p1, n = e.__p2, i = e.__cp1, r = e.__t, o = e.position, a = [o[0], o[1]], c = l.quadraticAt,
            u = l.quadraticDerivativeAt;
        o[0] = c(t[0], i[0], n[0], r), o[1] = c(t[1], i[1], n[1], r);
        var h = u(t[0], i[0], n[0], r), d = u(t[1], i[1], n[1], r);
        if (e.rotation = -Math.atan2(d, h) - Math.PI / 2, "line" === this._symbolType || "rect" === this._symbolType || "roundRect" === this._symbolType) if (void 0 !== e.__lastT && e.__lastT < e.__t) {
            var f = 1.05 * s.dist(a, o);
            e.attr("scale", [e.scale[0], f]), 1 === r && (o[0] = a[0] + (o[0] - a[0]) / 2, o[1] = a[1] + (o[1] - a[1]) / 2)
        } else if (1 === e.__lastT) {
            f = 2 * s.dist(t, o);
            e.attr("scale", [e.scale[0], f])
        } else e.attr("scale", this._symbolScale);
        e.__lastT = e.__t, e.ignore = !1
    }, u.updateLayout = function (e, t) {
        this.childAt(0).updateLayout(e, t);
        var n = e.getItemModel(t).getModel("effect");
        this._updateEffectAnimation(e, n, t)
    }, o.inherits(c, i.Group);
    var h = c;
    e.exports = h
}, function (e, t, n) {
    var i = n(3), r = n(1);

    function o(e, t, n) {
        i.Group.call(this), this._createPolyline(e, t, n)
    }

    var a = o.prototype;
    a._createPolyline = function (e, t, n) {
        var r = e.getItemLayout(t), o = new i.Polyline({shape: {points: r}});
        this.add(o), this._updateCommonStl(e, t, n)
    }, a.updateData = function (e, t, n) {
        var r = e.hostModel, o = this.childAt(0), a = {shape: {points: e.getItemLayout(t)}};
        i.updateProps(o, a, r, t), this._updateCommonStl(e, t, n)
    }, a._updateCommonStl = function (e, t, n) {
        var o = this.childAt(0), a = e.getItemModel(t), s = e.getItemVisual(t, "color"), l = n && n.lineStyle,
            c = n && n.hoverLineStyle;
        n && !e.hasItemOption || (l = a.getModel("lineStyle").getLineStyle(), c = a.getModel("emphasis.lineStyle").getLineStyle()), o.useStyle(r.defaults({
            strokeNoScale: !0,
            fill: "none",
            stroke: s
        }, l)), o.hoverStyle = c, i.setHoverStyle(this)
    }, a.updateLayout = function (e, t) {
        this.childAt(0).setShape("points", e.getItemLayout(t))
    }, r.inherits(o, i.Group);
    var s = o;
    e.exports = s
}, function (e, t, n) {
    var i = {
        seriesType: "lines", plan: n(49)(), reset: function (e) {
            var t = e.coordinateSystem, n = e.get("polyline"), i = e.pipelineContext.large;
            return {
                progress: function (r, o) {
                    var a = [];
                    if (i) {
                        var s, l = r.end - r.start;
                        if (n) {
                            for (var c = 0, u = r.start; u < r.end; u++) c += e.getLineCoordsCount(u);
                            s = new Float32Array(l + 2 * c)
                        } else s = new Float32Array(4 * l);
                        var h = 0, d = [];
                        for (u = r.start; u < r.end; u++) {
                            var f = e.getLineCoords(u, a);
                            n && (s[h++] = f);
                            for (var g = 0; g < f; g++) d = t.dataToPoint(a[g], !1, d), s[h++] = d[0], s[h++] = d[1]
                        }
                        o.setLayout("linesPoints", s)
                    } else for (u = r.start; u < r.end; u++) {
                        var p = o.getItemModel(u), m = (f = e.getLineCoords(u, a), []);
                        if (n) for (var v = 0; v < f; v++) m.push(t.dataToPoint(a[v])); else {
                            m[0] = t.dataToPoint(a[0]), m[1] = t.dataToPoint(a[1]);
                            var y = p.get("lineStyle.curveness");
                            +y && (m[2] = [(m[0][0] + m[1][0]) / 2 - (m[0][1] - m[1][1]) * y, (m[0][1] + m[1][1]) / 2 - (m[1][0] - m[0][0]) * y])
                        }
                        o.setItemLayout(u, m)
                    }
                }
            }
        }
    };
    e.exports = i
}, function (e, t, n) {
    var i = n(2);
    n(445), n(448), n(449), n(75), n(453), i.extendComponentView({type: "single"})
}, function (e, t, n) {
    var i = n(1);
    t.layout = function (e, t) {
        t = t || {};
        var n = e.coordinateSystem, r = e.axis, o = {}, a = r.position, s = r.orient, l = n.getRect(),
            c = [l.x, l.x + l.width, l.y, l.y + l.height],
            u = {horizontal: {top: c[2], bottom: c[3]}, vertical: {left: c[0], right: c[1]}};
        o.position = ["vertical" === s ? u.vertical[a] : c[0], "horizontal" === s ? u.horizontal[a] : c[3]], o.rotation = Math.PI / 2 * {
            horizontal: 0,
            vertical: 1
        }[s], o.labelDirection = o.tickDirection = o.nameDirection = {
            top: -1,
            bottom: 1,
            right: 1,
            left: -1
        }[a], e.get("axisTick.inside") && (o.tickDirection = -o.tickDirection), i.retrieve(t.labelInside, e.get("axisLabel.inside")) && (o.labelDirection = -o.labelDirection);
        var h = t.rotate;
        return null == h && (h = e.get("axisLabel.rotate")), o.labelRotation = "top" === a ? -h : h, o.z2 = 1, o
    }
}, function (e, t, n) {
    var i = n(1), r = n(5);
    e.exports = function (e, t) {
        var n, o = [], a = e.seriesIndex;
        if (null == a || !(n = t.getSeriesByIndex(a))) return {point: []};
        var s = n.getData(), l = r.queryDataIndex(s, e);
        if (null == l || l < 0 || i.isArray(l)) return {point: []};
        var c = s.getItemGraphicEl(l), u = n.coordinateSystem;
        if (n.getTooltipPosition) o = n.getTooltipPosition(l) || []; else if (u && u.dataToPoint) o = u.dataToPoint(s.getValues(i.map(u.dimensions, (function (e) {
            return s.mapDimension(e)
        })), l, !0)) || []; else if (c) {
            var h = c.getBoundingRect().clone();
            h.applyTransform(c.transform), o = [h.x + h.width / 2, h.y + h.height / 2]
        }
        return {point: o, el: c}
    }
}, function (e, t, n) {
    var i = n(1), r = n(12), o = (0, n(5).makeInner)(), a = i.each;

    function s(e, t, n) {
        e.handler("leave", null, n)
    }

    function l(e, t, n, i) {
        t.handler(e, n, i)
    }

    t.register = function (e, t, n) {
        if (!r.node) {
            var c = t.getZr();
            o(c).records || (o(c).records = {}), function (e, t) {
                if (o(e).initialized) return;

                function n(n, i) {
                    e.on(n, (function (n) {
                        var r = function (e) {
                            var t = {showTip: [], hideTip: []}, n = function (i) {
                                var r = t[i.type];
                                r ? r.push(i) : (i.dispatchAction = n, e.dispatchAction(i))
                            };
                            return {dispatchAction: n, pendings: t}
                        }(t);
                        a(o(e).records, (function (e) {
                            e && i(e, n, r.dispatchAction)
                        })), function (e, t) {
                            var n, i = e.showTip.length, r = e.hideTip.length;
                            i ? n = e.showTip[i - 1] : r && (n = e.hideTip[r - 1]);
                            n && (n.dispatchAction = null, t.dispatchAction(n))
                        }(r.pendings, t)
                    }))
                }

                o(e).initialized = !0, n("click", i.curry(l, "click")), n("mousemove", i.curry(l, "mousemove")), n("globalout", s)
            }(c, t), (o(c).records[e] || (o(c).records[e] = {})).handler = n
        }
    }, t.unregister = function (e, t) {
        if (!r.node) {
            var n = t.getZr();
            (o(n).records || {})[e] && (o(n).records[e] = null)
        }
    }
}, function (e, t, n) {
    var i = n(124), r = n(96), o = n(183), a = n(43), s = i.extend({
        makeElOption: function (e, t, n, i, a) {
            var s = n.axis, u = s.grid, h = i.get("type"), d = l(u, s).getOtherAxis(s).getGlobalExtent(),
                f = s.toGlobalCoord(s.dataToCoord(t, !0));
            if (h && "none" !== h) {
                var g = r.buildElStyle(i), p = c[h](s, f, d);
                p.style = g, e.graphicKey = p.type, e.pointer = p
            }
            var m = o.layout(u.model, n);
            r.buildCartesianSingleLabelElOption(t, e, m, n, i, a)
        }, getHandleTransform: function (e, t, n) {
            var i = o.layout(t.axis.grid.model, t, {labelInside: !1});
            return i.labelMargin = n.get("handle.margin"), {
                position: r.getTransformedPosition(t.axis, e, i),
                rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0)
            }
        }, updateHandleTransform: function (e, t, n, i) {
            var r = n.axis, o = r.grid, a = r.getGlobalExtent(!0), s = l(o, r).getOtherAxis(r).getGlobalExtent(),
                c = "x" === r.dim ? 0 : 1, u = e.position;
            u[c] += t[c], u[c] = Math.min(a[1], u[c]), u[c] = Math.max(a[0], u[c]);
            var h = (s[1] + s[0]) / 2, d = [h, h];
            d[c] = u[c];
            return {
                position: u,
                rotation: e.rotation,
                cursorPoint: d,
                tooltipOption: [{verticalAlign: "middle"}, {align: "center"}][c]
            }
        }
    });

    function l(e, t) {
        var n = {};
        return n[t.dim + "AxisIndex"] = t.index, e.getCartesian(n)
    }

    var c = {
        line: function (e, t, n) {
            return {type: "Line", subPixelOptimize: !0, shape: r.makeLineShape([t, n[0]], [t, n[1]], u(e))}
        }, shadow: function (e, t, n) {
            var i = Math.max(1, e.getBandWidth()), o = n[1] - n[0];
            return {type: "Rect", shape: r.makeRectShape([t - i / 2, n[0]], [i, o], u(e))}
        }
    };

    function u(e) {
        return "x" === e.dim ? 0 : 1
    }

    a.registerAxisPointerClass("CartesianAxisPointer", s);
    var h = s;
    e.exports = h
}, function (e, t, n) {
    var i = n(7), r = i.getLayoutRect, o = i.box, a = i.positionElement, s = n(8), l = n(3);
    t.layout = function (e, t, n) {
        var i = t.getBoxLayoutParams(), s = t.get("padding"), l = {width: n.getWidth(), height: n.getHeight()},
            c = r(i, l, s);
        o(t.get("orient"), e, t.get("itemGap"), c.width, c.height), a(e, i, l, s)
    }, t.makeBackground = function (e, t) {
        var n = s.normalizeCssArray(t.get("padding")), i = t.getItemStyle(["color", "opacity"]);
        return i.fill = t.get("backgroundColor"), e = new l.Rect({
            shape: {
                x: e.x - n[3],
                y: e.y - n[0],
                width: e.width + n[1] + n[3],
                height: e.height + n[0] + n[2],
                r: t.get("borderRadius")
            }, style: i, silent: !0, z2: -1
        })
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(3), o = n(5), a = n(199), s = i.each, l = i.indexOf, c = i.curry,
        u = ["dataToPoint", "pointToData"],
        h = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"];

    function d(e, t, n) {
        var i = this._targetInfoList = [], r = {}, o = p(t, e);
        s(m, (function (e, t) {
            (!n || !n.include || l(n.include, t) >= 0) && e(o, i, r)
        }))
    }

    var f = d.prototype;

    function g(e) {
        return e[0] > e[1] && e.reverse(), e
    }

    function p(e, t) {
        return o.parseFinder(e, t, {includeMainTypes: h})
    }

    f.setOutputRanges = function (e, t) {
        this.matchOutputRanges(e, t, (function (e, t, n) {
            if ((e.coordRanges || (e.coordRanges = [])).push(t), !e.coordRange) {
                e.coordRange = t;
                var i = b[e.brushType](0, n, t);
                e.__rangeOffset = {offset: w[e.brushType](i.values, e.range, [1, 1]), xyMinMax: i.xyMinMax}
            }
        }))
    }, f.matchOutputRanges = function (e, t, n) {
        s(e, (function (e) {
            var r = this.findTargetInfo(e, t);
            r && !0 !== r && i.each(r.coordSyses, (function (i) {
                var r = b[e.brushType](1, i, e.range);
                n(e, r.values, i, t)
            }))
        }), this)
    }, f.setInputRanges = function (e, t) {
        s(e, (function (e) {
            var n, i, r, o, a, s = this.findTargetInfo(e, t);
            if (e.range = e.range || [], s && !0 !== s) {
                e.panelId = s.panelId;
                var l = b[e.brushType](0, s.coordSys, e.coordRange), c = e.__rangeOffset;
                e.range = c ? w[e.brushType](l.values, c.offset, (n = l.xyMinMax, i = c.xyMinMax, r = x(n), o = x(i), a = [r[0] / o[0], r[1] / o[1]], isNaN(a[0]) && (a[0] = 1), isNaN(a[1]) && (a[1] = 1), a)) : l.values
            }
        }), this)
    }, f.makePanelOpts = function (e, t) {
        return i.map(this._targetInfoList, (function (n) {
            var i = n.getPanelRect();
            return {
                panelId: n.panelId,
                defaultBrushType: t && t(n),
                clipPath: a.makeRectPanelClipPath(i),
                isTargetByCursor: a.makeRectIsTargetByCursor(i, e, n.coordSysModel),
                getLinearBrushOtherExtent: a.makeLinearBrushOtherExtent(i)
            }
        }))
    }, f.controlSeries = function (e, t, n) {
        var i = this.findTargetInfo(e, n);
        return !0 === i || i && l(i.coordSyses, t.coordinateSystem) >= 0
    }, f.findTargetInfo = function (e, t) {
        for (var n = this._targetInfoList, i = p(t, e), r = 0; r < n.length; r++) {
            var o = n[r], a = e.panelId;
            if (a) {
                if (o.panelId === a) return o
            } else for (r = 0; r < v.length; r++) if (v[r](i, o)) return o
        }
        return !0
    };
    var m = {
        grid: function (e, t) {
            var n = e.xAxisModels, r = e.yAxisModels, o = e.gridModels, a = i.createHashMap(), c = {}, u = {};
            (n || r || o) && (s(n, (function (e) {
                var t = e.axis.grid.model;
                a.set(t.id, t), c[t.id] = !0
            })), s(r, (function (e) {
                var t = e.axis.grid.model;
                a.set(t.id, t), u[t.id] = !0
            })), s(o, (function (e) {
                a.set(e.id, e), c[e.id] = !0, u[e.id] = !0
            })), a.each((function (e) {
                var i = e.coordinateSystem, o = [];
                s(i.getCartesians(), (function (e, t) {
                    (l(n, e.getAxis("x").model) >= 0 || l(r, e.getAxis("y").model) >= 0) && o.push(e)
                })), t.push({
                    panelId: "grid--" + e.id,
                    gridModel: e,
                    coordSysModel: e,
                    coordSys: o[0],
                    coordSyses: o,
                    getPanelRect: y.grid,
                    xAxisDeclared: c[e.id],
                    yAxisDeclared: u[e.id]
                })
            })))
        }, geo: function (e, t) {
            s(e.geoModels, (function (e) {
                var n = e.coordinateSystem;
                t.push({
                    panelId: "geo--" + e.id,
                    geoModel: e,
                    coordSysModel: e,
                    coordSys: n,
                    coordSyses: [n],
                    getPanelRect: y.geo
                })
            }))
        }
    }, v = [function (e, t) {
        var n = e.xAxisModel, i = e.yAxisModel, r = e.gridModel;
        return !r && n && (r = n.axis.grid.model), !r && i && (r = i.axis.grid.model), r && r === t.gridModel
    }, function (e, t) {
        var n = e.geoModel;
        return n && n === t.geoModel
    }], y = {
        grid: function () {
            return this.coordSys.grid.getRect().clone()
        }, geo: function () {
            var e = this.coordSys, t = e.getBoundingRect().clone();
            return t.applyTransform(r.getTransform(e)), t
        }
    }, b = {
        lineX: c(C, 0), lineY: c(C, 1), rect: function (e, t, n) {
            var i = t[u[e]]([n[0][0], n[1][0]]), r = t[u[e]]([n[0][1], n[1][1]]),
                o = [g([i[0], r[0]]), g([i[1], r[1]])];
            return {values: o, xyMinMax: o}
        }, polygon: function (e, t, n) {
            var r = [[1 / 0, -1 / 0], [1 / 0, -1 / 0]];
            return {
                values: i.map(n, (function (n) {
                    var i = t[u[e]](n);
                    return r[0][0] = Math.min(r[0][0], i[0]), r[1][0] = Math.min(r[1][0], i[1]), r[0][1] = Math.max(r[0][1], i[0]), r[1][1] = Math.max(r[1][1], i[1]), i
                })), xyMinMax: r
            }
        }
    };

    function C(e, t, n, r) {
        var o = n.getAxis(["x", "y"][e]), a = g(i.map([0, 1], (function (e) {
            return t ? o.coordToData(o.toLocalCoord(r[e])) : o.toGlobalCoord(o.dataToCoord(r[e]))
        }))), s = [];
        return s[e] = a, s[1 - e] = [NaN, NaN], {values: a, xyMinMax: s}
    }

    var w = {
        lineX: c(I, 0), lineY: c(I, 1), rect: function (e, t, n) {
            return [[e[0][0] - n[0] * t[0][0], e[0][1] - n[0] * t[0][1]], [e[1][0] - n[1] * t[1][0], e[1][1] - n[1] * t[1][1]]]
        }, polygon: function (e, t, n) {
            return i.map(e, (function (e, i) {
                return [e[0] - n[0] * t[i][0], e[1] - n[1] * t[i][1]]
            }))
        }
    };

    function I(e, t, n, i) {
        return [t[0] - i[e] * n[0], t[1] - i[e] * n[1]]
    }

    function x(e) {
        return e ? [e[0][1] - e[0][0], e[1][1] - e[1][0]] : [NaN, NaN]
    }

    var A = d;
    e.exports = A
}, function (e, t, n) {
    var i = n(1).each, r = "\0_ec_hist_store";

    function o(e) {
        var t = e[r];
        return t || (t = e[r] = [{}]), t
    }

    t.push = function (e, t) {
        var n = o(e);
        i(t, (function (t, i) {
            for (var r = n.length - 1; r >= 0; r--) {
                if (n[r][i]) break
            }
            if (r < 0) {
                var o = e.queryComponents({mainType: "dataZoom", subType: "select", id: i})[0];
                if (o) {
                    var a = o.getPercentRange();
                    n[0][i] = {dataZoomId: i, start: a[0], end: a[1]}
                }
            }
        })), n.push(t)
    }, t.pop = function (e) {
        var t = o(e), n = t[t.length - 1];
        t.length > 1 && t.pop();
        var r = {};
        return i(n, (function (e, n) {
            for (var i = t.length - 1; i >= 0; i--) {
                if (e = t[i][n]) {
                    r[n] = e;
                    break
                }
            }
        })), r
    }, t.clear = function (e) {
        e[r] = null
    }, t.count = function (e) {
        return o(e).length
    }
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(10), a = n(97), s = n(510), l = n(32), c = n(210), u = ["inBrush", "outOfBrush"],
        h = i.PRIORITY.VISUAL.BRUSH;

    function d(e) {
        e.eachComponent({mainType: "brush"}, (function (t) {
            (t.brushTargetManager = new c(t.option, e)).setInputRanges(t.areas, e)
        }))
    }

    function f(e, t) {
        if (!e.isDisposed()) {
            var n = e.getZr();
            n.__ecInBrushSelectEvent = !0, e.dispatchAction({
                type: "brushSelect",
                batch: t
            }), n.__ecInBrushSelectEvent = !1
        }
    }

    function g(e, t, n, i) {
        for (var r = 0, o = t.length; r < o; r++) {
            var a = t[r];
            if (e[a.brushType](i, n, a.selectors, a)) return !0
        }
    }

    function p(e) {
        var t = e.brushSelector;
        if (r.isString(t)) {
            var n = [];
            return r.each(s, (function (e, i) {
                n[i] = function (n, i, r, o) {
                    var a = i.getItemLayout(n);
                    return e[t](a, r, o)
                }
            })), n
        }
        if (r.isFunction(t)) {
            var i = {};
            return r.each(s, (function (e, n) {
                i[n] = t
            })), i
        }
        return t
    }

    i.registerLayout(h, (function (e, t, n) {
        e.eachComponent({mainType: "brush"}, (function (e) {
            n && "takeGlobalCursor" === n.type && e.setBrushOption("brush" === n.key ? n.brushOption : {brushType: !1})
        })), d(e)
    })), i.registerVisual(h, (function (e, t, n) {
        var i, o, c = [];
        e.eachComponent({mainType: "brush"}, (function (t, n) {
            var l = {brushId: t.id, brushIndex: n, brushName: t.name, areas: r.clone(t.areas), selected: []};
            c.push(l);
            var h = t.option, d = h.brushLink, f = [], v = [], y = [], b = 0;
            n || (i = h.throttleType, o = h.throttleDelay);
            var C = r.map(t.areas, (function (e) {
                return function (e) {
                    var t = e.selectors = {};
                    return r.each(s[e.brushType], (function (n, i) {
                        t[i] = function (i) {
                            return n(i, t, e)
                        }
                    })), e
                }(r.defaults({boundingRect: m[e.brushType](e)}, e))
            })), w = a.createVisualMappings(t.option, u, (function (e) {
                e.mappingMethod = "fixed"
            }));

            function I(e) {
                return "all" === d || f[e]
            }

            function x(e) {
                return !!e.length
            }

            r.isArray(d) && r.each(d, (function (e) {
                f[e] = 1
            })), e.eachSeries((function (n, i) {
                var o = y[i] = [];
                "parallel" === n.subType ? function (e, t) {
                    var n = e.coordinateSystem;
                    b |= n.hasAxisBrushed(), I(t) && n.eachActiveState(e.getData(), (function (e, t) {
                        "active" === e && (v[t] = 1)
                    }))
                }(n, i) : function (n, i, o) {
                    var a = p(n);
                    if (!a || function (e, t) {
                        var n = e.option.seriesIndex;
                        return null != n && "all" !== n && (r.isArray(n) ? r.indexOf(n, t) < 0 : t !== n)
                    }(t, i)) return;
                    if (r.each(C, (function (i) {
                        a[i.brushType] && t.brushTargetManager.controlSeries(i, n, e) && o.push(i), b |= x(o)
                    })), I(i) && x(o)) {
                        var s = n.getData();
                        s.each((function (e) {
                            g(a, o, s, e) && (v[e] = 1)
                        }))
                    }
                }(n, i, o)
            })), e.eachSeries((function (e, t) {
                var n = {seriesId: e.id, seriesIndex: t, seriesName: e.name, dataIndex: []};
                l.selected.push(n);
                var i = p(e), r = y[t], o = e.getData(), s = I(t) ? function (e) {
                    return v[e] ? (n.dataIndex.push(o.getRawIndex(e)), "inBrush") : "outOfBrush"
                } : function (e) {
                    return g(i, r, o, e) ? (n.dataIndex.push(o.getRawIndex(e)), "inBrush") : "outOfBrush"
                };
                (I(t) ? b : x(r)) && a.applyVisual(u, w, o, s)
            }))
        })), function (e, t, n, i, r) {
            if (!r) return;
            var o = e.getZr();
            if (o.__ecInBrushSelectEvent) return;
            o.__ecBrushSelect || (o.__ecBrushSelect = f);
            l.createOrUpdate(o, "__ecBrushSelect", n, t)(e, i)
        }(t, i, o, c, n)
    }));
    var m = {
        lineX: r.noop, lineY: r.noop, rect: function (e) {
            return v(e.range)
        }, polygon: function (e) {
            for (var t, n = e.range, i = 0, r = n.length; i < r; i++) {
                t = t || [[1 / 0, -1 / 0], [1 / 0, -1 / 0]];
                var o = n[i];
                o[0] < t[0][0] && (t[0][0] = o[0]), o[0] > t[0][1] && (t[0][1] = o[0]), o[1] < t[1][0] && (t[1][0] = o[1]), o[1] > t[1][1] && (t[1][1] = o[1])
            }
            return t && v(t)
        }
    };

    function v(e) {
        return new o(e[0][0], e[1][0], e[0][1] - e[0][0], e[1][1] - e[1][0])
    }

    t.layoutCovers = d
}, function (e, t, n) {
    var i = n(2);
    n(214), n(535), n(215);
    var r = n(536), o = n(14);
    i.registerProcessor(i.PRIORITY.PROCESSOR.SERIES_FILTER, r), o.registerSubTypeDefaulter("legend", (function () {
        return "plain"
    }))
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(13), a = n(5).isNameSpecified, s = n(33).legend.selector,
        l = {all: {type: "all", title: r.clone(s.all)}, inverse: {type: "inverse", title: r.clone(s.inverse)}},
        c = i.extendComponentModel({
            type: "legend.plain",
            dependencies: ["series"],
            layoutMode: {type: "box", ignoreSize: !0},
            init: function (e, t, n) {
                this.mergeDefaultAndTheme(e, n), e.selected = e.selected || {}, this._updateSelector(e)
            },
            mergeOption: function (e) {
                c.superCall(this, "mergeOption", e), this._updateSelector(e)
            },
            _updateSelector: function (e) {
                var t = e.selector;
                !0 === t && (t = e.selector = ["all", "inverse"]), r.isArray(t) && r.each(t, (function (e, n) {
                    r.isString(e) && (e = {type: e}), t[n] = r.merge(e, l[e.type])
                }))
            },
            optionUpdated: function () {
                this._updateData(this.ecModel);
                var e = this._data;
                if (e[0] && "single" === this.get("selectedMode")) {
                    for (var t = !1, n = 0; n < e.length; n++) {
                        var i = e[n].get("name");
                        if (this.isSelected(i)) {
                            this.select(i), t = !0;
                            break
                        }
                    }
                    !t && this.select(e[0].get("name"))
                }
            },
            _updateData: function (e) {
                var t = [], n = [];
                e.eachRawSeries((function (i) {
                    var r, o = i.name;
                    if (n.push(o), i.legendVisualProvider) {
                        var s = i.legendVisualProvider.getAllNames();
                        e.isSeriesFiltered(i) || (n = n.concat(s)), s.length ? t = t.concat(s) : r = !0
                    } else r = !0;
                    r && a(i) && t.push(i.name)
                })), this._availableNames = n;
                var i = this.get("data") || t, s = r.map(i, (function (e) {
                    return "string" != typeof e && "number" != typeof e || (e = {name: e}), new o(e, this, this.ecModel)
                }), this);
                this._data = s
            },
            getData: function () {
                return this._data
            },
            select: function (e) {
                var t = this.option.selected;
                if ("single" === this.get("selectedMode")) {
                    var n = this._data;
                    r.each(n, (function (e) {
                        t[e.get("name")] = !1
                    }))
                }
                t[e] = !0
            },
            unSelect: function (e) {
                "single" !== this.get("selectedMode") && (this.option.selected[e] = !1)
            },
            toggleSelected: function (e) {
                var t = this.option.selected;
                t.hasOwnProperty(e) || (t[e] = !0), this[t[e] ? "unSelect" : "select"](e)
            },
            allSelect: function () {
                var e = this._data, t = this.option.selected;
                r.each(e, (function (e) {
                    t[e.get("name", !0)] = !0
                }))
            },
            inverseSelect: function () {
                var e = this._data, t = this.option.selected;
                r.each(e, (function (e) {
                    var n = e.get("name", !0);
                    t.hasOwnProperty(n) || (t[n] = !0), t[n] = !t[n]
                }))
            },
            isSelected: function (e) {
                var t = this.option.selected;
                return !(t.hasOwnProperty(e) && !t[e]) && r.indexOf(this._availableNames, e) >= 0
            },
            getOrient: function () {
                return "vertical" === this.get("orient") ? {index: 1, name: "vertical"} : {index: 0, name: "horizontal"}
            },
            defaultOption: {
                zlevel: 0,
                z: 4,
                show: !0,
                orient: "horizontal",
                left: "center",
                top: 0,
                align: "auto",
                backgroundColor: "rgba(0,0,0,0)",
                borderColor: "#ccc",
                borderRadius: 0,
                borderWidth: 0,
                padding: 5,
                itemGap: 10,
                itemWidth: 25,
                itemHeight: 14,
                inactiveColor: "#ccc",
                inactiveBorderColor: "#ccc",
                itemStyle: {borderWidth: 0},
                textStyle: {color: "#333"},
                selectedMode: !0,
                selector: !1,
                selectorLabel: {
                    show: !0,
                    borderRadius: 10,
                    padding: [3, 5, 3, 5],
                    fontSize: 12,
                    fontFamily: " sans-serif",
                    color: "#666",
                    borderWidth: 1,
                    borderColor: "#666"
                },
                emphasis: {selectorLabel: {show: !0, color: "#eee", backgroundColor: "#666"}},
                selectorPosition: "auto",
                selectorItemGap: 7,
                selectorButtonGap: 10,
                tooltip: {show: !1}
            }
        }), u = c;
    e.exports = u
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(20).createSymbol, a = n(3), s = n(209).makeBackground, l = n(7), c = r.curry,
        u = r.each, h = a.Group, d = i.extendComponentView({
            type: "legend.plain", newlineDisabled: !1, init: function () {
                this.group.add(this._contentGroup = new h), this._backgroundEl, this.group.add(this._selectorGroup = new h), this._isFirstRender = !0
            }, getContentGroup: function () {
                return this._contentGroup
            }, getSelectorGroup: function () {
                return this._selectorGroup
            }, render: function (e, t, n) {
                var i = this._isFirstRender;
                if (this._isFirstRender = !1, this.resetInner(), e.get("show", !0)) {
                    var o = e.get("align"), a = e.get("orient");
                    o && "auto" !== o || (o = "right" === e.get("left") && "vertical" === a ? "right" : "left");
                    var c = e.get("selector", !0), u = e.get("selectorPosition", !0);
                    !c || u && "auto" !== u || (u = "horizontal" === a ? "end" : "start"), this.renderInner(o, e, t, n, c, a, u);
                    var h = e.getBoxLayoutParams(), d = {width: n.getWidth(), height: n.getHeight()}, f = e.get("padding"),
                        g = l.getLayoutRect(h, d, f), p = this.layoutInner(e, o, g, i, c, u),
                        m = l.getLayoutRect(r.defaults({width: p.width, height: p.height}, h), d, f);
                    this.group.attr("position", [m.x - p.x, m.y - p.y]), this.group.add(this._backgroundEl = s(p, e))
                }
            }, resetInner: function () {
                this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll()
            }, renderInner: function (e, t, n, i, o, a, s) {
                var l = this.getContentGroup(), d = r.createHashMap(), f = t.get("selectedMode"), v = [];
                n.eachRawSeries((function (e) {
                    !e.get("legendHoverLink") && v.push(e.id)
                })), u(t.getData(), (function (r, o) {
                    var a = r.get("name");
                    if (this.newlineDisabled || "" !== a && "\n" !== a) {
                        var s = n.getSeriesByName(a)[0];
                        if (!d.get(a)) if (s) {
                            var u = s.getData(), y = u.getVisual("color"), b = u.getVisual("borderColor");
                            "function" == typeof y && (y = y(s.getDataParams(0))), "function" == typeof b && (b = b(s.getDataParams(0)));
                            var C = u.getVisual("legendSymbol") || "roundRect", w = u.getVisual("symbol");
                            this._createItem(a, o, r, t, C, w, e, y, b, f).on("click", c(g, a, null, i, v)).on("mouseover", c(p, s.name, null, i, v)).on("mouseout", c(m, s.name, null, i, v)), d.set(a, !0)
                        } else n.eachRawSeries((function (n) {
                            if (!d.get(a) && n.legendVisualProvider) {
                                var s = n.legendVisualProvider;
                                if (!s.containName(a)) return;
                                var l = s.indexOfName(a), u = s.getItemVisual(l, "color"),
                                    h = s.getItemVisual(l, "borderColor");
                                this._createItem(a, o, r, t, "roundRect", null, e, u, h, f).on("click", c(g, null, a, i, v)).on("mouseover", c(p, null, a, i, v)).on("mouseout", c(m, null, a, i, v)), d.set(a, !0)
                            }
                        }), this)
                    } else l.add(new h({newline: !0}))
                }), this), o && this._createSelector(o, t, i, a, s)
            }, _createSelector: function (e, t, n, i, r) {
                var o = this.getSelectorGroup();
                u(e, (function (e) {
                    !function (e) {
                        var i = e.type, r = new a.Text({
                            style: {x: 0, y: 0, align: "center", verticalAlign: "middle"},
                            onclick: function () {
                                n.dispatchAction({type: "all" === i ? "legendAllSelect" : "legendInverseSelect"})
                            }
                        });
                        o.add(r);
                        var s = t.getModel("selectorLabel"), l = t.getModel("emphasis.selectorLabel");
                        a.setLabelStyle(r.style, r.hoverStyle = {}, s, l, {
                            defaultText: e.title,
                            isRectText: !1
                        }), a.setHoverStyle(r)
                    }(e)
                }))
            }, _createItem: function (e, t, n, i, s, l, c, u, d, g) {
                var p = i.get("itemWidth"), m = i.get("itemHeight"), v = i.get("inactiveColor"),
                    y = i.get("inactiveBorderColor"), b = i.get("symbolKeepAspect"), C = i.getModel("itemStyle"),
                    w = i.isSelected(e), I = new h, x = n.getModel("textStyle"), A = n.get("icon"),
                    _ = n.getModel("tooltip"), S = _.parentModel, k = o(s = A || s, 0, 0, p, m, w ? u : v, null == b || b);
                if (I.add(f(k, s, C, d, y, w)), !A && l && (l !== s || "none" === l)) {
                    var L = .8 * m;
                    "none" === l && (l = "circle");
                    var T = o(l, (p - L) / 2, (m - L) / 2, L, L, w ? u : v, null == b || b);
                    I.add(f(T, l, C, d, y, w))
                }
                var O = "left" === c ? p + 5 : -5, R = c, E = i.get("formatter"), P = e;
                "string" == typeof E && E ? P = E.replace("{name}", null != e ? e : "") : "function" == typeof E && (P = E(e)), I.add(new a.Text({
                    style: a.setTextStyle({}, x, {
                        text: P,
                        x: O,
                        y: m / 2,
                        textFill: w ? x.getTextColor() : v,
                        textAlign: R,
                        textVerticalAlign: "middle"
                    })
                }));
                var M = new a.Rect({
                    shape: I.getBoundingRect(),
                    invisible: !0,
                    tooltip: _.get("show") ? r.extend({
                        content: e,
                        formatter: S.get("formatter", !0) || function () {
                            return e
                        },
                        formatterParams: {componentType: "legend", legendIndex: i.componentIndex, name: e, $vars: ["name"]}
                    }, _.option) : null
                });
                return I.add(M), I.eachChild((function (e) {
                    e.silent = !0
                })), M.silent = !g, this.getContentGroup().add(I), a.setHoverStyle(I), I.__legendDataIndex = t, I
            }, layoutInner: function (e, t, n, i, r, o) {
                var a = this.getContentGroup(), s = this.getSelectorGroup();
                l.box(e.get("orient"), a, e.get("itemGap"), n.width, n.height);
                var c = a.getBoundingRect(), u = [-c.x, -c.y];
                if (r) {
                    l.box("horizontal", s, e.get("selectorItemGap", !0));
                    var h = s.getBoundingRect(), d = [-h.x, -h.y], f = e.get("selectorButtonGap", !0),
                        g = e.getOrient().index, p = 0 === g ? "width" : "height", m = 0 === g ? "height" : "width",
                        v = 0 === g ? "y" : "x";
                    "end" === o ? d[g] += c[p] + f : u[g] += h[p] + f, d[1 - g] += c[m] / 2 - h[m] / 2, s.attr("position", d), a.attr("position", u);
                    var y = {x: 0, y: 0};
                    return y[p] = c[p] + f + h[p], y[m] = Math.max(c[m], h[m]), y[v] = Math.min(0, h[v] + d[1 - g]), y
                }
                return a.attr("position", u), this.group.getBoundingRect()
            }, remove: function () {
                this.getContentGroup().removeAll(), this._isFirstRender = !0
            }
        });

    function f(e, t, n, i, r, o) {
        var a;
        return "line" !== t && t.indexOf("empty") < 0 ? (a = n.getItemStyle(), e.style.stroke = i, o || (a.stroke = r)) : a = n.getItemStyle(["borderWidth", "borderColor"]), e.setStyle(a)
    }

    function g(e, t, n, i) {
        m(e, t, n, i), n.dispatchAction({type: "legendToggleSelect", name: null != e ? e : t}), p(e, t, n, i)
    }

    function p(e, t, n, i) {
        var r = n.getZr().storage.getDisplayList()[0];
        r && r.useHoverLayer || n.dispatchAction({type: "highlight", seriesName: e, name: t, excludeSeriesId: i})
    }

    function m(e, t, n, i) {
        var r = n.getZr().storage.getDisplayList()[0];
        r && r.useHoverLayer || n.dispatchAction({type: "downplay", seriesName: e, name: t, excludeSeriesId: i})
    }

    e.exports = d
}, function (e, t, n) {
    n(126), n(54), n(55), n(541), n(542), n(128), n(129)
}, function (e, t, n) {
    n(126), n(54), n(55), n(543), n(544), n(128), n(129)
}, function (e, t, n) {
    var i = n(2), r = n(219);
    n(220), n(221), n(547), n(548), n(226), i.registerPreprocessor(r)
}, function (e, t, n) {
    var i = n(1), r = i.each;

    function o(e, t) {
        return e && e.hasOwnProperty && e.hasOwnProperty(t)
    }

    e.exports = function (e) {
        var t = e && e.visualMap;
        i.isArray(t) || (t = t ? [t] : []), r(t, (function (e) {
            if (e) {
                o(e, "splitList") && !o(e, "pieces") && (e.pieces = e.splitList, delete e.splitList);
                var t = e.pieces;
                t && i.isArray(t) && r(t, (function (e) {
                    i.isObject(e) && (o(e, "start") && !o(e, "min") && (e.min = e.start), o(e, "end") && !o(e, "max") && (e.max = e.end))
                }))
            }
        }))
    }
}, function (e, t, n) {
    n(14).registerSubTypeDefaulter("visualMap", (function (e) {
        return e.categories || (e.pieces ? e.pieces.length > 0 : e.splitNumber > 0) && !e.calculable ? "piecewise" : "continuous"
    }))
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(97), a = n(45), s = i.PRIORITY.VISUAL.COMPONENT;

    function l(e, t, n, i) {
        for (var r = t.targetVisuals[i], o = a.prepareVisualTypes(r), s = {color: e.getData().getVisual("color")}, l = 0, c = o.length; l < c; l++) {
            var u = o[l], h = r["opacity" === u ? "__alphaForOpacity" : u];
            h && h.applyVisual(n, d, f)
        }
        return s.color;

        function d(e) {
            return s[e]
        }

        function f(e, t) {
            s[e] = t
        }
    }

    i.registerVisual(s, {
        createOnAllSeries: !0, reset: function (e, t) {
            var n = [];
            return t.eachComponent("visualMap", (function (t) {
                var i = e.pipelineContext;
                !t.isTargetSeries(e) || i && i.large || n.push(o.incrementalApplyVisual(t.stateList, t.targetVisuals, r.bind(t.getValueState, t), t.getDataDimension(e.getData())))
            })), n
        }
    }), i.registerVisual(s, {
        createOnAllSeries: !0, reset: function (e, t) {
            var n = e.getData(), i = [];
            t.eachComponent("visualMap", (function (t) {
                if (t.isTargetSeries(e)) {
                    var o = t.getVisualMeta(r.bind(l, null, e, t)) || {stops: [], outerColors: []},
                        a = t.getDataDimension(n), s = n.getDimensionInfo(a);
                    null != s && (o.dimension = s.index, i.push(o))
                }
            })), e.getData().setVisual("visualMeta", i)
        }
    })
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(12), a = n(223), s = n(45), l = n(97), c = n(5), u = n(4), h = s.mapVisual,
        d = s.eachVisual, f = r.isArray, g = r.each, p = u.asc, m = u.linearMap, v = r.noop,
        y = i.extendComponentModel({
            type: "visualMap",
            dependencies: ["series"],
            stateList: ["inRange", "outOfRange"],
            replacableOptionKeys: ["inRange", "outOfRange", "target", "controller", "color"],
            dataBound: [-1 / 0, 1 / 0],
            layoutMode: {type: "box", ignoreSize: !0},
            defaultOption: {
                show: !0,
                zlevel: 0,
                z: 4,
                seriesIndex: "all",
                min: 0,
                max: 200,
                dimension: null,
                inRange: null,
                outOfRange: null,
                left: 0,
                right: null,
                top: null,
                bottom: 0,
                itemWidth: null,
                itemHeight: null,
                inverse: !1,
                orient: "vertical",
                backgroundColor: "rgba(0,0,0,0)",
                borderColor: "#ccc",
                contentColor: "#5793f3",
                inactiveColor: "#aaa",
                borderWidth: 0,
                padding: 5,
                textGap: 10,
                precision: 0,
                color: null,
                formatter: null,
                text: null,
                textStyle: {color: "#333"}
            },
            init: function (e, t, n) {
                this._dataExtent, this.targetVisuals = {}, this.controllerVisuals = {}, this.textStyleModel, this.itemSize, this.mergeDefaultAndTheme(e, n)
            },
            optionUpdated: function (e, t) {
                var n = this.option;
                o.canvasSupported || (n.realtime = !1), !t && l.replaceVisualOption(n, e, this.replacableOptionKeys), this.textStyleModel = this.getModel("textStyle"), this.resetItemSize(), this.completeVisualOption()
            },
            resetVisual: function (e) {
                var t = this.stateList;
                e = r.bind(e, this), this.controllerVisuals = l.createVisualMappings(this.option.controller, t, e), this.targetVisuals = l.createVisualMappings(this.option.target, t, e)
            },
            getTargetSeriesIndices: function () {
                var e = this.option.seriesIndex, t = [];
                return null == e || "all" === e ? this.ecModel.eachSeries((function (e, n) {
                    t.push(n)
                })) : t = c.normalizeToArray(e), t
            },
            eachTargetSeries: function (e, t) {
                r.each(this.getTargetSeriesIndices(), (function (n) {
                    e.call(t, this.ecModel.getSeriesByIndex(n))
                }), this)
            },
            isTargetSeries: function (e) {
                var t = !1;
                return this.eachTargetSeries((function (n) {
                    n === e && (t = !0)
                })), t
            },
            formatValueText: function (e, t, n) {
                var i, o, a = this.option, s = a.precision, l = this.dataBound, c = a.formatter;
                return n = n || ["<", ">"], r.isArray(e) && (e = e.slice(), i = !0), o = t ? e : i ? [u(e[0]), u(e[1])] : u(e), r.isString(c) ? c.replace("{value}", i ? o[0] : o).replace("{value2}", i ? o[1] : o) : r.isFunction(c) ? i ? c(e[0], e[1]) : c(e) : i ? e[0] === l[0] ? n[0] + " " + o[1] : e[1] === l[1] ? n[1] + " " + o[0] : o[0] + " - " + o[1] : o;

                function u(e) {
                    return e === l[0] ? "min" : e === l[1] ? "max" : (+e).toFixed(Math.min(s, 20))
                }
            },
            resetExtent: function () {
                var e = this.option, t = p([e.min, e.max]);
                this._dataExtent = t
            },
            getDataDimension: function (e) {
                var t = this.option.dimension, n = e.dimensions;
                if (null != t || n.length) {
                    if (null != t) return e.getDimension(t);
                    for (var i = e.dimensions, r = i.length - 1; r >= 0; r--) {
                        var o = i[r];
                        if (!e.getDimensionInfo(o).isCalculationCoord) return o
                    }
                }
            },
            getExtent: function () {
                return this._dataExtent.slice()
            },
            completeVisualOption: function () {
                var e = this.ecModel, t = this.option, n = {inRange: t.inRange, outOfRange: t.outOfRange},
                    i = t.target || (t.target = {}), o = t.controller || (t.controller = {});
                r.merge(i, n), r.merge(o, n);
                var l = this.isCategory();

                function c(n) {
                    f(t.color) && !n.inRange && (n.inRange = {color: t.color.slice().reverse()}), n.inRange = n.inRange || {color: e.get("gradientColor")}, g(this.stateList, (function (e) {
                        var t = n[e];
                        if (r.isString(t)) {
                            var i = a.get(t, "active", l);
                            i ? (n[e] = {}, n[e][t] = i) : delete n[e]
                        }
                    }), this)
                }

                c.call(this, i), c.call(this, o), function (e, t, n) {
                    var i = e[t], r = e[n];
                    i && !r && (r = e[n] = {}, g(i, (function (e, t) {
                        if (s.isValidType(t)) {
                            var n = a.get(t, "inactive", l);
                            null != n && (r[t] = n, "color" !== t || r.hasOwnProperty("opacity") || r.hasOwnProperty("colorAlpha") || (r.opacity = [0, 0]))
                        }
                    })))
                }.call(this, i, "inRange", "outOfRange"), function (e) {
                    var t = (e.inRange || {}).symbol || (e.outOfRange || {}).symbol,
                        n = (e.inRange || {}).symbolSize || (e.outOfRange || {}).symbolSize,
                        i = this.get("inactiveColor");
                    g(this.stateList, (function (o) {
                        var a = this.itemSize, s = e[o];
                        s || (s = e[o] = {color: l ? i : [i]}), null == s.symbol && (s.symbol = t && r.clone(t) || (l ? "roundRect" : ["roundRect"])), null == s.symbolSize && (s.symbolSize = n && r.clone(n) || (l ? a[0] : [a[0], a[0]])), s.symbol = h(s.symbol, (function (e) {
                            return "none" === e || "square" === e ? "roundRect" : e
                        }));
                        var c = s.symbolSize;
                        if (null != c) {
                            var u = -1 / 0;
                            d(c, (function (e) {
                                e > u && (u = e)
                            })), s.symbolSize = h(c, (function (e) {
                                return m(e, [0, u], [0, a[0]], !0)
                            }))
                        }
                    }), this)
                }.call(this, o)
            },
            resetItemSize: function () {
                this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]
            },
            isCategory: function () {
                return !!this.option.categories
            },
            setSelected: v,
            getValueState: v,
            getVisualMeta: v
        });
    e.exports = y
}, function (e, t, n) {
    var i = n(1), r = {
        get: function (e, t, n) {
            var r = i.clone((o[e] || {})[t]);
            return n && i.isArray(r) ? r[r.length - 1] : r
        }
    }, o = {
        color: {active: ["#006edd", "#e0ffff"], inactive: ["rgba(0,0,0,0)"]},
        colorHue: {active: [0, 360], inactive: [0, 0]},
        colorSaturation: {active: [.3, 1], inactive: [0, 0]},
        colorLightness: {active: [.9, .5], inactive: [0, 0]},
        colorAlpha: {active: [.3, 1], inactive: [0, 0]},
        opacity: {active: [.3, 1], inactive: [0, 0]},
        symbol: {active: ["circle", "roundRect", "diamond"], inactive: ["none"]},
        symbolSize: {active: [10, 50], inactive: [0, 0]}
    }, a = r;
    e.exports = a
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(3), a = n(8), s = n(7), l = n(45), c = i.extendComponentView({
        type: "visualMap", autoPositionValues: {left: 1, right: 1, top: 1, bottom: 1}, init: function (e, t) {
            this.ecModel = e, this.api = t, this.visualMapModel
        }, render: function (e, t, n, i) {
            this.visualMapModel = e, !1 !== e.get("show") ? this.doRender.apply(this, arguments) : this.group.removeAll()
        }, renderBackground: function (e) {
            var t = this.visualMapModel, n = a.normalizeCssArray(t.get("padding") || 0), i = e.getBoundingRect();
            e.add(new o.Rect({
                z2: -1,
                silent: !0,
                shape: {x: i.x - n[3], y: i.y - n[0], width: i.width + n[3] + n[1], height: i.height + n[0] + n[2]},
                style: {fill: t.get("backgroundColor"), stroke: t.get("borderColor"), lineWidth: t.get("borderWidth")}
            }))
        }, getControllerVisual: function (e, t, n) {
            var i = (n = n || {}).forceState, o = this.visualMapModel, a = {};
            if ("symbol" === t && (a.symbol = o.get("itemSymbol")), "color" === t) {
                var s = o.get("contentColor");
                a.color = s
            }

            function c(e) {
                return a[e]
            }

            function u(e, t) {
                a[e] = t
            }

            var h = o.controllerVisuals[i || o.getValueState(e)], d = l.prepareVisualTypes(h);
            return r.each(d, (function (i) {
                var r = h[i];
                n.convertOpacityToAlpha && "opacity" === i && (i = "colorAlpha", r = h.__alphaForOpacity), l.dependsOn(i, t) && r && r.applyVisual(e, c, u)
            })), a[t]
        }, positionGroup: function (e) {
            var t = this.visualMapModel, n = this.api;
            s.positionElement(e, t.getBoxLayoutParams(), {width: n.getWidth(), height: n.getHeight()})
        }, doRender: r.noop
    });
    e.exports = c
}, function (e, t, n) {
    var i = n(1), r = n(7).getLayoutRect;
    t.getItemAlign = function (e, t, n) {
        var i = e.option, o = i.align;
        if (null != o && "auto" !== o) return o;
        for (var a = {
            width: t.getWidth(),
            height: t.getHeight()
        }, s = "horizontal" === i.orient ? 1 : 0, l = [["left", "right", "width"], ["top", "bottom", "height"]], c = l[s], u = [0, null, 10], h = {}, d = 0; d < 3; d++) h[l[1 - s][d]] = u[d], h[c[d]] = 2 === d ? n[0] : i[c[d]];
        var f = [["x", "width", 3], ["y", "height", 0]][s], g = r(h, a, i.padding);
        return c[(g.margin[f[2]] || 0) + g[f[0]] + .5 * g[f[1]] < .5 * a[f[1]] ? 0 : 1]
    }, t.makeHighDownBatch = function (e, t) {
        return i.each(e || [], (function (e) {
            null != e.dataIndex && (e.dataIndexInside = e.dataIndex, e.dataIndex = null), e.highlightKey = "visualMap" + (t ? t.componentIndex : "")
        })), e
    }
}, function (e, t, n) {
    n(2).registerAction({type: "selectDataRange", event: "dataRangeSelected", update: "update"}, (function (e, t) {
        t.eachComponent({mainType: "visualMap", query: e}, (function (t) {
            t.setSelected(e.selected)
        }))
    }))
}, function (e, t, n) {
    var i = n(2), r = n(219);
    n(220), n(221), n(549), n(550), n(226), i.registerPreprocessor(r)
}, function (e, t, n) {
    var i, r = n(12), o = "urn:schemas-microsoft-com:vml", a = "undefined" == typeof window ? null : window, s = !1,
        l = a && a.document;
    if (l && !r.canvasSupported) try {
        !l.namespaces.zrvml && l.namespaces.add("zrvml", o), i = function (e) {
            return l.createElement("<zrvml:" + e + ' class="zrvml">')
        }
    } catch (e) {
        i = function (e) {
            return l.createElement("<" + e + ' xmlns="' + o + '" class="zrvml">')
        }
    }
    t.doc = l, t.createNode = function (e) {
        return i(e)
    }, t.initVML = function () {
        if (!s && l) {
            s = !0;
            var e = l.styleSheets;
            e.length < 31 ? l.createStyleSheet().addRule(".zrvml", "behavior:url(#default#VML)") : e[0].addRule(".zrvml", "behavior:url(#default#VML)")
        }
    }
}, function (e) {
    e.exports = JSON.parse('{"type":"FeatureCollection","features":[{"type":"Feature","id":"710000","properties":{"id":"710000","cp":[121.509062,24.044332],"name":"台湾","childNum":6},"geometry":{"type":"MultiPolygon","coordinates":[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\\\ƎsÆNŌÔĚänÜƤɊĂǀĆĴĤǊŨxĚĮǂƺòƌâÔ®ĮXŦţƸZûÐƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃǋƏďíåɛGɉ¿@ăƑ¥ĘWǬÏĶŁâ"],["@@\\\\p|WoYG¿¥Ij@¢"],["@@¡@V^RqBbAnTXeRz¤L«³I"],["@@ÆEEkWqë @"],["@@fced"],["@@¯ɜÄèaì¯ØǓIġĽ"],["@@çûĖëĄhòř "]],"encodeOffsets":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]],[[126259,26318]],[[127671,26683]]]}},{"type":"Feature","id":"130000","properties":{"id":"130000","cp":[114.502461,38.045474],"name":"河北","childNum":3},"geometry":{"type":"MultiPolygon","coordinates":[["@@o~Z]ªrºc_ħ²G¼s`jÎŸnüsÂłNX_M`Ç½ÓnUKĜēs¤­©yrý§uģcJe"],["@@U`Ts¿mÂ"],["@@oºƋÄdeVDJj£J|ÅdzÂFt~KŨ¸IÆv|¢r}èonb}`RÎÄn°ÒdÞ²^®lnÐèĄlðÓ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcŋ`ZÔ¶êqvFÆN®ĆTH®¦O¾IbÐã´BĐɢŴÆíȦpĐÞXR·nndO¤OÀĈƒ­QgµFo|gȒęSWb©osx|hYhgŃfmÖĩnºTÌSp¢dYĤ¶UĈjlǐpäìë|³kÛfw²Xjz~ÂqbTÑěŨ@|oMzv¢ZrÃVw¬ŧĖ¸f°ÐTªqs{S¯r æÝlNd®²Ğ ǆiGĘJ¼lr}~K¨ŸƐÌWöÆzR¤lêmĞLÎ@¡|q]SvKÑcwpÏÏĿćènĪWlĄkT}J¤~ÈTdpddʾĬBVtEÀ¢ôPĎƗè@~kü\\\\rÊĔÖæW_§¼F´©òDòjYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkvGpuARhÞÆǶgĘTǼƹS£¨¡ù³ŘÍ]¿ÂyôEP xX¶¹ÜO¡gÚ¡IwÃé¦ÅBÏ|Ç°N«úmH¯âDùyŜŲIÄuĐ¨D¸dɂFOhđ©OiÃ`ww^ÌkÑH«ƇǤŗĺtFu{Z}Ö@U´ʚLg®¯Oı°Ãw ^VbÉsmAê]]w§RRl£ȭµu¯b{ÍDěïÿȧuT£ġěŗƃĝQ¨fVƋƅn­a@³@ďyÃ½IĹÊKŭfċŰóxV@tƯJ]eR¾fe|rHA|h~Ėƍl§ÏlTíb ØoÅbbx³^zÃĶ¶Sj®AyÂhðk`«PËµEFÛ¬Y¨Ļrõqi¼Wi°§Ð±´°^[À|ĠO@ÆxO\\\\ta\\\\tĕtû{ġȧXýĪÓjùÎRb^ÎfK[ÝděYfíÙTyuUSyŌŏů@Oi½éŅ­aVcř§ax¹XŻácWU£ôãºQ¨÷Ñws¥qEHÙ|šYQoŕÇyáĂ£MÃ°oťÊP¡mWO¡v{ôvîēÜISpÌhp¨ jdeŔQÖjX³àĈ[n`Yp@UcM`RKhEbpŞlNut®EtqnsÁgAiúoHqCXhfgu~ÏWP½¢G^}¯ÅīGCÑ^ãziMáļMTÃƘrMc|O_¯Ŏ´|morDkO\\\\mĆJfl@cĢ¬¢aĦtRıÒ¾ùƀ^juųœK­UFyƝīÛ÷ąV×qƥV¿aȉd³BqPBmaËđŻģmÅ®V¹d^KKonYg¯XhqaLdu¥Ípǅ¡KąÅkĝęěhq}HyÃ]¹ǧ£Í÷¿qáµ§g¤o^á¾ZE¤i`ĳ{nOl»WÝĔįhgF[¿¡ßkOüš_ūiǱàUtėGyl}ÓM}jpEC~¡FtoQiHkk{Ãmï"]],"encodeOffsets":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]}},{"type":"Feature","id":"140000","properties":{"id":"140000","cp":[111.849248,36.857014],"name":"山西","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@ÞĩÒSra}ÁyWix±Üe´lèßÓǏokćiµVZģ¡coTSË¹ĪmnÕńehZg{gtwªpXaĚThȑp{¶Eh®RćƑP¿£Pmc¸mQÝWďȥoÅîɡųAďä³aÏJ½¥PG­ąSM­EÅruµéYÓŌ_dĒCo­Èµ]¯_²ÕjāK~©ÅØ^ÔkïçămÏk]­±cÝ¯ÑÃmQÍ~_apm~ç¡qu{JÅŧ·Ls}EyÁÆcI{¤IiCfUcƌÃp§]ě«vD@¡SÀµMÅwuYY¡DbÑc¡h×]nkoQdaMç~eDÛtT©±@¥ù@É¡ZcW|WqOJmĩl«ħşvOÓ«IqăV¥D[mI~Ó¢cehiÍ]Ɠ~ĥqX·eƷn±}v[ěďŕ]_œ`¹§ÕōIo©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs×¥ŅxÊdÒ{ºvĴÎêÌɊ²¶ü¨|ÞƸµȲLLúÉƎ¤ϊęĔV`_bªS^|dzY|dz¥pZbÆ£¶ÒK}tĦÔņƠPYznÍvX¶Ěn ĠÔzý¦ª÷ÑĸÙUȌ¸dòÜJð´ìúNM¬XZ´¤ŊǸ_tldI{¦ƀðĠȤ¥NehXnYGR° ƬDj¬¸|CĞKqºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBÊTŸʂōĖĴŞȀÆÿȄlŤĒötÎ½î¼ĨXh|ªM¤Ðz"],"encodeOffsets":[[116874,41716]]}},{"type":"Feature","id":"150000","properties":{"id":"150000","cp":[111.670801,41.818311],"name":"内蒙古","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@¯PqFB|S³C|kñHdiÄ¥sŉÅPóÑÑE^ÅPpy_YtShQ·aHwsOnŉÃs©iqjUSiº]ïW«gW¡ARë¥_sgÁnUI«m]jvV¼euhwqAaW_µj»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáGOUÛOB±XkÅ¹£k|e]olkVÍ¼ÕqtaÏõjgÁ£§U^RLËnX°ÇBz^~wfvypV ¯ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyxþp]ÉvïèvƀnÂĴÖ@V~Ĉv¦wĖtējyÄDXÄxGQuv_i¦aBçw˛wD©{tāmQ{EJ§KPśƘƿ¥@sCTÉ}ɃwƇy±gÑ}T[÷kÐç¦«SÒ¥¸ëBX½HáÅµÀğtSÝÂa[ƣ°¯¦Pï¡]£ġÒk®G²èQ°óMq}EóƐÇ\\\\@áügQÍu¥FTÕ¿Jû]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHǊ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶¿A[¡{d×uQAMxVvMOmăl«ct[wº_ÇÊjbÂ£ĦS_éQZ_lwgOiýe`YYLq§IÁǳ£ÙË[ÕªuƏ³ÍTs·bÁĽäė[b[ŗfãcn¥îC¿÷µ[ŏÀQ­ōĉm¿Á^£mJVmL[{Ï_£F¥Ö{ŹA}×Wu©ÅaųĳƳhB{·TQqÙIķËZđ©Yc|M¡LeVUóK_QWk_ĥ¿ãZ»X\\\\ĴuUèlG®ěłTĠğDŃOrÍdÆÍz]±ŭ©Å]ÅÐ}UË¥©TċïxgckfWgi\\\\ÏĒ¥HkµEë{»ÏetcG±ahUiñiWsɁ·cCÕk]wȑ|ća}wVaĚá G°ùnM¬¯{ÈÐÆA¥ÄêJxÙ¢hP¢ÛºµwWOóFÁz^ÀŗÎú´§¢T¤ǻƺSėǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇqZñiñC³ª»E`¨åXēÕqÉû[l}ç@čƘóO¿¡FUsAʽīccocÇS}£IS~ălkĩXçmĈŀÐoÐdxÒuL^T{r@¢ÍĝKén£kQyÅõËXŷƏL§~}kq»IHėǅjĝ»ÑÞoå°qTt|r©ÏS¯·eŨĕx«È[eM¿yupN~¹ÏyN£{©għWí»Í¾səšǅ_ÃĀɗ±ąĳĉʍŌŷSÉA±åǥɋ@ë£R©ąP©}ĹªƏj¹erLDĝ·{i«ƫC£µsKCGS|úþXgp{ÁX¿ć{ƱȏñZáĔyoÁhA}ŅĆfdŉ_¹Y°ėǩÑ¡H¯¶oMQqð¡Ë|Ñ`ƭŁX½·óÛxğįÅcQs«tȋǅFù^it«Č¯[hAi©á¥ÇĚ×l|¹y¯YȵƓñǙµïċĻ|Düȭ¶¡oŽäÕG\\\\ÄT¿Òõr¯LguÏYęRƩɷŌO\\\\İÐ¢æ^Ŋ ĲȶȆbÜGĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľ]ėl¥ËĭûÁėéV©±ćn©­ȇÍq¯½YÃÔŉÉNÑÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱàưN¢ƔÊuľýľώȪƺɂļxZĈ}ÌŉŪĺœĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ç¼ȳÐUfdIxÿ\\\\G zâɏÙOº·pqy£@qþ@Ǟ˽IBäƣzsÂZÁàĻdñ°ŕzéØűzșCìDȐĴĺf®Àľưø@ɜÖÞKĊŇƄ§͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘǊ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKǳͲOðÏȆƘ¼CϚǚ࢚˼ФÔ¤ƌĞ̪Qʤ´¼mȠJˀƲÀɠmǐnǔĎȆÞǠN~ʢĜ¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢĖćYÀŎüôQÐÂŎŞǆŞêƖoˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^ªƂ`ªt¾äƚêĦĀ¼ÐĔǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDÄ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°ǆdÀÉ_ĸdîàŎjÊêTĞªŌŜWÈ|tqĢUB~´°ÎFCU¼pĀēƄN¦¾O¶łKĊOjĚj´ĜYp{¦SĚÍ\\\\T×ªV÷Ší¨ÅDK°ßtŇĔK¨ǵÂcḷ̌ĚǣȄĽFlġUĵŇȣFʉɁMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFxúQEr´Wrh¤Ɛ \\\\talĈDJÜ|[Pll̚¸ƎGú´P¬W¦^¦H]prRn|or¾wLVnÇIujkmon£cX^Bh`¥V¦U¤¸}xRj[^xN[~ªxQ[`ªHÆÂExx^wN¶Ê|¨ìMrdYpoRzNyÀDs~bcfÌ`L¾n|¾T°c¨È¢ar¤`[|òDŞĔöxElÖdHÀI`Ď\\\\Àì~ÆR¼tf¦^¢ķ¶eÐÚMptgjɡČÅyġLûŇV®ÄÈƀĎ°P|ªVVªj¬ĚÒêp¬E|ŬÂc|ÀtƐK f{ĘFĒƌXƲąo½Ę\\\\¥o}Ûu£ç­kX{uĩ«āíÓUŅßŢqŤ¥lyň[oi{¦LńðFȪȖĒL¿Ìf£K£ʺoqNwğc`uetOj×°KJ±qÆġmĚŗos¬qehqsuH{¸kH¡ÊRǪÇƌbȆ¢´äÜ¢NìÉʖ¦â©Ġu¦öČ^â£ĂhĖMÈÄw\\\\fŦ°W ¢¾luŸDw\\\\̀ʉÌÛMĀ[bÓEn}¶Vcês"]],"encodeOffsets":[[[129102,52189]]]}},{"type":"Feature","id":"210000","properties":{"id":"210000","cp":[123.429096,41.796767],"name":"辽宁","childNum":16},"geometry":{"type":"MultiPolygon","coordinates":[["@@L@@sa"],["@@MnNm"],["@@dc"],["@@eÀC@b"],["@@fXwkbrÄ`qg"],["@@^jtWQ"],["@@~ Y]c"],["@@G`ĔN^_¿ZÃM"],["@@iX¶BY"],["@@YZ"],["@@L_{Epf"],["@@^WqCT\\\\"],["@@\\\\[§t|¤_"],["@@m`n_"],["@@Ïxǌ{q_×^Giip"],["@@@é^BntaÊU]x ¯ÄPĲ­°hʙK³VÕ@Y~|EvĹsÇ¦­L^pÃ²ŸÒG Ël]xxÄ_fT¤Ď¤cPC¨¸TVjbgH²sdÎdHt`B²¬GJję¶[ÐhjeXdlwhðSČ¦ªVÊÏÆZÆŶ®²^ÎyÅÎcPqńĚDMħĜŁH­kçvV[ĳ¼WYÀäĦ`XlR`ôLUVfK¢{NZdĒªYĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~źB|¦ÕE¤Ð`\\\\|KUnnI]¤ÀÂĊnŎR®Ő¿¶\\\\ÀøíDm¦ÎbŨabaĘ\\\\ľãÂ¸atÎSƐ´©v\\\\ÖÚÌǴ¤Â¨JKrZ_ZfjþhPkx`YRIjJcVf~sCN¤ EhæmsHy¨SðÑÌ\\\\\\\\ĐRZk°IS§fqŒßýáĞÙÉÖ[^¯ǤŲê´\\\\¦¬ĆPM¯£»uïpùzExanµyoluqe¦W^£ÊL}ñrkqWňûPUP¡ôJoo·U}£[·¨@XĸDXm­ÛÝºGUCÁª½{íĂ^cjk¶Ã[q¤LÉö³cux«zZf²BWÇ®Yß½ve±ÃCý£W{Ú^q^sÑ·¨ÍOt¹·C¥GDrí@wÕKţÃ«V·i}xËÍ÷i©ĝɝǡ]{c±OW³Ya±_ç©HĕoƫŇqr³Lys[ñ³¯OSďOMisZ±ÅFC¥Pq{Ã[Pg}\\\\¿ghćOk^ģÁFıĉĥM­oEqqZûěŉ³F¦oĵhÕP{¯~TÍlªNßYÐ{Ps{ÃVUeĎwk±ŉVÓ½ŽJãÇÇ»Jm°dhcÀffdF~ĀeĖd`sx² ®EżĀdQÂd^~ăÔH¦\\\\LKpĄVez¤NP ǹÓRÆąJSh­a[¦´ÂghwmBÐ¨źhI|VV|p] Â¼èNä¶ÜBÖ¼L`¼bØæKVpoúNZÞÒKxpw|ÊEMnzEQIZZNBčÚFÜçmĩWĪñtÞĵÇñZ«uD±|Əlĳ¥ãn·±PmÍada CLǑkùó¡³Ï«QaċÏOÃ¥ÕđQȥċƭy³ÃA"]],"encodeOffsets":[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]}},{"type":"Feature","id":"220000","properties":{"id":"220000","cp":[125.3245,43.886841],"name":"吉林","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@pä³PClFbbÍzwBGĭZÅi»lY­ċ²SgkÇ£^Sqd¯R©é£¯S\\\\cZ¹iűƏCuƍÓXoR}M^o£R}oªU­FuuXHlEÅÏ©¤ÛmTþ¤D²ÄufàÀ­XXÈ±AeyYw¬dvõ´KÊ£\\\\rµÄlidā]|î©¾DÂVH¹Þ®ÜWnCķ W§@\\\\¸~¤Vp¸póIO¢VOŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð¼¤ N°ąO¥«³[éǡű_°Õ\\\\ÚÊĝþâőàerR¨­JYlďQ[ ÏYëÐ§TGztnß¡gFkMāGÁ¤ia ÉÈ¹`\\\\xs¬dĆkNnuNUuP@vRY¾\\\\¢GªóĄ~RãÖÎĢùđŴÕhQxtcæëSɽŉíëǉ£ƍG£nj°KƘµDsØÑpyĆ¸®¿bXp]vbÍZuĂ{n^IüÀSÖ¦EvRÎûh@â[ƏÈô~FNr¯ôçR±­HÑlĢ^¤¢OðævxsŒ]ÞÁTĠs¶¿âÆGW¾ìA¦·TÑ¬è¥ÏÐJ¨¼ÒÖ¼ƦɄxÊ~StD@Ă¼Ŵ¡jlºWvÐzƦZÐ²CH AxiukdGgetqmcÛ£Ozy¥cE}|¾cZk¿uŐã[oxGikfeäT@SUwpiÚFM©£è^Ú`@v¶eňf heP¶täOlÃUgÞzŸU`l}ÔÆUvØ_Ō¬Öi^ĉi§²ÃB~¡ĈÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYxƘDVÇĺĿg¿cwÅ\\\\¹¥Yĭl¤OvLjM_a W`zļMž·\\\\swqÝSAqŚĳ¯°kRē°wx^ĐkǂÒ\\\\]nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°G³¼XÀ¤¹i´o¤ŃÈ`ÌǲÄUĞd\\\\iÖmÈBĤÜɲDEh LG¾ƀÄ¾{WaYÍÈĢĘÔRîĐj}ÇccjoUb½{h§Ǿ{KƖµÎ÷GĀÖŠåưÎs­lyiē«`å§H¥Ae^§GK}iã\\\\c]v©ģZmÃ|[M}ģTɟĵÂÂ`ÀçmFK¥ÚíÁbX³ÌQÒHof{]ept·GŋĜYünĎųVY^ydõkÅZW«WUa~U·SbwGçǑiW^qFuNĝ·EwUtW·Ýďæ©PuqEzwAVXRãQ`­©GMehccďÏd©ÑW_ÏYƅ»é\\\\ɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_Ã½L¡ýqT^rme\\\\PpZZbyuybQefµ]UhĿDCmûvaÙNSkCwncćfv~YÇG"],"encodeOffsets":[[130196,42528]]}},{"type":"Feature","id":"230000","properties":{"id":"230000","cp":[128.642464,46.756967],"name":"黑龙江","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@UµNÿ¥īèçHÍøƕ¶Lǽ|g¨|a¾pVidd~ÈiíďÓQġėÇZÎXb½|ſÃH½KFgɱCģÛÇAnjÕc[VĝǱÃËÇ_ £ń³pj£º¿»WH´¯U¸đĢmtĜyzzNN|g¸÷äűÑ±ĉā~mq^[ǁÑďlw]¯xQĔ¯l°řĴrBÞTxr[tŽ¸ĻN_yX`biNKuP£kZĮ¦[ºxÆÀdhĹŀUÈƗCwáZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFć}¢A±Äj¨]ĊÕjŋ«×`VuÓÅ~_kŷVÝyhVkÄãPsOµfgeŇµf@u_Ù ÙcªNªÙEojVxT@ãSefjlwH\\\\pŏäÀvlY½d{F~¦dyz¤PÜndsrhfHcvlwjF£G±DÏƥYyÏu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|C˜zxAè¥bfudTrFWÁ¹Am|ĔĕsķÆF´N}ćUÕ@Áĳſmuçuð^ÊýowFzØÎĕNőǏȎôªÌŒǄàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°Uzouxe]}AyÈW¯ÌmKQ]Īºif¸ÄX|sZt|½ÚUÎ lk^p{f¤lºlÆW A²PVÜPHÊâ]ÎĈÌÜk´\\\\@qàsĔÄQºpRij¼èi`¶bXrBgxfv»uUi^v~J¬mVp´£´VWrnP½ì¢BX¬hðX¹^TjVriªjtŊÄmtPGx¸bgRsT`ZozÆO]ÒFôÒOÆŊvÅpcGêsx´DR{AEOr°x|íb³Wm~DVjºéNNËÜ˛ɶ­GxŷCSt}]ûōSmtuÇÃĕNāg»íT«u}ç½BĵÞʣ¥ëÊ¡MÛ³ãȅ¡ƋaǩÈÉQG¢·lG|tvgrrf«ptęŘnÅĢrI²¯LiØsPf_vĠdxM prʹL¤¤eËÀđKïÙVY§]Ióáĥ]ķK¥j|pŇ\\\\kzţ¦šnņäÔVĂîĪ¬|vW®l¤èØrxm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄĄ»ƢjȦOǺ¨ìSŖÆƬyQv`cwZSÌ®ü±Ǆ]ŀç¬B¬©ńzƺŷɄeeOĨSfm ĊƀP̎ēz©ĊÄÕÊmgÇsJ¥ƔŊśæÎÑqv¿íUOµªÂnĦÁ_½ä@êí£P}Ġ[@gġ}gɊ×ûÏWXá¢užƻÌsNÍ½ƎÁ§čŐAēeL³àydl¦ĘVçŁpśǆĽĺſÊQíÜçÛġÔsĕ¬Ǹ¯YßċġHµ ¡eå`ļrĉŘóƢFìĎWøxÊkƈdƬv|I|·©NqńRŀ¤éeŊŀàŀU²ŕƀBQ£Ď}L¹Îk@©ĈuǰųǨÚ§ƈnTËÇéƟÊcfčŤ^XmHĊĕË«W·ċëx³ǔķÐċJāwİ_ĸȀ^ôWr­°oú¬ĦŨK~ȰCĐ´Ƕ£fNÎèâw¢XnŮeÂÆĶ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®ØCÔ ŬGƠƦYĜĘÜƬDJg_ͥœ@čŅĻA¶¯@wÎqC½Ĉ»NăëKďÍQÙƫ[«ÃígßÔÇOÝáWñuZ¯ĥŕā¡ÑķJu¤E å¯°WKÉ±_d_}}vyõu¬ï¹ÓU±½@gÏ¿rÃ½DgCdµ°MFYxw¿CG£Rƛ½Õ{]L§{qqą¿BÇƻğëܭǊË|c²}Fµ}ÙRsÓpg±QNqǫŋRwŕnéÑÉK«SeYRŋ@{¤SJ}D Ûǖ֍]gr¡µŷjqWÛham³~S«Þ]"]],"encodeOffsets":[[[134456,44547]]]}},{"type":"Feature","id":"320000","properties":{"id":"320000","cp":[119.767413,33.041544],"name":"江苏","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@cþÅPi`ZRu¥É\\\\]~°Y`µÓ^phÁbnÀşúòaĬºTÖŒbe¦¦{¸ZâćNp©Hr|^mjhSEb\\\\afv`sz^lkljÄtg¤D­¾X¿À|ĐiZȀåB·î}GL¢õcßjayBFµÏC^ĭcÙt¿sğH]j{s©HM¢QnDÀ©DaÜÞ·jgàiDbPufjDk`dPOîhw¡ĥ¥GP²ĐobºrYî¶aHŢ´ ]´rılw³r_{£DB_Ûdåuk|Ũ¯F Cºyr{XFye³Þċ¿ÂkĭB¿MvÛpm`rÚã@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlVJĂǀŞqvnO^JZż·Q}êÍÅmµÒ]ƍ¦Dq}¬R^èĂ´ŀĻĊIÔtĲyQŐĠMNtR®òLhĚs©»}OÓGZz¶A\\\\jĨFäOĤHYJvÞHNiÜaĎÉnFQlNM¤B´ĄNöɂtpŬdfåqm¿QûùŞÚb¤uŃJŴu»¹ĄlȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Yxcitğ®jű¢KOķCoy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋÄÄÍīçÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıǅ_k}¢m[ÝóDµ¡RLčiXyÅNïă¡¸iĔÏNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCtOPrE^ÒogĉIµÛÅʹK¤½phMü`oæŀ"],"encodeOffsets":[[121740,32276]]}},{"type":"Feature","id":"330000","properties":{"id":"330000","cp":[120.153576,29.287459],"name":"浙江","childNum":45},"geometry":{"type":"MultiPolygon","coordinates":[["@@E^dQ]K"],["@@jX^j"],["@@sfbU"],["@@qP\\\\xz[ck"],["@@R¢FX}°[s_"],["@@Cb\\\\}"],["@@e|v\\\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nvÞs¯o"],["@@rSkUEj"],["@@bi­ZP"],["@@p[}INf"],["@@À¿"],["@@¹dnb"],["@@rSBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\\\"],["@@FjâL~wyoo~sµL\\\\"],["@@¬e¹aN"],["@@\\\\nÔ¡q]L³ë\\\\ÿ®QÖ"],["@@ÊA­©[¬"],["@@Kxv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢X£ÏylD¼XtH"],["@@hlÜ[LykAvyfw^E¤"],["@@fp¤MusR"],["@@®_ma~LÁ¬Z"],["@@iMxZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`EN¡v"],["@@|TY{"],["@@@n@m"],["@@XWkCT\\\\"],["@@ºwZRkĕWO¢"],["@@X®±GrÆª\\\\ÔáXq{"],["@@ůTG°ĄLHm°UC"],["@@¤aÜx~}dtüGæţŎíĔcŖpMËÐjē¢·ðĄÆMzjWKĎ¢Q¶À_ê_Bıi«pZgf¤Nrq]§ĂN®«H±yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªÁŖHŗŉåqûõi¨hÜ·ñt»¹ýv_[«¸mYL¯QªmĉÅdMgÇjcº«ę¬­K­´B«Âącoċ\\\\xKd¡gěŧ«®á[~ıxu·ÅKsËÉc¢Ù\\\\ĭƛëbf¹­ģSĜkáƉÔ­ĈZB{aMµfzŉfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®\\\\ßðChiqªĭiAuA­µ_W¥ƣO\\\\lċĢttC¨£t`PZäuXßBsĻyekOđġĵHuXBµ]×­­\\\\°®¬F¢¾pµ¼kŘó¬Wät¸|@L¨¸µrºù³Ù~§WIZW®±Ð¨ÒÉx`²pĜrOògtÁZ}þÙ]¡FKwsPlU[}¦Rvn`hq¬\\\\nQ´ĘRWb_ rtČFIÖkĦPJ¶ÖÀÖJĈĄTĚòC ²@PúØz©Pî¢£CÈÚĒ±hŖl¬â~nm¨f©iļ«mntuÖZÜÄjL®EÌFª²iÊxØ¨IÈhhst"],["@@o\\\\VzRZ}y"],["@@@°¡mÛGĕ¨§Ianá[ýƤjfæØLäGr"]],"encodeOffsets":[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125000,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]}},{"type":"Feature","id":"340000","properties":{"id":"340000","cp":[117.283042,31.26119],"name":"安徽","childNum":3},"geometry":{"type":"MultiPolygon","coordinates":[["@@^iuLX^"],["@@e©Ehl"],["@@°ZÆëĎµmkǀwÌÕæhºgBĝâqÙĊzÖgņtÀÁĂÆáhEz|WzqD¹°Eŧl{ævÜcA`¤C`|´qxĲkq^³³GšµbíZ¹qpa±ď OH¦Ħx¢gPícOl_iCveaOjChß¸iÝbÛªCC¿mRV§¢A|t^iĠGÀtÚsd]ĮÐDE¶zAb àiödK¡~H¸íæAǿYj{ď¿À½W®£ChÃsikkly]_teu[bFaTign{]GqªoĈMYá|·¥f¥őaSÕėNµñĞ«Im_m¿Âa]uĜp Z_§{Cäg¤°r[_YjÆOdý[I[á·¥Q_nùgL¾mvˊBÜÆ¶ĊJhpc¹O]iŠ]¥ jtsggJÇ§w×jÉ©±EFË­KiÛÃÕYvsm¬njĻª§emná}k«ŕgđ²ÙDÇ¤í¡ªOy×Où±@DñSęćăÕIÕ¿IµĥOjNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßF¶X®¿mwRIÞfßoG³¾©uyHį{Ɓħ¯AFnuPÍÔzVdàôº^Ðæd´oG¤{S¬ćxã}ŧ×Kǥĩ«ÕOEÐ·ÖdÖsƘÑ¨[Û^Xr¢¼§xvÄÆµ`K§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔēßúLÃÃ_ÈÏ|]ÂÏFlg`ben¾¢pUh~ƴĖ¶_r sĄ~cƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³]u}fïQl{skloNdjäËzDvčoQďHI¦rbtHĔ~BmlRV_ħTLnñH±DL¼Lªl§Ťa¸ĚlK²\\\\RòvDcÎJbt[¤D@®hh~kt°ǾzÖ@¾ªdbYhüóZ ň¶vHrľ\\\\ÊJuxAT|dmÀO[ÃÔG·ĚąĐlŪÚpSJ¨ĸLvÞcPæķŨ®mÐálwKhïgA¢ųÆ©Þ¤OÈm°K´"]],"encodeOffsets":[[[121722,32278]],[[119475,30423]],[[119168,35472]]]}},{"type":"Feature","id":"350000","properties":{"id":"350000","cp":[118.306239,26.075302],"name":"福建","childNum":18},"geometry":{"type":"MultiPolygon","coordinates":[["@@zht´]"],["@@aj^~ĆG©O"],["@@ed¨C}}i"],["@@@vPGsQ"],["@@sBzddW]Q"],["@@S¨Q{"],["@@NVucW"],["@@qptBAq"],["@@¸[mu"],["@@Q\\\\pD]_"],["@@jSwUadpF"],["@@eXª~"],["@@AjvFso"],["@@fT_Çí\\\\v|ba¦jZÆy°"],["@@IjJi"],["@@wJIx«¼AoNe{M­"],["@@K±¡ÓČäeZ"],["@@k¡¹Eh~c®wBkUplÀ¡I~Māe£bN¨gZý¡a±Öcp©PhI¢QqÇGj|¥U g[Ky¬ŏv@OptÉEF\\\\@ åA¬V{XģĐBycpě¼³Ăp·¤¥ohqqÚ¡ŅLs^Ã¡§qlÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ßėuĕeûÒiÁŧSW¥Qûŗ½ùěcÝ§SùĩąSWó«íęACµeRåǃRCÒÇZÍ¢ź±^dlstjD¸ZpuÔâÃH¾oLUêÃÔjjēò´ĄWƛ^Ñ¥Ħ@ÇòmOw¡õyJyD}¢ďÑÈġfZda©º²z£NjD°Ötj¶¬ZSÎ~¾c°¶ÐmxO¸¢Pl´SL|¥AȪĖMņĲg®áIJČĒü` QF¬h|ĂJ@zµ |ê³È ¸UÖŬŬÀEttĸr]ðM¤ĶĲHtÏ AĬkvsq^aÎbvdfÊòSD´Z^xPsĂrvƞŀjJd×ŘÉ ®AÎ¦ĤdxĆqAZRÀMźnĊ»İÐZ YXæJyĊ²·¶q§·K@·{sXãô«lŗ¶»o½E¡­«¢±¨Y®Ø¶^AvWĶGĒĢPlzfļtàAvWYãO_¤sD§ssČġ[kƤPX¦`¶®BBvĪjv©jx[L¥àï[F¼ÍË»ğV`«Ip}ccÅĥZEãoP´B@D¸m±z«Ƴ¿å³BRØ¶Wlâþäą`]Z£Tc ĹGµ¶Hm@_©k¾xĨôȉðX«½đCIbćqK³ÁÄš¬OAwã»aLŉËĥW[ÂGIÂNxĳ¤D¢îĎÎB§°_JGs¥E@¤ućPåcuMuw¢BI¿]zG¹guĮck\\\\_"]],"encodeOffsets":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]}},{"type":"Feature","id":"360000","properties":{"id":"360000","cp":[115.592151,27.676493],"name":"江西","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@ĢĨƐgļ¼ÂMD~ņªe^\\\\^§ý©j×cZØ¨zdÒa¶lÒJìõ`oz÷@¤uŞ¸´ôęöY¼HČƶajlÞƩ¥éZ[|h}^U  ¥pĄžƦO lt¸Æ Q\\\\aÆ|CnÂOjt­ĚĤdÈF`¶@Ðë ¦ōÒ¨SêvHĢûXD®QgÄWiØPÞìºr¤ǆNĠ¢lĄtZoCƞÔºCxrpĠV®Ê{f_Y`_eq®Aot`@oDXfkp¨|s¬\\\\DÄSfè©Hn¬^DhÆyøJhØxĢĀLÊƠPżċĄwȠĚ¦G®ǒĤäTŠÆ~Ħw«|TF¡nc³Ïå¹]ĉđxe{ÎÓvOEm°BƂĨİ|Gvz½ª´HàpeJÝQxnÀW­EµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[r«_gmQu~¥V\\\\OkxtL E¢Ú^~ýêPóqoě±_Êw§ÑªåƗā¼mĉŹ¿NQYBąrwģcÍ¥B­ŗÊcØiIƝĿuqtāwO]³YCñTeÉcaubÍ]trluīBÐGsĵıN£ï^ķqss¿FūūVÕ·´Ç{éĈýÿOER_đûIċâJh­ŅıNȩĕB¦K{Tk³¡OP·wnµÏd¯}½TÍ«YiµÕsC¯iM¤­¦¯P|ÿUHvhe¥oFTuõ\\\\OSsMòđƇiaºćXĊĵà·çhƃ÷Ç{ígu^đgm[×zkKN¶Õ»lčÓ{XSÆv©_ÈëJbVkĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B±ÌKyáV¼Ã~­`gsÙfIƋlę¹e|~udjuTlXµf`¿Jd[\\\\L²"],"encodeOffsets":[[116689,26234]]}},{"type":"Feature","id":"370000","properties":{"id":"370000","cp":[118.000923,36.275807],"name":"山东","childNum":13},"geometry":{"type":"MultiPolygon","coordinates":[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@TGy"],["@@K¬U"],["@@WdXc"],["@@PtOs"],["@@LnXhc"],["@@ppVu]Or"],["@@cdzAUa"],["@@udRhnCI"],["@@oIpR"],["@@Ľč{fzƤîKÎMĮ]ZF½Y]â£ph¶¨râøÀÎǨ¤^ºÄGz~grĚĜlĞÆLĆǆ¢Îo¦cvKbgr°WhmZp L]LºcUÆ­nżĤÌĒbAnrOA´ȊcÀbƦUØrĆUÜøĬƞEzVL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎÉnb²ĦhņBĖįĦåXćì@L¯´ywƕCéÃµė ƿ¸lµ¾Z|ZWyFY¨Mf~C¿`à_RÇzwƌfQnny´INoƬèôº|sTJULîVjǎ¾ĒØDz²XPn±ŴPè¸ŔLƔÜƺ_TüÃĤBBċÈöA´faM¨{«M`¶d¡ôÖ°mȰBÔjj´PM|c^d¤u¤Û´ä«ƢfPk¶Môl]Lb}su^ke{lCMrDÇ­]NÑFsmoõľHyGă{{çrnÓEƕZGª¹Fj¢ïWuøCǷë¡ąuhÛ¡^KxC`C\\\\bÅxì²ĝÝ¿_NīCȽĿåB¥¢·IŖÕy\\\\¹kxÃ£Č×GDyÃ¤ÁçFQ¡KtŵƋ]CgÏAùSedcÚźuYfyMmhUWpSyGwMPqŀÁ¼zK¶G­Y§Ë@´śÇµƕBm@IogZ¯uTMx}CVKï{éƵP_K«pÛÙqċtkkù]gTğwoɁsMõ³ăAN£MRkmEÊčÛbMjÝGuIZGPģãħE[iµBEuDPÔ~ª¼ęt]ûG§¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸YI] PumŝrƿIā[xeÇ³L¯v¯s¬ÁY~}ťuŁgƋpÝĄ_ņī¶ÏSR´ÁP~¿Cyċßdwk´SsX|t`Ä ÈðAªìÎT°¦Dda^lĎDĶÚY°`ĪŴǒàŠv\\\\ebZHŖR¬ŢƱùęOÑM­³FÛWp["]],"encodeOffsets":[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]}},{"type":"Feature","id":"410000","properties":{"id":"410000","cp":[113.665412,33.757975],"name":"河南","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@ýLùµP³swIÓxcŢĞð´E®ÚPtĴXØxÂ¶@«ŕŕQGYfa[şußǩđš_X³ĳÕčC]kbc¥CS¯ëÍB©÷³­Si_}mYTt³xlàcČzÀD}ÂOQ³ÐTĨ¯ƗòËŖ[hłŦv~}ÂZ«¤lPÇ£ªÝŴÅR§ØnhctâknÏ­ľŹUÓÝdKuķI§oTũÙďkęĆH¸Ó\\\\Ä¿PcnS{wBIvÉĽ[GqµuŇôYgûZca©@½Õǽys¯}lgg@­C\\\\£asIdÍuCQñ[L±ęk·ţb¨©kK»KC²òGKmĨS`UQnk}AGēsqaJ¥ĐGRĎpCuÌy ã iMcplk|tRkðev~^´¦ÜSí¿_iyjI|ȑ|¿_»d}q^{Ƈdă}tqµ`Ƴĕg}V¡om½faÇo³TTj¥tĠRyK{ùÓjuµ{t}uËRivGçJFjµÍyqÎàQÂFewixGw½Yŷpµú³XU½ġyłåkÚwZX·l¢Á¢KzOÎÎjc¼htoDHr|­J½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQĹ¤]MÛfaQpě±ǽ¾]u­Fu÷nčÄ¯ADp}AjmcEÇaª³o³ÆÍSƇĈÙDIzËčľ^KLiÞñ[aA²zzÌ÷D|[íÄ³gfÕÞd®|`Ć~oĠƑô³ŊD×°¯CsøÀ«ìUMhTº¨¸ǡîSÔDruÂÇZÖEvPZW~ØÐtĄE¢¦Ðy¸bô´oŬ¬²Ês~]®tªapŎJ¨Öº_Ŕ`Ŗ^Đ\\\\Ĝu~m²Ƹ¸fWĦrƔ}Î^gjdfÔ¡J}\\\\n C¦þWxªJRÔŠu¬ĨĨmFdM{\\\\d\\\\YÊ¢ú@@¦ª²SÜsC}fNècbpRmlØ^gd¢aÒ¢CZZxvÆ¶N¿¢T@uC¬^ĊðÄn|lGlRjsp¢ED}Fio~ÔN~zkĘHVsǲßjŬŢ`Pûàl¢\\\\ÀEhİgÞē X¼Pk|m"],"encodeOffsets":[[118256,37017]]}},{"type":"Feature","id":"420000","properties":{"id":"420000","cp":[113.298572,30.684355],"name":"湖北","childNum":3},"geometry":{"type":"MultiPolygon","coordinates":[["@@AB"],["@@lskt"],["@@¾«}{ra®pîÃ\\\\{øCËyyB±b\\\\òÝjKL ]ĎĽÌJyÚCƈćÎT´Å´pb©ÈdFin~BCo°BĎÃømv®E^vǾ½Ĝ²RobÜeN^ĺ£R¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I¾®I{GqpCgyl{£ÍÍyPLÂ¡¡¸kWxYlÙæŁĢz¾V´W¶ùŸo¾ZHxjwfxGNÁ³Xéæl¶EièIH ujÌQ~v|sv¶Ôi|ú¢FhQsğ¦SiŠBgÐE^ÁÐ{čnOÂÈUÎóĔÊēĲ}Z³½Mŧïeyp·uk³DsÑ¨L¶_ÅuÃ¨w»¡WqÜ]\\\\Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟOKÉġÿ×wg÷IÅzCg]m«ªGeçÃTC«[t§{loWeC@ps_Bp­rf_``Z|ei¡oċMqow¹DƝÓDYpûsYkıǃ}s¥ç³[§cY§HK«Qy]¢wwö¸ïx¼ņ¾Xv®ÇÀµRĠÐHM±cÏdƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\\\}pĭÉI±Ñy¿³x¯No|¹HÏÛmjúË~TuęjCöAwě¬Rđl¯ Ñb­ŇTĿ_[IčĄʿnM¦ğ\\\\É[T·k¹©oĕ@A¾wya¥Y\\\\¥Âaz¯ãÁ¡k¥ne£ÛwE©Êō¶˓uoj_U¡cF¹­[WvP©whuÕyBF`RqJUw\\\\i¡{jEPïÿ½fćQÑÀQ{°fLÔ~wXgītêÝ¾ĺHd³fJd]HJ²EoU¥HhwQsƐ»Xmg±çve]DmÍPoCc¾_hhøYrŊU¶eD°Č_N~øĹĚ·`z]Äþp¼äÌQv\\\\rCé¾TnkžŐÚÜa¼ÝƆĢ¶ÛodĔňÐ¢JqPb ¾|J¾fXƐîĨ_Z¯À}úƲN_ĒÄ^ĈaŐyp»CÇÄKñL³ġM²wrIÒŭxjb[n«øæà ^²­h¯ÚŐªÞ¸Y²ĒVø}Ā^İ´LÚm¥ÀJÞ{JVųÞŃx×sxxƈē ģMřÚðòIfĊŒ\\\\Ʈ±ŒdÊ§ĘDvČ_Àæ~Dċ´A®µ¨ØLV¦êHÒ¤"]],"encodeOffsets":[[[113712,34000]],[[115612,30507]],[[113649,34054]]]}},{"type":"Feature","id":"430000","properties":{"id":"430000","cp":[111.782279,28.09409],"name":"湖南","childNum":3},"geometry":{"type":"MultiPolygon","coordinates":[["@@nFTs"],["@@ßÅÆá½ÔXrCOËRïÿĩ­TooQyÓ[ŅBE¬ÎÓXaį§Ã¸G °ITxpúxÚĳ¥ÏĢ¾edÄ©ĸGàGhM¤Â_U}Ċ}¢pczfþg¤ÇòAVM"],["@@©KA·³CQ±Á«³BUƑ¹AtćOwD]JiØSm¯b£ylXHËÑ±H«C^õľAÅ§¤É¥ïyuǙuA¢^{ÌC´­¦ŷJ£^[ª¿ĕ~ƇN skóā¹¿ï]ă~÷O§­@Vm¡Qđ¦¢Ĥ{ºjÔª¥nf´~Õo×ÛąMąıuZmZcÒ ĲĪ²SÊǄŶ¨ƚCÖŎªQØ¼rŭ­«}NÏürÊ¬mjr@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hT}mĉ¹¥ěDÿë©ıÓ[Oº£¥ótł¹MÕƪ`PDiÛU¾ÅâìUñBÈ£ýhedy¡oċ`pfmjP~kZaZsÐd°wj§@Ĵ®w~^kÀÅKvNmX\\\\¨aŃqvíó¿F¤¡@ũÑVw}S@j}¾«pĂrªg àÀ²NJ¶¶DôK|^ª°LX¾ŴäPĪ±£EXd^¶ĲÞÜ~u¸ǔMRhsRe`ÄofIÔ\\\\Ø  ićymnú¨cj ¢»GČìƊÿÐ¨XeĈĀ¾Oð Fi ¢|[jVxrIQ_EzAN¦zLU`cªxOTu RLÄ¢dVi`p˔vŎµªÉF~Ød¢ºgİàw¸Áb[¦Zb¦z½xBĖ@ªpºlS¸Ö\\\\Ĕ[N¥ˀmĎăJ\\\\ŀ`ňSÚĖÁĐiOĜ«BxDõĚivSÌ}iùÜnÐºG{p°M´wÀÒzJ²ò¨ oTçüöoÛÿñőĞ¤ùTz²CȆȸǎŪƑÐc°dPÎğË¶[È½u¯½WM¡­ÉB·rínZÒ `¨GA¾\\\\pēXhÃRC­üWGġuTé§ŎÑ©ò³I±³}_EÃħg®ęisÁPDmÅ{b[RÅs·kPŽƥóRoOV~]{g\\\\êYƪ¦kÝbiċƵGZ»Ěõó·³vŝ£ø@pyö_ëIkÑµbcÑ§y×dYØªiþ¨[]f]Ņ©C}ÁN»hĻħƏĩ"]],"encodeOffsets":[[[115640,30489]],[[112543,27312]],[[116690,26230]]]}},{"type":"Feature","id":"440000","properties":{"id":"440000","cp":[113.280637,23.125178],"name":"广东","childNum":24},"geometry":{"type":"MultiPolygon","coordinates":[["@@QdAua"],["@@lxDLo"],["@@sbhNLo"],["@@Ă ā"],["@@WltO[["],["@@Kr]S"],["@@eI]y"],["@@I|Mym"],["@@Û³LS¼Y"],["@@nvºBëui©`¾"],["@@zdÛJw®"],["@@°¯"],["@@a yAª¸ËJIxØ@ĀHAmÃV¡ofuo"],["@@sŗÃÔėAƁZÄ ~°ČPäh"],["@@¶ÝÌvmĞh­ıQ"],["@@HdSjĒ¢D}waru«ZqadYM"],["@@el\\\\LqqU"],["@@~rMo\\\\"],["@@f^C"],["@@øPªoj÷ÍÝħXČx°Q¨ıXNv"],["@@gÇƳo[~tly"],["@@EÆC¿"],["@@OP"],["@@wđógĝ[³¡VÙæÅöMÌ³¹pÁaËýý©D©ÜJŹƕģGą¤{ÙūÇO²«BƱéAÒĥ¡«BhlmtÃPµyU¯ucd·w_bŝcīímGO|KPȏŹãŝIŕŭŕ@Óoo¿ē±ß}ŭĲWÈCőâUâǙIğŉ©IĳE×Á³AówXJþ±ÌÜÓĨ£L]ĈÙƺZǾĆĖMĸĤfÎĵlŨnÈĐtFFĤêk¶^k°f¶g}®Faf`vXŲxl¦ÔÁ²¬Ð¦pqÊÌ²iXØRDÎ}Ä@ZĠsx®AR~®ETtĄZƈfŠŠHâÒÐAµ\\\\S¸^wĖkRzalŜ|E¨ÈNĀňZTpBh£\\\\ĎƀuXĖtKL¶G|»ĺEļĞ~ÜĢÛĊrOÙîvd]n¬VÊĜ°RÖpMƂªFbwEÀ©\\\\¤]ŸI®¥D³|Ë]CöAŤ¦æ´¥¸Lv¼¢ĽBaôF~®²GÌÒEYzk¤°ahlVÕI^CxĈPsBƒºV¸@¾ªR²ĨN]´_eavSivc}p}Đ¼ƌkJÚe th_¸ ºx±ò_xNË²@ă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIÇª`uTÅxYĒÖ¼kÖµMjJÚwn\\\\hĒv]îh|ÈƄøèg¸Ķß ĉĈWb¹ƀdéĘNTtP[öSvrCZaGubo´ŖÒÇĐ~¡zCIözx¢PnÈñ @ĥÒ¦]ƞV}³ăĔñiiÄÓVépKG½ÄÓávYoC·sitiaÀyŧÎ¡ÈYDÑům}ý|m[węõĉZÅxUO}÷N¹³ĉo_qtăqwµŁYÙǝŕ¹tïÛUÃ¯mRCºĭ|µÕÊK½Rē ó]GªęAx»HO£|ām¡diď×YïYWªŉOeÚtĐ«zđ¹TāúEá²\\\\ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀǇğ·¿ÃOj YÇ÷Qěi"]],"encodeOffsets":[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]}},{"type":"Feature","id":"450000","properties":{"id":"450000","cp":[108.320004,22.82402],"name":"广西","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@H TQ§A"],["@@ĨÊªLƊDÎĹĐCǦė¸zÚGn£¾rªŀÜt¬@ÖÚSx~øOŒŶÐÂæȠ\\\\ÈÜObĖw^oÞLf¬°bI lTØBÌF£Ć¹gñĤaYt¿¤VSñK¸¤nM¼JE±½¸ñoÜCƆæĪ^ĚQÖ¦^f´QüÜÊz¯lzUĺš@ìp¶n]sxtx¶@~ÒĂJb©gk{°~c°`Ô¬rV\\\\la¼¤ôá`¯¹LCÆbxEræOv[H­[~|aB£ÖsºdAĐzNÂðsÞÆĤªbab`ho¡³F«èVlo¤ÔRzpp®SĪº¨ÖºNĳd`a¦¤F³ºDÎńĀìCĜº¦Ċ~nS|gźvZkCÆj°zVÈÁƔ]LÊFZgčP­kini«qÇczÍY®¬Ů»qR×ō©DÕ§ƙǃŵTÉĩ±ıdÑnYYĲvNĆĆØÜ Öp}e³¦m©iÓ|¹ħņ|ª¦QF¢Â¬ʖovg¿em^ucà÷gÕuíÙćĝ}FĻ¼Ĺ{µHKsLSđƃrč¤[AgoSŇYMÿ§Ç{FśbkylQxĕ]T·¶[BÑÏGáşşƇeăYSs­FQ}­BwtYğÃ@~CÍQ ×WjË±rÉ¥oÏ ±«ÓÂ¥kwWűmcih³K~µh¯e]lµélEģEďsmÇŧē`ãògK_ÛsUʝćğ¶höO¤Ǜn³c`¡y¦CezYwa[ďĵűMę§]XÎ_íÛ]éÛUćİÕBƣ±dy¹T^dûÅÑŦ·PĻþÙ`K¦¢ÍeĥR¿³£[~äu¼dltW¸oRM¢ď\\\\z}Æzdvň{ÎXF¶°Â_ÒÂÏL©ÖTmu¼ãlīkiqéfA·Êµ\\\\őDc¥ÝFyÔćcűH_hLÜêĺĐ¨c}rn`½Ì@¸¶ªVLhŒ\\\\Ţĺk~Ġið°|gtTĭĸ^xvKVGréAébUuMJVÃO¡qĂXËSģãlýà_juYÛÒBG^éÖ¶§EGÅzěƯ¤EkN[kdåucé¬dnYpAyČ{`]þ¯TbÜÈk¡ĠvàhÂƄ¢Jî¶²"]],"encodeOffsets":[[[111707,21520]],[[107619,25527]]]}},{"type":"Feature","id":"460000","properties":{"id":"460000","cp":[109.83119,19.031971],"name":"海南","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@¦Ŝil¢XƦƞòïè§ŞCêɕrŧůÇąĻõ·ĉ³œ̅kÇm@ċȧŧĥĽʉ­ƅſȓÒË¦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\\\Ɔ¸ĠĎvʄȀÐ¾jNðĀÒRZǆzÐŘÎ°H¨Ƣb²_Ġ "],"encodeOffsets":[[112750,20508]]}},{"type":"Feature","id":"510000","properties":{"id":"510000","cp":[104.065735,30.659462],"name":"四川","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@LqKr"],["@@[ĻéV£_ţġñpG réÏ·~ąSfy×Í·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«­T¤JJJyJÈ`Ohß¦¡uËhIyCjmÿwZGTiSsOB²fNmsPa{M{õE^Hj}gYpaeu¯oáwHjÁ½M¡pMuåmni{fk\\\\oÎqCwEZ¼KĝAy{m÷LwO×SimRI¯rKõBS«sFe]fµ¢óY_ÆPRcue°Cbo×bd£ŌIHgtrnyPt¦foaXďxlBowz_{ÊéWiêEGhÜ¸ºuFĈIxf®Y½ĀǙ]¤EyF²ċw¸¿@g¢§RGv»áW`ÃĵJwi]t¥wO­½a[×]`Ãi­üL¦LabbTÀåc}ÍhÆh®BHî|îºÉk­¤Sy£ia©taį·Ɖ`ō¥UhOĝLk}©Fos´JmµlŁuønÑJWÎªYÀïAetTŅÓGË«bo{ıwodƟ½OġÜÂµxàNÖ¾P²§HKv¾]|BÆåoZ`¡Ø`ÀmºĠ~ÌÐ§nÇ¿¤]wğ@srğu~Io[é±¹ ¿ſđÓ@qg¹zƱřaí°KtÇ¤V»Ã[ĩǭƑ^ÇÓ@áťsZÏÅĭƋěpwDóÖáŻneQËq·GCœýS]x·ýq³OÕ¶Qzßti{řáÍÇWŝŭñzÇWpç¿JXĩè½cFÂLiVjx}\\\\NŇĖ¥GeJA¼ÄHfÈu~¸Æ«dE³ÉMA|bÒćhG¬CMõƤąAvüVéŀ_VÌ³ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»ÕZ³ġqDoy`L¬gdp°şp¦ėìÅĮZ°Iähzĵf²å ĚÑKpIN|Ñz]ń·FU×é»R³MÉ»GM«kiér}Ã`¹ăÞmÈnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²ĠþTº·àUȞÏʦ¶I«dĽĢdĬ¿»Ĕ×h\\\\c¬ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvwxBèĻĒ©ĈtCĢɽŠȣ¦āæ·HĽîôNÔ~^¤Ɗu^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ®Z´ğ~Sn|ªWÚ©òzPOȸbð¢|øĞŒQìÛÐ@ĞǎRS¤Á§di´ezÝúØã]HqkIþËQÇ¦ÃsÇ¤[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwnÆƄmÀêErĒtD®ċæcQE®³^ĭ¥©l}äQtoŖÜqÆkµªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæQPJvÄz^Đ¹Æ¯fLà´GC²dt­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïPÈ®âbMüÀXZ ¸£@Å»»QÉ­]dsÖ×_Í_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|YÔZśÎs´xº±Uñt|OĩĠºNbgþJy^dÂY Į]Řz¦gC³R`Āz¢Aj¸CL¤RÆ»@­Ŏk\\\\Ç´£YW}z@Z}Ã¶oû¶]´^NÒ}èNªPÍy¹`S°´ATeVamdUĐwʄvĮÕ\\\\uÆŗ¨Yp¹àZÂmWh{á}WØǍÉüwga§áCNęÎ[ĀÕĪgÖÉªXøx¬½Ů¦¦[NÎLÜUÖ´òrÙŠxR^JkĳnDX{U~ET{ļº¦PZcjF²Ė@pg¨B{u¨ŦyhoÚD®¯¢ WòàFÎ¤¨GDäz¦kŮPġqË¥À]eâÚ´ªKxīPÖ|æ[xÃ¤JÞĥsNÖ½I¬nĨY´®ÐƐmDŝuäđđEbee_v¡}ìęǊē}qÉåT¯µRs¡M@}ůaa­¯wvƉåZw\\\\Z{åû^"]],"encodeOffsets":[[[108815,30935]],[[110617,31811]]]}},{"type":"Feature","id":"520000","properties":{"id":"520000","cp":[106.713478,26.578343],"name":"贵州","childNum":3},"geometry":{"type":"MultiPolygon","coordinates":[["@@G\\\\lY£in"],["@@q|mc¯tÏVSÎ"],["@@hÑ£IsNgßHHªķÃh_¹¡ĝÄ§ń¦uÙùgS¯JH|sÝÅtÁïyMDč»eÕtA¤{b\\\\}G®u\\\\åPFqwÅaDK°ºâ_£ùbµmÁÛĹM[q|hlaªāI}Ñµ@swtwm^oµDéĽŠyVky°ÉûÛR³e¥]RÕěħ[ƅåÛDpJiVÂF²I»mN·£LbÒYbWsÀbpkiTZĄă¶Hq`ĥ_J¯ae«KpÝx]aĕÛPÇȟ[ÁåŵÏő÷Pw}TÙ@Õs«ĿÛq©½m¤ÙH·yǥĘĉBµĨÕnđ]K©œáGçş§ÕßgǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊw¶øV¤w²Ĉ]ÊKx|`ź¦ÂÈdrcÈbe¸`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pĐ`oÒh¶pa^ÓĔ}D»^Xy`d[KvJPhèhCrĂĚÂ^Êƌ wZL­Ġ£ÁbrzOIlMMĪŐžËr×ÎeŦtw|¢mKjSǘňĂStÎŦEtqFT¾Eì¬¬ôxÌO¢ K³ŀºäYPVgŎ¦ŊmŞ¼VZwVlz¤£Tl®ctĽÚó{G­AÇge~Îd¿æaSba¥KKûj®_Ä^\\\\Ø¾bP®¦x^sxjĶI_Ä Xâ¼Hu¨Qh¡À@Ëô}±GNìĎlT¸`V~R°tbÕĊ`¸úÛtÏFDu[MfqGH·¥yAztMFe|R_GkChZeÚ°tov`xbDnÐ{E}ZèxNEÞREn[Pv@{~rĆAB§EO¿|UZ~ìUf¨J²ĂÝÆsªB`s¶fvö¦Õ~dÔq¨¸º»uù[[§´sb¤¢zþF¢ÆÀhÂW\\\\ıËIÝo±ĭŠ£þÊs}¡R]ěDg´VG¢j±®èºÃmpU[Áëº°rÜbNu¸}º¼`niºÔXĄ¤¼ÔdaµÁ_ÃftQQgR·Ǔv}Ý×ĵ]µWc¤F²OĩųãW½¯K©]{LóµCIµ±Mß¿h©āq¬o½~@i~TUxŪÒ¢@£ÀEîôruńb[§nWuMÆLl¿]x}ĳ­½"]],"encodeOffsets":[[[112158,27383]],[[112105,27474]],[[112095,27476]]]}},{"type":"Feature","id":"530000","properties":{"id":"530000","cp":[101.512251,24.740609],"name":"云南","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@[ùx½}ÑRHYīĺûsÍniEoã½Ya²ė{c¬ĝgĂsAØÅwďõzFjw}«Dx¿}Uũlê@HÅ­F¨ÇoJ´Ónũuą¡Ã¢pÒÅØ TF²xa²ËXcÊlHîAßËŁkŻƑŷÉ©hW­æßUËs¡¦}teèÆ¶StÇÇ}Fd£jĈZĆÆ¤Tč\\\\D}O÷£U§~ŃGåŃDĝ¸Tsd¶¶Bª¤u¢ŌĎo~t¾ÍŶÒtD¦ÚiôözØX²ghįh½Û±¯ÿm·zR¦Ɵ`ªŊÃh¢rOÔ´£Ym¼èêf¯ŪĽncÚbw\\\\zlvWªâ ¦gmĿBĹ£¢ƹřbĥkǫßeeZkÙIKueT»sVesbaĕ  ¶®dNĄÄpªy¼³BE®lGŭCǶwêżĔÂepÍÀQƞpC¼ŲÈ­AÎô¶RäQ^Øu¬°_Èôc´¹ò¨PÎ¢hlĎ¦´ĦÆ´sâÇŲPnÊD^¯°Upv}®BPÌªjǬxSöwlfòªvqĸ|`H­viļndĜ­Ćhňem·FyÞqóSį¯³X_ĞçêtryvL¤§z¦c¦¥jnŞklD¤øz½ĜàĂŧMÅ|áƆàÊcðÂFÜáŢ¥\\\\\\\\ºİøÒÐJĴîD¦zK²ǏÎEh~CD­hMn^ÌöÄ©ČZÀaüfɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~ÄqêljN¬¼HÊNQ´ê¼VØ¸E^ŃÒyM{JLoÒęæe±Ķygã¯JYÆĭĘëo¥Šo¯hcK«z_prC´ĢÖY¼ v¸¢RÅW³Â§fÇ¸Yi³xR´ďUË`êĿUûuĆBƣöNDH«ĈgÑaB{ÊNF´¬c·Åv}eÇÃGB»If¦HňĕM~[iwjUÁKE¾dĪçWIèÀoÈXòyŞŮÈXâÎŚj|àsRyµÖPr´þ ¸^wþTDŔHr¸RÌmfżÕâCôoxĜƌÆĮÐYtâŦÔ@]ÈǮƒ\\\\Ī¼Ä£UsÈ¯LbîƲŚºyhr@ĒÔƀÀ²º\\\\êpJ}ĠvqtĠ@^xÀ£È¨mËÏğ}n¹_¿¢×Y_æpÅA^{½Lu¨GO±Õ½ßM¶wÁĢÛPƢ¼pcĲx|apÌ¬HÐŊSfsðBZ¿©XÏÒKk÷Eû¿SrEFsÕūkóVǥŉiTL¡n{uxţÏhôŝ¬ğōNNJkyPaqÂğ¤K®YxÉƋÁ]āęDqçgOgILu\\\\_gz]W¼~CÔē]bµogpÑ_oď`´³Țkl`IªºÎȄqÔþ»E³ĎSJ»_f·adÇqÇc¥Á_Źw{L^É±ćxU£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏÉ¸½řÍcÊG|µƕƣGË÷k°_^ý|_zċBZocmø¯hhcæ\\\\lMFlư£ĜÆyHF¨µêÕ]HAàÓ^it `þßäkĤÎT~Wlÿ¨ÔPzUCNVv [jâôDôď[}z¿msSh¯{jïğl}šĹ[őgK©U·µË@¾m_~q¡f¹ÅË^»f³ø}Q¡ÖË³gÍ±^Ç\\\\ëÃA_¿bWÏ[¶ƛé£F{īZgm@|kHǭƁć¦UĔť×ë}ǝeďºȡȘÏíBÉ£āĘPªĳ¶ŉÿy©nď£G¹¡I±LÉĺÑdĉÜW¥}gÁ{aqÃ¥aıęÏZï`"],"encodeOffsets":[[104636,22969]]}},{"type":"Feature","id":"540000","properties":{"id":"540000","cp":[89.132212,30.860361],"name":"西藏","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@ÂhľxŖxÒVºÅâAĪÝȆµę¯Ňa±r_w~uSÕňqOj]ɄQ£ZUDûoY»©M[L¼qãË{VÍçWVi]ë©Ä÷àyƛhÚU°adcQ~Mx¥cc¡ÙaSyFÖk­uRýq¿ÔµQĽ³aG{¿FµëªéĜÿª@¬·K·àariĕĀ«V»ŶĴūgèLǴŇƶaftèBŚ£^âǐÝ®M¦ÁǞÿ¬LhJ¾óƾÆºcxwf]Y´¦|QLn°adĊ\\\\¨oǀÍŎ´ĩĀd`tÊQŞŕ|¨C^©Ĉ¦¦ÎJĊ{ëĎjª²rÐl`¼Ą[t|¦Stè¾PÜK¸dƄı]s¤î_v¹ÎVòŦj£Əsc¬_Ğ´|Ł¦Av¦w`ăaÝaa­¢e¤ı²©ªSªÈMĄwÉØŔì@T¤Ę\\\\õª@þo´­xA sÂtŎKzó´ÇĊµ¢r^nĊ­Æ¬×üG¢³ {âĊ]G~bÀgVjzlhǶfOfdªB]pjTOtĊn¤}®¦Č¥d¢¼»ddY¼t¢eȤJ¤}Ǿ¡°§¤AÐlc@ĝsªćļđAçwxUuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±Hãd«g[Ø¼ēÀcīľġ¬cJµÐʥVȝ¸ßS¹ý±ğkƁ¼ą^ɛ¤Ûÿb[}¬ōõÃ]ËNm®g@Bg}ÍF±ǐyL¥íCIĳÏ÷Ñį[¹¦[âšEÛïÁÉdƅß{âNÆāŨß¾ě÷yC£k­´ÓH@Â¹TZ¥¢į·ÌAÐ§®Zcv½Z­¹|ÅWZqgW|ieZÅYVÓqdqbc²R@c¥Rã»GeeƃīQ}J[ÒK¬Ə|oėjġĠÑN¡ð¯EBčnwôɍėª²CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛęgſ¶ҍć`ĘąŌJÞä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷f±iMÝ@ĥ°G¬ÃM¥n£Øąğ¯ß§aëbéüÑOčk£{\\\\eµª×MÉfm«Ƒ{Å×Gŏǩãy³©WÑăû··Qòı}¯ãIéÕÂZ¨īès¶ZÈsæĔTŘvgÌsN@îá¾ó@ÙwU±ÉTå»£TđWxq¹Zobs[×¯cĩvėŧ³BM|¹kªħ¥TzNYnÝßpęrñĠĉRS~½ěVVµõ«M££µBĉ¥áºae~³AuĐh`Ü³ç@BÛïĿa©|z²Ý¼D£àč²ŸIûI āóK¥}rÝ_Á´éMaň¨~ªSĈ½½KÙóĿeƃÆB·¬ën×W|Uº}LJrƳlŒµ`bÔ`QÐÓ@s¬ñIÍ@ûws¡åQÑßÁ`ŋĴ{ĪTÚÅTSÄ³Yo|Ç[Ç¾µMW¢ĭiÕØ¿@MhpÕ]jéò¿OƇĆƇpêĉâlØwěsǩĵ¸cbU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB\\\\qTGªÇĜçPoÿfñòą¦óQīÈáPābß{ZŗĸIæÅhnszÁCËìñÏ·ąĚÝUm®ó­L·ăUÈíoù´Êj°ŁŤ_uµ^°ìÇ@tĶĒ¡ÆM³Ģ«İĨÅ®ğRāðggheÆ¢zÊ©Ô\\\\°ÝĎz~ź¤PnMĪÖB£kné§żćĆKĒ°¼L¶èâz¨u¦¥LDĘz¬ýÎmĘd¾ßFzhg²Fy¦ĝ¤ċņbÎ@yĄæm°NĮZRÖíJ²öLĸÒ¨Y®ƌÐVàtt_ÚÂyĠz]ŢhzĎ{ÂĢXc|ÐqfO¢¤ögÌHNPKŖUú´xx[xvĐCûĀìÖT¬¸^}Ìsòd´_KgžLĴÀBon|H@Êx¦BpŰŌ¿fµƌA¾zǈRx¶FkĄźRzŀ~¶[´HnªVƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxǆBú^´W£dkɾĬpw˂ØɦļĬIŚÊnŔa¸~J°îlɌxĤÊÈðhÌ®gT´øàCÀ^ªerrƘd¢İP|Ė ŸWªĦ^¶´ÂLaT±üWƜǀRÂŶUńĖ[QhlLüAÜ\\\\qRĄ©"],"encodeOffsets":[[90849,37210]]}},{"type":"Feature","id":"610000","properties":{"id":"610000","cp":[108.948024,34.263161],"name":"陕西","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@p¢ȮµûGĦ}Ħðǚ¶òƄjɂz°{ºØkÈęâ¦jªBg\\\\ċ°s¬]jú EȌǆ¬stRÆdĠİwÜ¸ôW¾ƮłÒ_{Ìû¼jº¹¢GǪÒ¯ĘZ`ºŊecņą~BÂgzpâēòYǠȰÌTÎ¨ÂW|fcă§uF@N¢XLRMº[ğȣſï|¥Jkc`sŉǷY¹W@µ÷Kãï³ÛIcñ·VȋÚÒķø©þ¥yÓğęmWµÎumZyOŅƟĥÓ~sÑL¤µaÅY¦ocyZ{y c]{Ta©`U_Ěē£ωÊƍKùK¶ȱÝƷ§{û»ÅÁȹÍéuĳ|¹cÑdìUYOuFÕÈYvÁCqÓTǢí§·S¹NgV¬ë÷Át°DØ¯C´ŉƒópģ}ċcEËFéGU¥×K§­¶³BČ}C¿åċ`wġB·¤őcƭ²ő[Å^axwQOÿEËßŚĤNĔwƇÄńwĪ­o[_KÓª³ÙnKÇěÿ]ďă_d©·©Ýŏ°Ù®g]±ßå¬÷m\\\\iaǑkěX{¢|ZKlçhLtŇîŵœè[É@ƉĄEtƇÏ³­ħZ«mJ×¾MtÝĦ£IwÄå\\\\Õ{OwĬ©LÙ³ÙgBƕŀrÌĢŭO¥lãyC§HÍ£ßEñX¡­°ÙCgpťzb`wIvA|§hoĕ@E±iYd¥OĻ¹S|}F@¾oAO²{tfÜ¢FǂÒW²°BĤh^Wx{@¬­F¸¡ķn£P|ªĴ@^ĠĈæbÔc¶lYi^MicĎ°Â[ävï¶gv@ÀĬ·lJ¸sn|¼u~a]ÆÈtŌºJpþ£KKf~¦UbyäIĺãnÔ¿^­ŵMThĠÜ¤ko¼Ŏìąǜh`[tRd²Ĳ_XPrɲlXiL§à¹H°Ȧqº®QCbAŌJ¸ĕÚ³ĺ§ `d¨YjiZvRĺ±öVKkjGȊÄePĞZmļKÀ[`ösìhïÎoĬdtKÞ{¬èÒÒBÔpĲÇĬJŊ¦±J«Y§@·pHµàåVKepWftsAÅqC·¬ko«pHÆuK@oHĆÛķhxenS³àǍrqƶRbzy¸ËÐl¼EºpĤ¼x¼½~Ğà@ÚüdK^mÌSj"],"encodeOffsets":[[110234,38774]]}},{"type":"Feature","id":"620000","properties":{"id":"620000","cp":[103.823557,36.058039],"name":"甘肃","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@VuUv"],["@@ũEĠtt~nkh`Q¦ÅÄÜdwAb×ĠąJ¤DüègĺqBqj°lI¡ĨÒ¤úSHbjÎB°aZ¢KJO[|A£Dx}NĂ¬HUnrk kp¼Y kMJn[aGáÚÏ[½rc}aQxOgsPMnUsncZsKúvAtÞġ£®ĀYKdnFw¢JE°Latf`¼h¬we|Æbj}GA·~W`¢MC¤tL©Ĳ°qdfObÞĬ¹ttu`^ZúE`[@Æsîz®¡CƳƜG²R¢RmfwĸgÜą G@pzJM½mhVy¸uÈÔO±¨{LfæU¶ßGĂq\\\\ª¬²I¥IŉÈīoıÓÑAçÑ|«LÝcspīðÍgtë_õ\\\\ĉñLYnĝgRǡÁiHLlõUĹ²uQjYi§Z_c¨´ĹĖÙ·ŋIaBD­R¹ȥr¯GºßK¨jWkɱOqWĳ\\\\a­Q\\\\sg_ĆǛōëp»£lğÛgSŶN®À]ÓämĹãJaz¥V}Le¤Lýo¹IsŋÅÇ^bz³tmEÁ´a¹cčecÇNĊãÁ\\\\č¯dNj]jZµkÓdaćå]ğĳ@ ©O{¤ĸm¢E·®«|@Xwg]Aģ±¯XǁÑǳªcwQÚŝñsÕ³ÛV_ý¥\\\\ů¥©¾÷w©WÕÊĩhÿÖÁRo¸V¬âDb¨hûxÊ×ǌ~Zâg|XÁnßYoº§ZÅŘv[ĭÖʃuďxcVbnUSfB¯³_TzºÎO©çMÑ~M³]µ^püµÄY~y@X~¤Z³[Èōl@®Å¼£QK·Di¡ByÿQ_´D¥hŗy^ĭÁZ]cIzýah¹MĪğPs{ò²Vw¹t³ŜË[Ñ}X\\\\gsF£sPAgěp×ëfYHāďÖqēŭOÏëdLü\\\\it^c®RÊº¶¢H°mrY£B¹čIoľu¶uI]vģSQ{UŻÅ}QÂ|Ì°ƅ¤ĩŪU ęĄÌZÒ\\\\v²PĔ»ƢNHĂyAmƂwVm`]ÈbH`Ì¢²ILvĜH®¤Dlt_¢JJÄämèÔDëþgºƫaʎÌrêYi~ Îİ¤NpÀA¾Ĕ¼bð÷®üszMzÖĖQdȨýv§Tè|ªHÃ¾a¸|Ð ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\\\h¹¶v·À|\\\\ƁĚN´ĜçèÁz]ġ¤²¨QÒŨTIlªťØ}¼˗ƦvÄùØEÂ«FïËIqōTvāÜŏíÛßÛVj³âwGăÂíNOPìyV³ŉĖýZso§HÑiYw[ß\\\\X¦¥c]ÔƩÜ·«jÐqvÁ¦m^ċ±R¦΋ƈťĚgÀ»IïĨʗƮ°ƝĻþÍAƉſ±tÍEÕÞāNUÍ¡\\\\ſčåÒʻĘm ƭÌŹöʥëQ¤µ­ÇcƕªoIýIÉ_mkl³ăƓ¦j¡YzŇi}Msßõīʋ }ÁVm_[n}eı­Uĥ¼ªI{Î§DÓƻėojqYhĹT©oūĶ£]ďxĩǑMĝq`B´ƃ˺Чç~²ņj@¥@đ´ί}ĥtPńÇ¾V¬ufÓÉCtÓ̻¹£G³]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼĤŊɲĖÂ­Kq´ï¦ºĒǲņɾªǀÞĈĂD½ĄĎÌŗĞrôñnN¼â¾ʄľԆ|Ǆ֦ज़ȗǉ̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏĳëCȚDŲyê×Ŗyò¯ļcÂßYtÁƤyAã˾J@ǝrý@¤rz¸oP¹ɐÚyáHĀ[JwcVeȴÏ»ÈĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔĹŊũ~ËUă{ĻƹɁύȩþĽvĽƓÉ@ēĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶¨c~c¼īeXǚ\\\\đ¾JwÀďksãAfÕ¦L}waoZD½Ml«]eÒÅaÉ²áo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LFLzĈôe]gx}|KK}xklL]c¦£fRtív¦PĤoH{tK"]],"encodeOffsets":[[[108619,36299]],[[108589,36341]]]}},{"type":"Feature","id":"630000","properties":{"id":"630000","cp":[96.778916,35.623178],"name":"青海","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@InJm"],["@@CÆ½OŃĦsΰ~Ē³¦@@Ņi±è}ШƄ˹A³r_ĞǒNĪĐw¤^ŬĵªpĺSZgrpiƼĘÔ¨C|ÍJ©Ħ»®VĲ~f\\\\m `UnÂ~ʌĬàöNt~ňjy¢ZiƔ¥Ąk´nl`JÊJþ©pdƖ®È£¶ìRʦźõƮËnʼėæÑƀĎ[¢VÎĂMÖÝÎF²sƊƀÎBļýƞ¯ʘƭðħ¼Jh¿ŦęΌƇ¥²Q]Č¥nuÂÏri¸¬ƪÛ^Ó¦d¥[Wàx\\\\ZjÒ¨GtpþYŊĕ´zUOëPîMĄÁxH´áiÜUàîÜŐĂÛSuŎrJðÌ¬EFÁú×uÃÎkrĒ{V}İ«O_ÌËĬ©ÓŧSRÑ±§Ģ£^ÂyèçěM³Ƃę{[¸¿uºµ[gt£¸OƤĿéYõ·kĀq]juw¥DĩƍõÇPéÄ½G©ã¤GuȧþRcÕĕNyyût­øï»a½ē¿BMoį£Íj}éZËqbʍƬh¹ìÿÓAçãnIÃ¡I`ks£CG­ěUy×Cy@¶ʡÊBnāzGơMē¼±O÷õJËĚăVĪũƆ£¯{ËL½ÌzżVR|ĠTbuvJvµhĻĖHAëáa­OÇðñęNwœľ·LmI±íĠĩPÉ×®ÿscB³±JKßĊ«`ađ»·QAmOVţéÿ¤¹SQt]]Çx±¯A@ĉĳ¢Óļ©l¶ÅÛrŕspãRk~¦ª]Į­´FRåd­ČsCqđéFn¿ÅƃmÉx{W©ºƝºįkÕƂƑ¸wWūÐ©ÈF£\\\\tÈ¥ÄRÈýÌJ lGr^×äùyÞ³fjc¨£ÂZ|ǓMĝÏ@ëÜőRĝ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³­ÞIňµç½©C¡į÷¯B»|St»]vųs»}MÓ ÿʪƟǭA¡fs»PY¼c¡»¦cċ­¥£~msĉPSi^o©AecPeǵkgyUi¿h}aHĉ^|á´¡HØûÅ«ĉ®]m¡qĉ¶³ÈyôōLÁstB®wn±ă¥HSòė£Së@×œÊăxÇN©©T±ª£Ĳ¡fb®Þbb_Ą¥xu¥B{łĝ³«`dƐt¤ťiñÍUuºí`£^tƃĲc·ÛLO½sç¥Ts{ă\\\\_»kÏ±q©čiìĉ|ÍI¥ć¥]ª§D{ŝŖÉR_sÿc³ĪōƿÎ§p[ĉc¯bKmR¥{³Ze^wx¹dƽÅ½ôIg §Mĕ ƹĴ¿ǣÜÍ]Ý]snåA{eƭ`ǻŊĿ\\\\ĳŬűYÂÿ¬jĖqßb¸L«¸©@ěĀ©ê¶ìÀEH|´bRľÓ¶rÀQþvl®ÕETzÜdb hw¤{LRdcb¯ÙVgƜßzÃôì®^jUèXÎ|UäÌ»rK\\\\ªN¼pZCüVY¤ɃRi^rPŇTÖ}|br°qňbĚ°ªiƶGQ¾²x¦PmlŜ[Ĥ¡ΞsĦÔÏâ\\\\ªÚŒU\\\\f¢N²§x|¤§xĔsZPòʛ²SÐqF`ªVÞŜĶƨVZÌL`¢dŐIqr\\\\oäõFÎ·¤»Ŷ×h¹]ClÙ\\\\¦ďÌį¬řtTӺƙgQÇÓHţĒ´ÃbEÄlbʔC|CŮkƮ[ʼ¬ň´KŮÈΰÌĪ¶ƶlðļATUvdTGº̼ÔsÊDÔveOg"]],"encodeOffsets":[[[105308,37219]],[[95370,40081]]]}},{"type":"Feature","id":"640000","properties":{"id":"640000","cp":[106.278179,37.26637],"name":"宁夏","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@KëÀęĞ«Oęȿȕı]ŉ¡åįÕÔ«ǴõƪĚQÐZhv K°öqÀÑS[ÃÖHƖčËnL]ûcÙß@ĝ¾}w»»oģF¹»kÌÏ·{zP§B­¢íyÅt@@á]Yv_ssģ¼ißĻL¾ġsKD£¡N_X¸}B~HaiÅf{«x»ge_bsKF¯¡IxmELcÿZ¤­ĢÝsuBLùtYdmVtNmtOPhRw~bd¾qÐ\\\\âÙH\\\\bImlNZ»loqlVmGā§~QCw¤{A\\\\PKNY¯bFkC¥sks_Ã\\\\ă«¢ħkJi¯rrAhĹûç£CUĕĊ_ÔBixÅÙĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~hw^ófćKyE­K­zuÔ¡qQ¤xZÑ¢^ļöÜ¾Ep±âbÊÑÆ^fk¬NC¾YpxbK~¥eÖäBlt¿Đx½I[ĒǙWf»Ĭ}d§dµùEuj¨IÆ¢¥dXªƅx¿]mtÏwßRĶX¢͎vÆzƂZò®ǢÌʆCrâºMÞzÆMÒÊÓŊZÄ¾r°Î®Ȉmª²ĈUªĚîøºĮ¦ÌĘk^FłĬhĚiĀĖ¾iİbjÕ"],["@@mfwěwMrŢªv@G"]],"encodeOffsets":[[[109366,40242]],[[108600,36303]]]}},{"type":"Feature","id":"650000","properties":{"id":"650000","cp":[85.617733,40.792818],"name":"新疆","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@QØĔ²X¨~ǘBºjʐßØvKƔX¨vĊOÃ·¢i@~cĝe_«E}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuXêÎf`C¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥OéÈ¿ÖğǤǷÂFÒzÉx[]­Ĥĝœ¦EP}ûƥé¿İƷTėƫœŕƅƱB»Đ±ēO¦E}`cȺrĦáŖuÒª«ĲπdƺÏØZƴwʄ¤ĖGĐǂZĶèH¶}ÚZצʥĪï|ÇĦMŔ»İĝǈì¥Βba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»òmqóŘĝčË¾ăCćāƿÝɽ©ǱŅ¹đ¥³ðLrÁ®ɱĕģŉǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕUv£ƁQïƵkŏ½ΉÃŭÇ³LŇʻ«ƭ\\\\lŭD{ʓDkaFÃÄa³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍöůŉT¡c_ËKYƧUśĵÝU_©rETÏʜ±OñtYwē¨{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\\\śnkOw¥±T»ƷFɯàĩÞáB¹ÆÑUwŕĽw[mG½Èå~Æ÷QyěCFmĭZīŵVÁƿQƛûXS²b½KÏ½ĉS©ŷXĕ{ĕK·¥Ɨcqq©f¿]ßDõU³h­gËÇïģÉɋwk¯í}I·œbmÉřīJɥĻˁ×xoɹīlc¤³Xù]ǅA¿w͉ì¥wÇN·ÂËnƾƍdÇ§đ®ƝvUm©³G\\\\}µĿQyŹlăµEwǇQ½yƋBe¶ŋÀůo¥AÉw@{Gpm¿AĳŽKLh³`ñcËtW±»ÕSëüÿďDu\\\\wwwù³VLŕOMËGh£õP¡erÏd{ġWÁč|yšg^ğyÁzÙs`s|ÉåªÇ}m¢Ń¨`x¥ù^}Ì¥H«YªƅAÐ¹n~ź¯f¤áÀzgÇDIÔ´AňĀÒ¶ûEYospõD[{ù°]uJqU|Soċxţ[õÔĥkŋÞŭZËºóYËüċrw ÞkrťË¿XGÉbřaDü·Ē÷AÃª[ÄäIÂ®BÕĐÞ_¢āĠpÛÄȉĖġDKwbmÄNôfƫVÉviǳHQµâFù­Âœ³¦{YGd¢ĚÜO {Ö¦ÞÍÀP^bƾl[vt×ĈÍEË¨¡Đ~´î¸ùÎhuè`¸HÕŔVºwĠââWò@{ÙNÝ´ə²ȕn{¿¥{l÷eé^eďXj©î\\\\ªÑòÜìc\\\\üqÕ[Č¡xoÂċªbØ­ø|¶ȴZdÆÂońéG\\\\¼C°ÌÆn´nxÊOĨŪƴĸ¢¸òTxÊǪMīĞÖŲÃɎOvʦƢ~FRěò¿ġ~åŊúN¸qĘ[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾ĄYÒ©ÊfºmÔĘcDoĬMŬS¤s²ʘÚžȂVŦ èW°ªB|ĲXŔþÈJĦÆæFĚêYĂªĂ]øªŖNÞüAfɨJ¯ÎrDDĤ`mz\\\\§~D¬{vJÂ«lµĂb¤pŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMTòP÷fØĶK¢ȝ˔Sô¹òEð­`Ɩ½ǒÂň×äı§ĤƝ§C~¡hlåǺŦŞkâ~}FøàĲaĞfƠ¥Ŕd®U¸źXv¢aƆúŪtŠųƠjdƺƺÅìnrh\\\\ĺ¯äɝĦ]èpĄ¦´LƞĬ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹\\\\ĜÑŚ¶ZƄ³àjĨoâȴLÊȮĐ­ĚăÀêZǚŐ¤qȂ\\\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTiƢ¾ªì°`öøu®Ê¾ãØ"],"encodeOffsets":[[88824,50096]]}},{"type":"Feature","id":"110000","properties":{"id":"110000","cp":[116.405285,39.904989],"name":"北京","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@ĽOÁûtŷmiÍt_H»Ĩ±d`¹­{bwYr³S]§§o¹qGtm_SŧoaFLgQN_dV@Zom_ć\\\\ßcÂ±x¯oœRcfe£o§ËgToÛJíĔóu|wP¤XnO¢ÉŦ¯rNÄā¤zâŖÈRpŢZÚ{GrFt¦Òx§ø¹RóäV¤XdżâºWbwŚ¨Ud®bêņ¾jnŎGŃŶnzÚSeîĜZczî¾i]ÍQaúÍÔiþĩȨWĢü|Ėu[qb[swP@ÅğP¿{\\\\¥A¨ÏÑ¨j¯X\\\\¯MKpA³[Hīu}}"],"encodeOffsets":[[120023,41045]]}},{"type":"Feature","id":"120000","properties":{"id":"120000","cp":[117.190182,39.125596],"name":"天津","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@ŬgX§Ü«E¶FÌ¬O_ïlÁgz±AXeµÄĵ{¶]gitgIj·¥îakS¨ÐƎk}ĕ{gBqGf{¿aU^fIư³õ{YıëNĿk©ïËZŏR§òoY×Ógcĥs¡bġ«@dekąI[nlPqCnp{ō³°`{PNdƗqSÄĻNNâyj]äÒD ĬH°Æ]~¡HO¾X}ÐxgpgWrDGpù^LrzWxZ^¨´T\\\\|~@IzbĤjeĊªz£®ĔvěLmV¾Ô_ÈNW~zbĬvG²ZmDM~~"],"encodeOffsets":[[120237,41215]]}},{"type":"Feature","id":"310000","properties":{"id":"310000","cp":[121.472644,31.231706],"name":"上海","childNum":6},"geometry":{"type":"MultiPolygon","coordinates":[["@@ɧư¬EpƸÁxc"],["@@©ª"],["@@MA"],["@@QpİE§ÉC¾"],["@@bŝÕÕEȣÚƥêImɇǦèÜĠÚÃƌÃ͎ó"],["@@ǜûȬɋŭ×^sYɍDŋŽąñCG²«ªč@h_p¯A{oloY¬j@Ĳ`gQÚhr|ǀ^MĲvtbe´R¯Ô¬¨Yô¤r]ìƬį"]],"encodeOffsets":[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]}},{"type":"Feature","id":"500000","properties":{"id":"500000","cp":[107.304962,29.533155],"name":"重庆","childNum":2},"geometry":{"type":"MultiPolygon","coordinates":[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êÐqHðqĖä¥^CÆIj²p\\\\_ æüY|[YxƊæu°xb®Űb@~¢NQt°¶Sæ Ê~rǉĔëĚ¢~uf`faĔJåĊnÖ]jƎćÊ@£¾a®£Ű{ŶĕFègLk{Y|¡ĜWƔtƬJÑxq±ĢN´òKLÈÃ¼D|s`ŋć]Ã`đMûƱ½~Y°ħ`ƏíW½eI½{aOIrÏ¡ĕŇapµÜƅġ^ÖÛbÙŽŏml½SêqDu[RãË»ÿw`»y¸_ĺę}÷`M¯ċfCVµqŉ÷Zgg`d½pDOÎCn^uf²ènh¼WtƏxRGg¦pVFI±G^Ic´ecGĹÞ½sëĬhxW}KÓe­XsbkF¦LØgTkïƵNï¶}Gyw\\\\oñ¡nmĈzj@Óc£»Wă¹Ój_m»¹·~MvÛaq»­ê\\\\ÂoVnÓØÍ²«bq¿efE Ĝ^Q~ Évýş¤²ĮpEİ}zcĺL½¿gÅ¡ýE¡ya£³t\\\\¨\\\\vú»¼§·Ñr_oÒý¥u_n»_At©ÞÅ±ā§IVeëY}{VPÀFA¨ąB}q@|Ou\\\\FmQFÝMwå}]|FmÏCawu_p¯sfÙgYDHl`{QEfNysB¦zG¸rHeN\\\\CvEsÐùÜ_·ÖĉsaQ¯}_UxÃđqNH¬Äd^ÝŰR¬ã°wećJE·vÝ·HgéFXjÉê`|ypxkAwWĐpb¥eOsmzwqChóUQl¥F^lafanòsrEvfQdÁUVfÎvÜ^eftET¬ôA\\\\¢sJnQTjPØxøK|nBzĞ»LYFDxÓvr[ehľvN¢o¾NiÂxGpâ¬zbfZo~hGi]öF||NbtOMn eA±tPTLjpYQ|SHYĀxinzDJÌg¢và¥Pg_ÇzIIII£®S¬ØsÎ¼£N"],["@@ifjN@s"]],"encodeOffsets":[[[109628,30765]],[[111725,31320]]]}},{"type":"Feature","id":"810000","properties":{"id":"810000","cp":[114.173355,22.320048],"name":"香港","childNum":5},"geometry":{"type":"MultiPolygon","coordinates":[["@@AlBk"],["@@mn"],["@@EpFo"],["@@ea¢pl¸Eõ¹hj[]ÔCÎ@lj¡uBX´AI¹[yDU]W`çwZkmcMpÅv}IoJlcafŃK°ä¬XJmÐ đhI®æÔtSHnEÒrÈc"],["@@rMUwAS®e"]],"encodeOffsets":[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]}},{"type":"Feature","id":"820000","properties":{"id":"820000","cp":[113.54909,22.198951],"name":"澳门","childNum":1},"geometry":{"type":"Polygon","coordinates":["@@kÊd°å§s"],"encodeOffsets":[[116279,22639]]}}],"UTF8Encoding":true}')
}, function (module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "a", (function () {
        return ChartConfigModal
    }));
    var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0),
        _BaseModal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(100),
        jsoneditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(231),
        jsoneditor__WEBPACK_IMPORTED_MODULE_2___default = __webpack_require__.n(jsoneditor__WEBPACK_IMPORTED_MODULE_2__);

    function _typeof(e) {
        return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function _classCallCheck(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function _defineProperties(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function _createClass(e, t, n) {
        return t && _defineProperties(e.prototype, t), n && _defineProperties(e, n), e
    }

    function _inherits(e, t) {
        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
        e.prototype = Object.create(t && t.prototype, {
            constructor: {
                value: e,
                writable: !0,
                configurable: !0
            }
        }), t && _setPrototypeOf(e, t)
    }

    function _setPrototypeOf(e, t) {
        return (_setPrototypeOf = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function _createSuper(e) {
        var t = _isNativeReflectConstruct();
        return function () {
            var n, i = _getPrototypeOf(e);
            if (t) {
                var r = _getPrototypeOf(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return _possibleConstructorReturn(this, n)
        }
    }

    function _possibleConstructorReturn(e, t) {
        return !t || "object" !== _typeof(t) && "function" != typeof t ? _assertThisInitialized(e) : t
    }

    function _assertThisInitialized(e) {
        if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return e
    }

    function _isNativeReflectConstruct() {
        if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
        if (Reflect.construct.sham) return !1;
        if ("function" == typeof Proxy) return !0;
        try {
            return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
            }))), !0
        } catch (e) {
            return !1
        }
    }

    function _getPrototypeOf(e) {
        return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    __webpack_require__(561);
    var options = {mode: "code", mainMenuBar: !1}, ChartConfigModal = function (_BaseModal) {
        _inherits(ChartConfigModal, _BaseModal);
        var _super = _createSuper(ChartConfigModal);

        function ChartConfigModal() {
            var _this;
            _classCallCheck(this, ChartConfigModal), _this = _super.call(this, "图表配置"), _this.formUrl = "http://localhost:8088/jeecg-boot/jmreport/mockPieData";
            var url = Object(_element__WEBPACK_IMPORTED_MODULE_0__.b)("input", "ty-input").css("margin", 0).attr("placeholder", "请在此输入数据请求地址").val(_this.formUrl).on("change", (function (e) {
                _this.formUrl = e.target.value
            }));
            _this.urlInput = url;
            var title = Object(_element__WEBPACK_IMPORTED_MODULE_0__.b)("div", "json-edit-title").css("width", "100%").css("margin", "10px 0 2px 0").html("请在下方配置图表JSON:"),
                jsonInput = Object(_element__WEBPACK_IMPORTED_MODULE_0__.b)("div").css("height", "calc(100% - 60px)").css("width", "100%");
            return _this.formParent.children(Object(_element__WEBPACK_IMPORTED_MODULE_0__.b)("div").child(url), title, jsonInput), _this.jsonEditor = new jsoneditor__WEBPACK_IMPORTED_MODULE_2___default.a(jsonInput.el, options), _this.jsonEditor.get = function () {
                var text = this.getText();
                return eval("(" + text + ")")
            }, _this
        }

        return _createClass(ChartConfigModal, [{
            key: "getConfigInfo", value: function () {
                var e = this.jsonEditor.get();
                return {url: this.formUrl, json: e}
            }
        }, {
            key: "openModal", value: function (e) {
                this.show(), this.jsonEditor.set(e)
            }
        }, {
            key: "setConfigUrl", value: function (e) {
                this.urlInput.val(e), this.formUrl = e
            }
        }]), ChartConfigModal
    }(_BaseModal__WEBPACK_IMPORTED_MODULE_1__.a)
}, function (e, t, n) {
    e.exports = n(560)
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = n(233), r = n(234), o = n(240), a = n(246), s = n(249), l = n(254), c = n(255), u = n(256);
    t.default = {
        CODE39: i.CODE39,
        CODE128: r.CODE128,
        CODE128A: r.CODE128A,
        CODE128B: r.CODE128B,
        CODE128C: r.CODE128C,
        EAN13: o.EAN13,
        EAN8: o.EAN8,
        EAN5: o.EAN5,
        EAN2: o.EAN2,
        UPC: o.UPC,
        UPCE: o.UPCE,
        ITF14: a.ITF14,
        ITF: a.ITF,
        MSI: s.MSI,
        MSI10: s.MSI10,
        MSI11: s.MSI11,
        MSI1010: s.MSI1010,
        MSI1110: s.MSI1110,
        pharmacode: l.pharmacode,
        codabar: c.codabar,
        GenericBarcode: u.GenericBarcode
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.CODE39 = void 0;
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(18);
    var a = function (e) {
            function t(e, n) {
                return function (e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }(this, t), e = e.toUpperCase(), n.mod43 && (e += function (e) {
                    return s[e]
                }(function (e) {
                    for (var t = 0, n = 0; n < e.length; n++) t += u(e[n]);
                    return t %= 43
                }(e))), function (e, t) {
                    if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return !t || "object" != typeof t && "function" != typeof t ? e : t
                }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
            }

            return function (e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                e.prototype = Object.create(t && t.prototype, {
                    constructor: {
                        value: e,
                        enumerable: !1,
                        writable: !0,
                        configurable: !0
                    }
                }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
            }(t, e), r(t, [{
                key: "encode", value: function () {
                    for (var e = c("*"), t = 0; t < this.data.length; t++) e += c(this.data[t]) + "0";
                    return {data: e += c("*"), text: this.text}
                }
            }, {
                key: "valid", value: function () {
                    return -1 !== this.data.search(/^[0-9A-Z\-\.\ \$\/\+\%]+$/)
                }
            }]), t
        }(((i = o) && i.__esModule ? i : {default: i}).default),
        s = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", ".", " ", "$", "/", "+", "%", "*"],
        l = [20957, 29783, 23639, 30485, 20951, 29813, 23669, 20855, 29789, 23645, 29975, 23831, 30533, 22295, 30149, 24005, 21623, 29981, 23837, 22301, 30023, 23879, 30545, 22343, 30161, 24017, 21959, 30065, 23921, 22385, 29015, 18263, 29141, 17879, 29045, 18293, 17783, 29021, 18269, 17477, 17489, 17681, 20753, 35770];

    function c(e) {
        return function (e) {
            return l[e].toString(2)
        }(u(e))
    }

    function u(e) {
        return s.indexOf(e)
    }

    t.CODE39 = a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.CODE128C = t.CODE128B = t.CODE128A = t.CODE128 = void 0;
    var i = s(n(235)), r = s(n(237)), o = s(n(238)), a = s(n(239));

    function s(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.CODE128 = i.default, t.CODE128A = r.default, t.CODE128B = o.default, t.CODE128C = a.default
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = o(n(77)), r = o(n(236));

    function o(e) {
        return e && e.__esModule ? e : {default: e}
    }

    function a(e, t) {
        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return !t || "object" != typeof t && "function" != typeof t ? e : t
    }

    var s = function (e) {
        function t(e, n) {
            if (function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), /^[\x00-\x7F\xC8-\xD3]+$/.test(e)) var i = a(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, (0, r.default)(e), n)); else i = a(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
            return a(i)
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), t
    }(i.default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = n(57), r = function (e) {
        return e.match(new RegExp("^" + i.A_CHARS + "*"))[0].length
    }, o = function (e) {
        return e.match(new RegExp("^" + i.B_CHARS + "*"))[0].length
    }, a = function (e) {
        return e.match(new RegExp("^" + i.C_CHARS + "*"))[0]
    };

    function s(e, t) {
        var n = t ? i.A_CHARS : i.B_CHARS, r = e.match(new RegExp("^(" + n + "+?)(([0-9]{2}){2,})([^0-9]|$)"));
        if (r) return r[1] + String.fromCharCode(204) + l(e.substring(r[1].length));
        var o = e.match(new RegExp("^" + n + "+"))[0];
        return o.length === e.length ? e : o + String.fromCharCode(t ? 205 : 206) + s(e.substring(o.length), !t)
    }

    function l(e) {
        var t = a(e), n = t.length;
        if (n === e.length) return e;
        e = e.substring(n);
        var i = r(e) >= o(e);
        return t + String.fromCharCode(i ? 206 : 205) + s(e, i)
    }

    t.default = function (e) {
        var t = void 0;
        if (a(e).length >= 2) t = i.C_START_CHAR + l(e); else {
            var n = r(e) > o(e);
            t = (n ? i.A_START_CHAR : i.B_START_CHAR) + s(e, n)
        }
        return t.replace(/[\xCD\xCE]([^])[\xCD\xCE]/, (function (e, t) {
            return String.fromCharCode(203) + t
        }))
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(77), a = (i = o) && i.__esModule ? i : {default: i}, s = n(57);
    var l = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, s.A_START_CHAR + e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return new RegExp("^" + s.A_CHARS + "+$").test(this.data)
            }
        }]), t
    }(a.default);
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(77), a = (i = o) && i.__esModule ? i : {default: i}, s = n(57);
    var l = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, s.B_START_CHAR + e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return new RegExp("^" + s.B_CHARS + "+$").test(this.data)
            }
        }]), t
    }(a.default);
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(77), a = (i = o) && i.__esModule ? i : {default: i}, s = n(57);
    var l = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, s.C_START_CHAR + e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return new RegExp("^" + s.C_CHARS + "+$").test(this.data)
            }
        }]), t
    }(a.default);
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.UPCE = t.UPC = t.EAN2 = t.EAN5 = t.EAN8 = t.EAN13 = void 0;
    var i = c(n(241)), r = c(n(242)), o = c(n(243)), a = c(n(244)), s = c(n(138)), l = c(n(245));

    function c(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.EAN13 = i.default, t.EAN8 = r.default, t.EAN5 = o.default, t.EAN2 = a.default, t.UPC = s.default, t.UPCE = l.default
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = function e(t, n, i) {
        null === t && (t = Function.prototype);
        var r = Object.getOwnPropertyDescriptor(t, n);
        if (void 0 === r) {
            var o = Object.getPrototypeOf(t);
            return null === o ? void 0 : e(o, n, i)
        }
        if ("value" in r) return r.value;
        var a = r.get;
        return void 0 !== a ? a.call(i) : void 0
    }, a = n(58), s = n(137), l = (i = s) && i.__esModule ? i : {default: i};
    var c = function (e) {
        return (10 - e.substr(0, 12).split("").map((function (e) {
            return +e
        })).reduce((function (e, t, n) {
            return n % 2 ? e + 3 * t : e + t
        }), 0) % 10) % 10
    }, u = function (e) {
        function t(e, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), -1 !== e.search(/^[0-9]{12}$/) && (e += c(e));
            var i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
            return i.lastChar = n.lastChar, i
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]{13}$/) && +this.data[12] === c(this.data)
            }
        }, {
            key: "leftText", value: function () {
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "leftText", this).call(this, 1, 6)
            }
        }, {
            key: "leftEncode", value: function () {
                var e = this.data.substr(1, 6), n = a.EAN13_STRUCTURE[this.data[0]];
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "leftEncode", this).call(this, e, n)
            }
        }, {
            key: "rightText", value: function () {
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "rightText", this).call(this, 7, 6)
            }
        }, {
            key: "rightEncode", value: function () {
                var e = this.data.substr(7, 6);
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "rightEncode", this).call(this, e, "RRRRRR")
            }
        }, {
            key: "encodeGuarded", value: function () {
                var e = o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "encodeGuarded", this).call(this);
                return this.options.displayValue && (e.unshift({
                    data: "000000000000",
                    text: this.text.substr(0, 1),
                    options: {textAlign: "left", fontSize: this.fontSize}
                }), this.options.lastChar && (e.push({data: "00"}), e.push({
                    data: "00000",
                    text: this.options.lastChar,
                    options: {fontSize: this.fontSize}
                }))), e
            }
        }]), t
    }(l.default);
    t.default = u
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = function e(t, n, i) {
        null === t && (t = Function.prototype);
        var r = Object.getOwnPropertyDescriptor(t, n);
        if (void 0 === r) {
            var o = Object.getPrototypeOf(t);
            return null === o ? void 0 : e(o, n, i)
        }
        if ("value" in r) return r.value;
        var a = r.get;
        return void 0 !== a ? a.call(i) : void 0
    }, a = n(137), s = (i = a) && i.__esModule ? i : {default: i};
    var l = function (e) {
        return (10 - e.substr(0, 7).split("").map((function (e) {
            return +e
        })).reduce((function (e, t, n) {
            return n % 2 ? e + t : e + 3 * t
        }), 0) % 10) % 10
    }, c = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), -1 !== e.search(/^[0-9]{7}$/) && (e += l(e)), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]{8}$/) && +this.data[7] === l(this.data)
            }
        }, {
            key: "leftText", value: function () {
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "leftText", this).call(this, 0, 4)
            }
        }, {
            key: "leftEncode", value: function () {
                var e = this.data.substr(0, 4);
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "leftEncode", this).call(this, e, "LLLL")
            }
        }, {
            key: "rightText", value: function () {
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "rightText", this).call(this, 4, 4)
            }
        }, {
            key: "rightEncode", value: function () {
                var e = this.data.substr(4, 4);
                return o(t.prototype.__proto__ || Object.getPrototypeOf(t.prototype), "rightEncode", this).call(this, e, "RRRR")
            }
        }]), t
    }(s.default);
    t.default = c
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), r = n(58), o = s(n(59)), a = s(n(18));

    function s(e) {
        return e && e.__esModule ? e : {default: e}
    }

    var l = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), i(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]{5}$/)
            }
        }, {
            key: "encode", value: function () {
                var e, t = r.EAN5_STRUCTURE[(e = this.data, e.split("").map((function (e) {
                    return +e
                })).reduce((function (e, t, n) {
                    return n % 2 ? e + 9 * t : e + 3 * t
                }), 0) % 10)];
                return {data: "1011" + (0, o.default)(this.data, t, "01"), text: this.text}
            }
        }]), t
    }(a.default);
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), r = n(58), o = a(n(59));

    function a(e) {
        return e && e.__esModule ? e : {default: e}
    }

    var s = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), i(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]{2}$/)
            }
        }, {
            key: "encode", value: function () {
                var e = r.EAN2_STRUCTURE[parseInt(this.data) % 4];
                return {data: "1011" + (0, o.default)(this.data, e, "01"), text: this.text}
            }
        }]), t
    }(a(n(18)).default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), r = s(n(59)), o = s(n(18)), a = n(138);

    function s(e) {
        return e && e.__esModule ? e : {default: e}
    }

    function l(e, t) {
        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return !t || "object" != typeof t && "function" != typeof t ? e : t
    }

    var c = ["XX00000XXX", "XX10000XXX", "XX20000XXX", "XXX00000XX", "XXXX00000X", "XXXXX00005", "XXXXX00006", "XXXXX00007", "XXXXX00008", "XXXXX00009"],
        u = [["EEEOOO", "OOOEEE"], ["EEOEOO", "OOEOEE"], ["EEOOEO", "OOEEOE"], ["EEOOOE", "OOEEEO"], ["EOEEOO", "OEOOEE"], ["EOOEEO", "OEEOOE"], ["EOOOEE", "OEEEOO"], ["EOEOEO", "OEOEOE"], ["EOEOOE", "OEOEEO"], ["EOOEOE", "OEEOEO"]],
        h = function (e) {
            function t(e, n) {
                !function (e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }(this, t);
                var i = l(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
                if (i.isValid = !1, -1 !== e.search(/^[0-9]{6}$/)) i.middleDigits = e, i.upcA = d(e, "0"), i.text = n.text || "" + i.upcA[0] + e + i.upcA[i.upcA.length - 1], i.isValid = !0; else {
                    if (-1 === e.search(/^[01][0-9]{7}$/)) return l(i);
                    if (i.middleDigits = e.substring(1, e.length - 1), i.upcA = d(i.middleDigits, e[0]), i.upcA[i.upcA.length - 1] !== e[e.length - 1]) return l(i);
                    i.isValid = !0
                }
                return i.displayValue = n.displayValue, n.fontSize > 10 * n.width ? i.fontSize = 10 * n.width : i.fontSize = n.fontSize, i.guardHeight = n.height + i.fontSize / 2 + n.textMargin, i
            }

            return function (e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
                e.prototype = Object.create(t && t.prototype, {
                    constructor: {
                        value: e,
                        enumerable: !1,
                        writable: !0,
                        configurable: !0
                    }
                }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
            }(t, e), i(t, [{
                key: "valid", value: function () {
                    return this.isValid
                }
            }, {
                key: "encode", value: function () {
                    return this.options.flat ? this.flatEncoding() : this.guardedEncoding()
                }
            }, {
                key: "flatEncoding", value: function () {
                    var e = "";
                    return e += "101", e += this.encodeMiddleDigits(), {data: e += "010101", text: this.text}
                }
            }, {
                key: "guardedEncoding", value: function () {
                    var e = [];
                    return this.displayValue && e.push({
                        data: "00000000",
                        text: this.text[0],
                        options: {textAlign: "left", fontSize: this.fontSize}
                    }), e.push({
                        data: "101",
                        options: {height: this.guardHeight}
                    }), e.push({
                        data: this.encodeMiddleDigits(),
                        text: this.text.substring(1, 7),
                        options: {fontSize: this.fontSize}
                    }), e.push({
                        data: "010101",
                        options: {height: this.guardHeight}
                    }), this.displayValue && e.push({
                        data: "00000000",
                        text: this.text[7],
                        options: {textAlign: "right", fontSize: this.fontSize}
                    }), e
                }
            }, {
                key: "encodeMiddleDigits", value: function () {
                    var e = this.upcA[0], t = this.upcA[this.upcA.length - 1], n = u[parseInt(t)][parseInt(e)];
                    return (0, r.default)(this.middleDigits, n)
                }
            }]), t
        }(o.default);

    function d(e, t) {
        for (var n = parseInt(e[e.length - 1]), i = c[n], r = "", o = 0, s = 0; s < i.length; s++) {
            var l = i[s];
            r += "X" === l ? e[o++] : l
        }
        return "" + (r = "" + t + r) + (0, a.checksum)(r)
    }

    t.default = h
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.ITF14 = t.ITF = void 0;
    var i = o(n(139)), r = o(n(248));

    function o(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.ITF = i.default, t.ITF14 = r.default
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    t.START_BIN = "1010", t.END_BIN = "11101", t.BINARIES = ["00110", "10001", "01001", "11000", "00101", "10100", "01100", "00011", "10010", "01010"]
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(139), a = (i = o) && i.__esModule ? i : {default: i};
    var s = function (e) {
        var t = e.substr(0, 13).split("").map((function (e) {
            return parseInt(e, 10)
        })).reduce((function (e, t, n) {
            return e + t * (3 - n % 2 * 2)
        }), 0);
        return 10 * Math.ceil(t / 10) - t
    }, l = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), -1 !== e.search(/^[0-9]{13}$/) && (e += s(e)), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[0-9]{14}$/) && +this.data[13] === s(this.data)
            }
        }]), t
    }(a.default);
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.MSI1110 = t.MSI1010 = t.MSI11 = t.MSI10 = t.MSI = void 0;
    var i = l(n(60)), r = l(n(250)), o = l(n(251)), a = l(n(252)), s = l(n(253));

    function l(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.MSI = i.default, t.MSI10 = r.default, t.MSI11 = o.default, t.MSI1010 = a.default, t.MSI1110 = s.default
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = n(60), o = (i = r) && i.__esModule ? i : {default: i}, a = n(78);
    var s = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e + (0, a.mod10)(e), n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), t
    }(o.default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = n(60), o = (i = r) && i.__esModule ? i : {default: i}, a = n(78);
    var s = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e + (0, a.mod11)(e), n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), t
    }(o.default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = n(60), o = (i = r) && i.__esModule ? i : {default: i}, a = n(78);
    var s = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), e += (0, a.mod10)(e), e += (0, a.mod10)(e), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), t
    }(o.default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = n(60), o = (i = r) && i.__esModule ? i : {default: i}, a = n(78);
    var s = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), e += (0, a.mod11)(e), e += (0, a.mod10)(e), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), t
    }(o.default);
    t.default = s
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.pharmacode = void 0;
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(18);
    var a = function (e) {
        function t(e, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t);
            var i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n));
            return i.number = parseInt(e, 10), i
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "encode", value: function () {
                for (var e = this.number, t = ""; !isNaN(e) && 0 != e;) e % 2 == 0 ? (t = "11100" + t, e = (e - 2) / 2) : (t = "100" + t, e = (e - 1) / 2);
                return {data: t = t.slice(0, -2), text: this.text}
            }
        }, {
            key: "valid", value: function () {
                return this.number >= 3 && this.number <= 131070
            }
        }]), t
    }(((i = o) && i.__esModule ? i : {default: i}).default);
    t.pharmacode = a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.codabar = void 0;
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(18);
    var a = function (e) {
        function t(e, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), 0 === e.search(/^[0-9\-\$\:\.\+\/]+$/) && (e = "A" + e + "A");
            var i = function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e.toUpperCase(), n));
            return i.text = i.options.text || i.text.replace(/[A-D]/g, ""), i
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "valid", value: function () {
                return -1 !== this.data.search(/^[A-D][0-9\-\$\:\.\+\/]+[A-D]$/)
            }
        }, {
            key: "encode", value: function () {
                for (var e = [], t = this.getEncodings(), n = 0; n < this.data.length; n++) e.push(t[this.data.charAt(n)]), n !== this.data.length - 1 && e.push("0");
                return {text: this.text, data: e.join("")}
            }
        }, {
            key: "getEncodings", value: function () {
                return {
                    0: "101010011",
                    1: "101011001",
                    2: "101001011",
                    3: "110010101",
                    4: "101101001",
                    5: "110101001",
                    6: "100101011",
                    7: "100101101",
                    8: "100110101",
                    9: "110100101",
                    "-": "101001101",
                    $: "101100101",
                    ":": "1101011011",
                    "/": "1101101011",
                    ".": "1101101101",
                    "+": "101100110011",
                    A: "1011001001",
                    B: "1001001011",
                    C: "1010010011",
                    D: "1010011001"
                }
            }
        }]), t
    }(((i = o) && i.__esModule ? i : {default: i}).default);
    t.codabar = a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.GenericBarcode = void 0;
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(18);
    var a = function (e) {
        function t(e, n) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, t), function (e, t) {
                if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                return !t || "object" != typeof t && "function" != typeof t ? e : t
            }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n))
        }

        return function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }(t, e), r(t, [{
            key: "encode", value: function () {
                return {data: "10101010101010101010101010101010101010101", text: this.text}
            }
        }, {
            key: "valid", value: function () {
                return !0
            }
        }]), t
    }(((i = o) && i.__esModule ? i : {default: i}).default);
    t.GenericBarcode = a
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
        var t = [];
        return function e(n) {
            if (Array.isArray(n)) for (var i = 0; i < n.length; i++) e(n[i]); else n.text = n.text || "", n.data = n.data || "", t.push(n)
        }(e), t
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
        return e.marginTop = e.marginTop || e.margin, e.marginBottom = e.marginBottom || e.margin, e.marginRight = e.marginRight || e.margin, e.marginLeft = e.marginLeft || e.margin, e
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
        return typeof e
    } : function (e) {
        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
    }, r = s(n(260)), o = s(n(261)), a = n(143);

    function s(e) {
        return e && e.__esModule ? e : {default: e}
    }

    function l(e) {
        if ("string" == typeof e) return function (e) {
            var t = document.querySelectorAll(e);
            if (0 === t.length) return;
            for (var n = [], i = 0; i < t.length; i++) n.push(l(t[i]));
            return n
        }(e);
        if (Array.isArray(e)) {
            for (var t = [], n = 0; n < e.length; n++) t.push(l(e[n]));
            return t
        }
        if ("undefined" != typeof HTMLCanvasElement && e instanceof HTMLImageElement) return s = e, {
            element: c = document.createElement("canvas"),
            options: (0, r.default)(s),
            renderer: o.default.CanvasRenderer,
            afterRender: function () {
                s.setAttribute("src", c.toDataURL())
            }
        };
        if (e && e.nodeName && "svg" === e.nodeName.toLowerCase() || "undefined" != typeof SVGElement && e instanceof SVGElement) return {
            element: e,
            options: (0, r.default)(e),
            renderer: o.default.SVGRenderer
        };
        if ("undefined" != typeof HTMLCanvasElement && e instanceof HTMLCanvasElement) return {
            element: e,
            options: (0, r.default)(e),
            renderer: o.default.CanvasRenderer
        };
        if (e && e.getContext) return {element: e, renderer: o.default.CanvasRenderer};
        if (e && "object" === (void 0 === e ? "undefined" : i(e)) && !e.nodeName) return {
            element: e,
            renderer: o.default.ObjectRenderer
        };
        throw new a.InvalidElementException;
        var s, c
    }

    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = o(n(140)), r = o(n(141));

    function o(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.default = function (e) {
        var t = {};
        for (var n in r.default) r.default.hasOwnProperty(n) && (e.hasAttribute("jsbarcode-" + n.toLowerCase()) && (t[n] = e.getAttribute("jsbarcode-" + n.toLowerCase())), e.hasAttribute("data-" + n.toLowerCase()) && (t[n] = e.getAttribute("data-" + n.toLowerCase())));
        return t.value = e.getAttribute("jsbarcode-value") || e.getAttribute("data-value"), t = (0, i.default)(t)
    }
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = a(n(262)), r = a(n(263)), o = a(n(264));

    function a(e) {
        return e && e.__esModule ? e : {default: e}
    }

    t.default = {CanvasRenderer: i.default, SVGRenderer: r.default, ObjectRenderer: o.default}
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(79), a = (i = o) && i.__esModule ? i : {default: i}, s = n(142);
    var l = function () {
        function e(t, n, i) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.canvas = t, this.encodings = n, this.options = i
        }

        return r(e, [{
            key: "render", value: function () {
                if (!this.canvas.getContext) throw new Error("The browser does not support canvas.");
                this.prepareCanvas();
                for (var e = 0; e < this.encodings.length; e++) {
                    var t = (0, a.default)(this.options, this.encodings[e].options);
                    this.drawCanvasBarcode(t, this.encodings[e]), this.drawCanvasText(t, this.encodings[e]), this.moveCanvasDrawing(this.encodings[e])
                }
                this.restoreCanvas()
            }
        }, {
            key: "prepareCanvas", value: function () {
                var e = this.canvas.getContext("2d");
                e.save(), (0, s.calculateEncodingAttributes)(this.encodings, this.options, e);
                var t = (0, s.getTotalWidthOfEncodings)(this.encodings),
                    n = (0, s.getMaximumHeightOfEncodings)(this.encodings);
                this.canvas.width = t + this.options.marginLeft + this.options.marginRight, this.canvas.height = n, e.clearRect(0, 0, this.canvas.width, this.canvas.height), this.options.background && (e.fillStyle = this.options.background, e.fillRect(0, 0, this.canvas.width, this.canvas.height)), e.translate(this.options.marginLeft, 0)
            }
        }, {
            key: "drawCanvasBarcode", value: function (e, t) {
                var n, i = this.canvas.getContext("2d"), r = t.data;
                n = "top" == e.textPosition ? e.marginTop + e.fontSize + e.textMargin : e.marginTop, i.fillStyle = e.lineColor;
                for (var o = 0; o < r.length; o++) {
                    var a = o * e.width + t.barcodePadding;
                    "1" === r[o] ? i.fillRect(a, n, e.width, e.height) : r[o] && i.fillRect(a, n, e.width, e.height * r[o])
                }
            }
        }, {
            key: "drawCanvasText", value: function (e, t) {
                var n, i, r = this.canvas.getContext("2d"), o = e.fontOptions + " " + e.fontSize + "px " + e.font;
                e.displayValue && (i = "top" == e.textPosition ? e.marginTop + e.fontSize - e.textMargin : e.height + e.textMargin + e.marginTop + e.fontSize, r.font = o, "left" == e.textAlign || t.barcodePadding > 0 ? (n = 0, r.textAlign = "left") : "right" == e.textAlign ? (n = t.width - 1, r.textAlign = "right") : (n = t.width / 2, r.textAlign = "center"), r.fillText(t.text, n, i))
            }
        }, {
            key: "moveCanvasDrawing", value: function (e) {
                this.canvas.getContext("2d").translate(e.width, 0)
            }
        }, {
            key: "restoreCanvas", value: function () {
                this.canvas.getContext("2d").restore()
            }
        }]), e
    }();
    t.default = l
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i, r = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }(), o = n(79), a = (i = o) && i.__esModule ? i : {default: i}, s = n(142);
    var l = "http://www.w3.org/2000/svg", c = function () {
        function e(t, n, i) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.svg = t, this.encodings = n, this.options = i, this.document = i.xmlDocument || document
        }

        return r(e, [{
            key: "render", value: function () {
                var e = this.options.marginLeft;
                this.prepareSVG();
                for (var t = 0; t < this.encodings.length; t++) {
                    var n = this.encodings[t], i = (0, a.default)(this.options, n.options),
                        r = this.createGroup(e, i.marginTop, this.svg);
                    this.setGroupOptions(r, i), this.drawSvgBarcode(r, i, n), this.drawSVGText(r, i, n), e += n.width
                }
            }
        }, {
            key: "prepareSVG", value: function () {
                for (; this.svg.firstChild;) this.svg.removeChild(this.svg.firstChild);
                (0, s.calculateEncodingAttributes)(this.encodings, this.options);
                var e = (0, s.getTotalWidthOfEncodings)(this.encodings),
                    t = (0, s.getMaximumHeightOfEncodings)(this.encodings),
                    n = e + this.options.marginLeft + this.options.marginRight;
                this.setSvgAttributes(n, t), this.options.background && this.drawRect(0, 0, n, t, this.svg).setAttribute("style", "fill:" + this.options.background + ";")
            }
        }, {
            key: "drawSvgBarcode", value: function (e, t, n) {
                var i, r = n.data;
                i = "top" == t.textPosition ? t.fontSize + t.textMargin : 0;
                for (var o = 0, a = 0, s = 0; s < r.length; s++) a = s * t.width + n.barcodePadding, "1" === r[s] ? o++ : o > 0 && (this.drawRect(a - t.width * o, i, t.width * o, t.height, e), o = 0);
                o > 0 && this.drawRect(a - t.width * (o - 1), i, t.width * o, t.height, e)
            }
        }, {
            key: "drawSVGText", value: function (e, t, n) {
                var i, r, o = this.document.createElementNS(l, "text");
                t.displayValue && (o.setAttribute("style", "font:" + t.fontOptions + " " + t.fontSize + "px " + t.font), r = "top" == t.textPosition ? t.fontSize - t.textMargin : t.height + t.textMargin + t.fontSize, "left" == t.textAlign || n.barcodePadding > 0 ? (i = 0, o.setAttribute("text-anchor", "start")) : "right" == t.textAlign ? (i = n.width - 1, o.setAttribute("text-anchor", "end")) : (i = n.width / 2, o.setAttribute("text-anchor", "middle")), o.setAttribute("x", i), o.setAttribute("y", r), o.appendChild(this.document.createTextNode(n.text)), e.appendChild(o))
            }
        }, {
            key: "setSvgAttributes", value: function (e, t) {
                var n = this.svg;
                n.setAttribute("width", e + "px"), n.setAttribute("height", t + "px"), n.setAttribute("x", "0px"), n.setAttribute("y", "0px"), n.setAttribute("viewBox", "0 0 " + e + " " + t), n.setAttribute("xmlns", l), n.setAttribute("version", "1.1"), n.setAttribute("style", "transform: translate(0,0)")
            }
        }, {
            key: "createGroup", value: function (e, t, n) {
                var i = this.document.createElementNS(l, "g");
                return i.setAttribute("transform", "translate(" + e + ", " + t + ")"), n.appendChild(i), i
            }
        }, {
            key: "setGroupOptions", value: function (e, t) {
                e.setAttribute("style", "fill:" + t.lineColor + ";")
            }
        }, {
            key: "drawRect", value: function (e, t, n, i, r) {
                var o = this.document.createElementNS(l, "rect");
                return o.setAttribute("x", e), o.setAttribute("y", t), o.setAttribute("width", n), o.setAttribute("height", i), r.appendChild(o), o
            }
        }]), e
    }();
    t.default = c
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }();
    var r = function () {
        function e(t, n, i) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.object = t, this.encodings = n, this.options = i
        }

        return i(e, [{
            key: "render", value: function () {
                this.object.encodings = this.encodings
            }
        }]), e
    }();
    t.default = r
}, function (e, t, n) {
    "use strict";
    Object.defineProperty(t, "__esModule", {value: !0});
    var i = function () {
        function e(e, t) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
            }
        }

        return function (t, n, i) {
            return n && e(t.prototype, n), i && e(t, i), t
        }
    }();
    var r = function () {
        function e(t) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.api = t
        }

        return i(e, [{
            key: "handleCatch", value: function (e) {
                if ("InvalidInputException" !== e.name) throw e;
                if (this.api._options.valid === this.api._defaults.valid) throw e.message;
                this.api._options.valid(!1), this.api.render = function () {
                }
            }
        }, {
            key: "wrapBarcodeCall", value: function (e) {
                try {
                    var t = e.apply(void 0, arguments);
                    return this.api._options.valid(!0), t
                } catch (e) {
                    return this.handleCatch(e), this.api
                }
            }
        }]), e
    }();
    t.default = r
}, function (e, t, n) {
    var i = n(1), r = n(9), o = n(267), a = n(37), s = n(24), l = n(269);

    function c() {
        s.stop(this.event)
    }

    function u() {
    }

    u.prototype.dispose = function () {
    };
    var h = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
        d = function (e, t, n, i) {
            a.call(this), this.storage = e, this.painter = t, this.painterRoot = i, n = n || new u, this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, this._gestureMgr, o.call(this), this.setHandlerProxy(n)
        };

    function f(e, t, n) {
        if (e[e.rectHover ? "rectContain" : "contain"](t, n)) {
            for (var i, r = e; r;) {
                if (r.clipPath && !r.clipPath.contain(t, n)) return !1;
                r.silent && (i = !0), r = r.parent
            }
            return !i || "silent"
        }
        return !1
    }

    function g(e, t, n) {
        var i = e.painter;
        return t < 0 || t > i.getWidth() || n < 0 || n > i.getHeight()
    }

    d.prototype = {
        constructor: d, setHandlerProxy: function (e) {
            this.proxy && this.proxy.dispose(), e && (i.each(h, (function (t) {
                e.on && e.on(t, this[t], this)
            }), this), e.handler = this), this.proxy = e
        }, mousemove: function (e) {
            var t = e.zrX, n = e.zrY, i = g(this, t, n), r = this._hovered, o = r.target;
            o && !o.__zr && (o = (r = this.findHover(r.x, r.y)).target);
            var a = this._hovered = i ? {x: t, y: n} : this.findHover(t, n), s = a.target, l = this.proxy;
            l.setCursor && l.setCursor(s ? s.cursor : "default"), o && s !== o && this.dispatchToElement(r, "mouseout", e), this.dispatchToElement(a, "mousemove", e), s && s !== o && this.dispatchToElement(a, "mouseover", e)
        }, mouseout: function (e) {
            var t = e.zrEventControl, n = e.zrIsToLocalDOM;
            "only_globalout" !== t && this.dispatchToElement(this._hovered, "mouseout", e), "no_globalout" !== t && !n && this.trigger("globalout", {
                type: "globalout",
                event: e
            })
        }, resize: function (e) {
            this._hovered = {}
        }, dispatch: function (e, t) {
            var n = this[e];
            n && n.call(this, t)
        }, dispose: function () {
            this.proxy.dispose(), this.storage = this.proxy = this.painter = null
        }, setCursorStyle: function (e) {
            var t = this.proxy;
            t.setCursor && t.setCursor(e)
        }, dispatchToElement: function (e, t, n) {
            var i = (e = e || {}).target;
            if (!i || !i.silent) {
                for (var r = "on" + t, o = function (e, t, n) {
                    return {
                        type: e,
                        event: n,
                        target: t.target,
                        topTarget: t.topTarget,
                        cancelBubble: !1,
                        offsetX: n.zrX,
                        offsetY: n.zrY,
                        gestureEvent: n.gestureEvent,
                        pinchX: n.pinchX,
                        pinchY: n.pinchY,
                        pinchScale: n.pinchScale,
                        wheelDelta: n.zrDelta,
                        zrByTouch: n.zrByTouch,
                        which: n.which,
                        stop: c
                    }
                }(t, e, n); i && (i[r] && (o.cancelBubble = i[r].call(i, o)), i.trigger(t, o), i = i.parent, !o.cancelBubble);) ;
                o.cancelBubble || (this.trigger(t, o), this.painter && this.painter.eachOtherLayer((function (e) {
                    "function" == typeof e[r] && e[r].call(e, o), e.trigger && e.trigger(t, o)
                })))
            }
        }, findHover: function (e, t, n) {
            for (var i = this.storage.getDisplayList(), r = {x: e, y: t}, o = i.length - 1; o >= 0; o--) {
                var a;
                if (i[o] !== n && !i[o].ignore && (a = f(i[o], e, t)) && (!r.topTarget && (r.topTarget = i[o]), "silent" !== a)) {
                    r.target = i[o];
                    break
                }
            }
            return r
        }, processGesture: function (e, t) {
            this._gestureMgr || (this._gestureMgr = new l);
            var n = this._gestureMgr;
            "start" === t && n.clear();
            var i = n.recognize(e, this.findHover(e.zrX, e.zrY, null).target, this.proxy.dom);
            if ("end" === t && n.clear(), i) {
                var r = i.type;
                e.gestureEvent = r, this.dispatchToElement({target: i.target}, r, i.event)
            }
        }
    }, i.each(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], (function (e) {
        d.prototype[e] = function (t) {
            var n, i, o = t.zrX, a = t.zrY, s = g(this, o, a);
            if ("mouseup" === e && s || (i = (n = this.findHover(o, a)).target), "mousedown" === e) this._downEl = i, this._downPoint = [t.zrX, t.zrY], this._upEl = i; else if ("mouseup" === e) this._upEl = i; else if ("click" === e) {
                if (this._downEl !== this._upEl || !this._downPoint || r.dist(this._downPoint, [t.zrX, t.zrY]) > 4) return;
                this._downPoint = null
            }
            this.dispatchToElement(n, e, t)
        }
    })), i.mixin(d, a), i.mixin(d, o);
    var p = d;
    e.exports = p
}, function (e, t) {
    function n() {
        this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), this.on("mouseup", this._dragEnd, this)
    }

    function i(e, t) {
        return {target: e, topTarget: t && t.topTarget}
    }

    n.prototype = {
        constructor: n, _dragStart: function (e) {
            for (var t = e.target; t && !t.draggable;) t = t.parent;
            t && (this._draggingTarget = t, t.dragging = !0, this._x = e.offsetX, this._y = e.offsetY, this.dispatchToElement(i(t, e), "dragstart", e.event))
        }, _drag: function (e) {
            var t = this._draggingTarget;
            if (t) {
                var n = e.offsetX, r = e.offsetY, o = n - this._x, a = r - this._y;
                this._x = n, this._y = r, t.drift(o, a, e), this.dispatchToElement(i(t, e), "drag", e.event);
                var s = this.findHover(n, r, t).target, l = this._dropTarget;
                this._dropTarget = s, t !== s && (l && s !== l && this.dispatchToElement(i(l, e), "dragleave", e.event), s && s !== l && this.dispatchToElement(i(s, e), "dragenter", e.event))
            }
        }, _dragEnd: function (e) {
            var t = this._draggingTarget;
            t && (t.dragging = !1), this.dispatchToElement(i(t, e), "dragend", e.event), this._dropTarget && this.dispatchToElement(i(this._dropTarget, e), "drop", e.event), this._draggingTarget = null, this._dropTarget = null
        }
    };
    var r = n;
    e.exports = r
}, function (e, t) {
    var n = Math.log(2);

    function i(e, t, r, o, a, s) {
        var l = o + "-" + a, c = e.length;
        if (s.hasOwnProperty(l)) return s[l];
        if (1 === t) {
            var u = Math.round(Math.log((1 << c) - 1 & ~a) / n);
            return e[r][u]
        }
        for (var h = o | 1 << r, d = r + 1; o & 1 << d;) d++;
        for (var f = 0, g = 0, p = 0; g < c; g++) {
            var m = 1 << g;
            m & a || (f += (p % 2 ? -1 : 1) * e[r][g] * i(e, t - 1, d, h, a | m, s), p++)
        }
        return s[l] = f, f
    }

    t.buildTransformer = function (e, t) {
        var n = [[e[0], e[1], 1, 0, 0, 0, -t[0] * e[0], -t[0] * e[1]], [0, 0, 0, e[0], e[1], 1, -t[1] * e[0], -t[1] * e[1]], [e[2], e[3], 1, 0, 0, 0, -t[2] * e[2], -t[2] * e[3]], [0, 0, 0, e[2], e[3], 1, -t[3] * e[2], -t[3] * e[3]], [e[4], e[5], 1, 0, 0, 0, -t[4] * e[4], -t[4] * e[5]], [0, 0, 0, e[4], e[5], 1, -t[5] * e[4], -t[5] * e[5]], [e[6], e[7], 1, 0, 0, 0, -t[6] * e[6], -t[6] * e[7]], [0, 0, 0, e[6], e[7], 1, -t[7] * e[6], -t[7] * e[7]]],
            r = {}, o = i(n, 8, 0, 0, 0, r);
        if (0 !== o) {
            for (var a = [], s = 0; s < 8; s++) for (var l = 0; l < 8; l++) null == a[l] && (a[l] = 0), a[l] += ((s + l) % 2 ? -1 : 1) * i(n, 7, 0 === s ? 1 : 0, 1 << s, 1 << l, r) / o * t[s];
            return function (e, t, n) {
                var i = t * a[6] + n * a[7] + 1;
                e[0] = (t * a[0] + n * a[1] + a[2]) / i, e[1] = (t * a[3] + n * a[4] + a[5]) / i
            }
        }
    }
}, function (e, t, n) {
    var i = n(24), r = function () {
        this._track = []
    };

    function o(e) {
        var t = e[1][0] - e[0][0], n = e[1][1] - e[0][1];
        return Math.sqrt(t * t + n * n)
    }

    r.prototype = {
        constructor: r, recognize: function (e, t, n) {
            return this._doTrack(e, t, n), this._recognize(e)
        }, clear: function () {
            return this._track.length = 0, this
        }, _doTrack: function (e, t, n) {
            var r = e.touches;
            if (r) {
                for (var o = {points: [], touches: [], target: t, event: e}, a = 0, s = r.length; a < s; a++) {
                    var l = r[a], c = i.clientToLocal(n, l, {});
                    o.points.push([c.zrX, c.zrY]), o.touches.push(l)
                }
                this._track.push(o)
            }
        }, _recognize: function (e) {
            for (var t in a) if (a.hasOwnProperty(t)) {
                var n = a[t](this._track, e);
                if (n) return n
            }
        }
    };
    var a = {
        pinch: function (e, t) {
            var n = e.length;
            if (n) {
                var i, r = (e[n - 1] || {}).points, a = (e[n - 2] || {}).points || r;
                if (a && a.length > 1 && r && r.length > 1) {
                    var s = o(r) / o(a);
                    !isFinite(s) && (s = 1), t.pinchScale = s;
                    var l = [((i = r)[0][0] + i[1][0]) / 2, (i[0][1] + i[1][1]) / 2];
                    return t.pinchX = l[0], t.pinchY = l[1], {type: "pinch", target: e[0].target, event: t}
                }
            }
        }
    }, s = r;
    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(12), o = n(38), a = n(102);

    function s(e, t) {
        return e.zlevel === t.zlevel ? e.z === t.z ? e.z2 - t.z2 : e.z - t.z : e.zlevel - t.zlevel
    }

    var l = function () {
        this._roots = [], this._displayList = [], this._displayListLen = 0
    };
    l.prototype = {
        constructor: l, traverse: function (e, t) {
            for (var n = 0; n < this._roots.length; n++) this._roots[n].traverse(e, t)
        }, getDisplayList: function (e, t) {
            return t = t || !1, e && this.updateDisplayList(t), this._displayList
        }, updateDisplayList: function (e) {
            this._displayListLen = 0;
            for (var t = this._roots, n = this._displayList, i = 0, o = t.length; i < o; i++) this._updateAndAddDisplayable(t[i], null, e);
            n.length = this._displayListLen, r.canvasSupported && a(n, s)
        }, _updateAndAddDisplayable: function (e, t, n) {
            if (!e.ignore || n) {
                e.beforeUpdate(), e.__dirty && e.update(), e.afterUpdate();
                var i = e.clipPath;
                if (i) {
                    t = t ? t.slice() : [];
                    for (var r = i, o = e; r;) r.parent = o, r.updateTransform(), t.push(r), o = r, r = r.clipPath
                }
                if (e.isGroup) {
                    for (var a = e._children, s = 0; s < a.length; s++) {
                        var l = a[s];
                        e.__dirty && (l.__dirty = !0), this._updateAndAddDisplayable(l, t, n)
                    }
                    e.__dirty = !1
                } else e.__clipPaths = t, this._displayList[this._displayListLen++] = e
            }
        }, addRoot: function (e) {
            e.__storage !== this && (e instanceof o && e.addChildrenToStorage(this), this.addToStorage(e), this._roots.push(e))
        }, delRoot: function (e) {
            if (null == e) {
                for (var t = 0; t < this._roots.length; t++) {
                    var n = this._roots[t];
                    n instanceof o && n.delChildrenFromStorage(this)
                }
                return this._roots = [], this._displayList = [], void (this._displayListLen = 0)
            }
            if (e instanceof Array) {
                t = 0;
                for (var r = e.length; t < r; t++) this.delRoot(e[t])
            } else {
                var a = i.indexOf(this._roots, e);
                a >= 0 && (this.delFromStorage(e), this._roots.splice(a, 1), e instanceof o && e.delChildrenFromStorage(this))
            }
        }, addToStorage: function (e) {
            return e && (e.__storage = this, e.dirty(!1)), this
        }, delFromStorage: function (e) {
            return e && (e.__storage = null), this
        }, dispose: function () {
            this._renderList = this._roots = null
        }, displayableSortFunc: s
    };
    var c = l;
    e.exports = c
}, function (e, t, n) {
    var i = n(147), r = n(61), o = n(1), a = o.isString, s = o.isFunction, l = o.isObject, c = o.isArrayLike,
        u = o.indexOf, h = function () {
            this.animators = []
        };

    function d(e, t, n, i, r, o, u, h) {
        a(i) ? (o = r, r = i, i = 0) : s(r) ? (o = r, r = "linear", i = 0) : s(i) ? (o = i, i = 0) : s(n) ? (o = n, n = 500) : n || (n = 500), e.stopAnimation(), function e(t, n, i, r, o, a, s) {
            var u = {}, h = 0;
            for (var d in r) r.hasOwnProperty(d) && (null != i[d] ? l(r[d]) && !c(r[d]) ? e(t, n ? n + "." + d : d, i[d], r[d], o, a, s) : (s ? (u[d] = i[d], f(t, n, d, r[d])) : u[d] = r[d], h++) : null == r[d] || s || f(t, n, d, r[d]));
            h > 0 && t.animate(n, !1).when(null == o ? 500 : o, u).delay(a || 0)
        }(e, "", e, t, n, i, h);
        var d = e.animators.slice(), g = d.length;

        function p() {
            --g || o && o()
        }

        g || o && o();
        for (var m = 0; m < d.length; m++) d[m].done(p).start(r, u)
    }

    function f(e, t, n, i) {
        if (t) {
            var r = {};
            r[t] = {}, r[t][n] = i, e.attr(r)
        } else e.attr(n, i)
    }

    h.prototype = {
        constructor: h, animate: function (e, t) {
            var n, o = !1, a = this, s = this.__zr;
            if (e) {
                var l = e.split("."), c = a;
                o = "shape" === l[0];
                for (var h = 0, d = l.length; h < d; h++) c && (c = c[l[h]]);
                c && (n = c)
            } else n = a;
            if (n) {
                var f = a.animators, g = new i(n, t);
                return g.during((function (e) {
                    a.dirty(o)
                })).done((function () {
                    f.splice(u(f, g), 1)
                })), f.push(g), s && s.animation.addAnimator(g), g
            }
            r('Property "' + e + '" is not existed in element ' + a.id)
        }, stopAnimation: function (e) {
            for (var t = this.animators, n = t.length, i = 0; i < n; i++) t[i].stop(e);
            return t.length = 0, this
        }, animateTo: function (e, t, n, i, r, o) {
            d(this, e, t, n, i, r, o)
        }, animateFrom: function (e, t, n, i, r, o) {
            d(this, e, t, n, i, r, o, !0)
        }
    };
    var g = h;
    e.exports = g
}, function (e, t, n) {
    var i = n(273);

    function r(e) {
        this._target = e.target, this._life = e.life || 1e3, this._delay = e.delay || 0, this._initialized = !1, this.loop = null != e.loop && e.loop, this.gap = e.gap || 0, this.easing = e.easing || "Linear", this.onframe = e.onframe, this.ondestroy = e.ondestroy, this.onrestart = e.onrestart, this._pausedTime = 0, this._paused = !1
    }

    r.prototype = {
        constructor: r, step: function (e, t) {
            if (this._initialized || (this._startTime = e + this._delay, this._initialized = !0), this._paused) this._pausedTime += t; else {
                var n = (e - this._startTime - this._pausedTime) / this._life;
                if (!(n < 0)) {
                    n = Math.min(n, 1);
                    var r = this.easing, o = "string" == typeof r ? i[r] : r, a = "function" == typeof o ? o(n) : n;
                    return this.fire("frame", a), 1 === n ? this.loop ? (this.restart(e), "restart") : (this._needsRemove = !0, "destroy") : null
                }
            }
        }, restart: function (e) {
            var t = (e - this._startTime - this._pausedTime) % this._life;
            this._startTime = e - t + this.gap, this._pausedTime = 0, this._needsRemove = !1
        }, fire: function (e, t) {
            this[e = "on" + e] && this[e](this._target, t)
        }, pause: function () {
            this._paused = !0
        }, resume: function () {
            this._paused = !1
        }
    };
    var o = r;
    e.exports = o
}, function (e, t) {
    var n = {
        linear: function (e) {
            return e
        }, quadraticIn: function (e) {
            return e * e
        }, quadraticOut: function (e) {
            return e * (2 - e)
        }, quadraticInOut: function (e) {
            return (e *= 2) < 1 ? .5 * e * e : -.5 * (--e * (e - 2) - 1)
        }, cubicIn: function (e) {
            return e * e * e
        }, cubicOut: function (e) {
            return --e * e * e + 1
        }, cubicInOut: function (e) {
            return (e *= 2) < 1 ? .5 * e * e * e : .5 * ((e -= 2) * e * e + 2)
        }, quarticIn: function (e) {
            return e * e * e * e
        }, quarticOut: function (e) {
            return 1 - --e * e * e * e
        }, quarticInOut: function (e) {
            return (e *= 2) < 1 ? .5 * e * e * e * e : -.5 * ((e -= 2) * e * e * e - 2)
        }, quinticIn: function (e) {
            return e * e * e * e * e
        }, quinticOut: function (e) {
            return --e * e * e * e * e + 1
        }, quinticInOut: function (e) {
            return (e *= 2) < 1 ? .5 * e * e * e * e * e : .5 * ((e -= 2) * e * e * e * e + 2)
        }, sinusoidalIn: function (e) {
            return 1 - Math.cos(e * Math.PI / 2)
        }, sinusoidalOut: function (e) {
            return Math.sin(e * Math.PI / 2)
        }, sinusoidalInOut: function (e) {
            return .5 * (1 - Math.cos(Math.PI * e))
        }, exponentialIn: function (e) {
            return 0 === e ? 0 : Math.pow(1024, e - 1)
        }, exponentialOut: function (e) {
            return 1 === e ? 1 : 1 - Math.pow(2, -10 * e)
        }, exponentialInOut: function (e) {
            return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? .5 * Math.pow(1024, e - 1) : .5 * (2 - Math.pow(2, -10 * (e - 1)))
        }, circularIn: function (e) {
            return 1 - Math.sqrt(1 - e * e)
        }, circularOut: function (e) {
            return Math.sqrt(1 - --e * e)
        }, circularInOut: function (e) {
            return (e *= 2) < 1 ? -.5 * (Math.sqrt(1 - e * e) - 1) : .5 * (Math.sqrt(1 - (e -= 2) * e) + 1)
        }, elasticIn: function (e) {
            var t, n = .1;
            return 0 === e ? 0 : 1 === e ? 1 : (!n || n < 1 ? (n = 1, t = .1) : t = .4 * Math.asin(1 / n) / (2 * Math.PI), -n * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / .4))
        }, elasticOut: function (e) {
            var t, n = .1;
            return 0 === e ? 0 : 1 === e ? 1 : (!n || n < 1 ? (n = 1, t = .1) : t = .4 * Math.asin(1 / n) / (2 * Math.PI), n * Math.pow(2, -10 * e) * Math.sin((e - t) * (2 * Math.PI) / .4) + 1)
        }, elasticInOut: function (e) {
            var t, n = .1, i = .4;
            return 0 === e ? 0 : 1 === e ? 1 : (!n || n < 1 ? (n = 1, t = .1) : t = i * Math.asin(1 / n) / (2 * Math.PI), (e *= 2) < 1 ? n * Math.pow(2, 10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / i) * -.5 : n * Math.pow(2, -10 * (e -= 1)) * Math.sin((e - t) * (2 * Math.PI) / i) * .5 + 1)
        }, backIn: function (e) {
            var t = 1.70158;
            return e * e * ((t + 1) * e - t)
        }, backOut: function (e) {
            var t = 1.70158;
            return --e * e * ((t + 1) * e + t) + 1
        }, backInOut: function (e) {
            var t = 2.5949095;
            return (e *= 2) < 1 ? e * e * ((t + 1) * e - t) * .5 : .5 * ((e -= 2) * e * ((t + 1) * e + t) + 2)
        }, bounceIn: function (e) {
            return 1 - n.bounceOut(1 - e)
        }, bounceOut: function (e) {
            return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375
        }, bounceInOut: function (e) {
            return e < .5 ? .5 * n.bounceIn(2 * e) : .5 * n.bounceOut(2 * e - 1) + .5
        }
    }, i = n;
    e.exports = i
}, function (e, t, n) {
    var i = n(82).devicePixelRatio, r = n(1), o = n(61), a = n(10), s = n(102), l = n(275), c = n(151), u = n(46),
        h = n(12);

    function d(e) {
        return parseInt(e, 10)
    }

    var f = new a(0, 0, 0, 0), g = new a(0, 0, 0, 0);
    var p = function (e, t, n) {
        this.type = "canvas";
        var o = !e.nodeName || "CANVAS" === e.nodeName.toUpperCase();
        this._opts = n = r.extend({}, n || {}), this.dpr = n.devicePixelRatio || i, this._singleCanvas = o, this.root = e;
        var a = e.style;
        a && (a["-webkit-tap-highlight-color"] = "transparent", a["-webkit-user-select"] = a["user-select"] = a["-webkit-touch-callout"] = "none", e.innerHTML = ""), this.storage = t;
        var s = this._zlevelList = [], c = this._layers = {};
        if (this._layerConfig = {}, this._needsManuallyCompositing = !1, o) {
            var u = e.width, h = e.height;
            null != n.width && (u = n.width), null != n.height && (h = n.height), this.dpr = n.devicePixelRatio || 1, e.width = u * this.dpr, e.height = h * this.dpr, this._width = u, this._height = h;
            var d = new l(e, this, this.dpr);
            d.__builtin__ = !0, d.initContext(), c[314159] = d, d.zlevel = 314159, s.push(314159), this._domRoot = e
        } else {
            this._width = this._getSize(0), this._height = this._getSize(1);
            var f = this._domRoot = function (e, t) {
                var n = document.createElement("div");
                return n.style.cssText = ["position:relative", "width:" + e + "px", "height:" + t + "px", "padding:0", "margin:0", "border-width:0"].join(";") + ";", n
            }(this._width, this._height);
            e.appendChild(f)
        }
        this._hoverlayer = null, this._hoverElements = []
    };
    p.prototype = {
        constructor: p, getType: function () {
            return "canvas"
        }, isSingleCanvas: function () {
            return this._singleCanvas
        }, getViewportRoot: function () {
            return this._domRoot
        }, getViewportRootOffset: function () {
            var e = this.getViewportRoot();
            if (e) return {offsetLeft: e.offsetLeft || 0, offsetTop: e.offsetTop || 0}
        }, refresh: function (e) {
            var t = this.storage.getDisplayList(!0), n = this._zlevelList;
            this._redrawId = Math.random(), this._paintList(t, e, this._redrawId);
            for (var i = 0; i < n.length; i++) {
                var r = n[i], o = this._layers[r];
                if (!o.__builtin__ && o.refresh) {
                    var a = 0 === i ? this._backgroundColor : null;
                    o.refresh(a)
                }
            }
            return this.refreshHover(), this
        }, addHover: function (e, t) {
            if (!e.__hoverMir) {
                var n = new e.constructor({style: e.style, shape: e.shape, z: e.z, z2: e.z2, silent: e.silent});
                return n.__from = e, e.__hoverMir = n, t && n.setStyle(t), this._hoverElements.push(n), n
            }
        }, removeHover: function (e) {
            var t = e.__hoverMir, n = this._hoverElements, i = r.indexOf(n, t);
            i >= 0 && n.splice(i, 1), e.__hoverMir = null
        }, clearHover: function (e) {
            for (var t = this._hoverElements, n = 0; n < t.length; n++) {
                var i = t[n].__from;
                i && (i.__hoverMir = null)
            }
            t.length = 0
        }, refreshHover: function () {
            var e = this._hoverElements, t = e.length, n = this._hoverlayer;
            if (n && n.clear(), t) {
                s(e, this.storage.displayableSortFunc), n || (n = this._hoverlayer = this.getLayer(1e5));
                var i = {};
                n.ctx.save();
                for (var r = 0; r < t;) {
                    var o = e[r], a = o.__from;
                    a && a.__zr ? (r++, a.invisible || (o.transform = a.transform, o.invTransform = a.invTransform, o.__clipPaths = a.__clipPaths, this._doPaintEl(o, n, !0, i))) : (e.splice(r, 1), a.__hoverMir = null, t--)
                }
                n.ctx.restore()
            }
        }, getHoverLayer: function () {
            return this.getLayer(1e5)
        }, _paintList: function (e, t, n) {
            if (this._redrawId === n) {
                t = t || !1, this._updateLayerStatus(e);
                var i = this._doPaintList(e, t);
                if (this._needsManuallyCompositing && this._compositeManually(), !i) {
                    var r = this;
                    c((function () {
                        r._paintList(e, t, n)
                    }))
                }
            }
        }, _compositeManually: function () {
            var e = this.getLayer(314159).ctx, t = this._domRoot.width, n = this._domRoot.height;
            e.clearRect(0, 0, t, n), this.eachBuiltinLayer((function (i) {
                i.virtual && e.drawImage(i.dom, 0, 0, t, n)
            }))
        }, _doPaintList: function (e, t) {
            for (var n = [], i = 0; i < this._zlevelList.length; i++) {
                var o = this._zlevelList[i];
                (l = this._layers[o]).__builtin__ && l !== this._hoverlayer && (l.__dirty || t) && n.push(l)
            }
            for (var a = !0, s = 0; s < n.length; s++) {
                var l, c = (l = n[s]).ctx, u = {};
                c.save();
                var d = t ? l.__startIndex : l.__drawIndex, f = !t && l.incremental && Date.now, g = f && Date.now(),
                    p = l.zlevel === this._zlevelList[0] ? this._backgroundColor : null;
                if (l.__startIndex === l.__endIndex) l.clear(!1, p); else if (d === l.__startIndex) {
                    var m = e[d];
                    m.incremental && m.notClear && !t || l.clear(!1, p)
                }
                -1 === d && (console.error("For some unknown reason. drawIndex is -1"), d = l.__startIndex);
                for (var v = d; v < l.__endIndex; v++) {
                    var y = e[v];
                    if (this._doPaintEl(y, l, t, u), y.__dirty = y.__dirtyText = !1, f) if (Date.now() - g > 15) break
                }
                l.__drawIndex = v, l.__drawIndex < l.__endIndex && (a = !1), u.prevElClipPaths && c.restore(), c.restore()
            }
            return h.wxa && r.each(this._layers, (function (e) {
                e && e.ctx && e.ctx.draw && e.ctx.draw()
            })), a
        }, _doPaintEl: function (e, t, n, i) {
            var r = t.ctx, o = e.transform;
            if ((t.__dirty || n) && !e.invisible && 0 !== e.style.opacity && (!o || o[0] || o[3]) && (!e.culling || !function (e, t, n) {
                return f.copy(e.getBoundingRect()), e.transform && f.applyTransform(e.transform), g.width = t, g.height = n, !f.intersect(g)
            }(e, this._width, this._height))) {
                var a = e.__clipPaths, s = i.prevElClipPaths;
                s && !function (e, t) {
                    if (e === t) return !1;
                    if (!e || !t || e.length !== t.length) return !0;
                    for (var n = 0; n < e.length; n++) if (e[n] !== t[n]) return !0;
                    return !1
                }(a, s) || (s && (r.restore(), i.prevElClipPaths = null, i.prevEl = null), a && (r.save(), function (e, t) {
                    for (var n = 0; n < e.length; n++) {
                        var i = e[n];
                        i.setTransform(t), t.beginPath(), i.buildPath(t, i.shape), t.clip(), i.restoreTransform(t)
                    }
                }(a, r), i.prevElClipPaths = a)), e.beforeBrush && e.beforeBrush(r), e.brush(r, i.prevEl || null), i.prevEl = e, e.afterBrush && e.afterBrush(r)
            }
        }, getLayer: function (e, t) {
            this._singleCanvas && !this._needsManuallyCompositing && (e = 314159);
            var n = this._layers[e];
            return n || ((n = new l("zr_" + e, this, this.dpr)).zlevel = e, n.__builtin__ = !0, this._layerConfig[e] ? r.merge(n, this._layerConfig[e], !0) : this._layerConfig[e - .01] && r.merge(n, this._layerConfig[e - .01], !0), t && (n.virtual = t), this.insertLayer(e, n), n.initContext()), n
        }, insertLayer: function (e, t) {
            var n = this._layers, i = this._zlevelList, r = i.length, a = null, s = -1, l = this._domRoot;
            if (n[e]) o("ZLevel " + e + " has been used already"); else if (function (e) {
                return !!e && (!!e.__builtin__ || "function" == typeof e.resize && "function" == typeof e.refresh)
            }(t)) {
                if (r > 0 && e > i[0]) {
                    for (s = 0; s < r - 1 && !(i[s] < e && i[s + 1] > e); s++) ;
                    a = n[i[s]]
                }
                if (i.splice(s + 1, 0, e), n[e] = t, !t.virtual) if (a) {
                    var c = a.dom;
                    c.nextSibling ? l.insertBefore(t.dom, c.nextSibling) : l.appendChild(t.dom)
                } else l.firstChild ? l.insertBefore(t.dom, l.firstChild) : l.appendChild(t.dom)
            } else o("Layer of zlevel " + e + " is not valid")
        }, eachLayer: function (e, t) {
            var n, i, r = this._zlevelList;
            for (i = 0; i < r.length; i++) n = r[i], e.call(t, this._layers[n], n)
        }, eachBuiltinLayer: function (e, t) {
            var n, i, r, o = this._zlevelList;
            for (r = 0; r < o.length; r++) i = o[r], (n = this._layers[i]).__builtin__ && e.call(t, n, i)
        }, eachOtherLayer: function (e, t) {
            var n, i, r, o = this._zlevelList;
            for (r = 0; r < o.length; r++) i = o[r], (n = this._layers[i]).__builtin__ || e.call(t, n, i)
        }, getLayers: function () {
            return this._layers
        }, _updateLayerStatus: function (e) {
            function t(e) {
                r && (r.__endIndex !== e && (r.__dirty = !0), r.__endIndex = e)
            }

            if (this.eachBuiltinLayer((function (e, t) {
                e.__dirty = e.__used = !1
            })), this._singleCanvas) for (var n = 1; n < e.length; n++) {
                if ((s = e[n]).zlevel !== e[n - 1].zlevel || s.incremental) {
                    this._needsManuallyCompositing = !0;
                    break
                }
            }
            var i, r = null, a = 0;
            for (n = 0; n < e.length; n++) {
                var s, l, c = (s = e[n]).zlevel;
                i !== c && (i = c, a = 0), s.incremental ? ((l = this.getLayer(c + .001, this._needsManuallyCompositing)).incremental = !0, a = 1) : l = this.getLayer(c + (a > 0 ? .01 : 0), this._needsManuallyCompositing), l.__builtin__ || o("ZLevel " + c + " has been used by unkown layer " + l.id), l !== r && (l.__used = !0, l.__startIndex !== n && (l.__dirty = !0), l.__startIndex = n, l.incremental ? l.__drawIndex = -1 : l.__drawIndex = n, t(n), r = l), s.__dirty && (l.__dirty = !0, l.incremental && l.__drawIndex < 0 && (l.__drawIndex = n))
            }
            t(n), this.eachBuiltinLayer((function (e, t) {
                !e.__used && e.getElementCount() > 0 && (e.__dirty = !0, e.__startIndex = e.__endIndex = e.__drawIndex = 0), e.__dirty && e.__drawIndex < 0 && (e.__drawIndex = e.__startIndex)
            }))
        }, clear: function () {
            return this.eachBuiltinLayer(this._clearLayer), this
        }, _clearLayer: function (e) {
            e.clear()
        }, setBackgroundColor: function (e) {
            this._backgroundColor = e
        }, configLayer: function (e, t) {
            if (t) {
                var n = this._layerConfig;
                n[e] ? r.merge(n[e], t, !0) : n[e] = t;
                for (var i = 0; i < this._zlevelList.length; i++) {
                    var o = this._zlevelList[i];
                    if (o === e || o === e + .01) {
                        var a = this._layers[o];
                        r.merge(a, n[e], !0)
                    }
                }
            }
        }, delLayer: function (e) {
            var t = this._layers, n = this._zlevelList, i = t[e];
            i && (i.dom.parentNode.removeChild(i.dom), delete t[e], n.splice(r.indexOf(n, e), 1))
        }, resize: function (e, t) {
            if (this._domRoot.style) {
                var n = this._domRoot;
                n.style.display = "none";
                var i = this._opts;
                if (null != e && (i.width = e), null != t && (i.height = t), e = this._getSize(0), t = this._getSize(1), n.style.display = "", this._width !== e || t !== this._height) {
                    for (var o in n.style.width = e + "px", n.style.height = t + "px", this._layers) this._layers.hasOwnProperty(o) && this._layers[o].resize(e, t);
                    r.each(this._progressiveLayers, (function (n) {
                        n.resize(e, t)
                    })), this.refresh(!0)
                }
                this._width = e, this._height = t
            } else {
                if (null == e || null == t) return;
                this._width = e, this._height = t, this.getLayer(314159).resize(e, t)
            }
            return this
        }, clearLayer: function (e) {
            var t = this._layers[e];
            t && t.clear()
        }, dispose: function () {
            this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null
        }, getRenderedCanvas: function (e) {
            if (e = e || {}, this._singleCanvas && !this._compositeManually) return this._layers[314159].dom;
            var t = new l("image", this, e.pixelRatio || this.dpr);
            if (t.initContext(), t.clear(!1, e.backgroundColor || this._backgroundColor), e.pixelRatio <= this.dpr) {
                this.refresh();
                var n = t.dom.width, i = t.dom.height, r = t.ctx;
                this.eachLayer((function (e) {
                    e.__builtin__ ? r.drawImage(e.dom, 0, 0, n, i) : e.renderToCanvas && (t.ctx.save(), e.renderToCanvas(t.ctx), t.ctx.restore())
                }))
            } else for (var o = {}, a = this.storage.getDisplayList(!0), s = 0; s < a.length; s++) {
                var c = a[s];
                this._doPaintEl(c, t, !0, o)
            }
            return t.dom
        }, getWidth: function () {
            return this._width
        }, getHeight: function () {
            return this._height
        }, _getSize: function (e) {
            var t = this._opts, n = ["width", "height"][e], i = ["clientWidth", "clientHeight"][e],
                r = ["paddingLeft", "paddingTop"][e], o = ["paddingRight", "paddingBottom"][e];
            if (null != t[n] && "auto" !== t[n]) return parseFloat(t[n]);
            var a = this.root, s = document.defaultView.getComputedStyle(a);
            return (a[i] || d(s[n]) || d(a.style[n])) - (d(s[r]) || 0) - (d(s[o]) || 0) | 0
        }, pathToImage: function (e, t) {
            t = t || this.dpr;
            var n = document.createElement("canvas"), i = n.getContext("2d"), r = e.getBoundingRect(), o = e.style,
                a = o.shadowBlur * t, s = o.shadowOffsetX * t, l = o.shadowOffsetY * t,
                c = o.hasStroke() ? o.lineWidth : 0, h = Math.max(c / 2, -s + a), d = Math.max(c / 2, s + a),
                f = Math.max(c / 2, -l + a), g = Math.max(c / 2, l + a), p = r.width + h + d, m = r.height + f + g;
            n.width = p * t, n.height = m * t, i.scale(t, t), i.clearRect(0, 0, p, m), i.dpr = t;
            var v = {position: e.position, rotation: e.rotation, scale: e.scale};
            e.position = [h - r.x, f - r.y], e.rotation = 0, e.scale = [1, 1], e.updateTransform(), e && e.brush(i);
            var y = new u({style: {x: 0, y: 0, image: n}});
            return null != v.position && (y.position = e.position = v.position), null != v.rotation && (y.rotation = e.rotation = v.rotation), null != v.scale && (y.scale = e.scale = v.scale), y
        }
    };
    var m = p;
    e.exports = m
}, function (e, t, n) {
    var i = n(1), r = n(82).devicePixelRatio, o = n(103), a = n(150);

    function s() {
        return !1
    }

    function l(e, t, n) {
        var r = i.createCanvas(), o = t.getWidth(), a = t.getHeight(), s = r.style;
        return s && (s.position = "absolute", s.left = 0, s.top = 0, s.width = o + "px", s.height = a + "px", r.setAttribute("data-zr-dom-id", e)), r.width = o * n, r.height = a * n, r
    }

    var c = function (e, t, n) {
        var o;
        n = n || r, "string" == typeof e ? o = l(e, t, n) : i.isObject(e) && (e = (o = e).id), this.id = e, this.dom = o;
        var a = o.style;
        a && (o.onselectstart = s, a["-webkit-user-select"] = "none", a["user-select"] = "none", a["-webkit-touch-callout"] = "none", a["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", a.padding = 0, a.margin = 0, a["border-width"] = 0), this.domBack = null, this.ctxBack = null, this.painter = t, this.config = null, this.clearColor = 0, this.motionBlur = !1, this.lastFrameAlpha = .7, this.dpr = n
    };
    c.prototype = {
        constructor: c,
        __dirty: !0,
        __used: !1,
        __drawIndex: 0,
        __startIndex: 0,
        __endIndex: 0,
        incremental: !1,
        getElementCount: function () {
            return this.__endIndex - this.__startIndex
        },
        initContext: function () {
            this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr
        },
        createBackBuffer: function () {
            var e = this.dpr;
            this.domBack = l("back-" + this.id, this.painter, e), this.ctxBack = this.domBack.getContext("2d"), 1 !== e && this.ctxBack.scale(e, e)
        },
        resize: function (e, t) {
            var n = this.dpr, i = this.dom, r = i.style, o = this.domBack;
            r && (r.width = e + "px", r.height = t + "px"), i.width = e * n, i.height = t * n, o && (o.width = e * n, o.height = t * n, 1 !== n && this.ctxBack.scale(n, n))
        },
        clear: function (e, t) {
            var n, i = this.dom, r = this.ctx, s = i.width, l = i.height,
                c = (t = t || this.clearColor, this.motionBlur && !e), u = this.lastFrameAlpha, h = this.dpr;
            (c && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(i, 0, 0, s / h, l / h)), r.clearRect(0, 0, s, l), t && "transparent" !== t) && (t.colorStops ? (n = t.__canvasGradient || o.getGradient(r, t, {
                x: 0,
                y: 0,
                width: s,
                height: l
            }), t.__canvasGradient = n) : t.image && (n = a.prototype.getCanvasPattern.call(t, r)), r.save(), r.fillStyle = n || t, r.fillRect(0, 0, s, l), r.restore());
            if (c) {
                var d = this.domBack;
                r.save(), r.globalAlpha = u, r.drawImage(d, 0, 0, s, l), r.restore()
            }
        }
    };
    var u = c;
    e.exports = u
}, function (e, t, n) {
    var i = n(1), r = n(24).Dispatcher, o = n(151), a = n(147), s = function (e) {
        e = e || {}, this.stage = e.stage || {}, this.onframe = e.onframe || function () {
        }, this._clips = [], this._running = !1, this._time, this._pausedTime, this._pauseStart, this._paused = !1, r.call(this)
    };
    s.prototype = {
        constructor: s, addClip: function (e) {
            this._clips.push(e)
        }, addAnimator: function (e) {
            e.animation = this;
            for (var t = e.getClips(), n = 0; n < t.length; n++) this.addClip(t[n])
        }, removeClip: function (e) {
            var t = i.indexOf(this._clips, e);
            t >= 0 && this._clips.splice(t, 1)
        }, removeAnimator: function (e) {
            for (var t = e.getClips(), n = 0; n < t.length; n++) this.removeClip(t[n]);
            e.animation = null
        }, _update: function () {
            for (var e = (new Date).getTime() - this._pausedTime, t = e - this._time, n = this._clips, i = n.length, r = [], o = [], a = 0; a < i; a++) {
                var s = n[a], l = s.step(e, t);
                l && (r.push(l), o.push(s))
            }
            for (a = 0; a < i;) n[a]._needsRemove ? (n[a] = n[i - 1], n.pop(), i--) : a++;
            i = r.length;
            for (a = 0; a < i; a++) o[a].fire(r[a]);
            this._time = e, this.onframe(t), this.trigger("frame", t), this.stage.update && this.stage.update()
        }, _startLoop: function () {
            var e = this;
            this._running = !0, o((function t() {
                e._running && (o(t), !e._paused && e._update())
            }))
        }, start: function () {
            this._time = (new Date).getTime(), this._pausedTime = 0, this._startLoop()
        }, stop: function () {
            this._running = !1
        }, pause: function () {
            this._paused || (this._pauseStart = (new Date).getTime(), this._paused = !0)
        }, resume: function () {
            this._paused && (this._pausedTime += (new Date).getTime() - this._pauseStart, this._paused = !1)
        }, clear: function () {
            this._clips = []
        }, isFinished: function () {
            return !this._clips.length
        }, animate: function (e, t) {
            var n = new a(e, (t = t || {}).loop, t.getter, t.setter);
            return this.addAnimator(n), n
        }
    }, i.mixin(s, r);
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i, r, o = n(24), a = o.addEventListener, s = o.removeEventListener, l = o.normalizeEvent, c = o.getNativeEvent,
        u = n(1), h = n(37), d = n(12), f = d.domSupported, g = (r = {
            pointerdown: 1,
            pointerup: 1,
            pointermove: 1,
            pointerout: 1
        }, {
            mouse: i = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
            touch: ["touchstart", "touchend", "touchmove"],
            pointer: u.map(i, (function (e) {
                var t = e.replace("mouse", "pointer");
                return r.hasOwnProperty(t) ? t : e
            }))
        }), p = ["mousemove", "mouseup"], m = ["pointermove", "pointerup"];

    function v(e) {
        return "mousewheel" === e && d.browser.firefox ? "DOMMouseScroll" : e
    }

    function y(e) {
        var t = e.pointerType;
        return "pen" === t || "touch" === t
    }

    function b(e) {
        e && (e.zrByTouch = !0)
    }

    function C(e, t) {
        for (var n = t, i = !1; n && 9 !== n.nodeType && !(i = n.domBelongToZr || n !== t && n === e.painterRoot);) n = n.parentNode;
        return i
    }

    function w(e, t) {
        this.type = t.type, this.target = this.currentTarget = e.dom, this.pointerType = t.pointerType, this.clientX = t.clientX, this.clientY = t.clientY
    }

    var I = w.prototype;
    I.stopPropagation = I.stopImmediatePropagation = I.preventDefault = u.noop;
    var x = {
        mousedown: function (e) {
            e = l(this.dom, e), this._mayPointerCapture = [e.zrX, e.zrY], this.trigger("mousedown", e)
        }, mousemove: function (e) {
            e = l(this.dom, e);
            var t = this._mayPointerCapture;
            !t || e.zrX === t[0] && e.zrY === t[1] || T(this, !0), this.trigger("mousemove", e)
        }, mouseup: function (e) {
            e = l(this.dom, e), T(this, !1), this.trigger("mouseup", e)
        }, mouseout: function (e) {
            e = l(this.dom, e), this._pointerCapturing && (e.zrEventControl = "no_globalout");
            var t = e.toElement || e.relatedTarget;
            e.zrIsToLocalDOM = C(this, t), this.trigger("mouseout", e)
        }, touchstart: function (e) {
            b(e = l(this.dom, e)), this._lastTouchMoment = new Date, this.handler.processGesture(e, "start"), x.mousemove.call(this, e), x.mousedown.call(this, e)
        }, touchmove: function (e) {
            b(e = l(this.dom, e)), this.handler.processGesture(e, "change"), x.mousemove.call(this, e)
        }, touchend: function (e) {
            b(e = l(this.dom, e)), this.handler.processGesture(e, "end"), x.mouseup.call(this, e), +new Date - this._lastTouchMoment < 300 && x.click.call(this, e)
        }, pointerdown: function (e) {
            x.mousedown.call(this, e)
        }, pointermove: function (e) {
            y(e) || x.mousemove.call(this, e)
        }, pointerup: function (e) {
            x.mouseup.call(this, e)
        }, pointerout: function (e) {
            y(e) || x.mouseout.call(this, e)
        }
    };
    u.each(["click", "mousewheel", "dblclick", "contextmenu"], (function (e) {
        x[e] = function (t) {
            t = l(this.dom, t), this.trigger(e, t)
        }
    }));
    var A = {
        pointermove: function (e) {
            y(e) || A.mousemove.call(this, e)
        }, pointerup: function (e) {
            A.mouseup.call(this, e)
        }, mousemove: function (e) {
            this.trigger("mousemove", e)
        }, mouseup: function (e) {
            var t = this._pointerCapturing;
            T(this, !1), this.trigger("mouseup", e), t && (e.zrEventControl = "only_globalout", this.trigger("mouseout", e))
        }
    };

    function _(e, t) {
        var n = t.domHandlers;
        d.pointerEventsSupported ? u.each(g.pointer, (function (i) {
            k(t, i, (function (t) {
                n[i].call(e, t)
            }))
        })) : (d.touchEventsSupported && u.each(g.touch, (function (i) {
            k(t, i, (function (r) {
                n[i].call(e, r), function (e) {
                    e.touching = !0, null != e.touchTimer && (clearTimeout(e.touchTimer), e.touchTimer = null), e.touchTimer = setTimeout((function () {
                        e.touching = !1, e.touchTimer = null
                    }), 700)
                }(t)
            }))
        })), u.each(g.mouse, (function (i) {
            k(t, i, (function (r) {
                r = c(r), t.touching || n[i].call(e, r)
            }))
        })))
    }

    function S(e, t) {
        function n(n) {
            k(t, n, (function (i) {
                i = c(i), C(e, i.target) || (i = function (e, t) {
                    return l(e.dom, new w(e, t), !0)
                }(e, i), t.domHandlers[n].call(e, i))
            }), {capture: !0})
        }

        d.pointerEventsSupported ? u.each(m, n) : d.touchEventsSupported || u.each(p, n)
    }

    function k(e, t, n, i) {
        e.mounted[t] = n, e.listenerOpts[t] = i, a(e.domTarget, v(t), n, i)
    }

    function L(e) {
        var t = e.mounted;
        for (var n in t) t.hasOwnProperty(n) && s(e.domTarget, v(n), t[n], e.listenerOpts[n]);
        e.mounted = {}
    }

    function T(e, t) {
        if (e._mayPointerCapture = null, f && e._pointerCapturing ^ t) {
            e._pointerCapturing = t;
            var n = e._globalHandlerScope;
            t ? S(e, n) : L(n)
        }
    }

    function O(e, t) {
        this.domTarget = e, this.domHandlers = t, this.mounted = {}, this.listenerOpts = {}, this.touchTimer = null, this.touching = !1
    }

    function R(e, t) {
        h.call(this), this.dom = e, this.painterRoot = t, this._localHandlerScope = new O(e, x), f && (this._globalHandlerScope = new O(document, A)), this._pointerCapturing = !1, this._mayPointerCapture = null, _(this, this._localHandlerScope)
    }

    var E = R.prototype;
    E.dispose = function () {
        L(this._localHandlerScope), f && L(this._globalHandlerScope)
    }, E.setCursor = function (e) {
        this.dom.style && (this.dom.style.cursor = e || "default")
    }, u.mixin(R, h);
    var P = R;
    e.exports = P
}, function (e, t, n) {
    var i = n(47)([["lineWidth", "width"], ["stroke", "color"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]),
        r = {
            getLineStyle: function (e) {
                var t = i(this, e);
                return t.lineDash = this.getLineDash(t.lineWidth), t
            }, getLineDash: function (e) {
                null == e && (e = 1);
                var t = this.get("type"), n = Math.max(e, 2), i = 4 * e;
                return "solid" !== t && null != t && ("dashed" === t ? [i, i] : [n, n])
            }
        };
    e.exports = r
}, function (e, t, n) {
    var i = n(47)([["fill", "color"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["opacity"], ["shadowColor"]]),
        r = {
            getAreaStyle: function (e, t) {
                return i(this, e, t)
            }
        };
    e.exports = r
}, function (e, t, n) {
    var i = n(17), r = n(3), o = ["textStyle", "color"], a = {
        getTextColor: function (e) {
            var t = this.ecModel;
            return this.getShallow("color") || (!e && t ? t.get(o) : null)
        }, getFont: function () {
            return r.getFont({
                fontStyle: this.getShallow("fontStyle"),
                fontWeight: this.getShallow("fontWeight"),
                fontSize: this.getShallow("fontSize"),
                fontFamily: this.getShallow("fontFamily")
            }, this.ecModel)
        }, getTextRect: function (e) {
            return i.getBoundingRect(e, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this.getShallow("rich"), this.getShallow("truncateText"))
        }
    };
    e.exports = a
}, function (e, t, n) {
    var i = n(48), r = n(156), o = n(282), a = n(157), s = n(283), l = n(158).normalizeRadian, c = n(31), u = n(159),
        h = i.CMD, d = 2 * Math.PI;
    var f = [-1, -1, -1], g = [-1, -1];

    function p(e, t, n, i, r, o, a, s, l, u) {
        if (u > t && u > i && u > o && u > s || u < t && u < i && u < o && u < s) return 0;
        var h, d = c.cubicRootAt(t, i, o, s, u, f);
        if (0 === d) return 0;
        for (var p, m, v = 0, y = -1, b = 0; b < d; b++) {
            var C = f[b], w = 0 === C || 1 === C ? .5 : 1;
            c.cubicAt(e, n, r, a, C) < l || (y < 0 && (y = c.cubicExtrema(t, i, o, s, g), g[1] < g[0] && y > 1 && (h = void 0, h = g[0], g[0] = g[1], g[1] = h), p = c.cubicAt(t, i, o, s, g[0]), y > 1 && (m = c.cubicAt(t, i, o, s, g[1]))), 2 === y ? C < g[0] ? v += p < t ? w : -w : C < g[1] ? v += m < p ? w : -w : v += s < m ? w : -w : C < g[0] ? v += p < t ? w : -w : v += s < p ? w : -w)
        }
        return v
    }

    function m(e, t, n, i, r, o, a, s) {
        if (s > t && s > i && s > o || s < t && s < i && s < o) return 0;
        var l = c.quadraticRootAt(t, i, o, s, f);
        if (0 === l) return 0;
        var u = c.quadraticExtremum(t, i, o);
        if (u >= 0 && u <= 1) {
            for (var h = 0, d = c.quadraticAt(t, i, o, u), g = 0; g < l; g++) {
                var p = 0 === f[g] || 1 === f[g] ? .5 : 1;
                c.quadraticAt(e, n, r, f[g]) < a || (f[g] < u ? h += d < t ? p : -p : h += o < d ? p : -p)
            }
            return h
        }
        p = 0 === f[0] || 1 === f[0] ? .5 : 1;
        return c.quadraticAt(e, n, r, f[0]) < a ? 0 : o < t ? p : -p
    }

    function v(e, t, n, i, r, o, a, s) {
        if ((s -= t) > n || s < -n) return 0;
        var c = Math.sqrt(n * n - s * s);
        f[0] = -c, f[1] = c;
        var u = Math.abs(i - r);
        if (u < 1e-4) return 0;
        if (u % d < 1e-4) {
            i = 0, r = d;
            var h = o ? 1 : -1;
            return a >= f[0] + e && a <= f[1] + e ? h : 0
        }
        if (o) {
            c = i;
            i = l(r), r = l(c)
        } else i = l(i), r = l(r);
        i > r && (r += d);
        for (var g = 0, p = 0; p < 2; p++) {
            var m = f[p];
            if (m + e > a) {
                var v = Math.atan2(s, m);
                h = o ? 1 : -1;
                v < 0 && (v = d + v), (v >= i && v <= r || v + d >= i && v + d <= r) && (v > Math.PI / 2 && v < 1.5 * Math.PI && (h = -h), g += h)
            }
        }
        return g
    }

    function y(e, t, n, i, l) {
        for (var c, d, f = 0, g = 0, y = 0, b = 0, C = 0, w = 0; w < e.length;) {
            var I = e[w++];
            switch (I === h.M && w > 1 && (n || (f += u(g, y, b, C, i, l))), 1 === w && (b = g = e[w], C = y = e[w + 1]), I) {
                case h.M:
                    g = b = e[w++], y = C = e[w++];
                    break;
                case h.L:
                    if (n) {
                        if (r.containStroke(g, y, e[w], e[w + 1], t, i, l)) return !0
                    } else f += u(g, y, e[w], e[w + 1], i, l) || 0;
                    g = e[w++], y = e[w++];
                    break;
                case h.C:
                    if (n) {
                        if (o.containStroke(g, y, e[w++], e[w++], e[w++], e[w++], e[w], e[w + 1], t, i, l)) return !0
                    } else f += p(g, y, e[w++], e[w++], e[w++], e[w++], e[w], e[w + 1], i, l) || 0;
                    g = e[w++], y = e[w++];
                    break;
                case h.Q:
                    if (n) {
                        if (a.containStroke(g, y, e[w++], e[w++], e[w], e[w + 1], t, i, l)) return !0
                    } else f += m(g, y, e[w++], e[w++], e[w], e[w + 1], i, l) || 0;
                    g = e[w++], y = e[w++];
                    break;
                case h.A:
                    var x = e[w++], A = e[w++], _ = e[w++], S = e[w++], k = e[w++], L = e[w++];
                    w += 1;
                    var T = 1 - e[w++], O = Math.cos(k) * _ + x, R = Math.sin(k) * S + A;
                    w > 1 ? f += u(g, y, O, R, i, l) : (b = O, C = R);
                    var E = (i - x) * S / _ + x;
                    if (n) {
                        if (s.containStroke(x, A, S, k, k + L, T, t, E, l)) return !0
                    } else f += v(x, A, S, k, k + L, T, E, l);
                    g = Math.cos(k + L) * _ + x, y = Math.sin(k + L) * S + A;
                    break;
                case h.R:
                    b = g = e[w++], C = y = e[w++];
                    O = b + e[w++], R = C + e[w++];
                    if (n) {
                        if (r.containStroke(b, C, O, C, t, i, l) || r.containStroke(O, C, O, R, t, i, l) || r.containStroke(O, R, b, R, t, i, l) || r.containStroke(b, R, b, C, t, i, l)) return !0
                    } else f += u(O, C, O, R, i, l), f += u(b, R, b, C, i, l);
                    break;
                case h.Z:
                    if (n) {
                        if (r.containStroke(g, y, b, C, t, i, l)) return !0
                    } else f += u(g, y, b, C, i, l);
                    g = b, y = C
            }
        }
        return n || (c = y, d = C, Math.abs(c - d) < 1e-4) || (f += u(g, y, b, C, i, l) || 0), 0 !== f
    }

    t.contain = function (e, t, n) {
        return y(e, 0, !1, t, n)
    }, t.containStroke = function (e, t, n, i) {
        return y(e, t, !0, n, i)
    }
}, function (e, t, n) {
    var i = n(31);
    t.containStroke = function (e, t, n, r, o, a, s, l, c, u, h) {
        if (0 === c) return !1;
        var d = c;
        return !(h > t + d && h > r + d && h > a + d && h > l + d || h < t - d && h < r - d && h < a - d && h < l - d || u > e + d && u > n + d && u > o + d && u > s + d || u < e - d && u < n - d && u < o - d && u < s - d) && i.cubicProjectPoint(e, t, n, r, o, a, s, l, u, h, null) <= d / 2
    }
}, function (e, t, n) {
    var i = n(158).normalizeRadian, r = 2 * Math.PI;
    t.containStroke = function (e, t, n, o, a, s, l, c, u) {
        if (0 === l) return !1;
        var h = l;
        c -= e, u -= t;
        var d = Math.sqrt(c * c + u * u);
        if (d - h > n || d + h < n) return !1;
        if (Math.abs(o - a) % r < 1e-4) return !0;
        if (s) {
            var f = o;
            o = i(a), a = i(f)
        } else o = i(o), a = i(a);
        o > a && (a += r);
        var g = Math.atan2(u, c);
        return g < 0 && (g += r), g >= o && g <= a || g + r >= o && g + r <= a
    }
}, function (e, t, n) {
    var i = n(48), r = n(9).applyTransform, o = i.CMD, a = [[], [], []], s = Math.sqrt, l = Math.atan2;
    e.exports = function (e, t) {
        var n, i, c, u, h, d = e.data, f = o.M, g = o.C, p = o.L, m = o.R, v = o.A, y = o.Q;
        for (c = 0, u = 0; c < d.length;) {
            switch (n = d[c++], u = c, i = 0, n) {
                case f:
                case p:
                    i = 1;
                    break;
                case g:
                    i = 3;
                    break;
                case y:
                    i = 2;
                    break;
                case v:
                    var b = t[4], C = t[5], w = s(t[0] * t[0] + t[1] * t[1]), I = s(t[2] * t[2] + t[3] * t[3]),
                        x = l(-t[1] / I, t[0] / w);
                    d[c] *= w, d[c++] += b, d[c] *= I, d[c++] += C, d[c++] *= w, d[c++] *= I, d[c++] += x, d[c++] += x, u = c += 2;
                    break;
                case m:
                    A[0] = d[c++], A[1] = d[c++], r(A, A, t), d[u++] = A[0], d[u++] = A[1], A[0] += d[c++], A[1] += d[c++], r(A, A, t), d[u++] = A[0], d[u++] = A[1]
            }
            for (h = 0; h < i; h++) {
                var A;
                (A = a[h])[0] = d[c++], A[1] = d[c++], r(A, A, t), d[u++] = A[0], d[u++] = A[1]
            }
        }
    }
}, function (e, t, n) {
    var i = n(11), r = n(161), o = i.extend({
        type: "sector",
        shape: {cx: 0, cy: 0, r0: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0},
        brush: r(i.prototype.brush),
        buildPath: function (e, t) {
            var n = t.cx, i = t.cy, r = Math.max(t.r0 || 0, 0), o = Math.max(t.r, 0), a = t.startAngle, s = t.endAngle,
                l = t.clockwise, c = Math.cos(a), u = Math.sin(a);
            e.moveTo(c * r + n, u * r + i), e.lineTo(c * o + n, u * o + i), e.arc(n, i, o, a, s, !l), e.lineTo(Math.cos(s) * r + n, Math.sin(s) * r + i), 0 !== r && e.arc(n, i, r, s, a, l), e.closePath()
        }
    });
    e.exports = o
}, function (e, t, n) {
    var i = n(11).extend({
        type: "ring", shape: {cx: 0, cy: 0, r: 0, r0: 0}, buildPath: function (e, t) {
            var n = t.cx, i = t.cy, r = 2 * Math.PI;
            e.moveTo(n + t.r, i), e.arc(n, i, t.r, 0, r, !1), e.moveTo(n + t.r0, i), e.arc(n, i, t.r0, 0, r, !0)
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(9).distance;

    function r(e, t, n, i, r, o, a) {
        var s = .5 * (n - e), l = .5 * (i - t);
        return (2 * (t - n) + s + l) * a + (-3 * (t - n) - 2 * s - l) * o + s * r + t
    }

    e.exports = function (e, t) {
        for (var n = e.length, o = [], a = 0, s = 1; s < n; s++) a += i(e[s - 1], e[s]);
        var l = a / 2;
        for (l = l < n ? n : l, s = 0; s < l; s++) {
            var c, u, h, d = s / (l - 1) * (t ? n : n - 1), f = Math.floor(d), g = d - f, p = e[f % n];
            t ? (c = e[(f - 1 + n) % n], u = e[(f + 1) % n], h = e[(f + 2) % n]) : (c = e[0 === f ? f : f - 1], u = e[f > n - 2 ? n - 1 : f + 1], h = e[f > n - 3 ? n - 1 : f + 2]);
            var m = g * g, v = g * m;
            o.push([r(c[0], p[0], u[0], h[0], g, m, v), r(c[1], p[1], u[1], h[1], g, m, v)])
        }
        return o
    }
}, function (e, t, n) {
    var i = n(9), r = i.min, o = i.max, a = i.scale, s = i.distance, l = i.add, c = i.clone, u = i.sub;
    e.exports = function (e, t, n, i) {
        var h, d, f, g, p = [], m = [], v = [], y = [];
        if (i) {
            f = [1 / 0, 1 / 0], g = [-1 / 0, -1 / 0];
            for (var b = 0, C = e.length; b < C; b++) r(f, f, e[b]), o(g, g, e[b]);
            r(f, f, i[0]), o(g, g, i[1])
        }
        for (b = 0, C = e.length; b < C; b++) {
            var w = e[b];
            if (n) h = e[b ? b - 1 : C - 1], d = e[(b + 1) % C]; else {
                if (0 === b || b === C - 1) {
                    p.push(c(e[b]));
                    continue
                }
                h = e[b - 1], d = e[b + 1]
            }
            u(m, d, h), a(m, m, t);
            var I = s(w, h), x = s(w, d), A = I + x;
            0 !== A && (I /= A, x /= A), a(v, m, -I), a(y, m, x);
            var _ = l([], w, v), S = l([], w, y);
            i && (o(_, _, f), r(_, _, g), o(S, S, f), r(S, S, g)), p.push(_), p.push(S)
        }
        return n && p.push(p.shift()), p
    }
}, function (e, t, n) {
    var i = n(11), r = n(9), o = n(31), a = o.quadraticSubdivide, s = o.cubicSubdivide, l = o.quadraticAt,
        c = o.cubicAt, u = o.quadraticDerivativeAt, h = o.cubicDerivativeAt, d = [];

    function f(e, t, n) {
        var i = e.cpx2, r = e.cpy2;
        return null === i || null === r ? [(n ? h : c)(e.x1, e.cpx1, e.cpx2, e.x2, t), (n ? h : c)(e.y1, e.cpy1, e.cpy2, e.y2, t)] : [(n ? u : l)(e.x1, e.cpx1, e.x2, t), (n ? u : l)(e.y1, e.cpy1, e.y2, t)]
    }

    var g = i.extend({
        type: "bezier-curve",
        shape: {x1: 0, y1: 0, x2: 0, y2: 0, cpx1: 0, cpy1: 0, percent: 1},
        style: {stroke: "#000", fill: null},
        buildPath: function (e, t) {
            var n = t.x1, i = t.y1, r = t.x2, o = t.y2, l = t.cpx1, c = t.cpy1, u = t.cpx2, h = t.cpy2, f = t.percent;
            0 !== f && (e.moveTo(n, i), null == u || null == h ? (f < 1 && (a(n, l, r, f, d), l = d[1], r = d[2], a(i, c, o, f, d), c = d[1], o = d[2]), e.quadraticCurveTo(l, c, r, o)) : (f < 1 && (s(n, l, u, r, f, d), l = d[1], u = d[2], r = d[3], s(i, c, h, o, f, d), c = d[1], h = d[2], o = d[3]), e.bezierCurveTo(l, c, u, h, r, o)))
        },
        pointAt: function (e) {
            return f(this.shape, e, !1)
        },
        tangentAt: function (e) {
            var t = f(this.shape, e, !0);
            return r.normalize(t, t)
        }
    });
    e.exports = g
}, function (e, t, n) {
    var i = n(11).extend({
        type: "arc",
        shape: {cx: 0, cy: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0},
        style: {stroke: "#000", fill: null},
        buildPath: function (e, t) {
            var n = t.cx, i = t.cy, r = Math.max(t.r, 0), o = t.startAngle, a = t.endAngle, s = t.clockwise,
                l = Math.cos(o), c = Math.sin(o);
            e.moveTo(l * r + n, c * r + i), e.arc(n, i, r, o, a, !s)
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(11), r = i.extend({
        type: "compound", shape: {paths: null}, _updatePathDirty: function () {
            for (var e = this.__dirtyPath, t = this.shape.paths, n = 0; n < t.length; n++) e = e || t[n].__dirtyPath;
            this.__dirtyPath = e, this.__dirty = this.__dirty || e
        }, beforeBrush: function () {
            this._updatePathDirty();
            for (var e = this.shape.paths || [], t = this.getGlobalScale(), n = 0; n < e.length; n++) e[n].path || e[n].createPathProxy(), e[n].path.setScale(t[0], t[1], e[n].segmentIgnoreThreshold)
        }, buildPath: function (e, t) {
            for (var n = t.paths || [], i = 0; i < n.length; i++) n[i].buildPath(e, n[i].shape, !0)
        }, afterBrush: function () {
            for (var e = this.shape.paths || [], t = 0; t < e.length; t++) e[t].__dirtyPath = !1
        }, getBoundingRect: function () {
            return this._updatePathDirty(), i.prototype.getBoundingRect.call(this)
        }
    });
    e.exports = r
}, function (e, t, n) {
    var i = n(1), r = n(85), o = function (e, t, n, i, o) {
        this.x = null == e ? .5 : e, this.y = null == t ? .5 : t, this.r = null == n ? .5 : n, this.type = "radial", this.global = o || !1, r.call(this, i)
    };
    o.prototype = {constructor: o}, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(47)([["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["textPosition"], ["textAlign"]]),
        r = {
            getItemStyle: function (e, t) {
                var n = i(this, e, t), r = this.getBorderLineDash();
                return r && (n.lineDash = r), n
            }, getBorderLineDash: function () {
                var e = this.get("borderType");
                return "solid" === e || null == e ? null : "dashed" === e ? [5, 5] : [1, 1]
            }
        };
    e.exports = r
}, function (e, t) {
    e.exports = {
        getBoxLayoutParams: function () {
            return {
                left: this.get("left"),
                top: this.get("top"),
                right: this.get("right"),
                bottom: this.get("bottom"),
                width: this.get("width"),
                height: this.get("height")
            }
        }
    }
}, function (e, t) {
    var n = "";
    "undefined" != typeof navigator && (n = navigator.platform || "");
    var i = {
        color: ["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3"],
        gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
        textStyle: {
            fontFamily: n.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
            fontSize: 12,
            fontStyle: "normal",
            fontWeight: "normal"
        },
        blendMode: null,
        animation: "auto",
        animationDuration: 1e3,
        animationDurationUpdate: 300,
        animationEasing: "exponentialOut",
        animationEasingUpdate: "cubicOut",
        animationThreshold: 2e3,
        progressiveThreshold: 3e3,
        progressive: 400,
        hoverLayerThreshold: 3e3,
        useUTC: !1
    };
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(5), o = n(14), a = i.each, s = i.clone, l = i.map, c = i.merge, u = /^(min|max)?(.+)$/;

    function h(e) {
        this._api = e, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, this._currentMediaIndices = [], this._optionBackup, this._newBaseOption
    }

    function d(e, t, n) {
        var r, o, s = [], l = [], c = e.timeline;
        if (e.baseOption && (o = e.baseOption), (c || e.options) && (o = o || {}, s = (e.options || []).slice()), e.media) {
            o = o || {};
            var u = e.media;
            a(u, (function (e) {
                e && e.option && (e.query ? l.push(e) : r || (r = e))
            }))
        }
        return o || (o = e), o.timeline || (o.timeline = c), a([o].concat(s).concat(i.map(l, (function (e) {
            return e.option
        }))), (function (e) {
            a(t, (function (t) {
                t(e, n)
            }))
        })), {baseOption: o, timelineOptions: s, mediaDefault: r, mediaList: l}
    }

    function f(e, t, n) {
        var r = {width: t, height: n, aspectratio: t / n}, o = !0;
        return i.each(e, (function (e, t) {
            var n = t.match(u);
            if (n && n[1] && n[2]) {
                var i = n[1], a = n[2].toLowerCase();
                (function (e, t, n) {
                    return "min" === n ? e >= t : "max" === n ? e <= t : e === t
                })(r[a], e, i) || (o = !1)
            }
        })), o
    }

    h.prototype = {
        constructor: h, setOption: function (e, t) {
            e && i.each(r.normalizeToArray(e.series), (function (e) {
                e && e.data && i.isTypedArray(e.data) && i.setAsPrimitive(e.data)
            })), e = s(e);
            var n, u, h = this._optionBackup, f = d.call(this, e, t, !h);
            this._newBaseOption = f.baseOption, h ? (n = h.baseOption, u = f.baseOption, a(u = u || {}, (function (e, t) {
                if (null != e) {
                    var i = n[t];
                    if (o.hasClass(t)) {
                        e = r.normalizeToArray(e), i = r.normalizeToArray(i);
                        var a = r.mappingToExists(i, e);
                        n[t] = l(a, (function (e) {
                            return e.option && e.exist ? c(e.exist, e.option, !0) : e.exist || e.option
                        }))
                    } else n[t] = c(i, e, !0)
                }
            })), f.timelineOptions.length && (h.timelineOptions = f.timelineOptions), f.mediaList.length && (h.mediaList = f.mediaList), f.mediaDefault && (h.mediaDefault = f.mediaDefault)) : this._optionBackup = f
        }, mountOption: function (e) {
            var t = this._optionBackup;
            return this._timelineOptions = l(t.timelineOptions, s), this._mediaList = l(t.mediaList, s), this._mediaDefault = s(t.mediaDefault), this._currentMediaIndices = [], s(e ? t.baseOption : this._newBaseOption)
        }, getTimelineOption: function (e) {
            var t, n = this._timelineOptions;
            if (n.length) {
                var i = e.getComponent("timeline");
                i && (t = s(n[i.getCurrentIndex()], !0))
            }
            return t
        }, getMediaOption: function (e) {
            var t, n, i = this._api.getWidth(), r = this._api.getHeight(), o = this._mediaList, a = this._mediaDefault,
                c = [], u = [];
            if (!o.length && !a) return u;
            for (var h = 0, d = o.length; h < d; h++) f(o[h].query, i, r) && c.push(h);
            return !c.length && a && (c = [-1]), c.length && (t = c, n = this._currentMediaIndices, t.join(",") !== n.join(",")) && (u = l(c, (function (e) {
                return s(-1 === e ? a.option : o[e].option)
            }))), this._currentMediaIndices = c, u
        }
    };
    var g = h;
    e.exports = g
}, function (e, t, n) {
    var i = n(1), r = i.each, o = i.isArray, a = i.isObject, s = n(298), l = n(5).normalizeToArray;

    function c(e) {
        r(u, (function (t) {
            t[0] in e && !(t[1] in e) && (e[t[1]] = e[t[0]])
        }))
    }

    var u = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]],
        h = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"];
    e.exports = function (e, t) {
        s(e, t), e.series = l(e.series), r(e.series, (function (e) {
            if (a(e)) {
                var t = e.type;
                if ("line" === t) null != e.clipOverflow && (e.clip = e.clipOverflow); else if ("pie" === t || "gauge" === t) null != e.clockWise && (e.clockwise = e.clockWise); else if ("gauge" === t) {
                    var n = function (e, t) {
                        t = t.split(",");
                        for (var n = e, i = 0; i < t.length && null != (n = n && n[t[i]]); i++) ;
                        return n
                    }(e, "pointer.color");
                    null != n && function (e, t, n, i) {
                        t = t.split(",");
                        for (var r, o = e, a = 0; a < t.length - 1; a++) null == o[r = t[a]] && (o[r] = {}), o = o[r];
                        (i || null == o[t[a]]) && (o[t[a]] = n)
                    }(e, "itemStyle.color", n)
                }
                c(e)
            }
        })), e.dataRange && (e.visualMap = e.dataRange), r(h, (function (t) {
            var n = e[t];
            n && (o(n) || (n = [n]), r(n, (function (e) {
                c(e)
            })))
        }))
    }
}, function (e, t, n) {
    var i = n(1), r = n(5), o = i.each, a = i.isObject,
        s = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];

    function l(e) {
        var t = e && e.itemStyle;
        if (t) for (var n = 0, r = s.length; n < r; n++) {
            var o = s[n], a = t.normal, l = t.emphasis;
            a && a[o] && (e[o] = e[o] || {}, e[o].normal ? i.merge(e[o].normal, a[o]) : e[o].normal = a[o], a[o] = null), l && l[o] && (e[o] = e[o] || {}, e[o].emphasis ? i.merge(e[o].emphasis, l[o]) : e[o].emphasis = l[o], l[o] = null)
        }
    }

    function c(e, t, n) {
        if (e && e[t] && (e[t].normal || e[t].emphasis)) {
            var r = e[t].normal, o = e[t].emphasis;
            r && (n ? (e[t].normal = e[t].emphasis = null, i.defaults(e[t], r)) : e[t] = r), o && (e.emphasis = e.emphasis || {}, e.emphasis[t] = o)
        }
    }

    function u(e) {
        c(e, "itemStyle"), c(e, "lineStyle"), c(e, "areaStyle"), c(e, "label"), c(e, "labelLine"), c(e, "upperLabel"), c(e, "edgeLabel")
    }

    function h(e, t) {
        var n = a(e) && e[t], i = a(n) && n.textStyle;
        if (i) for (var o = 0, s = r.TEXT_STYLE_OPTIONS.length; o < s; o++) {
            t = r.TEXT_STYLE_OPTIONS[o];
            i.hasOwnProperty(t) && (n[t] = i[t])
        }
    }

    function d(e) {
        e && (u(e), h(e, "label"), e.emphasis && h(e.emphasis, "label"))
    }

    function f(e) {
        return i.isArray(e) ? e : e ? [e] : []
    }

    function g(e) {
        return (i.isArray(e) ? e[0] : e) || {}
    }

    e.exports = function (e, t) {
        o(f(e.series), (function (e) {
            a(e) && function (e) {
                if (a(e)) {
                    l(e), u(e), h(e, "label"), h(e, "upperLabel"), h(e, "edgeLabel"), e.emphasis && (h(e.emphasis, "label"), h(e.emphasis, "upperLabel"), h(e.emphasis, "edgeLabel")), (n = e.markPoint) && (l(n), d(n)), (r = e.markLine) && (l(r), d(r));
                    var t = e.markArea;
                    t && d(t);
                    var n, r, o = e.data;
                    if ("graph" === e.type) {
                        o = o || e.nodes;
                        var s = e.links || e.edges;
                        if (s && !i.isTypedArray(s)) for (var f = 0; f < s.length; f++) d(s[f]);
                        i.each(e.categories, (function (e) {
                            u(e)
                        }))
                    }
                    if (o && !i.isTypedArray(o)) for (f = 0; f < o.length; f++) d(o[f]);
                    if ((n = e.markPoint) && n.data) {
                        var g = n.data;
                        for (f = 0; f < g.length; f++) d(g[f])
                    }
                    if ((r = e.markLine) && r.data) {
                        var p = r.data;
                        for (f = 0; f < p.length; f++) i.isArray(p[f]) ? (d(p[f][0]), d(p[f][1])) : d(p[f])
                    }
                    "gauge" === e.type ? (h(e, "axisLabel"), h(e, "title"), h(e, "detail")) : "treemap" === e.type ? (c(e.breadcrumb, "itemStyle"), i.each(e.levels, (function (e) {
                        u(e)
                    }))) : "tree" === e.type && u(e.leaves)
                }
            }(e)
        }));
        var n = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
        t && n.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), o(n, (function (t) {
            o(f(e[t]), (function (e) {
                e && (h(e, "axisLabel"), h(e.axisPointer, "label"))
            }))
        })), o(f(e.parallel), (function (e) {
            var t = e && e.parallelAxisDefault;
            h(t, "axisLabel"), h(t && t.axisPointer, "label")
        })), o(f(e.calendar), (function (e) {
            c(e, "itemStyle"), h(e, "dayLabel"), h(e, "monthLabel"), h(e, "yearLabel")
        })), o(f(e.radar), (function (e) {
            h(e, "name")
        })), o(f(e.geo), (function (e) {
            a(e) && (d(e), o(f(e.regions), (function (e) {
                d(e)
            })))
        })), o(f(e.timeline), (function (e) {
            d(e), c(e, "label"), c(e, "itemStyle"), c(e, "controlStyle", !0);
            var t = e.data;
            i.isArray(t) && i.each(t, (function (e) {
                i.isObject(e) && (c(e, "label"), c(e, "itemStyle"))
            }))
        })), o(f(e.toolbox), (function (e) {
            c(e, "iconStyle"), o(e.feature, (function (e) {
                c(e, "iconStyle")
            }))
        })), h(g(e.axisPointer), "label"), h(g(e.tooltip).axisPointer, "label")
    }
}, function (e, t, n) {
    var i = n(1), r = i.createHashMap, o = i.each;

    function a(e) {
        o(e, (function (t, n) {
            var i = [], r = [NaN, NaN], o = [t.stackResultDimension, t.stackedOverDimension], a = t.data,
                s = t.isStackedByIndex, l = a.map(o, (function (o, l, c) {
                    var u, h, d = a.get(t.stackedDimension, c);
                    if (isNaN(d)) return r;
                    s ? h = a.getRawIndex(c) : u = a.get(t.stackedByDimension, c);
                    for (var f = NaN, g = n - 1; g >= 0; g--) {
                        var p = e[g];
                        if (s || (h = p.data.rawIndexOf(p.stackedByDimension, u)), h >= 0) {
                            var m = p.data.getByRawIndex(p.stackResultDimension, h);
                            if (d >= 0 && m > 0 || d <= 0 && m < 0) {
                                d += m, f = m;
                                break
                            }
                        }
                    }
                    return i[0] = d, i[1] = f, i
                }));
            a.hostModel.setData(l), t.data = l
        }))
    }

    e.exports = function (e) {
        var t = r();
        e.eachSeries((function (e) {
            var n = e.get("stack");
            if (n) {
                var i = t.get(n) || t.set(n, []), r = e.getData(), o = {
                    stackResultDimension: r.getCalculationInfo("stackResultDimension"),
                    stackedOverDimension: r.getCalculationInfo("stackedOverDimension"),
                    stackedDimension: r.getCalculationInfo("stackedDimension"),
                    stackedByDimension: r.getCalculationInfo("stackedByDimension"),
                    isStackedByIndex: r.getCalculationInfo("isStackedByIndex"),
                    data: r,
                    seriesModel: e
                };
                if (!o.stackedDimension || !o.isStackedByIndex && !o.stackedByDimension) return;
                i.length && r.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), i.push(o)
            }
        })), t.each(a)
    }
}, function (e, t, n) {
    var i = n(85), r = n(1).isFunction, o = {
        createOnAllSeries: !0, performRawSeries: !0, reset: function (e, t) {
            var n = e.getData(), o = (e.visualColorAccessPath || "itemStyle.color").split("."), a = e.get(o),
                s = !r(a) || a instanceof i ? null : a;
            a && !s || (a = e.getColorFromPalette(e.name, null, t.getSeriesCount())), n.setVisual("color", a);
            var l = (e.visualBorderColorAccessPath || "itemStyle.borderColor").split("."), c = e.get(l);
            if (n.setVisual("borderColor", c), !t.isSeriesFiltered(e)) {
                s && n.each((function (t) {
                    n.setItemVisual(t, "color", s(e.getDataParams(t)))
                }));
                return {
                    dataEach: n.hasItemOption ? function (e, t) {
                        var n = e.getItemModel(t), i = n.get(o, !0), r = n.get(l, !0);
                        null != i && e.setItemVisual(t, "color", i), null != r && e.setItemVisual(t, "borderColor", r)
                    } : null
                }
            }
        }
    };
    e.exports = o
}, function (e, t, n) {
    var i = n(1), r = n(33), o = n(40).retrieveRawValue;
    e.exports = function (e, t) {
        var n = t.getModel("aria");
        if (n.get("show")) if (n.get("description")) e.setAttribute("aria-label", n.get("description")); else {
            var a = 0;
            t.eachSeries((function (e, t) {
                ++a
            }), this);
            var s, l = n.get("data.maxCount") || 10, c = n.get("series.maxCount") || 10, u = Math.min(a, c);
            if (!(a < 1)) {
                var h = function () {
                    var e = t.getModel("title").option;
                    e && e.length && (e = e[0]);
                    return e && e.text
                }();
                s = h ? f(g("general.withTitle"), {title: h}) : g("general.withoutTitle");
                var d = [];
                s += f(g(a > 1 ? "series.multiple.prefix" : "series.single.prefix"), {seriesCount: a}), t.eachSeries((function (e, t) {
                    if (t < u) {
                        var n, i = e.get("name"), s = "series." + (a > 1 ? "multiple" : "single") + ".";
                        n = f(n = g(i ? s + "withName" : s + "withoutName"), {
                            seriesId: e.seriesIndex,
                            seriesName: e.get("name"),
                            seriesType: (y = e.subType, r.series.typeNames[y] || "自定义图")
                        });
                        var c = e.getData();
                        window.data = c, c.count() > l ? n += f(g("data.partialData"), {displayCnt: l}) : n += g("data.allData");
                        for (var h = [], p = 0; p < c.count(); p++) if (p < l) {
                            var m = c.getName(p), v = o(c, p);
                            h.push(f(g(m ? "data.withName" : "data.withoutName"), {name: m, value: v}))
                        }
                        n += h.join(g("data.separator.middle")) + g("data.separator.end"), d.push(n)
                    }
                    var y
                })), s += d.join(g("series.multiple.separator.middle")) + g("series.multiple.separator.end"), e.setAttribute("aria-label", s)
            }
        }

        function f(e, t) {
            if ("string" != typeof e) return e;
            var n = e;
            return i.each(t, (function (e, t) {
                n = n.replace(new RegExp("\\{\\s*" + t + "\\s*\\}", "g"), e)
            })), n
        }

        function g(e) {
            var t = n.get(e);
            if (null == t) {
                for (var i = e.split("."), o = r.aria, a = 0; a < i.length; ++a) o = o[i[a]];
                return o
            }
            return t
        }
    }
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(17), a = Math.PI;
    e.exports = function (e, t) {
        t = t || {}, i.defaults(t, {
            text: "loading",
            textColor: "#000",
            fontSize: "12px",
            maskColor: "rgba(255, 255, 255, 0.8)",
            showSpinner: !0,
            color: "#c23531",
            spinnerRadius: 10,
            lineWidth: 5,
            zlevel: 0
        });
        var n = new r.Group, s = new r.Rect({style: {fill: t.maskColor}, zlevel: t.zlevel, z: 1e4});
        n.add(s);
        var l = t.fontSize + " sans-serif", c = new r.Rect({
            style: {
                fill: "none",
                text: t.text,
                font: l,
                textPosition: "right",
                textDistance: 10,
                textFill: t.textColor
            }, zlevel: t.zlevel, z: 10001
        });
        if (n.add(c), t.showSpinner) {
            var u = new r.Arc({
                shape: {startAngle: -a / 2, endAngle: -a / 2 + .1, r: t.spinnerRadius},
                style: {stroke: t.color, lineCap: "round", lineWidth: t.lineWidth},
                zlevel: t.zlevel,
                z: 10001
            });
            u.animateShape(!0).when(1e3, {endAngle: 3 * a / 2}).start("circularInOut"), u.animateShape(!0).when(1e3, {startAngle: 3 * a / 2}).delay(300).start("circularInOut"), n.add(u)
        }
        return n.resize = function () {
            var n = o.getWidth(t.text, l), i = t.showSpinner ? t.spinnerRadius : 0,
                r = (e.getWidth() - 2 * i - (t.showSpinner && n ? 10 : 0) - n) / 2 - (t.showSpinner ? 0 : n / 2),
                a = e.getHeight() / 2;
            t.showSpinner && u.setShape({cx: r, cy: a}), c.setShape({
                x: r - i,
                y: a - i,
                width: 2 * i,
                height: 2 * i
            }), s.setShape({x: 0, y: 0, width: e.getWidth(), height: e.getHeight()})
        }, n.resize(), n
    }
}, function (e, t, n) {
    var i = n(1), r = i.each, o = i.map, a = i.isFunction, s = i.createHashMap, l = i.noop, c = n(110).createTask,
        u = n(64).getUID, h = n(154), d = n(167), f = n(5).normalizeToArray;

    function g(e, t, n, i) {
        this.ecInstance = e, this.api = t, this.unfinished;
        n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice();
        this._allHandlers = n.concat(i), this._stageTaskMap = s()
    }

    var p = g.prototype;

    function m(e, t, n, i, o) {
        var a;

        function s(e, t) {
            return e.setDirty && (!e.dirtyMap || e.dirtyMap.get(t.__pipeline.id))
        }

        o = o || {}, r(t, (function (t, r) {
            if (!o.visualType || o.visualType === t.visualType) {
                var l = e._stageTaskMap.get(t.uid), c = l.seriesTaskMap, u = l.overallTask;
                if (u) {
                    var h, d = u.agentStubMap;
                    d.each((function (e) {
                        s(o, e) && (e.dirty(), h = !0)
                    })), h && u.dirty(), v(u, i);
                    var f = e.getPerformArgs(u, o.block);
                    d.each((function (e) {
                        e.perform(f)
                    })), a |= u.perform(f)
                } else c && c.each((function (r, l) {
                    s(o, r) && r.dirty();
                    var c = e.getPerformArgs(r, o.block);
                    c.skip = !t.performRawSeries && n.isSeriesFiltered(r.context.model), v(r, i), a |= r.perform(c)
                }))
            }
        })), e.unfinished |= a
    }

    p.restoreData = function (e, t) {
        e.restoreData(t), this._stageTaskMap.each((function (e) {
            var t = e.overallTask;
            t && t.dirty()
        }))
    }, p.getPerformArgs = function (e, t) {
        if (e.__pipeline) {
            var n = this._pipelineMap.get(e.__pipeline.id), i = n.context,
                r = !t && n.progressiveEnabled && (!i || i.progressiveRender) && e.__idxInPipeline > n.blockIndex ? n.step : null,
                o = i && i.modDataCount;
            return {step: r, modBy: null != o ? Math.ceil(o / r) : null, modDataCount: o}
        }
    }, p.getPipeline = function (e) {
        return this._pipelineMap.get(e)
    }, p.updateStreamModes = function (e, t) {
        var n = this._pipelineMap.get(e.uid), i = e.getData().count(),
            r = n.progressiveEnabled && t.incrementalPrepareRender && i >= n.threshold,
            o = e.get("large") && i >= e.get("largeThreshold"), a = "mod" === e.get("progressiveChunkMode") ? i : null;
        e.pipelineContext = n.context = {progressiveRender: r, modDataCount: a, large: o}
    }, p.restorePipelines = function (e) {
        var t = this, n = t._pipelineMap = s();
        e.eachSeries((function (e) {
            var i = e.getProgressive(), r = e.uid;
            n.set(r, {
                id: r,
                head: null,
                tail: null,
                threshold: e.getProgressiveThreshold(),
                progressiveEnabled: i && !(e.preventIncremental && e.preventIncremental()),
                blockIndex: -1,
                step: Math.round(i || 700),
                count: 0
            }), k(t, e, e.dataTask)
        }))
    }, p.prepareStageTasks = function () {
        var e = this._stageTaskMap, t = this.ecInstance.getModel(), n = this.api;
        r(this._allHandlers, (function (i) {
            var o = e.get(i.uid) || e.set(i.uid, []);
            i.reset && function (e, t, n, i, r) {
                var o = n.seriesTaskMap || (n.seriesTaskMap = s()), a = t.seriesType, l = t.getTargetSeries;
                t.createOnAllSeries ? i.eachRawSeries(u) : a ? i.eachRawSeriesByType(a, u) : l && l(i, r).each(u);

                function u(n) {
                    var a = n.uid, s = o.get(a) || o.set(a, c({plan: I, reset: x, count: S}));
                    s.context = {
                        model: n,
                        ecModel: i,
                        api: r,
                        useClearVisual: t.isVisual && !t.isLayout,
                        plan: t.plan,
                        reset: t.reset,
                        scheduler: e
                    }, k(e, n, s)
                }

                var h = e._pipelineMap;
                o.each((function (e, t) {
                    h.get(t) || (e.dispose(), o.removeKey(t))
                }))
            }(this, i, o, t, n), i.overallReset && function (e, t, n, i, o) {
                var a = n.overallTask = n.overallTask || c({reset: y});
                a.context = {ecModel: i, api: o, overallReset: t.overallReset, scheduler: e};
                var l = a.agentStubMap = a.agentStubMap || s(), u = t.seriesType, h = t.getTargetSeries, d = !0,
                    f = t.modifyOutputEnd;
                u ? i.eachRawSeriesByType(u, g) : h ? h(i, o).each(g) : (d = !1, r(i.getSeries(), g));

                function g(t) {
                    var n = t.uid, i = l.get(n);
                    i || (i = l.set(n, c({reset: b, onDirty: w})), a.dirty()), i.context = {
                        model: t,
                        overallProgress: d,
                        modifyOutputEnd: f
                    }, i.agent = a, i.__block = d, k(e, t, i)
                }

                var p = e._pipelineMap;
                l.each((function (e, t) {
                    p.get(t) || (e.dispose(), a.dirty(), l.removeKey(t))
                }))
            }(this, i, o, t, n)
        }), this)
    }, p.prepareView = function (e, t, n, i) {
        var r = e.renderTask, o = r.context;
        o.model = t, o.ecModel = n, o.api = i, r.__block = !e.incrementalPrepareRender, k(this, t, r)
    }, p.performDataProcessorTasks = function (e, t) {
        m(this, this._dataProcessorHandlers, e, t, {block: !0})
    }, p.performVisualTasks = function (e, t, n) {
        m(this, this._visualHandlers, e, t, n)
    }, p.performSeriesTasks = function (e) {
        var t;
        e.eachSeries((function (e) {
            t |= e.dataTask.perform()
        })), this.unfinished |= t
    }, p.plan = function () {
        this._pipelineMap.each((function (e) {
            var t = e.tail;
            do {
                if (t.__block) {
                    e.blockIndex = t.__idxInPipeline;
                    break
                }
                t = t.getUpstream()
            } while (t)
        }))
    };
    var v = p.updatePayload = function (e, t) {
        "remain" !== t && (e.context.payload = t)
    };

    function y(e) {
        e.overallReset(e.ecModel, e.api, e.payload)
    }

    function b(e, t) {
        return e.overallProgress && C
    }

    function C() {
        this.agent.dirty(), this.getDownstream().dirty()
    }

    function w() {
        this.agent && this.agent.dirty()
    }

    function I(e) {
        return e.plan && e.plan(e.model, e.ecModel, e.api, e.payload)
    }

    function x(e) {
        e.useClearVisual && e.data.clearAllVisual();
        var t = e.resetDefines = f(e.reset(e.model, e.ecModel, e.api, e.payload));
        return t.length > 1 ? o(t, (function (e, t) {
            return _(t)
        })) : A
    }

    var A = _(0);

    function _(e) {
        return function (t, n) {
            var i = n.data, r = n.resetDefines[e];
            if (r && r.dataEach) for (var o = t.start; o < t.end; o++) r.dataEach(i, o); else r && r.progress && r.progress(t, i)
        }
    }

    function S(e) {
        return e.data.count()
    }

    function k(e, t, n) {
        var i = t.uid, r = e._pipelineMap.get(i);
        !r.head && (r.head = n), r.tail && r.tail.pipe(n), r.tail = n, n.__idxInPipeline = r.count++, n.__pipeline = r
    }

    function L(e) {
        T = null;
        try {
            e(O, R)
        } catch (e) {
        }
        return T
    }

    g.wrapStageHandler = function (e, t) {
        return a(e) && (e = {overallReset: e, seriesType: L(e)}), e.uid = u("stageHandler"), t && (e.visualType = t), e
    };
    var T, O = {}, R = {};

    function E(e, t) {
        for (var n in t.prototype) e[n] = l
    }

    E(O, h), E(R, d), O.eachSeriesByType = O.eachRawSeriesByType = function (e) {
        T = e
    }, O.eachComponent = function (e) {
        "series" === e.mainType && e.subType && (T = e.subType)
    };
    var P = g;
    e.exports = P
}, function (e, t) {
    var n = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"],
        i = {
            color: n,
            colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], n]
        };
    e.exports = i
}, function (e, t) {
    var n = ["#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42"],
        i = {
            color: n,
            backgroundColor: "#333",
            tooltip: {axisPointer: {lineStyle: {color: "#eee"}, crossStyle: {color: "#eee"}, label: {color: "#000"}}},
            legend: {textStyle: {color: "#eee"}},
            textStyle: {color: "#eee"},
            title: {textStyle: {color: "#eee"}},
            toolbox: {iconStyle: {normal: {borderColor: "#eee"}}},
            dataZoom: {textStyle: {color: "#eee"}},
            visualMap: {textStyle: {color: "#eee"}},
            timeline: {
                lineStyle: {color: "#eee"},
                itemStyle: {normal: {color: n[1]}},
                label: {normal: {textStyle: {color: "#eee"}}},
                controlStyle: {normal: {color: "#eee", borderColor: "#eee"}}
            },
            timeAxis: {
                axisLine: {lineStyle: {color: "#eee"}},
                axisTick: {lineStyle: {color: "#eee"}},
                axisLabel: {textStyle: {color: "#eee"}},
                splitLine: {lineStyle: {type: "dashed", color: "#aaa"}},
                splitArea: {areaStyle: {color: "#eee"}}
            },
            logAxis: {
                axisLine: {lineStyle: {color: "#eee"}},
                axisTick: {lineStyle: {color: "#eee"}},
                axisLabel: {textStyle: {color: "#eee"}},
                splitLine: {lineStyle: {type: "dashed", color: "#aaa"}},
                splitArea: {areaStyle: {color: "#eee"}}
            },
            valueAxis: {
                axisLine: {lineStyle: {color: "#eee"}},
                axisTick: {lineStyle: {color: "#eee"}},
                axisLabel: {textStyle: {color: "#eee"}},
                splitLine: {lineStyle: {type: "dashed", color: "#aaa"}},
                splitArea: {areaStyle: {color: "#eee"}}
            },
            categoryAxis: {
                axisLine: {lineStyle: {color: "#eee"}},
                axisTick: {lineStyle: {color: "#eee"}},
                axisLabel: {textStyle: {color: "#eee"}},
                splitLine: {lineStyle: {type: "dashed", color: "#aaa"}},
                splitArea: {areaStyle: {color: "#eee"}}
            },
            line: {symbol: "circle"},
            graph: {color: n},
            gauge: {title: {textStyle: {color: "#eee"}}},
            candlestick: {
                itemStyle: {
                    normal: {
                        color: "#FD1050",
                        color0: "#0CF49B",
                        borderColor: "#FD1050",
                        borderColor0: "#0CF49B"
                    }
                }
            }
        };
    i.categoryAxis.splitLine.show = !1;
    var r = i;
    e.exports = r
}, function (e, t, n) {
    var i = n(11).extend({
        type: "ellipse", shape: {cx: 0, cy: 0, rx: 0, ry: 0}, buildPath: function (e, t) {
            var n = .5522848, i = t.cx, r = t.cy, o = t.rx, a = t.ry, s = o * n, l = a * n;
            e.moveTo(i - o, r), e.bezierCurveTo(i - o, r - l, i - s, r - a, i, r - a), e.bezierCurveTo(i + s, r - a, i + o, r - l, i + o, r), e.bezierCurveTo(i + o, r + l, i + s, r + a, i, r + a), e.bezierCurveTo(i - s, r + a, i - o, r + l, i - o, r), e.closePath()
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(30), o = n(22), a = n(51), s = n(13), l = n(7);
    l.getLayoutRect;
    t.getLayoutRect = l.getLayoutRect;
    var c = n(27), u = c.enableDataStack, h = c.isDimensionStacked, d = c.getStackedDimension, f = n(172);
    t.completeDimensions = f;
    var g = n(50);
    t.createDimensions = g;
    var p = n(20);
    t.createSymbol = p.createSymbol;
    var m = {isDimensionStacked: h, enableDataStack: u, getStackedDimension: d};
    t.createList = function (e) {
        return r(e.getSource(), e)
    }, t.dataStack = m, t.createScale = function (e, t) {
        var n = t;
        s.isInstance(t) || (n = new s(t), i.mixin(n, a));
        var r = o.createScaleByModel(n);
        return r.setExtent(e[0], e[1]), o.niceScaleExtent(r, n), r
    }, t.mixinAxisModelCommonMethods = function (e) {
        i.mixin(e, a)
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = i.createHashMap, o = (i.retrieve, i.each);

    function a(e) {
        this.coordSysName = e, this.coordSysDims = [], this.axisMap = r(), this.categoryAxisMap = r(), this.firstCategoryDimIndex = null
    }

    var s = {
        cartesian2d: function (e, t, n, i) {
            var r = e.getReferringComponents("xAxis")[0], o = e.getReferringComponents("yAxis")[0];
            t.coordSysDims = ["x", "y"], n.set("x", r), n.set("y", o), l(r) && (i.set("x", r), t.firstCategoryDimIndex = 0), l(o) && (i.set("y", o), t.firstCategoryDimIndex, t.firstCategoryDimIndex = 1)
        }, singleAxis: function (e, t, n, i) {
            var r = e.getReferringComponents("singleAxis")[0];
            t.coordSysDims = ["single"], n.set("single", r), l(r) && (i.set("single", r), t.firstCategoryDimIndex = 0)
        }, polar: function (e, t, n, i) {
            var r = e.getReferringComponents("polar")[0], o = r.findAxisModel("radiusAxis"),
                a = r.findAxisModel("angleAxis");
            t.coordSysDims = ["radius", "angle"], n.set("radius", o), n.set("angle", a), l(o) && (i.set("radius", o), t.firstCategoryDimIndex = 0), l(a) && (i.set("angle", a), null == t.firstCategoryDimIndex && (t.firstCategoryDimIndex = 1))
        }, geo: function (e, t, n, i) {
            t.coordSysDims = ["lng", "lat"]
        }, parallel: function (e, t, n, i) {
            var r = e.ecModel, a = r.getComponent("parallel", e.get("parallelIndex")),
                s = t.coordSysDims = a.dimensions.slice();
            o(a.parallelAxisIndex, (function (e, o) {
                var a = r.getComponent("parallelAxis", e), c = s[o];
                n.set(c, a), l(a) && null == t.firstCategoryDimIndex && (i.set(c, a), t.firstCategoryDimIndex = o)
            }))
        }
    };

    function l(e) {
        return "category" === e.get("type")
    }

    t.getCoordSysInfoBySeries = function (e) {
        var t = e.get("coordinateSystem"), n = new a(t), i = s[t];
        if (i) return i(e, n, n.axisMap, n.categoryAxisMap), n
    }
}, function (e, t, n) {
    var i = n(1), r = n(87), o = n(173), a = r.prototype, s = r.extend({
        type: "ordinal", init: function (e, t) {
            e && !i.isArray(e) || (e = new o({categories: e})), this._ordinalMeta = e, this._extent = t || [0, e.categories.length - 1]
        }, parse: function (e) {
            return "string" == typeof e ? this._ordinalMeta.getOrdinal(e) : Math.round(e)
        }, contain: function (e) {
            return e = this.parse(e), a.contain.call(this, e) && null != this._ordinalMeta.categories[e]
        }, normalize: function (e) {
            return a.normalize.call(this, this.parse(e))
        }, scale: function (e) {
            return Math.round(a.scale.call(this, e))
        }, getTicks: function () {
            for (var e = [], t = this._extent, n = t[0]; n <= t[1];) e.push(n), n++;
            return e
        }, getLabel: function (e) {
            if (!this.isBlank()) return this._ordinalMeta.categories[e]
        }, count: function () {
            return this._extent[1] - this._extent[0] + 1
        }, unionExtentFromData: function (e, t) {
            this.unionExtent(e.getApproximateExtent(t))
        }, getOrdinalMeta: function () {
            return this._ordinalMeta
        }, niceTicks: i.noop, niceExtent: i.noop
    });
    s.create = function () {
        return new s
    };
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(4), o = n(8), a = n(174), s = n(88), l = s.prototype, c = Math.ceil, u = Math.floor, h = 864e5,
        d = s.extend({
            type: "time", getLabel: function (e) {
                var t = this._stepLvl, n = new Date(e);
                return o.formatTime(t[0], n, this.getSetting("useUTC"))
            }, niceExtent: function (e) {
                var t = this._extent;
                if (t[0] === t[1] && (t[0] -= h, t[1] += h), t[1] === -1 / 0 && t[0] === 1 / 0) {
                    var n = new Date;
                    t[1] = +new Date(n.getFullYear(), n.getMonth(), n.getDate()), t[0] = t[1] - h
                }
                this.niceTicks(e.splitNumber, e.minInterval, e.maxInterval);
                var i = this._interval;
                e.fixMin || (t[0] = r.round(u(t[0] / i) * i)), e.fixMax || (t[1] = r.round(c(t[1] / i) * i))
            }, niceTicks: function (e, t, n) {
                e = e || 10;
                var i = this._extent, o = i[1] - i[0], s = o / e;
                null != t && s < t && (s = t), null != n && s > n && (s = n);
                var l = f.length, h = function (e, t, n, i) {
                    for (; n < i;) {
                        var r = n + i >>> 1;
                        e[r][1] < t ? n = r + 1 : i = r
                    }
                    return n
                }(f, s, 0, l), d = f[Math.min(h, l - 1)], g = d[1];
                if ("year" === d[0]) {
                    var p = o / g;
                    g *= r.nice(p / e, !0)
                }
                var m = this.getSetting("useUTC") ? 0 : 60 * new Date(+i[0] || +i[1]).getTimezoneOffset() * 1e3,
                    v = [Math.round(c((i[0] - m) / g) * g + m), Math.round(u((i[1] - m) / g) * g + m)];
                a.fixExtent(v, i), this._stepLvl = d, this._interval = g, this._niceExtent = v
            }, parse: function (e) {
                return +r.parseDate(e)
            }
        });
    i.each(["contain", "normalize"], (function (e) {
        d.prototype[e] = function (t) {
            return l[e].call(this, this.parse(t))
        }
    }));
    var f = [["hh:mm:ss", 1e3], ["hh:mm:ss", 5e3], ["hh:mm:ss", 1e4], ["hh:mm:ss", 15e3], ["hh:mm:ss", 3e4], ["hh:mm\nMM-dd", 6e4], ["hh:mm\nMM-dd", 3e5], ["hh:mm\nMM-dd", 6e5], ["hh:mm\nMM-dd", 9e5], ["hh:mm\nMM-dd", 18e5], ["hh:mm\nMM-dd", 36e5], ["hh:mm\nMM-dd", 72e5], ["hh:mm\nMM-dd", 216e5], ["hh:mm\nMM-dd", 432e5], ["MM-dd\nyyyy", h], ["MM-dd\nyyyy", 2 * h], ["MM-dd\nyyyy", 3 * h], ["MM-dd\nyyyy", 4 * h], ["MM-dd\nyyyy", 5 * h], ["MM-dd\nyyyy", 6 * h], ["week", 7 * h], ["MM-dd\nyyyy", 10 * h], ["week", 14 * h], ["week", 21 * h], ["month", 31 * h], ["week", 42 * h], ["month", 62 * h], ["week", 70 * h], ["quarter", 95 * h], ["month", 31 * h * 4], ["month", 31 * h * 5], ["half-year", 380 * h / 2], ["month", 31 * h * 8], ["month", 31 * h * 10], ["year", 380 * h]];
    d.create = function (e) {
        return new d({useUTC: e.ecModel.get("useUTC")})
    };
    var g = d;
    e.exports = g
}, function (e, t, n) {
    var i = n(1), r = n(17), o = n(5).makeInner, a = n(22), s = a.makeLabelFormatter, l = a.getOptionCategoryInterval,
        c = a.shouldShowAllLabels, u = o();

    function h(e, t) {
        var n, r, o = d(e, "labels"), a = l(t), s = f(o, a);
        return s || (i.isFunction(a) ? n = m(e, a) : (r = "auto" === a ? function (e) {
            var t = u(e).autoInterval;
            return null != t ? t : u(e).autoInterval = e.calculateCategoryInterval()
        }(e) : a, n = p(e, r)), g(o, a, {labels: n, labelCategoryInterval: r}))
    }

    function d(e, t) {
        return u(e)[t] || (u(e)[t] = [])
    }

    function f(e, t) {
        for (var n = 0; n < e.length; n++) if (e[n].key === t) return e[n].value
    }

    function g(e, t, n) {
        return e.push({key: t, value: n}), n
    }

    function p(e, t, n) {
        var i = s(e), r = e.scale, o = r.getExtent(), a = e.getLabelModel(), l = [], u = Math.max((t || 0) + 1, 1),
            h = o[0], d = r.count();
        0 !== h && u > 1 && d / u > 2 && (h = Math.round(Math.ceil(h / u) * u));
        var f = c(e), g = a.get("showMinLabel") || f, p = a.get("showMaxLabel") || f;
        g && h !== o[0] && v(o[0]);
        for (var m = h; m <= o[1]; m += u) v(m);

        function v(e) {
            l.push(n ? e : {formattedLabel: i(e), rawLabel: r.getLabel(e), tickValue: e})
        }

        return p && m - u !== o[1] && v(o[1]), l
    }

    function m(e, t, n) {
        var r = e.scale, o = s(e), a = [];
        return i.each(r.getTicks(), (function (e) {
            var i = r.getLabel(e);
            t(e, i) && a.push(n ? e : {formattedLabel: o(e), rawLabel: i, tickValue: e})
        })), a
    }

    t.createAxisLabels = function (e) {
        return "category" === e.type ? function (e) {
            var t = e.getLabelModel(), n = h(e, t);
            return !t.get("show") || e.scale.isBlank() ? {
                labels: [],
                labelCategoryInterval: n.labelCategoryInterval
            } : n
        }(e) : function (e) {
            var t = e.scale.getTicks(), n = s(e);
            return {
                labels: i.map(t, (function (t, i) {
                    return {formattedLabel: n(t, i), rawLabel: e.scale.getLabel(t), tickValue: t}
                }))
            }
        }(e)
    }, t.createAxisTicks = function (e, t) {
        return "category" === e.type ? function (e, t) {
            var n, r, o = d(e, "ticks"), a = l(t), s = f(o, a);
            if (s) return s;
            t.get("show") && !e.scale.isBlank() || (n = []);
            if (i.isFunction(a)) n = m(e, a, !0); else if ("auto" === a) {
                var c = h(e, e.getLabelModel());
                r = c.labelCategoryInterval, n = i.map(c.labels, (function (e) {
                    return e.tickValue
                }))
            } else n = p(e, r = a, !0);
            return g(o, a, {ticks: n, tickCategoryInterval: r})
        }(e, t) : {ticks: e.scale.getTicks()}
    }, t.calculateCategoryInterval = function (e) {
        var t = function (e) {
                var t = e.getLabelModel();
                return {
                    axisRotate: e.getRotate ? e.getRotate() : e.isHorizontal && !e.isHorizontal() ? 90 : 0,
                    labelRotate: t.get("rotate") || 0,
                    font: t.getFont()
                }
            }(e), n = s(e), i = (t.axisRotate - t.labelRotate) / 180 * Math.PI, o = e.scale, a = o.getExtent(),
            l = o.count();
        if (a[1] - a[0] < 1) return 0;
        var c = 1;
        l > 40 && (c = Math.max(1, Math.floor(l / 40)));
        for (var h = a[0], d = e.dataToCoord(h + 1) - e.dataToCoord(h), f = Math.abs(d * Math.cos(i)), g = Math.abs(d * Math.sin(i)), p = 0, m = 0; h <= a[1]; h += c) {
            var v, y, b = r.getBoundingRect(n(h), t.font, "center", "top");
            v = 1.3 * b.width, y = 1.3 * b.height, p = Math.max(p, v, 7), m = Math.max(m, y, 7)
        }
        var C = p / f, w = m / g;
        isNaN(C) && (C = 1 / 0), isNaN(w) && (w = 1 / 0);
        var I = Math.max(0, Math.floor(Math.min(C, w))), x = u(e.model), A = e.getExtent(), _ = x.lastAutoInterval,
            S = x.lastTickCount;
        return null != _ && null != S && Math.abs(_ - I) <= 1 && Math.abs(S - l) <= 1 && _ > I && x.axisExtend0 === A[0] && x.axisExtend1 === A[1] ? I = _ : (x.lastTickCount = l, x.lastAutoInterval = I, x.axisExtend0 = A[0], x.axisExtend1 = A[1]), I
    }
}, function (e, t, n) {
    var i = n(2);
    n(313), n(314);
    var r = n(42), o = n(70), a = n(316);
    n(71), i.registerVisual(r("line", "circle", "line")), i.registerLayout(o("line")), i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC, a("line"))
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(30), r = n(15).extend({
        type: "series.line",
        dependencies: ["grid", "polar"],
        getInitialData: function (e, t) {
            return i(this.getSource(), this, {useEncodeDefaulter: !0})
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            hoverAnimation: !0,
            clip: !0,
            label: {position: "top"},
            lineStyle: {width: 2, type: "solid"},
            step: !1,
            smooth: !1,
            smoothMonotone: null,
            symbol: "emptyCircle",
            symbolSize: 4,
            symbolRotate: null,
            showSymbol: !0,
            showAllSymbol: "auto",
            connectNulls: !1,
            sampling: "none",
            animationEasing: "linear",
            progressive: 0,
            hoverLayerThreshold: 1 / 0
        }
    });
    e.exports = r
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(63).fromPoints, o = n(68), a = n(90), s = n(315), l = n(3), c = n(5), u = n(180),
        h = u.Polyline, d = u.Polygon, f = n(26), g = n(179), p = g.prepareDataCoordInfo, m = g.getStackedOnPoint,
        v = n(69), y = v.createGridClipPath, b = v.createPolarClipPath;

    function C(e, t) {
        if (e.length === t.length) {
            for (var n = 0; n < e.length; n++) {
                var i = e[n], r = t[n];
                if (i[0] !== r[0] || i[1] !== r[1]) return
            }
            return !0
        }
    }

    function w(e, t) {
        var n = [], i = [], o = [], a = [];
        return r(e, n, i), r(t, o, a), Math.max(Math.abs(n[0] - o[0]), Math.abs(n[1] - o[1]), Math.abs(i[0] - a[0]), Math.abs(i[1] - a[1]))
    }

    function I(e) {
        return "number" == typeof e ? e : e ? .5 : 0
    }

    function x(e, t, n) {
        for (var i = t.getBaseAxis(), r = "x" === i.dim || "radius" === i.dim ? 0 : 1, o = [], a = 0; a < e.length - 1; a++) {
            var s = e[a + 1], l = e[a];
            o.push(l);
            var c = [];
            switch (n) {
                case"end":
                    c[r] = s[r], c[1 - r] = l[1 - r], o.push(c);
                    break;
                case"middle":
                    var u = (l[r] + s[r]) / 2, h = [];
                    c[r] = h[r] = u, c[1 - r] = l[1 - r], h[1 - r] = s[1 - r], o.push(c), o.push(h);
                    break;
                default:
                    c[r] = l[r], c[1 - r] = s[1 - r], o.push(c)
            }
        }
        return e[a] && o.push(e[a]), o
    }

    function A(e, t, n) {
        var r = e.get("showAllSymbol"), o = "auto" === r;
        if (!r || o) {
            var s = n.getAxesByScale("ordinal")[0];
            if (s && (!o || !function (e, t) {
                var n = e.getExtent(), i = Math.abs(n[1] - n[0]) / e.scale.count();
                isNaN(i) && (i = 0);
                for (var r = t.count(), o = Math.max(1, Math.round(r / 5)), s = 0; s < r; s += o) if (1.5 * a.getSymbolSize(t, s)[e.isHorizontal() ? 1 : 0] > i) return !1;
                return !0
            }(s, t))) {
                var l = t.mapDimension(s.dim), c = {};
                return i.each(s.getViewLabels(), (function (e) {
                    c[e.tickValue] = 1
                })), function (e) {
                    return !c.hasOwnProperty(t.get(l, e))
                }
            }
        }
    }

    function _(e, t, n) {
        if ("cartesian2d" === e.type) {
            var i = e.getBaseAxis().isHorizontal(), r = y(e, t, n);
            if (!n.get("clip", !0)) {
                var o = r.shape, a = Math.max(o.width, o.height);
                i ? (o.y -= a, o.height += 2 * a) : (o.x -= a, o.width += 2 * a)
            }
            return r
        }
        return b(e, t, n)
    }

    var S = f.extend({
        type: "line", init: function () {
            var e = new l.Group, t = new o;
            this.group.add(t.group), this._symbolDraw = t, this._lineGroup = e
        }, render: function (e, t, n) {
            var r = e.coordinateSystem, o = this.group, a = e.getData(), s = e.getModel("lineStyle"),
                c = e.getModel("areaStyle"), u = a.mapArray(a.getItemLayout), h = "polar" === r.type,
                d = this._coordSys, f = this._symbolDraw, g = this._polyline, v = this._polygon, y = this._lineGroup,
                b = e.get("animation"), w = !c.isEmpty(), S = c.get("origin"), k = function (e, t, n) {
                    if (!n.valueDim) return [];
                    for (var i = [], r = 0, o = t.count(); r < o; r++) i.push(m(n, e, t, r));
                    return i
                }(r, a, p(r, a, S)), L = e.get("showSymbol"), T = L && !h && A(e, a, r), O = this._data;
            O && O.eachItemGraphicEl((function (e, t) {
                e.__temp && (o.remove(e), O.setItemGraphicEl(t, null))
            })), L || f.remove(), o.add(y);
            var R, E = !h && e.get("step");
            r && r.getArea && e.get("clip", !0) && (null != (R = r.getArea()).width ? (R.x -= .1, R.y -= .1, R.width += .2, R.height += .2) : R.r0 && (R.r0 -= .5, R.r1 += .5)), this._clipShapeForSymbol = R, g && d.type === r.type && E === this._step ? (w && !v ? v = this._newPolygon(u, k, r, b) : v && !w && (y.remove(v), v = this._polygon = null), y.setClipPath(_(r, !1, e)), L && f.updateData(a, {
                isIgnore: T,
                clipShape: R
            }), a.eachItemGraphicEl((function (e) {
                e.stopAnimation(!0)
            })), C(this._stackedOnPoints, k) && C(this._points, u) || (b ? this._updateAnimation(a, k, r, n, E, S) : (E && (u = x(u, r, E), k = x(k, r, E)), g.setShape({points: u}), v && v.setShape({
                points: u,
                stackedOnPoints: k
            })))) : (L && f.updateData(a, {
                isIgnore: T,
                clipShape: R
            }), E && (u = x(u, r, E), k = x(k, r, E)), g = this._newPolyline(u, r, b), w && (v = this._newPolygon(u, k, r, b)), y.setClipPath(_(r, !0, e)));
            var P = function (e, t) {
                var n = e.getVisual("visualMeta");
                if (n && n.length && e.count() && "cartesian2d" === t.type) {
                    for (var r, o, a = n.length - 1; a >= 0; a--) {
                        var s = n[a].dimension, c = e.dimensions[s], u = e.getDimensionInfo(c);
                        if ("x" === (r = u && u.coordDim) || "y" === r) {
                            o = n[a];
                            break
                        }
                    }
                    if (o) {
                        var h = t.getAxis(r), d = i.map(o.stops, (function (e) {
                            return {coord: h.toGlobalCoord(h.dataToCoord(e.value)), color: e.color}
                        })), f = d.length, g = o.outerColors.slice();
                        f && d[0].coord > d[f - 1].coord && (d.reverse(), g.reverse());
                        var p = d[0].coord - 10, m = d[f - 1].coord + 10, v = m - p;
                        if (v < .001) return "transparent";
                        i.each(d, (function (e) {
                            e.offset = (e.coord - p) / v
                        })), d.push({
                            offset: f ? d[f - 1].offset : .5,
                            color: g[1] || "transparent"
                        }), d.unshift({offset: f ? d[0].offset : .5, color: g[0] || "transparent"});
                        var y = new l.LinearGradient(0, 0, 0, 0, d, !0);
                        return y[r] = p, y[r + "2"] = m, y
                    }
                }
            }(a, r) || a.getVisual("color");
            g.useStyle(i.defaults(s.getLineStyle(), {fill: "none", stroke: P, lineJoin: "bevel"}));
            var M = e.get("smooth");
            if (M = I(e.get("smooth")), g.setShape({
                smooth: M,
                smoothMonotone: e.get("smoothMonotone"),
                connectNulls: e.get("connectNulls")
            }), v) {
                var N = a.getCalculationInfo("stackedOnSeries"), D = 0;
                v.useStyle(i.defaults(c.getAreaStyle(), {
                    fill: P,
                    opacity: .7,
                    lineJoin: "bevel"
                })), N && (D = I(N.get("smooth"))), v.setShape({
                    smooth: M,
                    stackedOnSmooth: D,
                    smoothMonotone: e.get("smoothMonotone"),
                    connectNulls: e.get("connectNulls")
                })
            }
            this._data = a, this._coordSys = r, this._stackedOnPoints = k, this._points = u, this._step = E, this._valueOrigin = S
        }, dispose: function () {
        }, highlight: function (e, t, n, i) {
            var r = e.getData(), o = c.queryDataIndex(r, i);
            if (!(o instanceof Array) && null != o && o >= 0) {
                var s = r.getItemGraphicEl(o);
                if (!s) {
                    var l = r.getItemLayout(o);
                    if (!l) return;
                    if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(l[0], l[1])) return;
                    (s = new a(r, o)).position = l, s.setZ(e.get("zlevel"), e.get("z")), s.ignore = isNaN(l[0]) || isNaN(l[1]), s.__temp = !0, r.setItemGraphicEl(o, s), s.stopSymbolAnimation(!0), this.group.add(s)
                }
                s.highlight()
            } else f.prototype.highlight.call(this, e, t, n, i)
        }, downplay: function (e, t, n, i) {
            var r = e.getData(), o = c.queryDataIndex(r, i);
            if (null != o && o >= 0) {
                var a = r.getItemGraphicEl(o);
                a && (a.__temp ? (r.setItemGraphicEl(o, null), this.group.remove(a)) : a.downplay())
            } else f.prototype.downplay.call(this, e, t, n, i)
        }, _newPolyline: function (e) {
            var t = this._polyline;
            return t && this._lineGroup.remove(t), t = new h({
                shape: {points: e},
                silent: !0,
                z2: 10
            }), this._lineGroup.add(t), this._polyline = t, t
        }, _newPolygon: function (e, t) {
            var n = this._polygon;
            return n && this._lineGroup.remove(n), n = new d({
                shape: {points: e, stackedOnPoints: t},
                silent: !0
            }), this._lineGroup.add(n), this._polygon = n, n
        }, _updateAnimation: function (e, t, n, i, r, o) {
            var a = this._polyline, c = this._polygon, u = e.hostModel,
                h = s(this._data, e, this._stackedOnPoints, t, this._coordSys, n, this._valueOrigin, o), d = h.current,
                f = h.stackedOnCurrent, g = h.next, p = h.stackedOnNext;
            if (r && (d = x(h.current, n, r), f = x(h.stackedOnCurrent, n, r), g = x(h.next, n, r), p = x(h.stackedOnNext, n, r)), w(d, g) > 3e3 || c && w(f, p) > 3e3) return a.setShape({points: g}), void (c && c.setShape({
                points: g,
                stackedOnPoints: p
            }));
            a.shape.__points = h.current, a.shape.points = d, l.updateProps(a, {shape: {points: g}}, u), c && (c.setShape({
                points: d,
                stackedOnPoints: f
            }), l.updateProps(c, {shape: {points: g, stackedOnPoints: p}}, u));
            for (var m = [], v = h.status, y = 0; y < v.length; y++) {
                if ("=" === v[y].cmd) {
                    var b = e.getItemGraphicEl(v[y].idx1);
                    b && m.push({el: b, ptIdx: y})
                }
            }
            a.animators && a.animators.length && a.animators[0].during((function () {
                for (var e = 0; e < m.length; e++) {
                    m[e].el.attr("position", a.shape.__points[m[e].ptIdx])
                }
            }))
        }, remove: function (e) {
            var t = this.group, n = this._data;
            this._lineGroup.removeAll(), this._symbolDraw.remove(!0), n && n.eachItemGraphicEl((function (e, i) {
                e.__temp && (t.remove(e), n.setItemGraphicEl(i, null))
            })), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null
        }
    });
    e.exports = S
}, function (e, t, n) {
    var i = n(179), r = i.prepareDataCoordInfo, o = i.getStackedOnPoint;
    e.exports = function (e, t, n, i, a, s, l, c) {
        for (var u = function (e, t) {
            var n = [];
            return t.diff(e).add((function (e) {
                n.push({cmd: "+", idx: e})
            })).update((function (e, t) {
                n.push({cmd: "=", idx: t, idx1: e})
            })).remove((function (e) {
                n.push({cmd: "-", idx: e})
            })).execute(), n
        }(e, t), h = [], d = [], f = [], g = [], p = [], m = [], v = [], y = r(a, t, l), b = r(s, e, c), C = 0; C < u.length; C++) {
            var w = u[C], I = !0;
            switch (w.cmd) {
                case"=":
                    var x = e.getItemLayout(w.idx), A = t.getItemLayout(w.idx1);
                    (isNaN(x[0]) || isNaN(x[1])) && (x = A.slice()), h.push(x), d.push(A), f.push(n[w.idx]), g.push(i[w.idx1]), v.push(t.getRawIndex(w.idx1));
                    break;
                case"+":
                    var _ = w.idx;
                    h.push(a.dataToPoint([t.get(y.dataDimsForPoint[0], _), t.get(y.dataDimsForPoint[1], _)])), d.push(t.getItemLayout(_).slice()), f.push(o(y, a, t, _)), g.push(i[_]), v.push(t.getRawIndex(_));
                    break;
                case"-":
                    _ = w.idx;
                    var S = e.getRawIndex(_);
                    S !== _ ? (h.push(e.getItemLayout(_)), d.push(s.dataToPoint([e.get(b.dataDimsForPoint[0], _), e.get(b.dataDimsForPoint[1], _)])), f.push(n[_]), g.push(o(b, s, e, _)), v.push(S)) : I = !1
            }
            I && (p.push(w), m.push(m.length))
        }
        m.sort((function (e, t) {
            return v[e] - v[t]
        }));
        var k = [], L = [], T = [], O = [], R = [];
        for (C = 0; C < m.length; C++) {
            _ = m[C];
            k[C] = h[_], L[C] = d[_], T[C] = f[_], O[C] = g[_], R[C] = p[_]
        }
        return {current: k, next: L, stackedOnCurrent: T, stackedOnNext: O, status: R}
    }
}, function (e, t) {
    var n = {
        average: function (e) {
            for (var t = 0, n = 0, i = 0; i < e.length; i++) isNaN(e[i]) || (t += e[i], n++);
            return 0 === n ? NaN : t / n
        }, sum: function (e) {
            for (var t = 0, n = 0; n < e.length; n++) t += e[n] || 0;
            return t
        }, max: function (e) {
            for (var t = -1 / 0, n = 0; n < e.length; n++) e[n] > t && (t = e[n]);
            return isFinite(t) ? t : NaN
        }, min: function (e) {
            for (var t = 1 / 0, n = 0; n < e.length; n++) e[n] < t && (t = e[n]);
            return isFinite(t) ? t : NaN
        }, nearest: function (e) {
            return e[0]
        }
    }, i = function (e, t) {
        return Math.round(e.length / 2)
    };
    e.exports = function (e) {
        return {
            seriesType: e, modifyOutputEnd: !0, reset: function (e, t, r) {
                var o = e.getData(), a = e.get("sampling"), s = e.coordinateSystem;
                if ("cartesian2d" === s.type && a) {
                    var l, c = s.getBaseAxis(), u = s.getOtherAxis(c), h = c.getExtent(), d = h[1] - h[0],
                        f = Math.round(o.count() / d);
                    if (f > 1) "string" == typeof a ? l = n[a] : "function" == typeof a && (l = a), l && e.setData(o.downSample(o.mapDimension(u.dim), 1 / f, l, i))
                }
            }
        }
    }
}, function (e, t, n) {
    var i = n(1), r = n(10), o = n(318);

    function a(e) {
        o.call(this, e)
    }

    a.prototype = {
        constructor: a, type: "cartesian2d", dimensions: ["x", "y"], getBaseAxis: function () {
            return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x")
        }, containPoint: function (e) {
            var t = this.getAxis("x"), n = this.getAxis("y");
            return t.contain(t.toLocalCoord(e[0])) && n.contain(n.toLocalCoord(e[1]))
        }, containData: function (e) {
            return this.getAxis("x").containData(e[0]) && this.getAxis("y").containData(e[1])
        }, dataToPoint: function (e, t, n) {
            var i = this.getAxis("x"), r = this.getAxis("y");
            return (n = n || [])[0] = i.toGlobalCoord(i.dataToCoord(e[0])), n[1] = r.toGlobalCoord(r.dataToCoord(e[1])), n
        }, clampData: function (e, t) {
            var n = this.getAxis("x").scale, i = this.getAxis("y").scale, r = n.getExtent(), o = i.getExtent(),
                a = n.parse(e[0]), s = i.parse(e[1]);
            return (t = t || [])[0] = Math.min(Math.max(Math.min(r[0], r[1]), a), Math.max(r[0], r[1])), t[1] = Math.min(Math.max(Math.min(o[0], o[1]), s), Math.max(o[0], o[1])), t
        }, pointToData: function (e, t) {
            var n = this.getAxis("x"), i = this.getAxis("y");
            return (t = t || [])[0] = n.coordToData(n.toLocalCoord(e[0])), t[1] = i.coordToData(i.toLocalCoord(e[1])), t
        }, getOtherAxis: function (e) {
            return this.getAxis("x" === e.dim ? "y" : "x")
        }, getArea: function () {
            var e = this.getAxis("x").getGlobalExtent(), t = this.getAxis("y").getGlobalExtent(),
                n = Math.min(e[0], e[1]), i = Math.min(t[0], t[1]), o = Math.max(e[0], e[1]) - n,
                a = Math.max(t[0], t[1]) - i;
            return new r(n, i, o, a)
        }
    }, i.inherits(a, o);
    var s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(1);

    function r(e) {
        return this._axes[e]
    }

    var o = function (e) {
        this._axes = {}, this._dimList = [], this.name = e || ""
    };
    o.prototype = {
        constructor: o, type: "cartesian", getAxis: function (e) {
            return this._axes[e]
        }, getAxes: function () {
            return i.map(this._dimList, r, this)
        }, getAxesByScale: function (e) {
            return e = e.toLowerCase(), i.filter(this.getAxes(), (function (t) {
                return t.scale.type === e
            }))
        }, addAxis: function (e) {
            var t = e.dim;
            this._axes[t] = e, this._dimList.push(t)
        }, dataToCoord: function (e) {
            return this._dataCoordConvert(e, "dataToCoord")
        }, coordToData: function (e) {
            return this._dataCoordConvert(e, "coordToData")
        }, _dataCoordConvert: function (e, t) {
            for (var n = this._dimList, i = e instanceof Array ? [] : {}, r = 0; r < n.length; r++) {
                var o = n[r], a = this._axes[o];
                i[o] = a[t](e[o])
            }
            return i
        }
    };
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1), r = n(34), o = function (e, t, n, i, o) {
        r.call(this, e, t, n), this.type = i || "value", this.position = o || "bottom"
    };
    o.prototype = {
        constructor: o, index: 0, getAxesOnZeroOf: null, model: null, isHorizontal: function () {
            var e = this.position;
            return "top" === e || "bottom" === e
        }, getGlobalExtent: function (e) {
            var t = this.getExtent();
            return t[0] = this.toGlobalCoord(t[0]), t[1] = this.toGlobalCoord(t[1]), e && t[0] > t[1] && t.reverse(), t
        }, getOtherAxis: function () {
            this.grid.getOtherAxis()
        }, pointToData: function (e, t) {
            return this.coordToData(this.toLocalCoord(e["x" === this.dim ? 0 : 1]), t)
        }, toLocalCoord: null, toGlobalCoord: null
    }, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    n(181);
    var i = n(14).extend({
        type: "grid",
        dependencies: ["xAxis", "yAxis"],
        layoutMode: "box",
        coordinateSystem: null,
        defaultOption: {
            show: !1,
            zlevel: 0,
            z: 0,
            left: "10%",
            top: 60,
            right: "10%",
            bottom: 60,
            containLabel: !1,
            backgroundColor: "rgba(0,0,0,0)",
            borderWidth: 1,
            borderColor: "#ccc"
        }
    });
    e.exports = i
}, function (e, t, n) {
    n(181), n(322)
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(35), a = n(43), s = n(183), l = n(184), c = l.rectCoordAxisBuildSplitArea,
        u = l.rectCoordAxisHandleRemove, h = ["axisLine", "axisTickLabel", "axisName"],
        d = ["splitArea", "splitLine", "minorSplitLine"], f = a.extend({
            type: "cartesianAxis", axisPointerClass: "CartesianAxisPointer", render: function (e, t, n, a) {
                this.group.removeAll();
                var l = this._axisGroup;
                if (this._axisGroup = new r.Group, this.group.add(this._axisGroup), e.get("show")) {
                    var c = e.getCoordSysModel(), u = s.layout(c, e), g = new o(e, u);
                    i.each(h, g.add, g), this._axisGroup.add(g.getGroup()), i.each(d, (function (t) {
                        e.get(t + ".show") && this["_" + t](e, c)
                    }), this), r.groupTransition(l, this._axisGroup, e), f.superCall(this, "render", e, t, n, a)
                }
            }, remove: function () {
                u(this)
            }, _splitLine: function (e, t) {
                var n = e.axis;
                if (!n.scale.isBlank()) {
                    var o = e.getModel("splitLine"), a = o.getModel("lineStyle"), s = a.get("color");
                    s = i.isArray(s) ? s : [s];
                    for (var l = t.coordinateSystem.getRect(), c = n.isHorizontal(), u = 0, h = n.getTicksCoords({tickModel: o}), d = [], f = [], g = a.getLineStyle(), p = 0; p < h.length; p++) {
                        var m = n.toGlobalCoord(h[p].coord);
                        c ? (d[0] = m, d[1] = l.y, f[0] = m, f[1] = l.y + l.height) : (d[0] = l.x, d[1] = m, f[0] = l.x + l.width, f[1] = m);
                        var v = u++ % s.length, y = h[p].tickValue;
                        this._axisGroup.add(new r.Line({
                            anid: null != y ? "line_" + h[p].tickValue : null,
                            subPixelOptimize: !0,
                            shape: {x1: d[0], y1: d[1], x2: f[0], y2: f[1]},
                            style: i.defaults({stroke: s[v]}, g),
                            silent: !0
                        }))
                    }
                }
            }, _minorSplitLine: function (e, t) {
                var n = e.axis, i = e.getModel("minorSplitLine").getModel("lineStyle"), o = t.coordinateSystem.getRect(),
                    a = n.isHorizontal(), s = n.getMinorTicksCoords();
                if (s.length) for (var l = [], c = [], u = i.getLineStyle(), h = 0; h < s.length; h++) for (var d = 0; d < s[h].length; d++) {
                    var f = n.toGlobalCoord(s[h][d].coord);
                    a ? (l[0] = f, l[1] = o.y, c[0] = f, c[1] = o.y + o.height) : (l[0] = o.x, l[1] = f, c[0] = o.x + o.width, c[1] = f), this._axisGroup.add(new r.Line({
                        anid: "minor_line_" + s[h][d].tickValue,
                        subPixelOptimize: !0,
                        shape: {x1: l[0], y1: l[1], x2: c[0], y2: c[1]},
                        style: u,
                        silent: !0
                    }))
                }
            }, _splitArea: function (e, t) {
                c(this, this._axisGroup, e, t)
            }
        });
    f.extend({type: "xAxis"}), f.extend({type: "yAxis"})
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(89), a = o.layout, s = o.largeLayout;
    n(113), n(324), n(325), n(71), i.registerLayout(i.PRIORITY.VISUAL.LAYOUT, r.curry(a, "bar")), i.registerLayout(i.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, s), i.registerVisual({
        seriesType: "bar",
        reset: function (e) {
            e.getData().setVisual("legendSymbol", "roundRect")
        }
    })
}, function (e, t, n) {
    var i = n(185).extend({
        type: "series.bar",
        dependencies: ["grid", "polar"],
        brushSelector: "rect",
        getProgressive: function () {
            return !!this.get("large") && this.get("progressive")
        },
        getProgressiveThreshold: function () {
            var e = this.get("progressiveThreshold"), t = this.get("largeThreshold");
            return t > e && (e = t), e
        },
        defaultOption: {
            clip: !0,
            roundCap: !1,
            showBackground: !1,
            backgroundStyle: {
                color: "rgba(180, 180, 180, 0.2)",
                borderColor: null,
                borderWidth: 0,
                borderType: "solid",
                borderRadius: 0,
                shadowBlur: 0,
                shadowColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                opacity: 1
            }
        }
    });
    e.exports = i
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(3), a = n(186).setLabel, s = n(13), l = n(326), c = n(11), u = n(38),
        h = n(32).throttle, d = n(69).createClipPath, f = n(327), g = ["itemStyle", "barBorderWidth"], p = [0, 0];
    r.extend(s.prototype, l);
    var m = i.extendChartView({
        type: "bar", render: function (e, t, n) {
            this._updateDrawMode(e);
            var i = e.get("coordinateSystem");
            return "cartesian2d" !== i && "polar" !== i || (this._isLargeDraw ? this._renderLarge(e, t, n) : this._renderNormal(e, t, n)), this.group
        }, incrementalPrepareRender: function (e, t, n) {
            this._clear(), this._updateDrawMode(e)
        }, incrementalRender: function (e, t, n, i) {
            this._incrementalRenderLarge(e, t)
        }, _updateDrawMode: function (e) {
            var t = e.pipelineContext.large;
            (null == this._isLargeDraw || t ^ this._isLargeDraw) && (this._isLargeDraw = t, this._clear())
        }, _renderNormal: function (e, t, n) {
            var i, r = this.group, a = e.getData(), s = this._data, l = e.coordinateSystem, c = l.getBaseAxis();
            "cartesian2d" === l.type ? i = c.isHorizontal() : "polar" === l.type && (i = "angle" === c.dim);
            var h = e.isAnimationEnabled() ? e : null, d = e.get("clip", !0), f = function (e, t) {
                var n = e.getArea && e.getArea();
                if ("cartesian2d" === e.type) {
                    var i = e.getBaseAxis();
                    if ("category" !== i.type || !i.onBand) {
                        var r = t.getLayout("bandWidth");
                        i.isHorizontal() ? (n.x -= r, n.width += 2 * r) : (n.y -= r, n.height += 2 * r)
                    }
                }
                return n
            }(l, a);
            r.removeClipPath();
            var g = e.get("roundCap", !0), p = e.get("showBackground", !0), m = e.getModel("backgroundStyle"),
                v = m.get("barBorderRadius") || 0, y = [], A = this._backgroundEls || [];
            a.diff(s).add((function (t) {
                var n = a.getItemModel(t), s = x[l.type](a, t, n);
                if (p) {
                    var c = x[l.type](a, t), u = function (e, t, n) {
                        return new ("polar" === e.type ? o.Sector : o.Rect)({shape: T(t, n, e), silent: !0, z2: 0})
                    }(l, i, c);
                    u.useStyle(m.getBarItemStyle()), "cartesian2d" === l.type && u.setShape("r", v), y[t] = u
                }
                if (a.hasValue(t)) {
                    if (d) if (b[l.type](f, s)) return void r.remove(w);
                    var w = C[l.type](t, s, i, h, !1, g);
                    a.setItemGraphicEl(t, w), r.add(w), _(w, a, t, n, s, e, i, "polar" === l.type)
                }
            })).update((function (t, n) {
                var c = a.getItemModel(t), u = x[l.type](a, t, c);
                if (p) {
                    var w = A[n];
                    w.useStyle(m.getBarItemStyle()), "cartesian2d" === l.type && w.setShape("r", v), y[t] = w;
                    var I = x[l.type](a, t), S = T(i, I, l);
                    o.updateProps(w, {shape: S}, h, t)
                }
                var k = s.getItemGraphicEl(n);
                if (a.hasValue(t)) {
                    if (d) if (b[l.type](f, u)) return void r.remove(k);
                    k ? o.updateProps(k, {shape: u}, h, t) : k = C[l.type](t, u, i, h, !0, g), a.setItemGraphicEl(t, k), r.add(k), _(k, a, t, c, u, e, i, "polar" === l.type)
                } else r.remove(k)
            })).remove((function (e) {
                var t = s.getItemGraphicEl(e);
                "cartesian2d" === l.type ? t && w(e, h, t) : t && I(e, h, t)
            })).execute();
            var S = this._backgroundGroup || (this._backgroundGroup = new u);
            S.removeAll();
            for (var k = 0; k < y.length; ++k) S.add(y[k]);
            r.add(S), this._backgroundEls = y, this._data = a
        }, _renderLarge: function (e, t, n) {
            this._clear(), k(e, this.group);
            var i = e.get("clip", !0) ? d(e.coordinateSystem, !1, e) : null;
            i ? this.group.setClipPath(i) : this.group.removeClipPath()
        }, _incrementalRenderLarge: function (e, t) {
            this._removeBackground(), k(t, this.group, !0)
        }, dispose: r.noop, remove: function (e) {
            this._clear(e)
        }, _clear: function (e) {
            var t = this.group, n = this._data;
            e && e.get("animation") && n && !this._isLargeDraw ? (this._removeBackground(), this._backgroundEls = [], n.eachItemGraphicEl((function (t) {
                "sector" === t.type ? I(t.dataIndex, e, t) : w(t.dataIndex, e, t)
            }))) : t.removeAll(), this._data = null
        }, _removeBackground: function () {
            this.group.remove(this._backgroundGroup), this._backgroundGroup = null
        }
    }), v = Math.max, y = Math.min, b = {
        cartesian2d: function (e, t) {
            var n = t.width < 0 ? -1 : 1, i = t.height < 0 ? -1 : 1;
            n < 0 && (t.x += t.width, t.width = -t.width), i < 0 && (t.y += t.height, t.height = -t.height);
            var r = v(t.x, e.x), o = y(t.x + t.width, e.x + e.width), a = v(t.y, e.y),
                s = y(t.y + t.height, e.y + e.height);
            t.x = r, t.y = a, t.width = o - r, t.height = s - a;
            var l = t.width < 0 || t.height < 0;
            return n < 0 && (t.x += t.width, t.width = -t.width), i < 0 && (t.y += t.height, t.height = -t.height), l
        }, polar: function (e) {
            return !1
        }
    }, C = {
        cartesian2d: function (e, t, n, i, a) {
            var s = new o.Rect({shape: r.extend({}, t), z2: 1});
            if (s.name = "item", i) {
                var l = n ? "height" : "width", c = {};
                s.shape[l] = 0, c[l] = t[l], o[a ? "updateProps" : "initProps"](s, {shape: c}, i, e)
            }
            return s
        }, polar: function (e, t, n, i, a, s) {
            var l = t.startAngle < t.endAngle,
                c = new (!n && s ? f : o.Sector)({shape: r.defaults({clockwise: l}, t), z2: 1});
            if (c.name = "item", i) {
                var u = n ? "r" : "endAngle", h = {};
                c.shape[u] = n ? 0 : t.startAngle, h[u] = t[u], o[a ? "updateProps" : "initProps"](c, {shape: h}, i, e)
            }
            return c
        }
    };

    function w(e, t, n) {
        n.style.text = null, o.updateProps(n, {shape: {width: 0}}, t, e, (function () {
            n.parent && n.parent.remove(n)
        }))
    }

    function I(e, t, n) {
        n.style.text = null, o.updateProps(n, {shape: {r: n.shape.r0}}, t, e, (function () {
            n.parent && n.parent.remove(n)
        }))
    }

    var x = {
        cartesian2d: function (e, t, n) {
            var i = e.getItemLayout(t), r = n ? function (e, t) {
                var n = e.get(g) || 0, i = isNaN(t.width) ? Number.MAX_VALUE : Math.abs(t.width),
                    r = isNaN(t.height) ? Number.MAX_VALUE : Math.abs(t.height);
                return Math.min(n, i, r)
            }(n, i) : 0, o = i.width > 0 ? 1 : -1, a = i.height > 0 ? 1 : -1;
            return {x: i.x + o * r / 2, y: i.y + a * r / 2, width: i.width - o * r, height: i.height - a * r}
        }, polar: function (e, t, n) {
            var i = e.getItemLayout(t);
            return {cx: i.cx, cy: i.cy, r0: i.r0, r: i.r, startAngle: i.startAngle, endAngle: i.endAngle}
        }
    };

    function A(e) {
        return null != e.startAngle && null != e.endAngle && e.startAngle === e.endAngle
    }

    function _(e, t, n, i, s, l, c, u) {
        var h = t.getItemVisual(n, "color"), d = t.getItemVisual(n, "opacity"), f = t.getVisual("borderColor"),
            g = i.getModel("itemStyle"), p = i.getModel("emphasis.itemStyle").getBarItemStyle();
        u || e.setShape("r", g.get("barBorderRadius") || 0), e.useStyle(r.defaults({
            stroke: A(s) ? "none" : f,
            fill: A(s) ? "none" : h,
            opacity: d
        }, g.getBarItemStyle()));
        var m = i.getShallow("cursor");
        m && e.attr("cursor", m);
        var v = c ? s.height > 0 ? "bottom" : "top" : s.width > 0 ? "left" : "right";
        u || a(e.style, p, i, h, l, n, v), A(s) && (p.fill = p.stroke = "none"), o.setHoverStyle(e, p)
    }

    var S = c.extend({
        type: "largeBar", shape: {points: []}, buildPath: function (e, t) {
            for (var n = t.points, i = this.__startPoint, r = this.__baseDimIdx, o = 0; o < n.length; o += 2) i[r] = n[o + r], e.moveTo(i[0], i[1]), e.lineTo(n[o], n[o + 1])
        }
    });

    function k(e, t, n) {
        var i = e.getData(), r = [], o = i.getLayout("valueAxisHorizontal") ? 1 : 0;
        r[1 - o] = i.getLayout("valueAxisStart");
        var a = i.getLayout("largeDataIndices"), s = i.getLayout("barWidth"), l = e.getModel("backgroundStyle");
        if (e.get("showBackground", !0)) {
            var c = i.getLayout("largeBackgroundPoints"), u = [];
            u[1 - o] = i.getLayout("backgroundStart");
            var h = new S({
                shape: {points: c},
                incremental: !!n,
                __startPoint: u,
                __baseDimIdx: o,
                __largeDataIndices: a,
                __barWidth: s,
                silent: !0,
                z2: 0
            });
            !function (e, t, n) {
                var i = t.get("borderColor") || t.get("color"), r = t.getItemStyle(["color", "borderColor"]);
                e.useStyle(r), e.style.fill = null, e.style.stroke = i, e.style.lineWidth = n.getLayout("barWidth")
            }(h, l, i), t.add(h)
        }
        var d = new S({
            shape: {points: i.getLayout("largePoints")},
            incremental: !!n,
            __startPoint: r,
            __baseDimIdx: o,
            __largeDataIndices: a,
            __barWidth: s
        });
        t.add(d), function (e, t, n) {
            var i = n.getVisual("borderColor") || n.getVisual("color"),
                r = t.getModel("itemStyle").getItemStyle(["color", "borderColor"]);
            e.useStyle(r), e.style.fill = null, e.style.stroke = i, e.style.lineWidth = n.getLayout("barWidth")
        }(d, e, i), d.seriesIndex = e.seriesIndex, e.get("silent") || (d.on("mousedown", L), d.on("mousemove", L))
    }

    var L = h((function (e) {
        var t = function (e, t, n) {
            var i = e.__baseDimIdx, r = 1 - i, o = e.shape.points, a = e.__largeDataIndices,
                s = Math.abs(e.__barWidth / 2), l = e.__startPoint[r];
            p[0] = t, p[1] = n;
            for (var c = p[i], u = p[1 - i], h = c - s, d = c + s, f = 0, g = o.length / 2; f < g; f++) {
                var m = 2 * f, v = o[m + i], y = o[m + r];
                if (v >= h && v <= d && (l <= y ? u >= l && u <= y : u >= y && u <= l)) return a[f]
            }
            return -1
        }(this, e.offsetX, e.offsetY);
        this.dataIndex = t >= 0 ? t : null
    }), 30, !1);

    function T(e, t, n) {
        var i, r = "polar" === n.type;
        return i = r ? n.getArea() : n.grid.getRect(), r ? {
            cx: i.cx,
            cy: i.cy,
            r0: e ? i.r0 : t.r0,
            r: e ? i.r : t.r,
            startAngle: e ? t.startAngle : 0,
            endAngle: e ? t.endAngle : 2 * Math.PI
        } : {x: e ? t.x : i.x, y: e ? i.y : t.y, width: e ? t.width : i.width, height: e ? i.height : t.height}
    }

    e.exports = m
}, function (e, t, n) {
    var i = n(47)([["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["stroke", "barBorderColor"], ["lineWidth", "barBorderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]),
        r = {
            getBarItemStyle: function (e) {
                var t = i(this, e);
                if (this.getBorderLineDash) {
                    var n = this.getBorderLineDash();
                    n && (t.lineDash = n)
                }
                return t
            }
        };
    e.exports = r
}, function (e, t, n) {
    var i = (0, n(3).extendShape)({
        type: "sausage",
        shape: {cx: 0, cy: 0, r0: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0},
        buildPath: function (e, t) {
            var n = t.cx, i = t.cy, r = Math.max(t.r0 || 0, 0), o = Math.max(t.r, 0), a = .5 * (o - r), s = r + a,
                l = t.startAngle, c = t.endAngle, u = t.clockwise, h = Math.cos(l), d = Math.sin(l), f = Math.cos(c),
                g = Math.sin(c);
            (u ? c - l < 2 * Math.PI : l - c < 2 * Math.PI) && (e.moveTo(h * r + n, d * r + i), e.arc(h * s + n, d * s + i, a, -Math.PI + l, l, !u)), e.arc(n, i, o, l, c, !u), e.moveTo(f * o + n, g * o + i), e.arc(f * s + n, g * s + i, a, c - 2 * Math.PI, c - Math.PI, !u), 0 !== r && (e.arc(n, i, r, c, l, u), e.moveTo(h * r + n, g * r + i)), e.closePath()
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(2), r = n(1);
    n(329), n(330);
    var o = n(187), a = n(93), s = n(331), l = n(73);
    o("pie", [{type: "pieToggleSelect", event: "pieselectchanged", method: "toggleSelected"}, {
        type: "pieSelect",
        event: "pieselected",
        method: "select"
    }, {
        type: "pieUnSelect",
        event: "pieunselected",
        method: "unSelect"
    }]), i.registerVisual(a("pie")), i.registerLayout(r.curry(s, "pie")), i.registerProcessor(l("pie"))
}, function (e, t, n) {
    var i = n(2), r = n(52), o = n(1), a = n(5), s = n(4).getPercentWithPrecision, l = n(114),
        c = n(40).retrieveRawAttr, u = n(29).makeSeriesEncodeForNameBased, h = n(72), d = i.extendSeriesModel({
            type: "series.pie",
            init: function (e) {
                d.superApply(this, "init", arguments), this.legendVisualProvider = new h(o.bind(this.getData, this), o.bind(this.getRawData, this)), this.updateSelectedMap(this._createSelectableList()), this._defaultLabelLine(e)
            },
            mergeOption: function (e) {
                d.superCall(this, "mergeOption", e), this.updateSelectedMap(this._createSelectableList())
            },
            getInitialData: function (e, t) {
                return r(this, {coordDimensions: ["value"], encodeDefaulter: o.curry(u, this)})
            },
            _createSelectableList: function () {
                for (var e = this.getRawData(), t = e.mapDimension("value"), n = [], i = 0, r = e.count(); i < r; i++) n.push({
                    name: e.getName(i),
                    value: e.get(t, i),
                    selected: c(e, i, "selected")
                });
                return n
            },
            getDataParams: function (e) {
                var t = this.getData(), n = d.superCall(this, "getDataParams", e), i = [];
                return t.each(t.mapDimension("value"), (function (e) {
                    i.push(e)
                })), n.percent = s(i, e, t.hostModel.get("percentPrecision")), n.$vars.push("percent"), n
            },
            _defaultLabelLine: function (e) {
                a.defaultEmphasis(e, "labelLine", ["show"]);
                var t = e.labelLine, n = e.emphasis.labelLine;
                t.show = t.show && e.label.show, n.show = n.show && e.emphasis.label.show
            },
            defaultOption: {
                zlevel: 0,
                z: 2,
                legendHoverLink: !0,
                hoverAnimation: !0,
                center: ["50%", "50%"],
                radius: [0, "75%"],
                clockwise: !0,
                startAngle: 90,
                minAngle: 0,
                minShowLabelAngle: 0,
                selectedOffset: 10,
                hoverOffset: 10,
                avoidLabelOverlap: !0,
                percentPrecision: 2,
                stillShowZeroSum: !0,
                left: 0,
                top: 0,
                right: 0,
                bottom: 0,
                width: null,
                height: null,
                label: {
                    rotate: !1,
                    show: !0,
                    position: "outer",
                    alignTo: "none",
                    margin: "25%",
                    bleedMargin: 10,
                    distanceToLabelLine: 5
                },
                labelLine: {show: !0, length: 15, length2: 15, smooth: !1, lineStyle: {width: 1, type: "solid"}},
                itemStyle: {borderWidth: 1},
                animationType: "expansion",
                animationTypeUpdate: "transition",
                animationEasing: "cubicOut"
            }
        });
    o.mixin(d, l);
    var f = d;
    e.exports = f
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(26);

    function a(e, t, n, i) {
        var r = t.getData(), o = this.dataIndex, a = r.getName(o), l = t.get("selectedOffset");
        i.dispatchAction({type: "pieToggleSelect", from: e, name: a, seriesId: t.id}), r.each((function (e) {
            s(r.getItemGraphicEl(e), r.getItemLayout(e), t.isSelected(r.getName(e)), l, n)
        }))
    }

    function s(e, t, n, i, r) {
        var o = (t.startAngle + t.endAngle) / 2, a = n ? i : 0, s = [Math.cos(o) * a, Math.sin(o) * a];
        r ? e.animate().when(200, {position: s}).start("bounceOut") : e.attr("position", s)
    }

    function l(e, t) {
        r.Group.call(this);
        var n = new r.Sector({z2: 2}), i = new r.Polyline, o = new r.Text;
        this.add(n), this.add(i), this.add(o), this.updateData(e, t, !0)
    }

    var c = l.prototype;
    c.updateData = function (e, t, n) {
        var o = this.childAt(0), a = this.childAt(1), l = this.childAt(2), c = e.hostModel, u = e.getItemModel(t),
            h = e.getItemLayout(t), d = i.extend({}, h);
        d.label = null;
        var f = c.getShallow("animationTypeUpdate");
        n ? (o.setShape(d), "scale" === c.getShallow("animationType") ? (o.shape.r = h.r0, r.initProps(o, {shape: {r: h.r}}, c, t)) : (o.shape.endAngle = h.startAngle, r.updateProps(o, {shape: {endAngle: h.endAngle}}, c, t))) : "expansion" === f ? o.setShape(d) : r.updateProps(o, {shape: d}, c, t);
        var g = e.getItemVisual(t, "color");
        o.useStyle(i.defaults({
            lineJoin: "bevel",
            fill: g
        }, u.getModel("itemStyle").getItemStyle())), o.hoverStyle = u.getModel("emphasis.itemStyle").getItemStyle();
        var p = u.getShallow("cursor");
        p && o.attr("cursor", p), s(this, e.getItemLayout(t), c.isSelected(e.getName(t)), c.get("selectedOffset"), c.get("animation"));
        var m = !n && "transition" === f;
        this._updateLabel(e, t, m), this.highDownOnUpdate = c.get("silent") ? null : function (e, t) {
            var n = c.isAnimationEnabled() && u.get("hoverAnimation");
            "emphasis" === t ? (a.ignore = a.hoverIgnore, l.ignore = l.hoverIgnore, n && (o.stopAnimation(!0), o.animateTo({shape: {r: h.r + c.get("hoverOffset")}}, 300, "elasticOut"))) : (a.ignore = a.normalIgnore, l.ignore = l.normalIgnore, n && (o.stopAnimation(!0), o.animateTo({shape: {r: h.r}}, 300, "elasticOut")))
        }, r.setHoverStyle(this)
    }, c._updateLabel = function (e, t, n) {
        var i = this.childAt(1), o = this.childAt(2), a = e.hostModel, s = e.getItemModel(t),
            l = e.getItemLayout(t).label, c = e.getItemVisual(t, "color");
        if (!l || isNaN(l.x) || isNaN(l.y)) o.ignore = o.normalIgnore = o.hoverIgnore = i.ignore = i.normalIgnore = i.hoverIgnore = !0; else {
            var u = {points: l.linePoints || [[l.x, l.y], [l.x, l.y], [l.x, l.y]]}, h = {x: l.x, y: l.y};
            n ? (r.updateProps(i, {shape: u}, a, t), r.updateProps(o, {style: h}, a, t)) : (i.attr({shape: u}), o.attr({style: h})), o.attr({
                rotation: l.rotation,
                origin: [l.x, l.y],
                z2: 10
            });
            var d = s.getModel("label"), f = s.getModel("emphasis.label"), g = s.getModel("labelLine"),
                p = s.getModel("emphasis.labelLine");
            c = e.getItemVisual(t, "color");
            r.setLabelStyle(o.style, o.hoverStyle = {}, d, f, {
                labelFetcher: e.hostModel,
                labelDataIndex: t,
                defaultText: l.text,
                autoColor: c,
                useInsideStyle: !!l.inside
            }, {
                textAlign: l.textAlign,
                textVerticalAlign: l.verticalAlign,
                opacity: e.getItemVisual(t, "opacity")
            }), o.ignore = o.normalIgnore = !d.get("show"), o.hoverIgnore = !f.get("show"), i.ignore = i.normalIgnore = !g.get("show"), i.hoverIgnore = !p.get("show"), i.setStyle({
                stroke: c,
                opacity: e.getItemVisual(t, "opacity")
            }), i.setStyle(g.getModel("lineStyle").getLineStyle()), i.hoverStyle = p.getModel("lineStyle").getLineStyle();
            var m = g.get("smooth");
            m && !0 === m && (m = .4), i.setShape({smooth: m})
        }
    }, i.inherits(l, r.Group);
    var u = o.extend({
        type: "pie", init: function () {
            var e = new r.Group;
            this._sectorGroup = e
        }, render: function (e, t, n, r) {
            if (!r || r.from !== this.uid) {
                var o = e.getData(), s = this._data, c = this.group, u = t.get("animation"), h = !s,
                    d = e.get("animationType"), f = e.get("animationTypeUpdate"), g = i.curry(a, this.uid, e, u, n),
                    p = e.get("selectedMode");
                if (o.diff(s).add((function (e) {
                    var t = new l(o, e);
                    h && "scale" !== d && t.eachChild((function (e) {
                        e.stopAnimation(!0)
                    })), p && t.on("click", g), o.setItemGraphicEl(e, t), c.add(t)
                })).update((function (e, t) {
                    var n = s.getItemGraphicEl(t);
                    h || "transition" === f || n.eachChild((function (e) {
                        e.stopAnimation(!0)
                    })), n.updateData(o, e), n.off("click"), p && n.on("click", g), c.add(n), o.setItemGraphicEl(e, n)
                })).remove((function (e) {
                    var t = s.getItemGraphicEl(e);
                    c.remove(t)
                })).execute(), u && o.count() > 0 && (h ? "scale" !== d : "transition" !== f)) {
                    for (var m = o.getItemLayout(0), v = 1; isNaN(m.startAngle) && v < o.count(); ++v) m = o.getItemLayout(v);
                    var y = Math.max(n.getWidth(), n.getHeight()) / 2, b = i.bind(c.removeClipPath, c);
                    c.setClipPath(this._createClipPath(m.cx, m.cy, y, m.startAngle, m.clockwise, b, e, h))
                } else c.removeClipPath();
                this._data = o
            }
        }, dispose: function () {
        }, _createClipPath: function (e, t, n, i, o, a, s, l) {
            var c = new r.Sector({shape: {cx: e, cy: t, r0: 0, r: n, startAngle: i, endAngle: i, clockwise: o}});
            return (l ? r.initProps : r.updateProps)(c, {shape: {endAngle: i + (o ? 1 : -1) * Math.PI * 2}}, s, a), c
        }, containPoint: function (e, t) {
            var n = t.getData().getItemLayout(0);
            if (n) {
                var i = e[0] - n.cx, r = e[1] - n.cy, o = Math.sqrt(i * i + r * r);
                return o <= n.r && o >= n.r0
            }
        }
    });
    e.exports = u
}, function (e, t, n) {
    var i = n(4), r = i.parsePercent, o = i.linearMap, a = n(7), s = n(332), l = n(1), c = 2 * Math.PI,
        u = Math.PI / 180;
    e.exports = function (e, t, n, i) {
        t.eachSeriesByType(e, (function (e) {
            var t = e.getData(), i = t.mapDimension("value"), h = function (e, t) {
                return a.getLayoutRect(e.getBoxLayoutParams(), {width: t.getWidth(), height: t.getHeight()})
            }(e, n), d = e.get("center"), f = e.get("radius");
            l.isArray(f) || (f = [0, f]), l.isArray(d) || (d = [d, d]);
            var g = r(h.width, n.getWidth()), p = r(h.height, n.getHeight()), m = Math.min(g, p), v = r(d[0], g) + h.x,
                y = r(d[1], p) + h.y, b = r(f[0], m / 2), C = r(f[1], m / 2), w = -e.get("startAngle") * u,
                I = e.get("minAngle") * u, x = 0;
            t.each(i, (function (e) {
                !isNaN(e) && x++
            }));
            var A = t.getSum(i), _ = Math.PI / (A || x) * 2, S = e.get("clockwise"), k = e.get("roseType"),
                L = e.get("stillShowZeroSum"), T = t.getDataExtent(i);
            T[0] = 0;
            var O = c, R = 0, E = w, P = S ? 1 : -1;
            if (t.each(i, (function (e, n) {
                var i;
                if (isNaN(e)) t.setItemLayout(n, {
                    angle: NaN,
                    startAngle: NaN,
                    endAngle: NaN,
                    clockwise: S,
                    cx: v,
                    cy: y,
                    r0: b,
                    r: k ? NaN : C,
                    viewRect: h
                }); else {
                    (i = "area" !== k ? 0 === A && L ? _ : e * _ : c / x) < I ? (i = I, O -= I) : R += e;
                    var r = E + P * i;
                    t.setItemLayout(n, {
                        angle: i,
                        startAngle: E,
                        endAngle: r,
                        clockwise: S,
                        cx: v,
                        cy: y,
                        r0: b,
                        r: k ? o(e, T, [b, C]) : C,
                        viewRect: h
                    }), E = r
                }
            })), O < c && x) if (O <= .001) {
                var M = c / x;
                t.each(i, (function (e, n) {
                    if (!isNaN(e)) {
                        var i = t.getItemLayout(n);
                        i.angle = M, i.startAngle = w + P * n * M, i.endAngle = w + P * (n + 1) * M
                    }
                }))
            } else _ = O / R, E = w, t.each(i, (function (e, n) {
                if (!isNaN(e)) {
                    var i = t.getItemLayout(n), r = i.angle === I ? I : e * _;
                    i.startAngle = E, i.endAngle = E + P * r, E += P * r
                }
            }));
            s(e, C, h.width, h.height, h.x, h.y)
        }))
    }
}, function (e, t, n) {
    var i = n(17), r = n(4).parsePercent, o = Math.PI / 180;

    function a(e, t, n, i, r, o, a, s, l, c) {
        function u(t, n, i, r) {
            for (var o = t; o < n && !(e[o].y + i > l + a); o++) if (e[o].y += i, o > t && o + 1 < n && e[o + 1].y > e[o].y + e[o].height) return void h(o, i / 2);
            h(n - 1, i / 2)
        }

        function h(t, n) {
            for (var i = t; i >= 0 && !(e[i].y - n < l) && (e[i].y -= n, !(i > 0 && e[i].y > e[i - 1].y + e[i - 1].height)); i--) ;
        }

        function d(e, t, n, i, r, o) {
            for (var a = t ? Number.MAX_VALUE : 0, s = 0, l = e.length; s < l; s++) if ("none" === e[s].labelAlignTo) {
                var c = Math.abs(e[s].y - i), u = e[s].len, h = e[s].len2,
                    d = c < r + u ? Math.sqrt((r + u + h) * (r + u + h) - c * c) : Math.abs(e[s].x - n);
                t && d >= a && (d = a - 10), !t && d <= a && (d = a + 10), e[s].x = n + d * o, a = d
            }
        }

        e.sort((function (e, t) {
            return e.y - t.y
        }));
        for (var f, g = 0, p = e.length, m = [], v = [], y = 0; y < p; y++) {
            if ("outer" === e[y].position && "labelLine" === e[y].labelAlignTo) {
                var b = e[y].x - c;
                e[y].linePoints[1][0] += b, e[y].x = c
            }
            (f = e[y].y - g) < 0 && u(y, p, -f), g = e[y].y + e[y].height
        }
        a - g < 0 && h(p - 1, g - a);
        for (y = 0; y < p; y++) e[y].y >= n ? v.push(e[y]) : m.push(e[y]);
        d(m, !1, t, n, i, r), d(v, !0, t, n, i, r)
    }

    function s(e) {
        return "center" === e.position
    }

    e.exports = function (e, t, n, l, c, u) {
        var h, d, f = e.getData(), g = [], p = !1, m = (e.get("minShowLabelAngle") || 0) * o;
        f.each((function (o) {
            var a = f.getItemLayout(o), s = f.getItemModel(o), l = s.getModel("label"),
                u = l.get("position") || s.get("emphasis.label.position"), v = l.get("distanceToLabelLine"),
                y = l.get("alignTo"), b = r(l.get("margin"), n), C = l.get("bleedMargin"), w = l.getFont(),
                I = s.getModel("labelLine"), x = I.get("length");
            x = r(x, n);
            var A = I.get("length2");
            if (A = r(A, n), !(a.angle < m)) {
                var _, S, k, L, T = (a.startAngle + a.endAngle) / 2, O = Math.cos(T), R = Math.sin(T);
                h = a.cx, d = a.cy;
                var E, P = e.getFormattedLabel(o, "normal") || f.getName(o), M = i.getBoundingRect(P, w, L, "top"),
                    N = "inside" === u || "inner" === u;
                if ("center" === u) _ = a.cx, S = a.cy, L = "center"; else {
                    var D = (N ? (a.r + a.r0) / 2 * O : a.r * O) + h, B = (N ? (a.r + a.r0) / 2 * R : a.r * R) + d;
                    if (_ = D + 3 * O, S = B + 3 * R, !N) {
                        var j = D + O * (x + t - a.r), F = B + R * (x + t - a.r), H = j + (O < 0 ? -1 : 1) * A;
                        _ = "edge" === y ? O < 0 ? c + b : c + n - b : H + (O < 0 ? -v : v), S = F, k = [[D, B], [j, F], [H, F]]
                    }
                    L = N ? "center" : "edge" === y ? O > 0 ? "right" : "left" : O > 0 ? "left" : "right"
                }
                var W = l.get("rotate");
                E = "number" == typeof W ? W * (Math.PI / 180) : W ? O < 0 ? -T + Math.PI : -T : 0, p = !!E, a.label = {
                    x: _,
                    y: S,
                    position: u,
                    height: M.height,
                    len: x,
                    len2: A,
                    linePoints: k,
                    textAlign: L,
                    verticalAlign: "middle",
                    rotation: E,
                    inside: N,
                    labelDistance: v,
                    labelAlignTo: y,
                    labelMargin: b,
                    bleedMargin: C,
                    textRect: M,
                    text: P,
                    font: w
                }, N || g.push(a.label)
            }
        })), !p && e.get("avoidLabelOverlap") && function (e, t, n, r, o, l, c, u) {
            for (var h = [], d = [], f = Number.MAX_VALUE, g = -Number.MAX_VALUE, p = 0; p < e.length; p++) s(e[p]) || (e[p].x < t ? (f = Math.min(f, e[p].x), h.push(e[p])) : (g = Math.max(g, e[p].x), d.push(e[p])));
            for (a(d, t, n, r, 1, 0, l, 0, u, g), a(h, t, n, r, -1, 0, l, 0, u, f), p = 0; p < e.length; p++) {
                var m = e[p];
                if (!s(m)) {
                    var v = m.linePoints;
                    if (v) {
                        var y, b = "edge" === m.labelAlignTo, C = m.textRect.width;
                        (y = b ? m.x < t ? v[2][0] - m.labelDistance - c - m.labelMargin : c + o - m.labelMargin - v[2][0] - m.labelDistance : m.x < t ? m.x - c - m.bleedMargin : c + o - m.x - m.bleedMargin) < m.textRect.width && (m.text = i.truncateText(m.text, y, m.font), "edge" === m.labelAlignTo && (C = i.getWidth(m.text, m.font)));
                        var w = v[1][0] - v[2][0];
                        b ? m.x < t ? v[2][0] = c + m.labelMargin + C + m.labelDistance : v[2][0] = c + o - m.labelMargin - C - m.labelDistance : (m.x < t ? v[2][0] = m.x + m.labelDistance : v[2][0] = m.x - m.labelDistance, v[1][0] = v[2][0] + w), v[1][1] = v[2][1] = m.y
                    }
                }
            }
        }(g, h, d, t, n, l, c, u)
    }
}, function (e, t, n) {
    var i = n(2);
    n(334), n(335);
    var r = n(42), o = n(70);
    n(71), i.registerVisual(r("scatter", "circle")), i.registerLayout(o("scatter"))
}, function (e, t, n) {
    var i = n(30), r = n(15).extend({
        type: "series.scatter",
        dependencies: ["grid", "polar", "geo", "singleAxis", "calendar"],
        getInitialData: function (e, t) {
            return i(this.getSource(), this, {useEncodeDefaulter: !0})
        },
        brushSelector: "point",
        getProgressive: function () {
            var e = this.option.progressive;
            return null == e ? this.option.large ? 5e3 : this.get("progressive") : e
        },
        getProgressiveThreshold: function () {
            var e = this.option.progressiveThreshold;
            return null == e ? this.option.large ? 1e4 : this.get("progressiveThreshold") : e
        },
        defaultOption: {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            hoverAnimation: !0,
            symbolSize: 10,
            large: !1,
            largeThreshold: 2e3,
            itemStyle: {opacity: .8},
            clip: !0
        }
    });
    e.exports = r
}, function (e, t, n) {
    var i = n(2), r = n(68), o = n(336), a = n(70);
    i.extendChartView({
        type: "scatter", render: function (e, t, n) {
            var i = e.getData();
            this._updateSymbolDraw(i, e).updateData(i, {clipShape: this._getClipShape(e)}), this._finished = !0
        }, incrementalPrepareRender: function (e, t, n) {
            var i = e.getData();
            this._updateSymbolDraw(i, e).incrementalPrepareUpdate(i), this._finished = !1
        }, incrementalRender: function (e, t, n) {
            this._symbolDraw.incrementalUpdate(e, t.getData(), {clipShape: this._getClipShape(t)}), this._finished = e.end === t.getData().count()
        }, updateTransform: function (e, t, n) {
            var i = e.getData();
            if (this.group.dirty(), !this._finished || i.count() > 1e4 || !this._symbolDraw.isPersistent()) return {update: !0};
            var r = a().reset(e);
            r.progress && r.progress({start: 0, end: i.count()}, i), this._symbolDraw.updateLayout(i)
        }, _getClipShape: function (e) {
            var t = e.coordinateSystem, n = t && t.getArea && t.getArea();
            return e.get("clip", !0) ? n : null
        }, _updateSymbolDraw: function (e, t) {
            var n = this._symbolDraw, i = t.pipelineContext.large;
            return n && i === this._isLargeDraw || (n && n.remove(), n = this._symbolDraw = i ? new o : new r, this._isLargeDraw = i, this.group.removeAll()), this.group.add(n.group), n
        }, remove: function (e, t) {
            this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null
        }, dispose: function () {
        }
    })
}, function (e, t, n) {
    var i = n(3), r = n(20).createSymbol, o = n(108), a = i.extendShape({
        shape: {points: null}, symbolProxy: null, softClipShape: null, buildPath: function (e, t) {
            var n = t.points, i = t.size, r = this.symbolProxy, o = r.shape;
            if (!((e.getContext ? e.getContext() : e) && i[0] < 4)) for (var a = 0; a < n.length;) {
                var s = n[a++], l = n[a++];
                isNaN(s) || isNaN(l) || (this.softClipShape && !this.softClipShape.contain(s, l) || (o.x = s - i[0] / 2, o.y = l - i[1] / 2, o.width = i[0], o.height = i[1], r.buildPath(e, o, !0)))
            }
        }, afterBrush: function (e) {
            var t = this.shape, n = t.points, i = t.size;
            if (i[0] < 4) {
                this.setTransform(e);
                for (var r = 0; r < n.length;) {
                    var o = n[r++], a = n[r++];
                    isNaN(o) || isNaN(a) || (this.softClipShape && !this.softClipShape.contain(o, a) || e.fillRect(o - i[0] / 2, a - i[1] / 2, i[0], i[1]))
                }
                this.restoreTransform(e)
            }
        }, findDataIndex: function (e, t) {
            for (var n = this.shape, i = n.points, r = n.size, o = Math.max(r[0], 4), a = Math.max(r[1], 4), s = i.length / 2 - 1; s >= 0; s--) {
                var l = 2 * s, c = i[l] - o / 2, u = i[l + 1] - a / 2;
                if (e >= c && t >= u && e <= c + o && t <= u + a) return s
            }
            return -1
        }
    });

    function s() {
        this.group = new i.Group
    }

    var l = s.prototype;
    l.isPersistent = function () {
        return !this._incremental
    }, l.updateData = function (e, t) {
        this.group.removeAll();
        var n = new a({rectHover: !0, cursor: "default"});
        n.setShape({points: e.getLayout("symbolPoints")}), this._setCommon(n, e, !1, t), this.group.add(n), this._incremental = null
    }, l.updateLayout = function (e) {
        if (!this._incremental) {
            var t = e.getLayout("symbolPoints");
            this.group.eachChild((function (e) {
                if (null != e.startIndex) {
                    var n = 2 * (e.endIndex - e.startIndex), i = 4 * e.startIndex * 2;
                    t = new Float32Array(t.buffer, i, n)
                }
                e.setShape("points", t)
            }))
        }
    }, l.incrementalPrepareUpdate = function (e) {
        this.group.removeAll(), this._clearIncremental(), e.count() > 2e6 ? (this._incremental || (this._incremental = new o({silent: !0})), this.group.add(this._incremental)) : this._incremental = null
    }, l.incrementalUpdate = function (e, t, n) {
        var i;
        this._incremental ? (i = new a, this._incremental.addDisplayable(i, !0)) : ((i = new a({
            rectHover: !0,
            cursor: "default",
            startIndex: e.start,
            endIndex: e.end
        })).incremental = !0, this.group.add(i)), i.setShape({points: t.getLayout("symbolPoints")}), this._setCommon(i, t, !!this._incremental, n)
    }, l._setCommon = function (e, t, n, i) {
        var o = t.hostModel;
        i = i || {};
        var a = t.getVisual("symbolSize");
        e.setShape("size", a instanceof Array ? a : [a, a]), e.softClipShape = i.clipShape || null, e.symbolProxy = r(t.getVisual("symbol"), 0, 0, 0, 0), e.setColor = e.symbolProxy.setColor;
        var s = e.shape.size[0] < 4;
        e.useStyle(o.getModel("itemStyle").getItemStyle(s ? ["color", "shadowBlur", "shadowColor"] : ["color"]));
        var l = t.getVisual("color");
        l && e.setColor(l), n || (e.seriesIndex = o.seriesIndex, e.on("mousemove", (function (t) {
            e.dataIndex = null;
            var n = e.findDataIndex(t.offsetX, t.offsetY);
            n >= 0 && (e.dataIndex = n + (e.startIndex || 0))
        })))
    }, l.remove = function () {
        this._clearIncremental(), this._incremental = null, this.group.removeAll()
    }, l._clearIncremental = function () {
        var e = this._incremental;
        e && e.clearDisplaybles()
    };
    var c = s;
    e.exports = c
}, function (e, t, n) {
    var i = n(2);
    n(338), n(343), n(344);
    var r = n(93), o = n(42), a = n(345), s = n(73), l = n(346);
    i.registerVisual(r("radar")), i.registerVisual(o("radar", "circle")), i.registerLayout(a), i.registerProcessor(s("radar")), i.registerPreprocessor(l)
}, function (e, t, n) {
    n(339), n(341), n(342)
}, function (e, t, n) {
    var i = n(1), r = n(340), o = n(88), a = n(4), s = n(22), l = s.getScaleExtent, c = s.niceScaleExtent, u = n(21),
        h = n(175);

    function d(e, t, n) {
        this._model = e, this.dimensions = [], this._indicatorAxes = i.map(e.getIndicatorModels(), (function (e, t) {
            var n = "indicator_" + t, i = new r(n, "log" === e.get("axisType") ? new h : new o);
            return i.name = e.get("name"), i.model = e, e.axis = i, this.dimensions.push(n), i
        }), this), this.resize(e, n), this.cx, this.cy, this.r, this.r0, this.startAngle
    }

    d.prototype.getIndicatorAxes = function () {
        return this._indicatorAxes
    }, d.prototype.dataToPoint = function (e, t) {
        var n = this._indicatorAxes[t];
        return this.coordToPoint(n.dataToCoord(e), t)
    }, d.prototype.coordToPoint = function (e, t) {
        var n = this._indicatorAxes[t].angle;
        return [this.cx + e * Math.cos(n), this.cy - e * Math.sin(n)]
    }, d.prototype.pointToData = function (e) {
        var t = e[0] - this.cx, n = e[1] - this.cy, i = Math.sqrt(t * t + n * n);
        t /= i, n /= i;
        for (var r, o = Math.atan2(-n, t), a = 1 / 0, s = -1, l = 0; l < this._indicatorAxes.length; l++) {
            var c = this._indicatorAxes[l], u = Math.abs(o - c.angle);
            u < a && (r = c, s = l, a = u)
        }
        return [s, +(r && r.coordToData(i))]
    }, d.prototype.resize = function (e, t) {
        var n = e.get("center"), r = t.getWidth(), o = t.getHeight(), s = Math.min(r, o) / 2;
        this.cx = a.parsePercent(n[0], r), this.cy = a.parsePercent(n[1], o), this.startAngle = e.get("startAngle") * Math.PI / 180;
        var l = e.get("radius");
        "string" != typeof l && "number" != typeof l || (l = [0, l]), this.r0 = a.parsePercent(l[0], s), this.r = a.parsePercent(l[1], s), i.each(this._indicatorAxes, (function (e, t) {
            e.setExtent(this.r0, this.r);
            var n = this.startAngle + t * Math.PI * 2 / this._indicatorAxes.length;
            n = Math.atan2(Math.sin(n), Math.cos(n)), e.angle = n
        }), this)
    }, d.prototype.update = function (e, t) {
        var n = this._indicatorAxes, r = this._model;
        i.each(n, (function (e) {
            e.scale.setExtent(1 / 0, -1 / 0)
        })), e.eachSeriesByType("radar", (function (t, o) {
            if ("radar" === t.get("coordinateSystem") && e.getComponent("radar", t.get("radarIndex")) === r) {
                var a = t.getData();
                i.each(n, (function (e) {
                    e.scale.unionExtentFromData(a, a.mapDimension(e.dim))
                }))
            }
        }), this);
        var o = r.get("splitNumber");

        function s(e) {
            var t = Math.pow(10, Math.floor(Math.log(e) / Math.LN10)), n = e / t;
            return 2 === n ? n = 5 : n *= 2, n * t
        }

        i.each(n, (function (e, t) {
            var n = l(e.scale, e.model).extent;
            c(e.scale, e.model);
            var i = e.model, r = e.scale, u = i.getMin(), h = i.getMax(), d = r.getInterval();
            if (null != u && null != h) r.setExtent(+u, +h), r.setInterval((h - u) / o); else if (null != u) {
                do {
                    f = u + d * o, r.setExtent(+u, f), r.setInterval(d), d = s(d)
                } while (f < n[1] && isFinite(f) && isFinite(n[1]))
            } else if (null != h) {
                do {
                    g = h - d * o, r.setExtent(g, +h), r.setInterval(d), d = s(d)
                } while (g > n[0] && isFinite(g) && isFinite(n[0]))
            } else {
                r.getTicks().length - 1 > o && (d = s(d));
                var f = Math.ceil(n[1] / d) * d, g = a.round(f - d * o);
                r.setExtent(g, f), r.setInterval(d)
            }
        }))
    }, d.dimensions = [], d.create = function (e, t) {
        var n = [];
        return e.eachComponent("radar", (function (i) {
            var r = new d(i, e, t);
            n.push(r), i.coordinateSystem = r
        })), e.eachSeriesByType("radar", (function (e) {
            "radar" === e.get("coordinateSystem") && (e.coordinateSystem = n[e.get("radarIndex") || 0])
        })), n
    }, u.register("radar", d);
    var f = d;
    e.exports = f
}, function (e, t, n) {
    var i = n(1), r = n(34);

    function o(e, t, n) {
        r.call(this, e, t, n), this.type = "value", this.angle = 0, this.name = "", this.model
    }

    i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(182), a = n(13), s = n(51), l = o.valueAxis;

    function c(e, t) {
        return r.defaults({show: t}, e)
    }

    var u = i.extendComponentModel({
        type: "radar",
        optionUpdated: function () {
            var e = this.get("boundaryGap"), t = this.get("splitNumber"), n = this.get("scale"),
                i = this.get("axisLine"), o = this.get("axisTick"), l = this.get("axisType"), c = this.get("axisLabel"),
                u = this.get("name"), h = this.get("name.show"), d = this.get("name.formatter"),
                f = this.get("nameGap"), g = this.get("triggerEvent"),
                p = r.map(this.get("indicator") || [], (function (p) {
                    null != p.max && p.max > 0 && !p.min ? p.min = 0 : null != p.min && p.min < 0 && !p.max && (p.max = 0);
                    var m = u;
                    if (null != p.color && (m = r.defaults({color: p.color}, u)), p = r.merge(r.clone(p), {
                        boundaryGap: e,
                        splitNumber: t,
                        scale: n,
                        axisLine: i,
                        axisTick: o,
                        axisType: l,
                        axisLabel: c,
                        name: p.text,
                        nameLocation: "end",
                        nameGap: f,
                        nameTextStyle: m,
                        triggerEvent: g
                    }, !1), h || (p.name = ""), "string" == typeof d) {
                        var v = p.name;
                        p.name = d.replace("{value}", null != v ? v : "")
                    } else "function" == typeof d && (p.name = d(p.name, p));
                    var y = r.extend(new a(p, null, this.ecModel), s);
                    return y.mainType = "radar", y.componentIndex = this.componentIndex, y
                }), this);
            this.getIndicatorModels = function () {
                return p
            }
        },
        defaultOption: {
            zlevel: 0,
            z: 0,
            center: ["50%", "50%"],
            radius: "75%",
            startAngle: 90,
            name: {show: !0},
            boundaryGap: [0, 0],
            splitNumber: 5,
            nameGap: 15,
            scale: !1,
            shape: "polygon",
            axisLine: r.merge({lineStyle: {color: "#bbb"}}, l.axisLine),
            axisLabel: c(l.axisLabel, !1),
            axisTick: c(l.axisTick, !1),
            axisType: "interval",
            splitLine: c(l.splitLine, !0),
            splitArea: c(l.splitArea, !0),
            indicator: []
        }
    });
    e.exports = u
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(35), a = n(3), s = ["axisLine", "axisTickLabel", "axisName"],
        l = i.extendComponentView({
            type: "radar", render: function (e, t, n) {
                this.group.removeAll(), this._buildAxes(e), this._buildSplitLineAndArea(e)
            }, _buildAxes: function (e) {
                var t = e.coordinateSystem, n = t.getIndicatorAxes(), i = r.map(n, (function (e) {
                    return new o(e.model, {
                        position: [t.cx, t.cy],
                        rotation: e.angle,
                        labelDirection: -1,
                        tickDirection: -1,
                        nameDirection: 1
                    })
                }));
                r.each(i, (function (e) {
                    r.each(s, e.add, e), this.group.add(e.getGroup())
                }), this)
            }, _buildSplitLineAndArea: function (e) {
                var t = e.coordinateSystem, n = t.getIndicatorAxes();
                if (n.length) {
                    var i = e.get("shape"), o = e.getModel("splitLine"), s = e.getModel("splitArea"),
                        l = o.getModel("lineStyle"), c = s.getModel("areaStyle"), u = o.get("show"), h = s.get("show"),
                        d = l.get("color"), f = c.get("color");
                    d = r.isArray(d) ? d : [d], f = r.isArray(f) ? f : [f];
                    var g = [], p = [];
                    if ("circle" === i) for (var m = n[0].getTicksCoords(), v = t.cx, y = t.cy, b = 0; b < m.length; b++) {
                        if (u) g[k(g, d, b)].push(new a.Circle({shape: {cx: v, cy: y, r: m[b].coord}}));
                        if (h && b < m.length - 1) p[k(p, f, b)].push(new a.Ring({
                            shape: {
                                cx: v,
                                cy: y,
                                r0: m[b].coord,
                                r: m[b + 1].coord
                            }
                        }))
                    } else {
                        var C, w = r.map(n, (function (e, n) {
                            var i = e.getTicksCoords();
                            return C = null == C ? i.length - 1 : Math.min(i.length - 1, C), r.map(i, (function (e) {
                                return t.coordToPoint(e.coord, n)
                            }))
                        })), I = [];
                        for (b = 0; b <= C; b++) {
                            for (var x = [], A = 0; A < n.length; A++) x.push(w[A][b]);
                            if (x[0] && x.push(x[0].slice()), u) g[k(g, d, b)].push(new a.Polyline({shape: {points: x}}));
                            if (h && I) p[k(p, f, b - 1)].push(new a.Polygon({shape: {points: x.concat(I)}}));
                            I = x.slice().reverse()
                        }
                    }
                    var _ = l.getLineStyle(), S = c.getAreaStyle();
                    r.each(p, (function (e, t) {
                        this.group.add(a.mergePath(e, {
                            style: r.defaults({stroke: "none", fill: f[t % f.length]}, S),
                            silent: !0
                        }))
                    }), this), r.each(g, (function (e, t) {
                        this.group.add(a.mergePath(e, {
                            style: r.defaults({fill: "none", stroke: d[t % d.length]}, _),
                            silent: !0
                        }))
                    }), this)
                }

                function k(e, t, n) {
                    var i = n % t.length;
                    return e[i] = e[i] || [], i
                }
            }
        });
    e.exports = l
}, function (e, t, n) {
    var i = n(15), r = n(52), o = n(1), a = n(8).encodeHTML, s = n(72), l = i.extend({
        type: "series.radar",
        dependencies: ["radar"],
        init: function (e) {
            l.superApply(this, "init", arguments), this.legendVisualProvider = new s(o.bind(this.getData, this), o.bind(this.getRawData, this))
        },
        getInitialData: function (e, t) {
            return r(this, {generateCoord: "indicator_", generateCoordCount: 1 / 0})
        },
        formatTooltip: function (e) {
            var t = this.getData(), n = this.coordinateSystem.getIndicatorAxes(), i = this.getData().getName(e);
            return a("" === i ? this.name : i) + "<br/>" + o.map(n, (function (n, i) {
                var r = t.get(t.mapDimension(n.dim), e);
                return a(n.name + " : " + r)
            })).join("<br />")
        },
        getTooltipPosition: function (e) {
            if (null != e) for (var t = this.getData(), n = this.coordinateSystem, i = t.getValues(o.map(n.dimensions, (function (e) {
                return t.mapDimension(e)
            })), e, !0), r = 0, a = i.length; r < a; r++) if (!isNaN(i[r])) {
                var s = n.getIndicatorAxes();
                return n.coordToPoint(s[r].dataToCoord(i[r]), r)
            }
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "radar",
            legendHoverLink: !0,
            radarIndex: 0,
            lineStyle: {width: 2, type: "solid"},
            label: {position: "top"},
            symbol: "emptyCircle",
            symbolSize: 4
        }
    }), c = l;
    e.exports = c
}, function (e, t, n) {
    var i = n(2), r = n(3), o = n(1), a = n(20);
    var s = i.extendChartView({
        type: "radar", render: function (e, t, n) {
            var i = e.coordinateSystem, s = this.group, l = e.getData(), c = this._data;

            function u(e, t) {
                var n = e.getItemVisual(t, "symbol") || "circle", i = e.getItemVisual(t, "color");
                if ("none" !== n) {
                    var r = function (e) {
                        return o.isArray(e) || (e = [+e, +e]), e
                    }(e.getItemVisual(t, "symbolSize")), s = a.createSymbol(n, -1, -1, 2, 2, i);
                    return s.attr({style: {strokeNoScale: !0}, z2: 100, scale: [r[0] / 2, r[1] / 2]}), s
                }
            }

            function h(t, n, i, o, a, s) {
                i.removeAll();
                for (var l = 0; l < n.length - 1; l++) {
                    var c = u(o, a);
                    c && (c.__dimIdx = l, t[l] ? (c.attr("position", t[l]), r[s ? "initProps" : "updateProps"](c, {position: n[l]}, e, a)) : c.attr("position", n[l]), i.add(c))
                }
            }

            function d(e) {
                return o.map(e, (function (e) {
                    return [i.cx, i.cy]
                }))
            }

            l.diff(c).add((function (t) {
                var n = l.getItemLayout(t);
                if (n) {
                    var i = new r.Polygon, o = new r.Polyline, a = {shape: {points: n}};
                    i.shape.points = d(n), o.shape.points = d(n), r.initProps(i, a, e, t), r.initProps(o, a, e, t);
                    var s = new r.Group, c = new r.Group;
                    s.add(o), s.add(i), s.add(c), h(o.shape.points, n, c, l, t, !0), l.setItemGraphicEl(t, s)
                }
            })).update((function (t, n) {
                var i = c.getItemGraphicEl(n), o = i.childAt(0), a = i.childAt(1), s = i.childAt(2),
                    u = {shape: {points: l.getItemLayout(t)}};
                u.shape.points && (h(o.shape.points, u.shape.points, s, l, t, !1), r.updateProps(o, u, e), r.updateProps(a, u, e), l.setItemGraphicEl(t, i))
            })).remove((function (e) {
                s.remove(c.getItemGraphicEl(e))
            })).execute(), l.eachItemGraphicEl((function (e, t) {
                var n = l.getItemModel(t), i = e.childAt(0), a = e.childAt(1), c = e.childAt(2),
                    u = l.getItemVisual(t, "color");
                s.add(e), i.useStyle(o.defaults(n.getModel("lineStyle").getLineStyle(), {
                    fill: "none",
                    stroke: u
                })), i.hoverStyle = n.getModel("emphasis.lineStyle").getLineStyle();
                var h = n.getModel("areaStyle"), d = n.getModel("emphasis.areaStyle"),
                    f = h.isEmpty() && h.parentModel.isEmpty(), g = d.isEmpty() && d.parentModel.isEmpty();
                g = g && f, a.ignore = f, a.useStyle(o.defaults(h.getAreaStyle(), {
                    fill: u,
                    opacity: .7
                })), a.hoverStyle = d.getAreaStyle();
                var p = n.getModel("itemStyle").getItemStyle(["color"]),
                    m = n.getModel("emphasis.itemStyle").getItemStyle(), v = n.getModel("label"),
                    y = n.getModel("emphasis.label");
                c.eachChild((function (e) {
                    e.setStyle(p), e.hoverStyle = o.clone(m);
                    var n = l.get(l.dimensions[e.__dimIdx], t);
                    (null == n || isNaN(n)) && (n = ""), r.setLabelStyle(e.style, e.hoverStyle, v, y, {
                        labelFetcher: l.hostModel,
                        labelDataIndex: t,
                        labelDimIndex: e.__dimIdx,
                        defaultText: n,
                        autoColor: u,
                        isRectText: !0
                    })
                })), e.highDownOnUpdate = function (e, t) {
                    a.attr("ignore", "emphasis" === t ? g : f)
                }, r.setHoverStyle(e)
            })), this._data = l
        }, remove: function () {
            this.group.removeAll(), this._data = null
        }, dispose: function () {
        }
    });
    e.exports = s
}, function (e, t, n) {
    var i = n(1);

    function r(e) {
        return !isNaN(e[0]) && !isNaN(e[1])
    }

    function o(e) {
        return [e.cx, e.cy]
    }

    e.exports = function (e) {
        e.eachSeriesByType("radar", (function (e) {
            var t = e.getData(), n = [], a = e.coordinateSystem;
            if (a) {
                var s = a.getIndicatorAxes();
                i.each(s, (function (e, i) {
                    t.each(t.mapDimension(s[i].dim), (function (e, t) {
                        n[t] = n[t] || [];
                        var s = a.dataToPoint(e, i);
                        n[t][i] = r(s) ? s : o(a)
                    }))
                })), t.each((function (e) {
                    var s = i.find(n[e], (function (e) {
                        return r(e)
                    })) || o(a);
                    n[e].push(s.slice()), t.setItemLayout(e, n[e])
                }))
            }
        }))
    }
}, function (e, t, n) {
    var i = n(1);
    e.exports = function (e) {
        var t = e.polar;
        if (t) {
            i.isArray(t) || (t = [t]);
            var n = [];
            i.each(t, (function (t, r) {
                t.indicator ? (t.type && !t.shape && (t.shape = t.type), e.radar = e.radar || [], i.isArray(e.radar) || (e.radar = [e.radar]), e.radar.push(t)) : n.push(t)
            })), e.polar = n
        }
        i.each(e.series, (function (e) {
            e && "radar" === e.type && e.polarIndex && (e.radarIndex = e.polarIndex)
        }))
    }
}, function (e, t, n) {
    var i = n(2);
    n(348), n(355), n(190), n(117);
    var r = n(357), o = n(358), a = n(359), s = n(360), l = n(187);
    i.registerLayout(r), i.registerVisual(o), i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC, a), i.registerPreprocessor(s), l("map", [{
        type: "mapToggleSelect",
        event: "mapselectchanged",
        method: "toggleSelected"
    }, {type: "mapSelect", event: "mapselected", method: "select"}, {
        type: "mapUnSelect",
        event: "mapunselected",
        method: "unSelect"
    }])
}, function (e, t, n) {
    var i = n(1), r = n(52), o = n(15), a = n(8), s = a.encodeHTML, l = a.addCommas, c = n(114),
        u = n(40).retrieveRawAttr, h = n(94), d = n(29).makeSeriesEncodeForNameBased, f = o.extend({
            type: "series.map",
            dependencies: ["geo"],
            layoutMode: "box",
            needsDrawMap: !1,
            seriesGroup: [],
            getInitialData: function (e) {
                for (var t = r(this, {
                    coordDimensions: ["value"],
                    encodeDefaulter: i.curry(d, this)
                }), n = t.mapDimension("value"), o = i.createHashMap(), a = [], s = [], l = 0, c = t.count(); l < c; l++) {
                    var f = t.getName(l);
                    o.set(f, !0), a.push({name: f, value: t.get(n, l), selected: u(t, l, "selected")})
                }
                var g = h.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
                return i.each(g.regions, (function (e) {
                    var t = e.name;
                    o.get(t) || (a.push({name: t}), s.push(t))
                })), this.updateSelectedMap(a), t.appendValues([], s), t
            },
            getHostGeoModel: function () {
                var e = this.option.geoIndex;
                return null != e ? this.dependentModels.geo[e] : null
            },
            getMapType: function () {
                return (this.getHostGeoModel() || this).option.map
            },
            getRawValue: function (e) {
                var t = this.getData();
                return t.get(t.mapDimension("value"), e)
            },
            getRegionModel: function (e) {
                var t = this.getData();
                return t.getItemModel(t.indexOfName(e))
            },
            formatTooltip: function (e) {
                for (var t = this.getData(), n = l(this.getRawValue(e)), i = t.getName(e), r = this.seriesGroup, o = [], a = 0; a < r.length; a++) {
                    var c = r[a].originalData.indexOfName(i), u = t.mapDimension("value");
                    isNaN(r[a].originalData.get(u, c)) || o.push(s(r[a].name))
                }
                return o.join(", ") + "<br />" + s(i + " : " + n)
            },
            getTooltipPosition: function (e) {
                if (null != e) {
                    var t = this.getData().getName(e), n = this.coordinateSystem, i = n.getRegion(t);
                    return i && n.dataToPoint(i.center)
                }
            },
            setZoom: function (e) {
                this.option.zoom = e
            },
            setCenter: function (e) {
                this.option.center = e
            },
            defaultOption: {
                zlevel: 0,
                z: 2,
                coordinateSystem: "geo",
                map: "",
                left: "center",
                top: "center",
                aspectScale: .75,
                showLegendSymbol: !0,
                dataRangeHoverLink: !0,
                boundingCoords: null,
                center: null,
                zoom: 1,
                scaleLimit: null,
                label: {show: !1, color: "#000"},
                itemStyle: {borderWidth: .5, borderColor: "#444", areaColor: "#eee"},
                emphasis: {label: {show: !0, color: "rgb(100,0,0)"}, itemStyle: {areaColor: "rgba(255,215,0,0.8)"}},
                nameProperty: "name"
            }
        });
    i.mixin(f, c);
    var g = f;
    e.exports = g
}, function (e, t, n) {
    var i = n(1).each, r = n(176), o = n(5).makeInner, a = n(350), s = n(351), l = n(352), c = n(353), u = o(), h = {
        load: function (e, t, n) {
            var o = u(t).parsed;
            if (o) return o;
            var h, f = t.specialAreas || {}, g = t.geoJSON;
            try {
                h = g ? r(g, n) : []
            } catch (e) {
                throw new Error("Invalid geoJson format\n" + e.message)
            }
            return a(e, h), i(h, (function (t) {
                var n = t.name;
                s(e, t), l(e, t), c(e, t);
                var i = f[n];
                i && t.transformTo(i.left, i.top, i.width, i.height)
            })), u(t).parsed = {regions: h, boundingRect: d(h)}
        }
    };

    function d(e) {
        for (var t, n = 0; n < e.length; n++) {
            var i = e[n].getBoundingRect();
            (t = t || i.clone()).union(i)
        }
        return t
    }

    e.exports = h
}, function (e, t, n) {
    for (var i = n(1), r = n(177), o = [126, 25], a = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, .7], [52, .7], [56, 7.7], [59, .7], [64, .7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]], s = 0; s < a.length; s++) for (var l = 0; l < a[s].length; l++) a[s][l][0] /= 10.5, a[s][l][1] /= -14, a[s][l][0] += o[0], a[s][l][1] += o[1];
    e.exports = function (e, t) {
        "china" === e && t.push(new r("南海诸岛", i.map(a, (function (e) {
            return {type: "polygon", exterior: e}
        })), o))
    }
}, function (e, t) {
    var n = {"南海诸岛": [32, 80], "广东": [0, -10], "香港": [10, 5], "澳门": [-10, 10], "天津": [5, 5]};
    e.exports = function (e, t) {
        if ("china" === e) {
            var i = n[t.name];
            if (i) {
                var r = t.center;
                r[0] += i[0] / 10.5, r[1] += -i[1] / 14
            }
        }
    }
}, function (e, t) {
    var n = {Russia: [100, 60], "United States": [-99, 38], "United States of America": [-99, 38]};
    e.exports = function (e, t) {
        if ("world" === e) {
            var i = n[t.name];
            if (i) {
                var r = t.center;
                r[0] = i[0], r[1] = i[1]
            }
        }
    }
}, function (e, t) {
    var n = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];
    e.exports = function (e, t) {
        "china" === e && "台湾" === t.name && t.geometries.push({type: "polygon", exterior: n[0]})
    }
}, function (e, t, n) {
    var i = n(169), r = i.parseSVG, o = i.makeViewBoxTransform, a = n(38), s = n(105), l = n(1), c = l.assert,
        u = l.createHashMap, h = n(10), d = (0, n(5).makeInner)(), f = {
            load: function (e, t) {
                var n = d(t).originRoot;
                if (n) return {root: n, boundingRect: d(t).boundingRect};
                var i = g(t);
                return d(t).originRoot = i.root, d(t).boundingRect = i.boundingRect, i
            }, makeGraphic: function (e, t, n) {
                var i = d(t), r = i.rootMap || (i.rootMap = u()), o = r.get(n);
                if (o) return o;
                var a = i.originRoot, s = i.boundingRect;
                return i.originRootHostKey ? o = g(t, s).root : (i.originRootHostKey = n, o = a), r.set(n, o)
            }, removeGraphic: function (e, t, n) {
                var i = d(t), r = i.rootMap;
                r && r.removeKey(n), n === i.originRootHostKey && (i.originRootHostKey = null)
            }
        };

    function g(e, t) {
        var n, i, l = e.svgXML;
        try {
            i = (n = l && r(l, {ignoreViewBox: !0, ignoreRootClip: !0}) || {}).root, c(null != i)
        } catch (e) {
            throw new Error("Invalid svg format\n" + e.message)
        }
        var u = n.width, d = n.height, f = n.viewBoxRect;
        if (t || (t = null == u || null == d ? i.getBoundingRect() : new h(0, 0, 0, 0), null != u && (t.width = u), null != d && (t.height = d)), f) {
            var g = o(f, t.width, t.height), p = i;
            (i = new a).add(p), p.scale = g.scale, p.position = g.position
        }
        return i.setClipPath(new s({shape: t.plain()})), {root: i, boundingRect: t}
    }

    e.exports = f
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(3), a = n(188), s = i.extendChartView({
        type: "map", render: function (e, t, n, i) {
            if (!i || "mapToggleSelect" !== i.type || i.from !== this.uid) {
                var r = this.group;
                if (r.removeAll(), !e.getHostGeoModel()) {
                    if (i && "geoRoam" === i.type && "series" === i.componentType && i.seriesId === e.id) (o = this._mapDraw) && r.add(o.group); else if (e.needsDrawMap) {
                        var o = this._mapDraw || new a(n, !0);
                        r.add(o.group), o.draw(e, t, n, this, i), this._mapDraw = o
                    } else this._mapDraw && this._mapDraw.remove(), this._mapDraw = null;
                    e.get("showLegendSymbol") && t.getComponent("legend") && this._renderSymbols(e, t, n)
                }
            }
        }, remove: function () {
            this._mapDraw && this._mapDraw.remove(), this._mapDraw = null, this.group.removeAll()
        }, dispose: function () {
            this._mapDraw && this._mapDraw.remove(), this._mapDraw = null
        }, _renderSymbols: function (e, t, n) {
            var i = e.originalData, a = this.group;
            i.each(i.mapDimension("value"), (function (t, n) {
                if (!isNaN(t)) {
                    var s = i.getItemLayout(n);
                    if (s && s.point) {
                        var u = s.point, h = s.offset, d = new o.Circle({
                            style: {fill: e.getData().getVisual("color")},
                            shape: {cx: u[0] + 9 * h, cy: u[1], r: 3},
                            silent: !0,
                            z2: 8 + (h ? 0 : o.Z2_EMPHASIS_LIFT + 1)
                        });
                        if (!h) {
                            var f = e.mainSeries.getData(), g = i.getName(n), p = f.indexOfName(g),
                                m = i.getItemModel(n), v = m.getModel("label"), y = m.getModel("emphasis.label"),
                                b = f.getItemGraphicEl(p), C = r.retrieve2(e.getFormattedLabel(p, "normal"), g),
                                w = r.retrieve2(e.getFormattedLabel(p, "emphasis"), C), I = b.__seriesMapHighDown,
                                x = Math.random();
                            if (!I) {
                                I = b.__seriesMapHighDown = {};
                                var A = r.curry(l, !0), _ = r.curry(l, !1);
                                b.on("mouseover", A).on("mouseout", _).on("emphasis", A).on("normal", _)
                            }
                            b.__seriesMapCallKey = x, r.extend(I, {
                                recordVersion: x,
                                circle: d,
                                labelModel: v,
                                hoverLabelModel: y,
                                emphasisText: w,
                                normalText: C
                            }), c(I, !1)
                        }
                        a.add(d)
                    }
                }
            }))
        }
    });

    function l(e) {
        var t = this.__seriesMapHighDown;
        t && t.recordVersion === this.__seriesMapCallKey && c(t, e)
    }

    function c(e, t) {
        var n = e.circle, i = e.labelModel, r = e.hoverLabelModel, a = e.emphasisText, s = e.normalText;
        t ? (n.style.extendFrom(o.setTextStyle({}, r, {text: r.get("show") ? a : null}, {
            isRectText: !0,
            useInsideStyle: !1
        }, !0)), n.__mapOriginalZ2 = n.z2, n.z2 += o.Z2_EMPHASIS_LIFT) : (o.setTextStyle(n.style, i, {
            text: i.get("show") ? s : null,
            textPosition: i.getShallow("position") || "bottom"
        }, {
            isRectText: !0,
            useInsideStyle: !1
        }), n.dirty(!1), null != n.__mapOriginalZ2 && (n.z2 = n.__mapOriginalZ2, n.__mapOriginalZ2 = null))
    }

    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(10), o = n(118), a = n(94);

    function s(e, t, n, i) {
        o.call(this, e), this.map = t;
        var r = a.load(t, n);
        this._nameCoordMap = r.nameCoordMap, this._regionsMap = r.regionsMap, this._invertLongitute = null == i || i, this.regions = r.regions, this._rect = r.boundingRect
    }

    function l(e, t, n, i) {
        var r = n.geoModel, o = n.seriesModel,
            a = r ? r.coordinateSystem : o ? o.coordinateSystem || (o.getReferringComponents("geo")[0] || {}).coordinateSystem : null;
        return a === this ? a[e](i) : null
    }

    s.prototype = {
        constructor: s, type: "geo", dimensions: ["lng", "lat"], containCoord: function (e) {
            for (var t = this.regions, n = 0; n < t.length; n++) if (t[n].contain(e)) return !0;
            return !1
        }, transformTo: function (e, t, n, i) {
            var o = this.getBoundingRect(), a = this._invertLongitute;
            o = o.clone(), a && (o.y = -o.y - o.height);
            var s = this._rawTransformable;
            if (s.transform = o.calculateTransform(new r(e, t, n, i)), s.decomposeTransform(), a) {
                var l = s.scale;
                l[1] = -l[1]
            }
            s.updateTransform(), this._updateTransform()
        }, getRegion: function (e) {
            return this._regionsMap.get(e)
        }, getRegionByCoord: function (e) {
            for (var t = this.regions, n = 0; n < t.length; n++) if (t[n].contain(e)) return t[n]
        }, addGeoCoord: function (e, t) {
            this._nameCoordMap.set(e, t)
        }, getGeoCoord: function (e) {
            return this._nameCoordMap.get(e)
        }, getBoundingRect: function () {
            return this._rect
        }, dataToPoint: function (e, t, n) {
            if ("string" == typeof e && (e = this.getGeoCoord(e)), e) return o.prototype.dataToPoint.call(this, e, t, n)
        }, convertToPixel: i.curry(l, "dataToPoint"), convertFromPixel: i.curry(l, "pointToData")
    }, i.mixin(s, o);
    var c = s;
    e.exports = c
}, function (e, t, n) {
    var i = n(1);
    e.exports = function (e) {
        var t = {};
        e.eachSeriesByType("map", (function (n) {
            var r = n.getMapType();
            if (!n.getHostGeoModel() && !t[r]) {
                var o = {};
                i.each(n.seriesGroup, (function (t) {
                    var n = t.coordinateSystem, i = t.originalData;
                    t.get("showLegendSymbol") && e.getComponent("legend") && i.each(i.mapDimension("value"), (function (e, t) {
                        var r = i.getName(t), a = n.getRegion(r);
                        if (a && !isNaN(e)) {
                            var s = o[r] || 0, l = n.dataToPoint(a.center);
                            o[r] = s + 1, i.setItemLayout(t, {point: l, offset: s})
                        }
                    }))
                }));
                var a = n.getData();
                a.each((function (e) {
                    var t = a.getName(e), n = a.getItemLayout(e) || {};
                    n.showLabel = !o[t], a.setItemLayout(e, n)
                })), t[r] = !0
            }
        }))
    }
}, function (e, t) {
    e.exports = function (e) {
        e.eachSeriesByType("map", (function (e) {
            var t = e.get("color"), n = e.getModel("itemStyle"), i = n.get("areaColor"),
                r = n.get("color") || t[e.seriesIndex % t.length];
            e.getData().setVisual({areaColor: i, color: r})
        }))
    }
}, function (e, t, n) {
    var i = n(1);
    e.exports = function (e) {
        var t = {};
        e.eachSeriesByType("map", (function (e) {
            var n = e.getHostGeoModel(), i = n ? "o" + n.id : "i" + e.getMapType();
            (t[i] = t[i] || []).push(e)
        })), i.each(t, (function (e, t) {
            for (var n, r, o, a = (n = i.map(e, (function (e) {
                return e.getData()
            })), r = e[0].get("mapValueCalculation"), o = {}, i.each(n, (function (e) {
                e.each(e.mapDimension("value"), (function (t, n) {
                    var i = "ec-" + e.getName(n);
                    o[i] = o[i] || [], isNaN(t) || o[i].push(t)
                }))
            })), n[0].map(n[0].mapDimension("value"), (function (e, t) {
                for (var i, a = "ec-" + n[0].getName(t), s = 0, l = 1 / 0, c = -1 / 0, u = o[a].length, h = 0; h < u; h++) l = Math.min(l, o[a][h]), c = Math.max(c, o[a][h]), s += o[a][h];
                return i = "min" === r ? l : "max" === r ? c : "average" === r ? s / u : s, 0 === u ? NaN : i
            }))), s = 0; s < e.length; s++) e[s].originalData = e[s].getData();
            for (s = 0; s < e.length; s++) e[s].seriesGroup = e, e[s].needsDrawMap = 0 === s && !e[s].getHostGeoModel(), e[s].setData(a.cloneShallow()), e[s].mainSeries = e[0]
        }))
    }
}, function (e, t, n) {
    var i = n(1);
    e.exports = function (e) {
        var t = [];
        i.each(e.series, (function (e) {
            e && "map" === e.type && (t.push(e), e.map = e.map || e.mapType, i.defaults(e, e.mapLocation))
        }))
    }
}, function (e, t, n) {
    var i = n(2);
    n(362), n(363), n(364);
    var r = n(42), o = n(365);
    i.registerVisual(r("tree", "circle")), i.registerLayout(o)
}, function (e, t, n) {
    var i = n(15), r = n(119), o = n(8).encodeHTML, a = n(13), s = i.extend({
        type: "series.tree",
        layoutInfo: null,
        layoutMode: "box",
        getInitialData: function (e) {
            var t = {name: e.name, children: e.data}, n = e.leaves || {}, i = new a(n, this, this.ecModel),
                o = r.createTree(t, this, {}, (function (e) {
                    e.wrapMethod("getItemModel", (function (e, t) {
                        var n = o.getNodeByDataIndex(t);
                        return n.children.length && n.isExpand || (e.parentModel = i), e
                    }))
                }));
            var s = 0;
            o.eachNode("preorder", (function (e) {
                e.depth > s && (s = e.depth)
            }));
            var l = e.expandAndCollapse && e.initialTreeDepth >= 0 ? e.initialTreeDepth : s;
            return o.root.eachNode("preorder", (function (e) {
                var t = e.hostTree.data.getRawDataItem(e.dataIndex);
                e.isExpand = t && null != t.collapsed ? !t.collapsed : e.depth <= l
            })), o.data
        },
        getOrient: function () {
            var e = this.get("orient");
            return "horizontal" === e ? e = "LR" : "vertical" === e && (e = "TB"), e
        },
        setZoom: function (e) {
            this.option.zoom = e
        },
        setCenter: function (e) {
            this.option.center = e
        },
        formatTooltip: function (e) {
            for (var t = this.getData().tree, n = t.root.children[0], i = t.getNodeByDataIndex(e), r = i.getValue(), a = i.name; i && i !== n;) a = i.parentNode.name + "." + a, i = i.parentNode;
            return o(a + (isNaN(r) || null == r ? "" : " : " + r))
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "view",
            left: "12%",
            top: "12%",
            right: "12%",
            bottom: "12%",
            layout: "orthogonal",
            edgeShape: "curve",
            edgeForkPosition: "50%",
            roam: !1,
            nodeScaleRatio: .4,
            center: null,
            zoom: 1,
            orient: "LR",
            symbol: "emptyCircle",
            symbolSize: 7,
            expandAndCollapse: !0,
            initialTreeDepth: 2,
            lineStyle: {color: "#ccc", width: 1.5, curveness: .5},
            itemStyle: {color: "lightsteelblue", borderColor: "#c23531", borderWidth: 1.5},
            label: {show: !0, color: "#555"},
            leaves: {label: {show: !0}},
            animationEasing: "linear",
            animationDuration: 700,
            animationDurationUpdate: 1e3
        }
    });
    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(90), a = n(192).radialCoordinate, s = n(2), l = n(63), c = n(118), u = n(115),
        h = n(74), d = n(95).onIrrelevantElement, f = (n(6).__DEV__, n(4).parsePercent), g = r.extendShape({
            shape: {parentPoint: [], childPoints: [], orient: "", forkPosition: ""},
            style: {stroke: "#000", fill: null},
            buildPath: function (e, t) {
                var n = t.childPoints, i = n.length, r = t.parentPoint, o = n[0], a = n[i - 1];
                if (1 === i) return e.moveTo(r[0], r[1]), void e.lineTo(o[0], o[1]);
                var s = t.orient, l = "TB" === s || "BT" === s ? 0 : 1, c = 1 - l, u = f(t.forkPosition, 1), h = [];
                h[l] = r[l], h[c] = r[c] + (a[c] - r[c]) * u, e.moveTo(r[0], r[1]), e.lineTo(h[0], h[1]), e.moveTo(o[0], o[1]), h[l] = o[l], e.lineTo(h[0], h[1]), h[l] = a[l], e.lineTo(h[0], h[1]), e.lineTo(a[0], a[1]);
                for (var d = 1; d < i - 1; d++) {
                    var g = n[d];
                    e.moveTo(g[0], g[1]), h[l] = g[l], e.lineTo(h[0], h[1])
                }
            }
        }), p = s.extendChartView({
            type: "tree", init: function (e, t) {
                this._oldTree, this._mainGroup = new r.Group, this._controller = new h(t.getZr()), this._controllerHost = {target: this.group}, this.group.add(this._mainGroup)
            }, render: function (e, t, n, i) {
                var r = e.getData(), o = e.layoutInfo, a = this._mainGroup, s = e.get("layout");
                "radial" === s ? a.attr("position", [o.x + o.width / 2, o.y + o.height / 2]) : a.attr("position", [o.x, o.y]), this._updateViewCoordSys(e, o, s), this._updateController(e, t, n);
                var l = this._data, c = {
                    expandAndCollapse: e.get("expandAndCollapse"),
                    layout: s,
                    edgeShape: e.get("edgeShape"),
                    edgeForkPosition: e.get("edgeForkPosition"),
                    orient: e.getOrient(),
                    curvature: e.get("lineStyle.curveness"),
                    symbolRotate: e.get("symbolRotate"),
                    symbolOffset: e.get("symbolOffset"),
                    hoverAnimation: e.get("hoverAnimation"),
                    useNameLabel: !0,
                    fadeIn: !0
                };
                r.diff(l).add((function (t) {
                    m(r, t) && y(r, t, null, a, e, c)
                })).update((function (t, n) {
                    var i = l.getItemGraphicEl(n);
                    m(r, t) ? y(r, t, i, a, e, c) : i && b(l, n, i, a, e, c)
                })).remove((function (t) {
                    var n = l.getItemGraphicEl(t);
                    n && b(l, t, n, a, e, c)
                })).execute(), this._nodeScaleRatio = e.get("nodeScaleRatio"), this._updateNodeAndLinkScale(e), !0 === c.expandAndCollapse && r.eachItemGraphicEl((function (t, i) {
                    t.off("click").on("click", (function () {
                        n.dispatchAction({type: "treeExpandAndCollapse", seriesId: e.id, dataIndex: i})
                    }))
                })), this._data = r
            }, _updateViewCoordSys: function (e) {
                var t = e.getData(), n = [];
                t.each((function (e) {
                    var i = t.getItemLayout(e);
                    !i || isNaN(i.x) || isNaN(i.y) || n.push([+i.x, +i.y])
                }));
                var i = [], r = [];
                l.fromPoints(n, i, r);
                var o = this._min, a = this._max;
                r[0] - i[0] == 0 && (i[0] = o ? o[0] : i[0] - 1, r[0] = a ? a[0] : r[0] + 1), r[1] - i[1] == 0 && (i[1] = o ? o[1] : i[1] - 1, r[1] = a ? a[1] : r[1] + 1);
                var s = e.coordinateSystem = new c;
                s.zoomLimit = e.get("scaleLimit"), s.setBoundingRect(i[0], i[1], r[0] - i[0], r[1] - i[1]), s.setCenter(e.get("center")), s.setZoom(e.get("zoom")), this.group.attr({
                    position: s.position,
                    scale: s.scale
                }), this._viewCoordSys = s, this._min = i, this._max = r
            }, _updateController: function (e, t, n) {
                var i = this._controller, r = this._controllerHost, o = this.group;
                i.setPointerChecker((function (t, i, r) {
                    var a = o.getBoundingRect();
                    return a.applyTransform(o.transform), a.contain(i, r) && !d(t, n, e)
                })), i.enable(e.get("roam")), r.zoomLimit = e.get("scaleLimit"), r.zoom = e.coordinateSystem.getZoom(), i.off("pan").off("zoom").on("pan", (function (t) {
                    u.updateViewOnPan(r, t.dx, t.dy), n.dispatchAction({
                        seriesId: e.id,
                        type: "treeRoam",
                        dx: t.dx,
                        dy: t.dy
                    })
                }), this).on("zoom", (function (t) {
                    u.updateViewOnZoom(r, t.scale, t.originX, t.originY), n.dispatchAction({
                        seriesId: e.id,
                        type: "treeRoam",
                        zoom: t.scale,
                        originX: t.originX,
                        originY: t.originY
                    }), this._updateNodeAndLinkScale(e)
                }), this)
            }, _updateNodeAndLinkScale: function (e) {
                var t = e.getData(), n = this._getNodeGlobalScale(e), i = [n, n];
                t.eachItemGraphicEl((function (e, t) {
                    e.attr("scale", i)
                }))
            }, _getNodeGlobalScale: function (e) {
                var t = e.coordinateSystem;
                if ("view" !== t.type) return 1;
                var n = this._nodeScaleRatio, i = t.scale, r = i && i[0] || 1;
                return ((t.getZoom() - 1) * n + 1) / r
            }, dispose: function () {
                this._controller && this._controller.dispose(), this._controllerHost = {}
            }, remove: function () {
                this._mainGroup.removeAll(), this._data = null
            }
        });

    function m(e, t) {
        var n = e.getItemLayout(t);
        return n && !isNaN(n.x) && !isNaN(n.y) && "none" !== e.getItemVisual(t, "symbol")
    }

    function v(e, t, n) {
        return n.itemModel = t, n.itemStyle = t.getModel("itemStyle").getItemStyle(), n.hoverItemStyle = t.getModel("emphasis.itemStyle").getItemStyle(), n.lineStyle = t.getModel("lineStyle").getLineStyle(), n.labelModel = t.getModel("label"), n.hoverLabelModel = t.getModel("emphasis.label"), !1 === e.isExpand && 0 !== e.children.length ? n.symbolInnerColor = n.itemStyle.fill : n.symbolInnerColor = "#fff", n
    }

    function y(e, t, n, a, s, l) {
        var c = !n, u = e.tree.getNodeByDataIndex(t), h = u.getModel(), d = (l = v(u, h, l), e.tree.root),
            f = u.parentNode === d ? u : u.parentNode || u, p = e.getItemGraphicEl(f.dataIndex), m = f.getLayout(),
            y = p ? {x: p.position[0], y: p.position[1], rawX: p.__radialOldRawX, rawY: p.__radialOldRawY} : m,
            b = u.getLayout();
        c ? (n = new o(e, t, l)).attr("position", [y.x, y.y]) : n.updateData(e, t, l), n.__radialOldRawX = n.__radialRawX, n.__radialOldRawY = n.__radialRawY, n.__radialRawX = b.rawX, n.__radialRawY = b.rawY, a.add(n), e.setItemGraphicEl(t, n), r.updateProps(n, {position: [b.x, b.y]}, s);
        var w = n.getSymbolPath();
        if ("radial" === l.layout) {
            var I, x, A = d.children[0], _ = A.getLayout(), S = A.children.length;
            if (b.x === _.x && !0 === u.isExpand) {
                var k = {};
                k.x = (A.children[0].getLayout().x + A.children[S - 1].getLayout().x) / 2, k.y = (A.children[0].getLayout().y + A.children[S - 1].getLayout().y) / 2, (I = Math.atan2(k.y - _.y, k.x - _.x)) < 0 && (I = 2 * Math.PI + I), (x = k.x < _.x) && (I -= Math.PI)
            } else (I = Math.atan2(b.y - _.y, b.x - _.x)) < 0 && (I = 2 * Math.PI + I), 0 === u.children.length || 0 !== u.children.length && !1 === u.isExpand ? (x = b.x < _.x) && (I -= Math.PI) : (x = b.x > _.x) || (I -= Math.PI);
            var L = x ? "left" : "right", T = l.labelModel.get("rotate"), O = T * (Math.PI / 180);
            w.setStyle({
                textPosition: l.labelModel.get("position") || L,
                textRotation: null == T ? -I : O,
                textOrigin: "center",
                verticalAlign: "middle"
            })
        }
        !function (e, t, n, o, a, s, l, c, u) {
            var h = u.edgeShape, d = o.__edge;
            if ("curve" === h) t.parentNode && t.parentNode !== n && (d || (d = o.__edge = new r.BezierCurve({
                shape: C(u, a, a),
                style: i.defaults({opacity: 0, strokeNoScale: !0}, u.lineStyle)
            })), r.updateProps(d, {
                shape: C(u, s, l),
                style: {opacity: 1}
            }, e)); else if ("polyline" === h && "orthogonal" === u.layout && t !== n && t.children && 0 !== t.children.length && !0 === t.isExpand) {
                for (var f = t.children, p = [], m = 0; m < f.length; m++) {
                    var v = f[m].getLayout();
                    p.push([v.x, v.y])
                }
                d || (d = o.__edge = new g({
                    shape: {
                        parentPoint: [l.x, l.y],
                        childPoints: [[l.x, l.y]],
                        orient: u.orient,
                        forkPosition: u.edgeForkPosition
                    }, style: i.defaults({opacity: 0, strokeNoScale: !0}, u.lineStyle)
                })), r.updateProps(d, {shape: {parentPoint: [l.x, l.y], childPoints: p}, style: {opacity: 1}}, e)
            }
            c.add(d)
        }(s, u, d, n, y, m, b, a, l)
    }

    function b(e, t, n, i, o, a) {
        for (var s, l = e.tree.getNodeByDataIndex(t), c = e.tree.root, u = l.getModel(), h = (a = v(l, u, a), l.parentNode === c ? l : l.parentNode || l), d = a.edgeShape; null == (s = h.getLayout());) h = h.parentNode === c ? h : h.parentNode || h;
        r.updateProps(n, {position: [s.x + 1, s.y + 1]}, o, (function () {
            i.remove(n), e.setItemGraphicEl(t, null)
        })), n.fadeOut(null, {keepLabel: !0});
        var f = e.getItemGraphicEl(h.dataIndex).__edge,
            g = n.__edge || (!1 === h.isExpand || 1 === h.children.length ? f : void 0);
        d = a.edgeShape;
        g && ("curve" === d ? r.updateProps(g, {shape: C(a, s, s), style: {opacity: 0}}, o, (function () {
            i.remove(g)
        })) : "polyline" === d && "orthogonal" === a.layout && r.updateProps(g, {
            shape: {
                parentPoint: [s.x, s.y],
                childPoints: [[s.x, s.y]]
            }, style: {opacity: 0}
        }, o, (function () {
            i.remove(g)
        })))
    }

    function C(e, t, n) {
        var i, r, o, s, l, c, u, h, d = e.orient;
        if ("radial" === e.layout) {
            l = t.rawX, u = t.rawY, c = n.rawX, h = n.rawY;
            var f = a(l, u), g = a(l, u + (h - u) * e.curvature), p = a(c, h + (u - h) * e.curvature), m = a(c, h);
            return {x1: f.x, y1: f.y, x2: m.x, y2: m.y, cpx1: g.x, cpy1: g.y, cpx2: p.x, cpy2: p.y}
        }
        return l = t.x, u = t.y, c = n.x, h = n.y, "LR" !== d && "RL" !== d || (i = l + (c - l) * e.curvature, r = u, o = c + (l - c) * e.curvature, s = h), "TB" !== d && "BT" !== d || (i = l, r = u + (h - u) * e.curvature, o = c, s = h + (u - h) * e.curvature), {
            x1: l,
            y1: u,
            x2: c,
            y2: h,
            cpx1: i,
            cpy1: r,
            cpx2: o,
            cpy2: s
        }
    }

    e.exports = p
}, function (e, t, n) {
    var i = n(2), r = n(116).updateCenterAndZoom;
    i.registerAction({
        type: "treeExpandAndCollapse",
        event: "treeExpandAndCollapse",
        update: "update"
    }, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "tree", query: e}, (function (t) {
            var n = e.dataIndex, i = t.getData().tree.getNodeByDataIndex(n);
            i.isExpand = !i.isExpand
        }))
    })), i.registerAction({type: "treeRoam", event: "treeRoam", update: "none"}, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "tree", query: e}, (function (t) {
            var n = t.coordinateSystem, i = r(n, e);
            t.setCenter && t.setCenter(i.center), t.setZoom && t.setZoom(i.zoom)
        }))
    }))
}, function (e, t, n) {
    var i = n(366), r = i.eachAfter, o = i.eachBefore, a = n(192), s = a.init, l = a.firstWalk, c = a.secondWalk,
        u = a.separation, h = a.radialCoordinate, d = a.getViewRect;
    e.exports = function (e, t) {
        e.eachSeriesByType("tree", (function (e) {
            !function (e, t) {
                var n = d(e, t);
                e.layoutInfo = n;
                var i = e.get("layout"), a = 0, f = 0, g = null;
                "radial" === i ? (a = 2 * Math.PI, f = Math.min(n.height, n.width) / 2, g = u((function (e, t) {
                    return (e.parentNode === t.parentNode ? 1 : 2) / e.depth
                }))) : (a = n.width, f = n.height, g = u());
                var p = e.getData().tree.root, m = p.children[0];
                if (m) {
                    s(p), r(m, l, g), p.hierNode.modifier = -m.hierNode.prelim, o(m, c);
                    var v = m, y = m, b = m;
                    o(m, (function (e) {
                        var t = e.getLayout().x;
                        t < v.getLayout().x && (v = e), t > y.getLayout().x && (y = e), e.depth > b.depth && (b = e)
                    }));
                    var C = v === y ? 1 : g(v, y) / 2, w = C - v.getLayout().x, I = 0, x = 0, A = 0, _ = 0;
                    if ("radial" === i) I = a / (y.getLayout().x + C + w), x = f / (b.depth - 1 || 1), o(m, (function (e) {
                        A = (e.getLayout().x + w) * I, _ = (e.depth - 1) * x;
                        var t = h(A, _);
                        e.setLayout({x: t.x, y: t.y, rawX: A, rawY: _}, !0)
                    })); else {
                        var S = e.getOrient();
                        "RL" === S || "LR" === S ? (x = f / (y.getLayout().x + C + w), I = a / (b.depth - 1 || 1), o(m, (function (e) {
                            _ = (e.getLayout().x + w) * x, A = "LR" === S ? (e.depth - 1) * I : a - (e.depth - 1) * I, e.setLayout({
                                x: A,
                                y: _
                            }, !0)
                        }))) : "TB" !== S && "BT" !== S || (I = a / (y.getLayout().x + C + w), x = f / (b.depth - 1 || 1), o(m, (function (e) {
                            A = (e.getLayout().x + w) * I, _ = "TB" === S ? (e.depth - 1) * x : f - (e.depth - 1) * x, e.setLayout({
                                x: A,
                                y: _
                            }, !0)
                        })))
                    }
                }
            }(e, t)
        }))
    }
}, function (e, t) {
    t.eachAfter = function (e, t, n) {
        for (var i, r = [e], o = []; i = r.pop();) if (o.push(i), i.isExpand) {
            var a = i.children;
            if (a.length) for (var s = 0; s < a.length; s++) r.push(a[s])
        }
        for (; i = o.pop();) t(i, n)
    }, t.eachBefore = function (e, t) {
        for (var n, i = [e]; n = i.pop();) if (t(n), n.isExpand) {
            var r = n.children;
            if (r.length) for (var o = r.length - 1; o >= 0; o--) i.push(r[o])
        }
    }
}, function (e, t, n) {
    var i = n(2);
    n(368), n(369), n(372);
    var r = n(373), o = n(374);
    i.registerVisual(r), i.registerLayout(o)
}, function (e, t, n) {
    var i = n(1), r = n(15), o = n(119), a = n(13), s = n(8), l = s.encodeHTML, c = s.addCommas,
        u = n(44).wrapTreePathInfo, h = r.extend({
            type: "series.treemap",
            layoutMode: "box",
            dependencies: ["grid", "polar"],
            preventUsingHoverLayer: !0,
            _viewRoot: null,
            defaultOption: {
                progressive: 0,
                left: "center",
                top: "middle",
                right: null,
                bottom: null,
                width: "80%",
                height: "80%",
                sort: !0,
                clipWindow: "origin",
                squareRatio: .5 * (1 + Math.sqrt(5)),
                leafDepth: null,
                drillDownIcon: "▶",
                zoomToNodeRatio: .1024,
                roam: !0,
                nodeClick: "zoomToNode",
                animation: !0,
                animationDurationUpdate: 900,
                animationEasing: "quinticInOut",
                breadcrumb: {
                    show: !0,
                    height: 22,
                    left: "center",
                    top: "bottom",
                    emptyItemWidth: 25,
                    itemStyle: {
                        color: "rgba(0,0,0,0.7)",
                        borderColor: "rgba(255,255,255,0.7)",
                        borderWidth: 1,
                        shadowColor: "rgba(150,150,150,1)",
                        shadowBlur: 3,
                        shadowOffsetX: 0,
                        shadowOffsetY: 0,
                        textStyle: {color: "#fff"}
                    },
                    emphasis: {textStyle: {}}
                },
                label: {show: !0, distance: 0, padding: 5, position: "inside", color: "#fff", ellipsis: !0},
                upperLabel: {
                    show: !1,
                    position: [0, "50%"],
                    height: 20,
                    color: "#fff",
                    ellipsis: !0,
                    verticalAlign: "middle"
                },
                itemStyle: {
                    color: null,
                    colorAlpha: null,
                    colorSaturation: null,
                    borderWidth: 0,
                    gapWidth: 0,
                    borderColor: "#fff",
                    borderColorSaturation: null
                },
                emphasis: {
                    upperLabel: {
                        show: !0,
                        position: [0, "50%"],
                        color: "#fff",
                        ellipsis: !0,
                        verticalAlign: "middle"
                    }
                },
                visualDimension: 0,
                visualMin: null,
                visualMax: null,
                color: [],
                colorAlpha: null,
                colorSaturation: null,
                colorMappingBy: "index",
                visibleMin: 10,
                childrenVisibleMin: null,
                levels: []
            },
            getInitialData: function (e, t) {
                var n = {name: e.name, children: e.data};
                !function e(t) {
                    var n = 0;
                    i.each(t.children, (function (t) {
                        e(t);
                        var r = t.value;
                        i.isArray(r) && (r = r[0]), n += r
                    }));
                    var r = t.value;
                    i.isArray(r) && (r = r[0]);
                    (null == r || isNaN(r)) && (r = n);
                    r < 0 && (r = 0);
                    i.isArray(t.value) ? t.value[0] = r : t.value = r
                }(n);
                var r = e.levels || [];
                r = e.levels = function (e, t) {
                    var n, r = t.get("color");
                    if (!r) return;
                    if (e = e || [], i.each(e, (function (e) {
                        var t = new a(e), i = t.get("color");
                        (t.get("itemStyle.color") || i && "none" !== i) && (n = !0)
                    })), !n) {
                        (e[0] || (e[0] = {})).color = r.slice()
                    }
                    return e
                }(r, t);
                var s = i.map(r || [], (function (e) {
                    return new a(e, this, t)
                }), this), l = o.createTree(n, this, null, (function (e) {
                    e.wrapMethod("getItemModel", (function (e, t) {
                        var n = l.getNodeByDataIndex(t), i = s[n.depth];
                        return i && (e.parentModel = i), e
                    }))
                }));
                return l.data
            },
            optionUpdated: function () {
                this.resetViewRoot()
            },
            formatTooltip: function (e) {
                var t = this.getData(), n = this.getRawValue(e), r = i.isArray(n) ? c(n[0]) : c(n), o = t.getName(e);
                return l(o + ": " + r)
            },
            getDataParams: function (e) {
                var t = r.prototype.getDataParams.apply(this, arguments), n = this.getData().tree.getNodeByDataIndex(e);
                return t.treePathInfo = u(n, this), t
            },
            setLayoutInfo: function (e) {
                this.layoutInfo = this.layoutInfo || {}, i.extend(this.layoutInfo, e)
            },
            mapIdToIndex: function (e) {
                var t = this._idIndexMap;
                t || (t = this._idIndexMap = i.createHashMap(), this._idIndexMapCount = 0);
                var n = t.get(e);
                return null == n && t.set(e, n = this._idIndexMapCount++), n
            },
            getViewRoot: function () {
                return this._viewRoot
            },
            resetViewRoot: function (e) {
                e ? this._viewRoot = e : e = this._viewRoot;
                var t = this.getRawData().tree.root;
                e && (e === t || t.contains(e)) || (this._viewRoot = t)
            }
        });
    e.exports = h
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(3), a = n(41), s = n(44), l = n(370), c = n(74), u = n(10), h = n(16), d = n(371),
        f = n(47), g = n(8).windowOpen, p = r.bind, m = o.Group, v = o.Rect, y = r.each, b = ["label"],
        C = ["emphasis", "label"], w = ["upperLabel"], I = ["emphasis", "upperLabel"],
        x = f([["fill", "color"], ["stroke", "strokeColor"], ["lineWidth", "strokeWidth"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]),
        A = function (e) {
            var t = x(e);
            return t.stroke = t.fill = t.lineWidth = null, t
        }, _ = i.extendChartView({
            type: "treemap", init: function (e, t) {
                this._containerGroup, this._storage = {
                    nodeGroup: [],
                    background: [],
                    content: []
                }, this._oldTree, this._breadcrumb, this._controller, this._state = "ready"
            }, render: function (e, t, n, i) {
                var o = t.findComponents({mainType: "series", subType: "treemap", query: i});
                if (!(r.indexOf(o, e) < 0)) {
                    this.seriesModel = e, this.api = n, this.ecModel = t;
                    var a = s.retrieveTargetInfo(i, ["treemapZoomToNode", "treemapRootToNode"], e), l = i && i.type,
                        c = e.layoutInfo, u = !this._oldTree, h = this._storage, d = "treemapRootToNode" === l && a && h ? {
                            rootNodeGroup: h.nodeGroup[a.node.getRawIndex()],
                            direction: i.direction
                        } : null, f = this._giveContainerGroup(c), g = this._doRender(f, e, d);
                    u || l && "treemapZoomToNode" !== l && "treemapRootToNode" !== l ? g.renderFinally() : this._doAnimation(f, g, e, d), this._resetController(n), this._renderBreadcrumb(e, n, a)
                }
            }, _giveContainerGroup: function (e) {
                var t = this._containerGroup;
                return t || (t = this._containerGroup = new m, this._initEvents(t), this.group.add(t)), t.attr("position", [e.x, e.y]), t
            }, _doRender: function (e, t, n) {
                var i = t.getData().tree, o = this._oldTree, s = {nodeGroup: [], background: [], content: []},
                    l = {nodeGroup: [], background: [], content: []}, c = this._storage, u = [],
                    h = r.curry(S, t, l, c, n, s, u);
                !function e(t, n, i, o, s) {
                    o ? (n = t, y(t, (function (e, t) {
                        !e.isRemoved() && c(t, t)
                    }))) : new a(n, t, l, l).add(c).update(c).remove(r.curry(c, null)).execute();

                    function l(e) {
                        return e.getId()
                    }

                    function c(r, a) {
                        var l = null != r ? t[r] : null, c = null != a ? n[a] : null, u = h(l, c, i, s);
                        u && e(l && l.viewChildren || [], c && c.viewChildren || [], u, o, s + 1)
                    }
                }(i.root ? [i.root] : [], o && o.root ? [o.root] : [], e, i === o || !o, 0);
                var d = function (e) {
                    var t = {nodeGroup: [], background: [], content: []};
                    return e && y(e, (function (e, n) {
                        var i = t[n];
                        y(e, (function (e) {
                            e && (i.push(e), e.__tmWillDelete = 1)
                        }))
                    })), t
                }(c);
                return this._oldTree = i, this._storage = l, {
                    lastsForAnimation: s,
                    willDeleteEls: d,
                    renderFinally: function () {
                        y(d, (function (e) {
                            y(e, (function (e) {
                                e.parent && e.parent.remove(e)
                            }))
                        })), y(u, (function (e) {
                            e.invisible = !0, e.dirty()
                        }))
                    }
                }
            }, _doAnimation: function (e, t, n, i) {
                if (n.get("animation")) {
                    var o = n.get("animationDurationUpdate"), a = n.get("animationEasing"), s = d.createWrap();
                    y(t.willDeleteEls, (function (e, t) {
                        y(e, (function (e, n) {
                            if (!e.invisible) {
                                var r, l = e.parent;
                                if (i && "drillDown" === i.direction) r = l === i.rootNodeGroup ? {
                                    shape: {
                                        x: 0,
                                        y: 0,
                                        width: l.__tmNodeWidth,
                                        height: l.__tmNodeHeight
                                    }, style: {opacity: 0}
                                } : {style: {opacity: 0}}; else {
                                    var c = 0, u = 0;
                                    l.__tmWillDelete || (c = l.__tmNodeWidth / 2, u = l.__tmNodeHeight / 2), r = "nodeGroup" === t ? {
                                        position: [c, u],
                                        style: {opacity: 0}
                                    } : {shape: {x: c, y: u, width: 0, height: 0}, style: {opacity: 0}}
                                }
                                r && s.add(e, r, o, a)
                            }
                        }))
                    })), y(this._storage, (function (e, n) {
                        y(e, (function (e, i) {
                            var l = t.lastsForAnimation[n][i], c = {};
                            l && ("nodeGroup" === n ? l.old && (c.position = e.position.slice(), e.attr("position", l.old)) : (l.old && (c.shape = r.extend({}, e.shape), e.setShape(l.old)), l.fadein ? (e.setStyle("opacity", 0), c.style = {opacity: 1}) : 1 !== e.style.opacity && (c.style = {opacity: 1})), s.add(e, c, o, a))
                        }))
                    }), this), this._state = "animating", s.done(p((function () {
                        this._state = "ready", t.renderFinally()
                    }), this)).start()
                }
            }, _resetController: function (e) {
                var t = this._controller;
                t || ((t = this._controller = new c(e.getZr())).enable(this.seriesModel.get("roam")), t.on("pan", p(this._onPan, this)), t.on("zoom", p(this._onZoom, this)));
                var n = new u(0, 0, e.getWidth(), e.getHeight());
                t.setPointerChecker((function (e, t, i) {
                    return n.contain(t, i)
                }))
            }, _clearController: function () {
                var e = this._controller;
                e && (e.dispose(), e = null)
            }, _onPan: function (e) {
                if ("animating" !== this._state && (Math.abs(e.dx) > 3 || Math.abs(e.dy) > 3)) {
                    var t = this.seriesModel.getData().tree.root;
                    if (!t) return;
                    var n = t.getLayout();
                    if (!n) return;
                    this.api.dispatchAction({
                        type: "treemapMove",
                        from: this.uid,
                        seriesId: this.seriesModel.id,
                        rootRect: {x: n.x + e.dx, y: n.y + e.dy, width: n.width, height: n.height}
                    })
                }
            }, _onZoom: function (e) {
                var t = e.originX, n = e.originY;
                if ("animating" !== this._state) {
                    var i = this.seriesModel.getData().tree.root;
                    if (!i) return;
                    var r = i.getLayout();
                    if (!r) return;
                    var o = new u(r.x, r.y, r.width, r.height), a = this.seriesModel.layoutInfo;
                    t -= a.x, n -= a.y;
                    var s = h.create();
                    h.translate(s, s, [-t, -n]), h.scale(s, s, [e.scale, e.scale]), h.translate(s, s, [t, n]), o.applyTransform(s), this.api.dispatchAction({
                        type: "treemapRender",
                        from: this.uid,
                        seriesId: this.seriesModel.id,
                        rootRect: {x: o.x, y: o.y, width: o.width, height: o.height}
                    })
                }
            }, _initEvents: function (e) {
                e.on("click", (function (e) {
                    if ("ready" === this._state) {
                        var t = this.seriesModel.get("nodeClick", !0);
                        if (t) {
                            var n = this.findTarget(e.offsetX, e.offsetY);
                            if (n) {
                                var i = n.node;
                                if (i.getLayout().isLeafRoot) this._rootToNode(n); else if ("zoomToNode" === t) this._zoomToNode(n); else if ("link" === t) {
                                    var r = i.hostTree.data.getItemModel(i.dataIndex), o = r.get("link", !0),
                                        a = r.get("target", !0) || "blank";
                                    o && g(o, a)
                                }
                            }
                        }
                    }
                }), this)
            }, _renderBreadcrumb: function (e, t, n) {
                n || (n = null != e.get("leafDepth", !0) ? {node: e.getViewRoot()} : this.findTarget(t.getWidth() / 2, t.getHeight() / 2)) || (n = {node: e.getData().tree.root}), (this._breadcrumb || (this._breadcrumb = new l(this.group))).render(e, t, n.node, p((function (t) {
                    "animating" !== this._state && (s.aboveViewRoot(e.getViewRoot(), t) ? this._rootToNode({node: t}) : this._zoomToNode({node: t}))
                }), this))
            }, remove: function () {
                this._clearController(), this._containerGroup && this._containerGroup.removeAll(), this._storage = {
                    nodeGroup: [],
                    background: [],
                    content: []
                }, this._state = "ready", this._breadcrumb && this._breadcrumb.remove()
            }, dispose: function () {
                this._clearController()
            }, _zoomToNode: function (e) {
                this.api.dispatchAction({
                    type: "treemapZoomToNode",
                    from: this.uid,
                    seriesId: this.seriesModel.id,
                    targetNode: e.node
                })
            }, _rootToNode: function (e) {
                this.api.dispatchAction({
                    type: "treemapRootToNode",
                    from: this.uid,
                    seriesId: this.seriesModel.id,
                    targetNode: e.node
                })
            }, findTarget: function (e, t) {
                var n;
                return this.seriesModel.getViewRoot().eachNode({attr: "viewChildren", order: "preorder"}, (function (i) {
                    var r = this._storage.background[i.getRawIndex()];
                    if (r) {
                        var o = r.transformCoordToLocal(e, t), a = r.shape;
                        if (!(a.x <= o[0] && o[0] <= a.x + a.width && a.y <= o[1] && o[1] <= a.y + a.height)) return !1;
                        n = {node: i, offsetX: o[0], offsetY: o[1]}
                    }
                }), this), n
            }
        });

    function S(e, t, n, i, a, s, l, c, u, h) {
        if (l) {
            var d = l.getLayout(), f = e.getData();
            if (f.setItemGraphicEl(l.dataIndex, null), d && d.isInView) {
                var g = d.width, p = d.height, y = d.borderWidth, _ = d.invisible, S = l.getRawIndex(),
                    L = c && c.getRawIndex(), T = l.viewChildren, O = d.upperHeight, R = T && T.length,
                    E = l.getModel("itemStyle"), P = l.getModel("emphasis.itemStyle"), M = W("nodeGroup", m);
                if (M) {
                    if (u.add(M), M.attr("position", [d.x || 0, d.y || 0]), M.__tmNodeWidth = g, M.__tmNodeHeight = p, d.isAboveViewRoot) return M;
                    var N = l.getModel(), D = W("background", v, h, 1);
                    if (D && function (t, n, i) {
                        if (n.dataIndex = l.dataIndex, n.seriesIndex = e.seriesIndex, n.setShape({
                            x: 0,
                            y: 0,
                            width: g,
                            height: p
                        }), _) j(n); else {
                            n.invisible = !1;
                            var r = l.getVisual("borderColor", !0), a = P.get("borderColor"), s = A(E);
                            s.fill = r;
                            var c = x(P);
                            if (c.fill = a, i) {
                                var u = g - 2 * y;
                                F(s, c, r, u, O, {x: y, y: 0, width: u, height: O})
                            } else s.text = c.text = null;
                            n.setStyle(s), o.setElementHoverStyle(n, c)
                        }
                        t.add(n)
                    }(M, D, R && d.upperLabelHeight), R) o.isHighDownDispatcher(M) && o.setAsHighDownDispatcher(M, !1), D && (o.setAsHighDownDispatcher(D, !0), f.setItemGraphicEl(l.dataIndex, D)); else {
                        var B = W("content", v, h, 2);
                        B && function (t, n) {
                            n.dataIndex = l.dataIndex, n.seriesIndex = e.seriesIndex;
                            var i = Math.max(g - 2 * y, 0), r = Math.max(p - 2 * y, 0);
                            if (n.culling = !0, n.setShape({x: y, y: y, width: i, height: r}), _) j(n); else {
                                n.invisible = !1;
                                var a = l.getVisual("color", !0), s = A(E);
                                s.fill = a;
                                var c = x(P);
                                F(s, c, a, i, r), n.setStyle(s), o.setElementHoverStyle(n, c)
                            }
                            t.add(n)
                        }(M, B), D && o.isHighDownDispatcher(D) && o.setAsHighDownDispatcher(D, !1), o.setAsHighDownDispatcher(M, !0), f.setItemGraphicEl(l.dataIndex, M)
                    }
                    return M
                }
            }
        }

        function j(e) {
            !e.invisible && s.push(e)
        }

        function F(t, n, i, a, s, c) {
            var u = N.get("name"), h = N.getModel(c ? w : b), f = N.getModel(c ? I : C), g = h.getShallow("show");
            o.setLabelStyle(t, n, h, f, {
                defaultText: g ? u : null,
                autoColor: i,
                isRectText: !0,
                labelFetcher: e,
                labelDataIndex: l.dataIndex,
                labelProp: c ? "upperLabel" : "label"
            }), H(t, c, d), H(n, c, d), c && (t.textRect = r.clone(c)), t.truncate = g && h.get("ellipsis") ? {
                outerWidth: a,
                outerHeight: s,
                minChar: 2
            } : null
        }

        function H(t, n, i) {
            var r = t.text;
            if (!n && i.isLeafRoot && null != r) {
                var o = e.get("drillDownIcon", !0);
                t.text = o ? o + " " + r : r
            }
        }

        function W(e, o, s, c) {
            var u = null != L && n[e][L], h = a[e];
            return u ? (n[e][L] = null, function (e, t, n) {
                (e[S] = {}).old = "nodeGroup" === n ? t.position.slice() : r.extend({}, t.shape)
            }(h, u, e)) : _ || ((u = new o({z: k(s, c)})).__tmDepth = s, u.__tmStorageName = e, function (e, t, n) {
                var r = e[S] = {}, o = l.parentNode;
                if (o && (!i || "drillDown" === i.direction)) {
                    var s = 0, c = 0, u = a.background[o.getRawIndex()];
                    !i && u && u.old && (s = u.old.width, c = u.old.height), r.old = "nodeGroup" === n ? [0, c] : {
                        x: s,
                        y: c,
                        width: 0,
                        height: 0
                    }
                }
                r.fadein = "nodeGroup" !== n
            }(h, 0, e)), t[e][S] = u
        }
    }

    function k(e, t) {
        var n = 10 * e + t;
        return (n - 1) / n
    }

    e.exports = _
}, function (e, t, n) {
    var i = n(3), r = n(7), o = n(1), a = n(44).wrapTreePathInfo;

    function s(e) {
        this.group = new i.Group, e.add(this.group)
    }

    function l(e, t, n, i, r, o) {
        var a = [[r ? e : e - 5, t], [e + n, t], [e + n, t + i], [r ? e : e - 5, t + i]];
        return !o && a.splice(2, 0, [e + n + 5, t + i / 2]), !r && a.push([e, t + i / 2]), a
    }

    function c(e, t, n) {
        e.eventData = {
            componentType: "series",
            componentSubType: "treemap",
            componentIndex: t.componentIndex,
            seriesIndex: t.componentIndex,
            seriesName: t.name,
            seriesType: "treemap",
            selfType: "breadcrumb",
            nodeData: {dataIndex: n && n.dataIndex, name: n && n.name},
            treePathInfo: n && a(n, t)
        }
    }

    s.prototype = {
        constructor: s, render: function (e, t, n, i) {
            var o = e.getModel("breadcrumb"), a = this.group;
            if (a.removeAll(), o.get("show") && n) {
                var s = o.getModel("itemStyle"), l = s.getModel("textStyle"), c = {
                    pos: {left: o.get("left"), right: o.get("right"), top: o.get("top"), bottom: o.get("bottom")},
                    box: {width: t.getWidth(), height: t.getHeight()},
                    emptyItemWidth: o.get("emptyItemWidth"),
                    totalWidth: 0,
                    renderList: []
                };
                this._prepare(n, c, l), this._renderContent(e, c, s, l, i), r.positionElement(a, c.pos, c.box)
            }
        }, _prepare: function (e, t, n) {
            for (var i = e; i; i = i.parentNode) {
                var r = i.getModel().get("name"), o = n.getTextRect(r), a = Math.max(o.width + 16, t.emptyItemWidth);
                t.totalWidth += a + 8, t.renderList.push({node: i, text: r, width: a})
            }
        }, _renderContent: function (e, t, n, a, s) {
            for (var u = 0, h = t.emptyItemWidth, d = e.get("breadcrumb.height"), f = r.getAvailableSize(t.pos, t.box), g = t.totalWidth, p = t.renderList, m = p.length - 1; m >= 0; m--) {
                var v = p[m], y = v.node, b = v.width, C = v.text;
                g > f.width && (g -= b - h, b = h, C = null);
                var w = new i.Polygon({
                    shape: {points: l(u, 0, b, d, m === p.length - 1, 0 === m)},
                    style: o.defaults(n.getItemStyle(), {
                        lineJoin: "bevel",
                        text: C,
                        textFill: a.getTextColor(),
                        textFont: a.getFont()
                    }),
                    z: 10,
                    onclick: o.curry(s, y)
                });
                this.group.add(w), c(w, e, y), u += b + 8
            }
        }, remove: function () {
            this.group.removeAll()
        }
    };
    var u = s;
    e.exports = u
}, function (e, t, n) {
    var i = n(1);
    t.createWrap = function () {
        var e, t = [], n = {};
        return {
            add: function (e, r, o, a, s) {
                return i.isString(a) && (s = a, a = 0), !n[e.id] && (n[e.id] = 1, t.push({
                    el: e,
                    target: r,
                    time: o,
                    delay: a,
                    easing: s
                }), !0)
            }, done: function (t) {
                return e = t, this
            }, start: function () {
                for (var i = t.length, r = 0, o = t.length; r < o; r++) {
                    var a = t[r];
                    a.el.animateTo(a.target, a.time, a.delay, a.easing, s)
                }
                return this;

                function s() {
                    --i || (t.length = 0, n = {}, e && e())
                }
            }
        }
    }
}, function (e, t, n) {
    for (var i = n(2), r = n(44), o = function () {
    }, a = ["treemapZoomToNode", "treemapRender", "treemapMove"], s = 0; s < a.length; s++) i.registerAction({
        type: a[s],
        update: "updateView"
    }, o);
    i.registerAction({type: "treemapRootToNode", update: "updateView"}, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "treemap", query: e}, (function (t, n) {
            var i = r.retrieveTargetInfo(e, ["treemapZoomToNode", "treemapRootToNode"], t);
            if (i) {
                var o = t.getViewRoot();
                o && (e.direction = r.aboveViewRoot(o, i.node) ? "rollUp" : "drillDown"), t.resetViewRoot(i.node)
            }
        }))
    }))
}, function (e, t, n) {
    var i = n(45), r = n(25), o = n(1), a = o.isArray, s = {
        seriesType: "treemap", reset: function (e, t, n, a) {
            var s = e.getData().tree, c = s.root, h = e.getModel("itemStyle");
            c.isRemoved() || function e(t, n, a, s, c, h) {
                var d = t.getModel(), f = t.getLayout();
                if (!f || f.invisible || !f.isInView) return;
                var g, p = t.getModel("itemStyle"), m = a[t.depth], v = function (e, t, n, i) {
                    var r = o.extend({}, t);
                    return o.each(["color", "colorAlpha", "colorSaturation"], (function (o) {
                        var a = e.get(o, !0);
                        null == a && n && (a = n[o]), null == a && (a = t[o]), null == a && (a = i.get(o)), null != a && (r[o] = a)
                    })), r
                }(p, n, m, s), y = p.get("borderColor"), b = p.get("borderColorSaturation");
                null != b && (g = l(v), y = function (e, t) {
                    return null != t ? r.modifyHSL(t, null, null, e) : null
                }(b, g));
                t.setVisual("borderColor", y);
                var C = t.viewChildren;
                if (C && C.length) {
                    var w = function (e, t, n, r, o, a) {
                        if (!a || !a.length) return;
                        var s = u(t, "color") || null != o.color && "none" !== o.color && (u(t, "colorAlpha") || u(t, "colorSaturation"));
                        if (!s) return;
                        var l = t.get("visualMin"), c = t.get("visualMax"), h = n.dataExtent.slice();
                        null != l && l < h[0] && (h[0] = l), null != c && c > h[1] && (h[1] = c);
                        var d = t.get("colorMappingBy"), f = {type: s.name, dataExtent: h, visual: s.range};
                        "color" !== f.type || "index" !== d && "id" !== d ? f.mappingMethod = "linear" : (f.mappingMethod = "category", f.loop = !0);
                        var g = new i(f);
                        return g.__drColorMappingBy = d, g
                    }(0, d, f, 0, v, C);
                    o.each(C, (function (t, n) {
                        if (t.depth >= c.length || t === c[t.depth]) {
                            var i = function (e, t, n, i, r, a) {
                                var s = o.extend({}, t);
                                if (r) {
                                    var l = r.type, c = "color" === l && r.__drColorMappingBy,
                                        u = "index" === c ? i : "id" === c ? a.mapIdToIndex(n.getId()) : n.getValue(e.get("visualDimension"));
                                    s[l] = r.mapValueToVisual(u)
                                }
                                return s
                            }(d, v, t, n, w, h);
                            e(t, i, a, s, c, h)
                        }
                    }))
                } else g = l(v), t.setVisual("color", g)
            }(c, {}, o.map(s.levelModels, (function (e) {
                return e ? e.get("itemStyle") : null
            })), h, e.getViewRoot().getAncestors(), e)
        }
    };

    function l(e) {
        var t = c(e, "color");
        if (t) {
            var n = c(e, "colorAlpha"), i = c(e, "colorSaturation");
            return i && (t = r.modifyHSL(t, null, null, i)), n && (t = r.modifyAlpha(t, n)), t
        }
    }

    function c(e, t) {
        var n = e[t];
        if (null != n && "none" !== n) return n
    }

    function u(e, t) {
        var n = e.get(t);
        return a(n) && n.length ? {name: t, range: n} : null
    }

    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(10), o = n(4), a = o.parsePercent, s = o.MAX_SAFE_INTEGER, l = n(7), c = n(44), u = Math.max,
        h = Math.min, d = i.retrieve, f = i.each, g = ["itemStyle", "borderWidth"], p = ["itemStyle", "gapWidth"],
        m = ["upperLabel", "show"], v = ["upperLabel", "height"], y = {
            seriesType: "treemap", reset: function (e, t, n, o) {
                var m = n.getWidth(), v = n.getHeight(), y = e.option,
                    x = l.getLayoutRect(e.getBoxLayoutParams(), {width: n.getWidth(), height: n.getHeight()}),
                    A = y.size || [], _ = a(d(x.width, A[0]), m), S = a(d(x.height, A[1]), v), k = o && o.type,
                    L = c.retrieveTargetInfo(o, ["treemapZoomToNode", "treemapRootToNode"], e),
                    T = "treemapRender" === k || "treemapMove" === k ? o.rootRect : null, O = e.getViewRoot(),
                    R = c.getPathToRoot(O);
                if ("treemapMove" !== k) {
                    var E = "treemapZoomToNode" === k ? function (e, t, n, i, r) {
                        var o, a = (t || {}).node, l = [i, r];
                        if (!a || a === n) return l;
                        var c = i * r, u = c * e.option.zoomToNodeRatio;
                        for (; o = a.parentNode;) {
                            for (var h = 0, d = o.children, f = 0, p = d.length; f < p; f++) h += d[f].getValue();
                            var m = a.getValue();
                            if (0 === m) return l;
                            u *= h / m;
                            var v = o.getModel(), y = v.get(g), b = Math.max(y, I(v));
                            (u += 4 * y * y + (3 * y + b) * Math.pow(u, .5)) > s && (u = s), a = o
                        }
                        u < c && (u = c);
                        var C = Math.pow(u / c, .5);
                        return [i * C, r * C]
                    }(e, L, O, _, S) : T ? [T.width, T.height] : [_, S], P = y.sort;
                    P && "asc" !== P && "desc" !== P && (P = "desc");
                    var M = {squareRatio: y.squareRatio, sort: P, leafDepth: y.leafDepth};
                    O.hostTree.clearLayouts();
                    var N = {x: 0, y: 0, width: E[0], height: E[1], area: E[0] * E[1]};
                    O.setLayout(N), function e(t, n, i, r) {
                        var o, a;
                        if (t.isRemoved()) return;
                        var s = t.getLayout();
                        o = s.width, a = s.height;
                        var l = (y = t.getModel()).get(g), c = y.get(p) / 2, d = I(y), f = Math.max(l, d), m = l - c,
                            v = f - c, y = t.getModel();
                        t.setLayout({
                            borderWidth: l,
                            upperHeight: f,
                            upperLabelHeight: d
                        }, !0), o = u(o - 2 * m, 0), a = u(a - m - v, 0);
                        var x = o * a, A = b(t, y, x, n, i, r);
                        if (!A.length) return;
                        var _ = {x: m, y: v, width: o, height: a}, S = h(o, a), k = 1 / 0, L = [];
                        L.area = 0;
                        for (var T = 0, O = A.length; T < O;) {
                            var R = A[T];
                            L.push(R), L.area += R.getLayout().area;
                            var E = C(L, S, n.squareRatio);
                            E <= k ? (T++, k = E) : (L.area -= L.pop().getLayout().area, w(L, S, _, c, !1), S = h(_.width, _.height), L.length = L.area = 0, k = 1 / 0)
                        }
                        L.length && w(L, S, _, c, !0);
                        if (!i) {
                            var P = y.get("childrenVisibleMin");
                            null != P && x < P && (i = !0)
                        }
                        for (T = 0, O = A.length; T < O; T++) e(A[T], n, i, r + 1)
                    }(O, M, !1, 0);
                    N = O.getLayout();
                    f(R, (function (e, t) {
                        var n = (R[t + 1] || O).getValue();
                        e.setLayout(i.extend({dataExtent: [n, n], borderWidth: 0, upperHeight: 0}, N))
                    }))
                }
                var D = e.getData().tree.root;
                D.setLayout(function (e, t, n) {
                    if (t) return {x: t.x, y: t.y};
                    var i = {x: 0, y: 0};
                    if (!n) return i;
                    var r = n.node, o = r.getLayout();
                    if (!o) return i;
                    var a = [o.width / 2, o.height / 2], s = r;
                    for (; s;) {
                        var l = s.getLayout();
                        a[0] += l.x, a[1] += l.y, s = s.parentNode
                    }
                    return {x: e.width / 2 - a[0], y: e.height / 2 - a[1]}
                }(x, T, L), !0), e.setLayoutInfo(x), function e(t, n, i, o, a) {
                    var s = t.getLayout(), l = i[a], c = l && l === t;
                    if (l && !c || a === i.length && t !== o) return;
                    t.setLayout({isInView: !0, invisible: !c && !n.intersect(s), isAboveViewRoot: c}, !0);
                    var u = new r(n.x - s.x, n.y - s.y, n.width, n.height);
                    f(t.viewChildren || [], (function (t) {
                        e(t, u, i, o, a + 1)
                    }))
                }(D, new r(-x.x, -x.y, m, v), R, O, 0)
            }
        };

    function b(e, t, n, r, o, a) {
        var s = e.children || [], l = r.sort;
        "asc" !== l && "desc" !== l && (l = null);
        var c = null != r.leafDepth && r.leafDepth <= a;
        if (o && !c) return e.viewChildren = [];
        !function (e, t) {
            t && e.sort((function (e, n) {
                var i = "asc" === t ? e.getValue() - n.getValue() : n.getValue() - e.getValue();
                return 0 === i ? "asc" === t ? e.dataIndex - n.dataIndex : n.dataIndex - e.dataIndex : i
            }))
        }(s = i.filter(s, (function (e) {
            return !e.isRemoved()
        })), l);
        var u = function (e, t, n) {
            for (var i = 0, r = 0, o = t.length; r < o; r++) i += t[r].getValue();
            var a = e.get("visualDimension");
            if (t && t.length) if ("value" === a && n) s = [t[t.length - 1].getValue(), t[0].getValue()], "asc" === n && s.reverse(); else {
                var s = [1 / 0, -1 / 0];
                f(t, (function (e) {
                    var t = e.getValue(a);
                    t < s[0] && (s[0] = t), t > s[1] && (s[1] = t)
                }))
            } else s = [NaN, NaN];
            return {sum: i, dataExtent: s}
        }(t, s, l);
        if (0 === u.sum) return e.viewChildren = [];
        if (u.sum = function (e, t, n, i, r) {
            if (!i) return n;
            for (var o = e.get("visibleMin"), a = r.length, s = a, l = a - 1; l >= 0; l--) {
                var c = r["asc" === i ? a - l - 1 : l].getValue();
                c / n * t < o && (s = l, n -= c)
            }
            return "asc" === i ? r.splice(0, a - s) : r.splice(s, a - s), n
        }(t, n, u.sum, l, s), 0 === u.sum) return e.viewChildren = [];
        for (var h = 0, d = s.length; h < d; h++) {
            var g = s[h].getValue() / u.sum * n;
            s[h].setLayout({area: g})
        }
        return c && (s.length && e.setLayout({isLeafRoot: !0}, !0), s.length = 0), e.viewChildren = s, e.setLayout({dataExtent: u.dataExtent}, !0), s
    }

    function C(e, t, n) {
        for (var i, r = 0, o = 1 / 0, a = 0, s = e.length; a < s; a++) (i = e[a].getLayout().area) && (i < o && (o = i), i > r && (r = i));
        var l = e.area * e.area, c = t * t * n;
        return l ? u(c * r / l, l / (c * o)) : 1 / 0
    }

    function w(e, t, n, i, r) {
        var o = t === n.width ? 0 : 1, a = 1 - o, s = ["x", "y"], l = ["width", "height"], c = n[s[o]],
            d = t ? e.area / t : 0;
        (r || d > n[l[a]]) && (d = n[l[a]]);
        for (var f = 0, g = e.length; f < g; f++) {
            var p = e[f], m = {}, v = d ? p.getLayout().area / d : 0, y = m[l[a]] = u(d - 2 * i, 0),
                b = n[s[o]] + n[l[o]] - c, C = f === g - 1 || b < v ? b : v, w = m[l[o]] = u(C - 2 * i, 0);
            m[s[a]] = n[s[a]] + h(i, y / 2), m[s[o]] = c + h(i, w / 2), c += C, p.setLayout(m, !0)
        }
        n[s[a]] += d, n[l[a]] -= d
    }

    function I(e) {
        return e.get(m) ? e.get(v) : 0
    }

    e.exports = y
}, function (e, t, n) {
    var i = n(2);
    n(376), n(378), n(381);
    var r = n(382), o = n(42), a = n(383), s = n(384), l = n(385), c = n(386), u = n(387), h = n(389);
    i.registerProcessor(r), i.registerVisual(o("graph", "circle", null)), i.registerVisual(a), i.registerVisual(s), i.registerLayout(l), i.registerLayout(i.PRIORITY.VISUAL.POST_CHART_LAYOUT, c), i.registerLayout(u), i.registerCoordinateSystem("graphView", {create: h})
}, function (e, t, n) {
    var i = n(2), r = n(19), o = n(1), a = n(5).defaultEmphasis, s = n(13), l = n(8).encodeHTML, c = n(193), u = n(72),
        h = i.extendSeriesModel({
            type: "series.graph",
            init: function (e) {
                h.superApply(this, "init", arguments);
                var t = this;

                function n() {
                    return t._categoriesData
                }

                this.legendVisualProvider = new u(n, n), this.fillDataTextStyle(e.edges || e.links), this._updateCategoriesData()
            },
            mergeOption: function (e) {
                h.superApply(this, "mergeOption", arguments), this.fillDataTextStyle(e.edges || e.links), this._updateCategoriesData()
            },
            mergeDefaultAndTheme: function (e) {
                h.superApply(this, "mergeDefaultAndTheme", arguments), a(e, ["edgeLabel"], ["show"])
            },
            getInitialData: function (e, t) {
                var n = e.edges || e.links || [], i = e.data || e.nodes || [], r = this;
                if (i && n) return c(i, n, this, !0, (function (e, n) {
                    e.wrapMethod("getItemModel", (function (e) {
                        var t = r._categoriesModels[e.getShallow("category")];
                        return t && (t.parentModel = e.parentModel, e.parentModel = t), e
                    }));
                    var i = r.getModel("edgeLabel"), o = new s({label: i.option}, i.parentModel, t),
                        a = r.getModel("emphasis.edgeLabel"),
                        l = new s({emphasis: {label: a.option}}, a.parentModel, t);

                    function c(e) {
                        return (e = this.parsePath(e)) && "label" === e[0] ? o : e && "emphasis" === e[0] && "label" === e[1] ? l : this.parentModel
                    }

                    n.wrapMethod("getItemModel", (function (e) {
                        return e.customizeGetParent(c), e
                    }))
                })).data
            },
            getGraph: function () {
                return this.getData().graph
            },
            getEdgeData: function () {
                return this.getGraph().edgeData
            },
            getCategoriesData: function () {
                return this._categoriesData
            },
            formatTooltip: function (e, t, n) {
                if ("edge" === n) {
                    var i = this.getData(), r = this.getDataParams(e, n), o = i.graph.getEdgeByIndex(e),
                        a = i.getName(o.node1.dataIndex), s = i.getName(o.node2.dataIndex), c = [];
                    return null != a && c.push(a), null != s && c.push(s), c = l(c.join(" > ")), r.value && (c += " : " + l(r.value)), c
                }
                return h.superApply(this, "formatTooltip", arguments)
            },
            _updateCategoriesData: function () {
                var e = o.map(this.option.categories || [], (function (e) {
                    return null != e.value ? e : o.extend({value: 0}, e)
                })), t = new r(["value"], this);
                t.initData(e), this._categoriesData = t, this._categoriesModels = t.mapArray((function (e) {
                    return t.getItemModel(e, !0)
                }))
            },
            setZoom: function (e) {
                this.option.zoom = e
            },
            setCenter: function (e) {
                this.option.center = e
            },
            isAnimationEnabled: function () {
                return h.superCall(this, "isAnimationEnabled") && !("force" === this.get("layout") && this.get("force.layoutAnimation"))
            },
            defaultOption: {
                zlevel: 0,
                z: 2,
                coordinateSystem: "view",
                legendHoverLink: !0,
                hoverAnimation: !0,
                layout: null,
                focusNodeAdjacency: !1,
                circular: {rotateLabel: !1},
                force: {
                    initLayout: null,
                    repulsion: [0, 50],
                    gravity: .1,
                    friction: .6,
                    edgeLength: 30,
                    layoutAnimation: !0
                },
                left: "center",
                top: "center",
                symbol: "circle",
                symbolSize: 10,
                edgeSymbol: ["none", "none"],
                edgeSymbolSize: 10,
                edgeLabel: {position: "middle", distance: 5},
                draggable: !1,
                roam: !1,
                center: null,
                zoom: 1,
                nodeScaleRatio: .6,
                label: {show: !1, formatter: "{b}"},
                itemStyle: {},
                lineStyle: {color: "#aaa", width: 1, curveness: 0, opacity: .5},
                emphasis: {label: {show: !0}}
            }
        }), d = h;
    e.exports = d
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(28).enableClassCheck;

    function o(e) {
        return "_EC_" + e
    }

    var a = function (e) {
        this._directed = e || !1, this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this.data, this.edgeData
    }, s = a.prototype;

    function l(e, t) {
        this.id = null == e ? "" : e, this.inEdges = [], this.outEdges = [], this.edges = [], this.hostGraph, this.dataIndex = null == t ? -1 : t
    }

    function c(e, t, n) {
        this.node1 = e, this.node2 = t, this.dataIndex = null == n ? -1 : n
    }

    s.type = "graph", s.isDirected = function () {
        return this._directed
    }, s.addNode = function (e, t) {
        e = null == e ? "" + t : "" + e;
        var n = this._nodesMap;
        if (!n[o(e)]) {
            var i = new l(e, t);
            return i.hostGraph = this, this.nodes.push(i), n[o(e)] = i, i
        }
    }, s.getNodeByIndex = function (e) {
        var t = this.data.getRawIndex(e);
        return this.nodes[t]
    }, s.getNodeById = function (e) {
        return this._nodesMap[o(e)]
    }, s.addEdge = function (e, t, n) {
        var i = this._nodesMap, r = this._edgesMap;
        if ("number" == typeof e && (e = this.nodes[e]), "number" == typeof t && (t = this.nodes[t]), l.isInstance(e) || (e = i[o(e)]), l.isInstance(t) || (t = i[o(t)]), e && t) {
            var a = e.id + "-" + t.id;
            if (!r[a]) {
                var s = new c(e, t, n);
                return s.hostGraph = this, this._directed && (e.outEdges.push(s), t.inEdges.push(s)), e.edges.push(s), e !== t && t.edges.push(s), this.edges.push(s), r[a] = s, s
            }
        }
    }, s.getEdgeByIndex = function (e) {
        var t = this.edgeData.getRawIndex(e);
        return this.edges[t]
    }, s.getEdge = function (e, t) {
        l.isInstance(e) && (e = e.id), l.isInstance(t) && (t = t.id);
        var n = this._edgesMap;
        return this._directed ? n[e + "-" + t] : n[e + "-" + t] || n[t + "-" + e]
    }, s.eachNode = function (e, t) {
        for (var n = this.nodes, i = n.length, r = 0; r < i; r++) n[r].dataIndex >= 0 && e.call(t, n[r], r)
    }, s.eachEdge = function (e, t) {
        for (var n = this.edges, i = n.length, r = 0; r < i; r++) n[r].dataIndex >= 0 && n[r].node1.dataIndex >= 0 && n[r].node2.dataIndex >= 0 && e.call(t, n[r], r)
    }, s.breadthFirstTraverse = function (e, t, n, i) {
        if (l.isInstance(t) || (t = this._nodesMap[o(t)]), t) {
            for (var r = "out" === n ? "outEdges" : "in" === n ? "inEdges" : "edges", a = 0; a < this.nodes.length; a++) this.nodes[a].__visited = !1;
            if (!e.call(i, t, null)) for (var s = [t]; s.length;) {
                var c = s.shift(), u = c[r];
                for (a = 0; a < u.length; a++) {
                    var h = u[a], d = h.node1 === c ? h.node2 : h.node1;
                    if (!d.__visited) {
                        if (e.call(i, d, c)) return;
                        s.push(d), d.__visited = !0
                    }
                }
            }
        }
    }, s.update = function () {
        for (var e = this.data, t = this.edgeData, n = this.nodes, i = this.edges, r = 0, o = n.length; r < o; r++) n[r].dataIndex = -1;
        for (r = 0, o = e.count(); r < o; r++) n[e.getRawIndex(r)].dataIndex = r;
        t.filterSelf((function (e) {
            var n = i[t.getRawIndex(e)];
            return n.node1.dataIndex >= 0 && n.node2.dataIndex >= 0
        }));
        for (r = 0, o = i.length; r < o; r++) i[r].dataIndex = -1;
        for (r = 0, o = t.count(); r < o; r++) i[t.getRawIndex(r)].dataIndex = r
    }, s.clone = function () {
        for (var e = new a(this._directed), t = this.nodes, n = this.edges, i = 0; i < t.length; i++) e.addNode(t[i].id, t[i].dataIndex);
        for (i = 0; i < n.length; i++) {
            var r = n[i];
            e.addEdge(r.node1.id, r.node2.id, r.dataIndex)
        }
        return e
    }, l.prototype = {
        constructor: l, degree: function () {
            return this.edges.length
        }, inDegree: function () {
            return this.inEdges.length
        }, outDegree: function () {
            return this.outEdges.length
        }, getModel: function (e) {
            if (!(this.dataIndex < 0)) return this.hostGraph.data.getItemModel(this.dataIndex).getModel(e)
        }
    }, c.prototype.getModel = function (e) {
        if (!(this.dataIndex < 0)) return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(e)
    };
    var u = function (e, t) {
        return {
            getValue: function (n) {
                var i = this[e][t];
                return i.get(i.getDimension(n || "value"), this.dataIndex)
            }, setVisual: function (n, i) {
                this.dataIndex >= 0 && this[e][t].setItemVisual(this.dataIndex, n, i)
            }, getVisual: function (n, i) {
                return this[e][t].getItemVisual(this.dataIndex, n, i)
            }, setLayout: function (n, i) {
                this.dataIndex >= 0 && this[e][t].setItemLayout(this.dataIndex, n, i)
            }, getLayout: function () {
                return this[e][t].getItemLayout(this.dataIndex)
            }, getGraphicEl: function () {
                return this[e][t].getItemGraphicEl(this.dataIndex)
            }, getRawIndex: function () {
                return this[e][t].getRawIndex(this.dataIndex)
            }
        }
    };
    i.mixin(l, u("hostGraph", "data")), i.mixin(c, u("hostGraph", "edgeData")), a.Node = l, a.Edge = c, r(l), r(c);
    var h = a;
    e.exports = h
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(68), a = n(120), s = n(74), l = n(115), c = n(95).onIrrelevantElement, u = n(3),
        h = n(380), d = n(122).getNodeGlobalScale, f = "__focusNodeAdjacency", g = ["itemStyle", "opacity"],
        p = ["lineStyle", "opacity"];

    function m(e, t) {
        var n = e.getVisual("opacity");
        return null != n ? n : e.getModel().get(t)
    }

    function v(e, t, n) {
        var i = e.getGraphicEl(), r = m(e, t);
        null != n && (null == r && (r = 1), r *= n), i.downplay && i.downplay(), i.traverse((function (e) {
            if (!e.isGroup) {
                var t = e.lineLabelOriginalOpacity;
                null != t && null == n || (t = r), e.setStyle("opacity", t)
            }
        }))
    }

    function y(e, t) {
        var n = m(e, t), i = e.getGraphicEl();
        i.traverse((function (e) {
            !e.isGroup && e.setStyle("opacity", n)
        })), i.highlight && i.highlight()
    }

    var b = i.extendChartView({
        type: "graph", init: function (e, t) {
            var n = new o, i = new a, r = this.group;
            this._controller = new s(t.getZr()), this._controllerHost = {target: r}, r.add(n.group), r.add(i.group), this._symbolDraw = n, this._lineDraw = i, this._firstRender = !0
        }, render: function (e, t, n) {
            var i = this, r = e.coordinateSystem;
            this._model = e;
            var o = this._symbolDraw, a = this._lineDraw, s = this.group;
            if ("view" === r.type) {
                var l = {position: r.position, scale: r.scale};
                this._firstRender ? s.attr(l) : u.updateProps(s, l, e)
            }
            h(e.getGraph(), d(e));
            var c = e.getData();
            o.updateData(c);
            var g = e.getEdgeData();
            a.updateData(g), this._updateNodeAndLinkScale(), this._updateController(e, t, n), clearTimeout(this._layoutTimeout);
            var p = e.forceLayout, m = e.get("force.layoutAnimation");
            p && this._startForceLayoutIteration(p, m), c.eachItemGraphicEl((function (t, r) {
                var o = c.getItemModel(r);
                t.off("drag").off("dragend");
                var a = o.get("draggable");
                a && t.on("drag", (function () {
                    p && (p.warmUp(), !this._layouting && this._startForceLayoutIteration(p, m), p.setFixed(r), c.setItemLayout(r, t.position))
                }), this).on("dragend", (function () {
                    p && p.setUnfixed(r)
                }), this), t.setDraggable(a && p), t[f] && t.off("mouseover", t[f]), t.__unfocusNodeAdjacency && t.off("mouseout", t.__unfocusNodeAdjacency), o.get("focusNodeAdjacency") && (t.on("mouseover", t[f] = function () {
                    i._clearTimer(), n.dispatchAction({
                        type: "focusNodeAdjacency",
                        seriesId: e.id,
                        dataIndex: t.dataIndex
                    })
                }), t.on("mouseout", t.__unfocusNodeAdjacency = function () {
                    i._dispatchUnfocus(n)
                }))
            }), this), c.graph.eachEdge((function (t) {
                var r = t.getGraphicEl();
                r[f] && r.off("mouseover", r[f]), r.__unfocusNodeAdjacency && r.off("mouseout", r.__unfocusNodeAdjacency), t.getModel().get("focusNodeAdjacency") && (r.on("mouseover", r[f] = function () {
                    i._clearTimer(), n.dispatchAction({
                        type: "focusNodeAdjacency",
                        seriesId: e.id,
                        edgeDataIndex: t.dataIndex
                    })
                }), r.on("mouseout", r.__unfocusNodeAdjacency = function () {
                    i._dispatchUnfocus(n)
                }))
            }));
            var v = "circular" === e.get("layout") && e.get("circular.rotateLabel"), y = c.getLayout("cx"),
                b = c.getLayout("cy");
            c.eachItemGraphicEl((function (e, t) {
                var n = c.getItemModel(t).get("label.rotate") || 0, i = e.getSymbolPath();
                if (v) {
                    var r = c.getItemLayout(t), o = Math.atan2(r[1] - b, r[0] - y);
                    o < 0 && (o = 2 * Math.PI + o);
                    var a = r[0] < y;
                    a && (o -= Math.PI);
                    var s = a ? "left" : "right";
                    u.modifyLabelStyle(i, {textRotation: -o, textPosition: s, textOrigin: "center"}, {textPosition: s})
                } else u.modifyLabelStyle(i, {textRotation: n *= Math.PI / 180})
            })), this._firstRender = !1
        }, dispose: function () {
            this._controller && this._controller.dispose(), this._controllerHost = {}, this._clearTimer()
        }, _dispatchUnfocus: function (e, t) {
            var n = this;
            this._clearTimer(), this._unfocusDelayTimer = setTimeout((function () {
                n._unfocusDelayTimer = null, e.dispatchAction({type: "unfocusNodeAdjacency", seriesId: n._model.id})
            }), 500)
        }, _clearTimer: function () {
            this._unfocusDelayTimer && (clearTimeout(this._unfocusDelayTimer), this._unfocusDelayTimer = null)
        }, focusNodeAdjacency: function (e, t, n, i) {
            var o = e.getData().graph, a = i.dataIndex, s = i.edgeDataIndex, l = o.getNodeByIndex(a),
                c = o.getEdgeByIndex(s);
            (l || c) && (o.eachNode((function (e) {
                v(e, g, .1)
            })), o.eachEdge((function (e) {
                v(e, p, .1)
            })), l && (y(l, g), r.each(l.edges, (function (e) {
                e.dataIndex < 0 || (y(e, p), y(e.node1, g), y(e.node2, g))
            }))), c && (y(c, p), y(c.node1, g), y(c.node2, g)))
        }, unfocusNodeAdjacency: function (e, t, n, i) {
            var r = e.getData().graph;
            r.eachNode((function (e) {
                v(e, g)
            })), r.eachEdge((function (e) {
                v(e, p)
            }))
        }, _startForceLayoutIteration: function (e, t) {
            var n = this;
            !function i() {
                e.step((function (e) {
                    n.updateLayout(n._model), (n._layouting = !e) && (t ? n._layoutTimeout = setTimeout(i, 16) : i())
                }))
            }()
        }, _updateController: function (e, t, n) {
            var i = this._controller, r = this._controllerHost, o = this.group;
            i.setPointerChecker((function (t, i, r) {
                var a = o.getBoundingRect();
                return a.applyTransform(o.transform), a.contain(i, r) && !c(t, n, e)
            })), "view" === e.coordinateSystem.type ? (i.enable(e.get("roam")), r.zoomLimit = e.get("scaleLimit"), r.zoom = e.coordinateSystem.getZoom(), i.off("pan").off("zoom").on("pan", (function (t) {
                l.updateViewOnPan(r, t.dx, t.dy), n.dispatchAction({
                    seriesId: e.id,
                    type: "graphRoam",
                    dx: t.dx,
                    dy: t.dy
                })
            })).on("zoom", (function (t) {
                l.updateViewOnZoom(r, t.scale, t.originX, t.originY), n.dispatchAction({
                    seriesId: e.id,
                    type: "graphRoam",
                    zoom: t.scale,
                    originX: t.originX,
                    originY: t.originY
                }), this._updateNodeAndLinkScale(), h(e.getGraph(), d(e)), this._lineDraw.updateLayout()
            }), this)) : i.disable()
        }, _updateNodeAndLinkScale: function () {
            var e = this._model, t = e.getData(), n = d(e), i = [n, n];
            t.eachItemGraphicEl((function (e, t) {
                e.attr("scale", i)
            }))
        }, updateLayout: function (e) {
            h(e.getGraph(), d(e)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout()
        }, remove: function (e, t) {
            this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove()
        }
    });
    e.exports = b
}, function (e, t, n) {
    var i = n(3), r = n(9), o = i.Line.prototype, a = i.BezierCurve.prototype;

    function s(e) {
        return isNaN(+e.cpx1) || isNaN(+e.cpy1)
    }

    var l = i.extendShape({
        type: "ec-line",
        style: {stroke: "#000", fill: null},
        shape: {x1: 0, y1: 0, x2: 0, y2: 0, percent: 1, cpx1: null, cpy1: null},
        buildPath: function (e, t) {
            this[s(t) ? "_buildPathLine" : "_buildPathCurve"](e, t)
        },
        _buildPathLine: o.buildPath,
        _buildPathCurve: a.buildPath,
        pointAt: function (e) {
            return this[s(this.shape) ? "_pointAtLine" : "_pointAtCurve"](e)
        },
        _pointAtLine: o.pointAt,
        _pointAtCurve: a.pointAt,
        tangentAt: function (e) {
            var t = this.shape, n = s(t) ? [t.x2 - t.x1, t.y2 - t.y1] : this._tangentAtCurve(e);
            return r.normalize(n, n)
        },
        _tangentAtCurve: a.tangentAt
    });
    e.exports = l
}, function (e, t, n) {
    var i = n(31), r = n(9), o = n(122).getSymbolSize, a = [], s = [], l = [], c = i.quadraticAt, u = r.distSquare,
        h = Math.abs;

    function d(e, t, n) {
        for (var i, r = e[0], o = e[1], d = e[2], f = 1 / 0, g = n * n, p = .1, m = .1; m <= .9; m += .1) {
            a[0] = c(r[0], o[0], d[0], m), a[1] = c(r[1], o[1], d[1], m), (b = h(u(a, t) - g)) < f && (f = b, i = m)
        }
        for (var v = 0; v < 32; v++) {
            var y = i + p;
            s[0] = c(r[0], o[0], d[0], i), s[1] = c(r[1], o[1], d[1], i), l[0] = c(r[0], o[0], d[0], y), l[1] = c(r[1], o[1], d[1], y);
            var b = u(s, t) - g;
            if (h(b) < .01) break;
            var C = u(l, t) - g;
            p /= 2, b < 0 ? C >= 0 ? i += p : i -= p : C >= 0 ? i -= p : i += p
        }
        return i
    }

    e.exports = function (e, t) {
        var n = [], a = i.quadraticSubdivide, s = [[], [], []], l = [[], []], c = [];
        t /= 2, e.eachEdge((function (e, i) {
            var u = e.getLayout(), h = e.getVisual("fromSymbol"), f = e.getVisual("toSymbol");
            u.__original || (u.__original = [r.clone(u[0]), r.clone(u[1])], u[2] && u.__original.push(r.clone(u[2])));
            var g = u.__original;
            if (null != u[2]) {
                if (r.copy(s[0], g[0]), r.copy(s[1], g[2]), r.copy(s[2], g[1]), h && "none" !== h) {
                    var p = o(e.node1), m = d(s, g[0], p * t);
                    a(s[0][0], s[1][0], s[2][0], m, n), s[0][0] = n[3], s[1][0] = n[4], a(s[0][1], s[1][1], s[2][1], m, n), s[0][1] = n[3], s[1][1] = n[4]
                }
                if (f && "none" !== f) {
                    p = o(e.node2), m = d(s, g[1], p * t);
                    a(s[0][0], s[1][0], s[2][0], m, n), s[1][0] = n[1], s[2][0] = n[2], a(s[0][1], s[1][1], s[2][1], m, n), s[1][1] = n[1], s[2][1] = n[2]
                }
                r.copy(u[0], s[0]), r.copy(u[1], s[2]), r.copy(u[2], s[1])
            } else {
                if (r.copy(l[0], g[0]), r.copy(l[1], g[1]), r.sub(c, l[1], l[0]), r.normalize(c, c), h && "none" !== h) {
                    p = o(e.node1);
                    r.scaleAndAdd(l[0], l[0], c, p * t)
                }
                if (f && "none" !== f) {
                    p = o(e.node2);
                    r.scaleAndAdd(l[1], l[1], c, -p * t)
                }
                r.copy(u[0], l[0]), r.copy(u[1], l[1])
            }
        }))
    }
}, function (e, t, n) {
    var i = n(2), r = n(116).updateCenterAndZoom;
    n(194);
    i.registerAction({type: "graphRoam", event: "graphRoam", update: "none"}, (function (e, t) {
        t.eachComponent({mainType: "series", query: e}, (function (t) {
            var n = t.coordinateSystem, i = r(n, e);
            t.setCenter && t.setCenter(i.center), t.setZoom && t.setZoom(i.zoom)
        }))
    }))
}, function (e, t) {
    e.exports = function (e) {
        var t = e.findComponents({mainType: "legend"});
        t && t.length && e.eachSeriesByType("graph", (function (e) {
            var n = e.getCategoriesData(), i = e.getGraph().data, r = n.mapArray(n.getName);
            i.filterSelf((function (e) {
                var n = i.getItemModel(e).getShallow("category");
                if (null != n) {
                    "number" == typeof n && (n = r[n]);
                    for (var o = 0; o < t.length; o++) if (!t[o].isSelected(n)) return !1
                }
                return !0
            }))
        }), this)
    }
}, function (e, t) {
    e.exports = function (e) {
        var t = {};
        e.eachSeriesByType("graph", (function (e) {
            var n = e.getCategoriesData(), i = e.getData(), r = {};
            n.each((function (i) {
                var o = n.getName(i);
                r["ec-" + o] = i;
                var a = n.getItemModel(i), s = a.get("itemStyle.color") || e.getColorFromPalette(o, t);
                n.setItemVisual(i, "color", s);
                for (var l = ["opacity", "symbol", "symbolSize", "symbolKeepAspect"], c = 0; c < l.length; c++) {
                    var u = a.getShallow(l[c], !0);
                    null != u && n.setItemVisual(i, l[c], u)
                }
            })), n.count() && i.each((function (e) {
                var t = i.getItemModel(e).getShallow("category");
                if (null != t) {
                    "string" == typeof t && (t = r["ec-" + t]);
                    for (var o = ["color", "opacity", "symbol", "symbolSize", "symbolKeepAspect"], a = 0; a < o.length; a++) null == i.getItemVisual(e, o[a], !0) && i.setItemVisual(e, o[a], n.getItemVisual(t, o[a]))
                }
            }))
        }))
    }
}, function (e, t) {
    function n(e) {
        return e instanceof Array || (e = [e, e]), e
    }

    e.exports = function (e) {
        e.eachSeriesByType("graph", (function (e) {
            var t = e.getGraph(), i = e.getEdgeData(), r = n(e.get("edgeSymbol")), o = n(e.get("edgeSymbolSize")),
                a = "lineStyle.color".split("."), s = "lineStyle.opacity".split(".");
            i.setVisual("fromSymbol", r && r[0]), i.setVisual("toSymbol", r && r[1]), i.setVisual("fromSymbolSize", o && o[0]), i.setVisual("toSymbolSize", o && o[1]), i.setVisual("color", e.get(a)), i.setVisual("opacity", e.get(s)), i.each((function (e) {
                var r = i.getItemModel(e), o = t.getEdgeByIndex(e), l = n(r.getShallow("symbol", !0)),
                    c = n(r.getShallow("symbolSize", !0)), u = r.get(a), h = r.get(s);
                switch (u) {
                    case"source":
                        u = o.node1.getVisual("color");
                        break;
                    case"target":
                        u = o.node2.getVisual("color")
                }
                l[0] && o.setVisual("fromSymbol", l[0]), l[1] && o.setVisual("toSymbol", l[1]), c[0] && o.setVisual("fromSymbolSize", c[0]), c[1] && o.setVisual("toSymbolSize", c[1]), o.setVisual("color", u), o.setVisual("opacity", h)
            }))
        }))
    }
}, function (e, t, n) {
    var i = n(1).each, r = n(195), o = r.simpleLayout, a = r.simpleLayoutEdge;
    e.exports = function (e, t) {
        e.eachSeriesByType("graph", (function (e) {
            var t = e.get("layout"), n = e.coordinateSystem;
            if (n && "view" !== n.type) {
                var r = e.getData(), s = [];
                i(n.dimensions, (function (e) {
                    s = s.concat(r.mapDimension(e, !0))
                }));
                for (var l = 0; l < r.count(); l++) {
                    for (var c = [], u = !1, h = 0; h < s.length; h++) {
                        var d = r.get(s[h], l);
                        isNaN(d) || (u = !0), c.push(d)
                    }
                    u ? r.setItemLayout(l, n.dataToPoint(c)) : r.setItemLayout(l, [NaN, NaN])
                }
                a(r.graph)
            } else t && "none" !== t || o(e)
        }))
    }
}, function (e, t, n) {
    var i = n(196).circularLayout;
    e.exports = function (e) {
        e.eachSeriesByType("graph", (function (e) {
            "circular" === e.get("layout") && i(e, "symbolSize")
        }))
    }
}, function (e, t, n) {
    var i = n(388).forceLayout, r = n(195).simpleLayout, o = n(196).circularLayout, a = n(4).linearMap, s = n(9),
        l = n(1);
    e.exports = function (e) {
        e.eachSeriesByType("graph", (function (e) {
            if (!(v = e.coordinateSystem) || "view" === v.type) if ("force" === e.get("layout")) {
                var t = e.preservedPoints || {}, n = e.getGraph(), c = n.data, u = n.edgeData, h = e.getModel("force"),
                    d = h.get("initLayout");
                e.preservedPoints ? c.each((function (e) {
                    var n = c.getId(e);
                    c.setItemLayout(e, t[n] || [NaN, NaN])
                })) : d && "none" !== d ? "circular" === d && o(e, "value") : r(e);
                var f = c.getDataExtent("value"), g = u.getDataExtent("value"), p = h.get("repulsion"),
                    m = h.get("edgeLength");
                l.isArray(p) || (p = [p, p]), l.isArray(m) || (m = [m, m]), m = [m[1], m[0]];
                var v, y = c.mapArray("value", (function (e, t) {
                        var n = c.getItemLayout(t), i = a(e, f, p);
                        return isNaN(i) && (i = (p[0] + p[1]) / 2), {
                            w: i,
                            rep: i,
                            fixed: c.getItemModel(t).get("fixed"),
                            p: !n || isNaN(n[0]) || isNaN(n[1]) ? null : n
                        }
                    })), b = u.mapArray("value", (function (e, t) {
                        var i = n.getEdgeByIndex(t), r = a(e, g, m);
                        isNaN(r) && (r = (m[0] + m[1]) / 2);
                        var o = i.getModel();
                        return {
                            n1: y[i.node1.dataIndex],
                            n2: y[i.node2.dataIndex],
                            d: r,
                            curveness: o.get("lineStyle.curveness") || 0,
                            ignoreForceLayout: o.get("ignoreForceLayout")
                        }
                    })), C = (v = e.coordinateSystem).getBoundingRect(),
                    w = i(y, b, {rect: C, gravity: h.get("gravity"), friction: h.get("friction")}), I = w.step;
                w.step = function (e) {
                    for (var i = 0, r = y.length; i < r; i++) y[i].fixed && s.copy(y[i].p, n.getNodeByIndex(i).getLayout());
                    I((function (i, r, o) {
                        for (var a = 0, l = i.length; a < l; a++) i[a].fixed || n.getNodeByIndex(a).setLayout(i[a].p), t[c.getId(a)] = i[a].p;
                        for (a = 0, l = r.length; a < l; a++) {
                            var u = r[a], h = n.getEdgeByIndex(a), d = u.n1.p, f = u.n2.p, g = h.getLayout();
                            (g = g ? g.slice() : [])[0] = g[0] || [], g[1] = g[1] || [], s.copy(g[0], d), s.copy(g[1], f), +u.curveness && (g[2] = [(d[0] + f[0]) / 2 - (d[1] - f[1]) * u.curveness, (d[1] + f[1]) / 2 - (f[0] - d[0]) * u.curveness]), h.setLayout(g)
                        }
                        e && e(o)
                    }))
                }, e.forceLayout = w, e.preservedPoints = t, w.step()
            } else e.forceLayout = null
        }))
    }
}, function (e, t, n) {
    var i = n(9), r = i.scaleAndAdd;
    t.forceLayout = function (e, t, n) {
        for (var o = n.rect, a = o.width, s = o.height, l = [o.x + a / 2, o.y + s / 2], c = null == n.gravity ? .1 : n.gravity, u = 0; u < e.length; u++) {
            var h = e[u];
            h.p || (h.p = i.create(a * (Math.random() - .5) + l[0], s * (Math.random() - .5) + l[1])), h.pp = i.clone(h.p), h.edges = null
        }
        var d = null == n.friction ? .6 : n.friction, f = d;
        return {
            warmUp: function () {
                f = .8 * d
            }, setFixed: function (t) {
                e[t].fixed = !0
            }, setUnfixed: function (t) {
                e[t].fixed = !1
            }, step: function (n) {
                for (var o = [], a = e.length, s = 0; s < t.length; s++) {
                    var u = t[s];
                    if (!u.ignoreForceLayout) {
                        var h = u.n1, d = u.n2;
                        i.sub(o, d.p, h.p);
                        var g = i.len(o) - u.d, p = d.w / (h.w + d.w);
                        isNaN(p) && (p = 0), i.normalize(o, o), !h.fixed && r(h.p, h.p, o, p * g * f), !d.fixed && r(d.p, d.p, o, -(1 - p) * g * f)
                    }
                }
                for (s = 0; s < a; s++) {
                    (b = e[s]).fixed || (i.sub(o, l, b.p), r(b.p, b.p, o, c * f))
                }
                for (s = 0; s < a; s++) {
                    h = e[s];
                    for (var m = s + 1; m < a; m++) {
                        d = e[m];
                        i.sub(o, d.p, h.p), 0 === (g = i.len(o)) && (i.set(o, Math.random() - .5, Math.random() - .5), g = 1);
                        var v = (h.rep + d.rep) / g / g;
                        !h.fixed && r(h.pp, h.pp, o, v), !d.fixed && r(d.pp, d.pp, o, -v)
                    }
                }
                var y = [];
                for (s = 0; s < a; s++) {
                    var b;
                    (b = e[s]).fixed || (i.sub(y, b.p, b.pp), r(b.p, b.p, y, f), i.copy(b.pp, b.p))
                }
                f *= .992, n && n(e, t, f < .01)
            }
        }
    }
}, function (e, t, n) {
    var i = n(118), r = n(7).getLayoutRect, o = n(63);
    e.exports = function (e, t) {
        var n = [];
        return e.eachSeriesByType("graph", (function (e) {
            var a = e.get("coordinateSystem");
            if (!a || "view" === a) {
                var s = e.getData(), l = s.mapArray((function (e) {
                    var t = s.getItemModel(e);
                    return [+t.get("x"), +t.get("y")]
                })), c = [], u = [];
                o.fromPoints(l, c, u), u[0] - c[0] == 0 && (u[0] += 1, c[0] -= 1), u[1] - c[1] == 0 && (u[1] += 1, c[1] -= 1);
                var h = (u[0] - c[0]) / (u[1] - c[1]), d = function (e, t, n) {
                    var i = e.getBoxLayoutParams();
                    return i.aspect = n, r(i, {width: t.getWidth(), height: t.getHeight()})
                }(e, t, h);
                isNaN(h) && (c = [d.x, d.y], u = [d.x + d.width, d.y + d.height]);
                var f = u[0] - c[0], g = u[1] - c[1], p = d.width, m = d.height, v = e.coordinateSystem = new i;
                v.zoomLimit = e.get("scaleLimit"), v.setBoundingRect(c[0], c[1], f, g), v.setViewRect(d.x, d.y, p, m), v.setCenter(e.get("center")), v.setZoom(e.get("zoom")), n.push(v)
            }
        })), n
    }
}, function (e, t, n) {
    n(391), n(392)
}, function (e, t, n) {
    var i = n(52), r = n(15).extend({
        type: "series.gauge",
        getInitialData: function (e, t) {
            return i(this, ["value"])
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            center: ["50%", "50%"],
            legendHoverLink: !0,
            radius: "75%",
            startAngle: 225,
            endAngle: -45,
            clockwise: !0,
            min: 0,
            max: 100,
            splitNumber: 10,
            axisLine: {show: !0, lineStyle: {color: [[.2, "#91c7ae"], [.8, "#63869e"], [1, "#c23531"]], width: 30}},
            splitLine: {show: !0, length: 30, lineStyle: {color: "#eee", width: 2, type: "solid"}},
            axisTick: {show: !0, splitNumber: 5, length: 8, lineStyle: {color: "#eee", width: 1, type: "solid"}},
            axisLabel: {show: !0, distance: 5, color: "auto"},
            pointer: {show: !0, length: "80%", width: 8},
            itemStyle: {color: "auto"},
            title: {show: !0, offsetCenter: [0, "-40%"], color: "#333", fontSize: 15},
            detail: {
                show: !0,
                backgroundColor: "rgba(0,0,0,0)",
                borderWidth: 0,
                borderColor: "#ccc",
                width: 100,
                height: null,
                padding: [5, 10],
                offsetCenter: [0, "40%"],
                color: "auto",
                fontSize: 30
            }
        }
    });
    e.exports = r
}, function (e, t, n) {
    var i = n(393), r = n(3), o = n(26), a = n(4), s = a.parsePercent, l = a.round, c = a.linearMap;

    function u(e, t) {
        return t && ("string" == typeof t ? e = t.replace("{value}", null != e ? e : "") : "function" == typeof t && (e = t(e))), e
    }

    var h = 2 * Math.PI, d = o.extend({
        type: "gauge", render: function (e, t, n) {
            this.group.removeAll();
            var i = e.get("axisLine.lineStyle.color"), r = function (e, t) {
                var n = e.get("center"), i = t.getWidth(), r = t.getHeight(), o = Math.min(i, r);
                return {cx: s(n[0], t.getWidth()), cy: s(n[1], t.getHeight()), r: s(e.get("radius"), o / 2)}
            }(e, n);
            this._renderMain(e, t, n, i, r)
        }, dispose: function () {
        }, _renderMain: function (e, t, n, i, o) {
            for (var a = this.group, s = e.getModel("axisLine"), l = s.getModel("lineStyle"), c = e.get("clockwise"), u = -e.get("startAngle") / 180 * Math.PI, d = ((v = -e.get("endAngle") / 180 * Math.PI) - u) % h, f = u, g = l.get("width"), p = s.get("show"), m = 0; p && m < i.length; m++) {
                var v = u + d * Math.min(Math.max(i[m][0], 0), 1), y = new r.Sector({
                    shape: {
                        startAngle: f,
                        endAngle: v,
                        cx: o.cx,
                        cy: o.cy,
                        clockwise: c,
                        r0: o.r - g,
                        r: o.r
                    }, silent: !0
                });
                y.setStyle({fill: i[m][1]}), y.setStyle(l.getLineStyle(["color", "borderWidth", "borderColor"])), a.add(y), f = v
            }
            var b = function (e) {
                if (e <= 0) return i[0][1];
                for (var t = 0; t < i.length; t++) if (i[t][0] >= e && (0 === t ? 0 : i[t - 1][0]) < e) return i[t][1];
                return i[t - 1][1]
            };
            if (!c) {
                var C = u;
                u = v, v = C
            }
            this._renderTicks(e, t, n, b, o, u, v, c), this._renderPointer(e, t, n, b, o, u, v, c), this._renderTitle(e, t, n, b, o), this._renderDetail(e, t, n, b, o)
        }, _renderTicks: function (e, t, n, i, o, a, c, h) {
            for (var d = this.group, f = o.cx, g = o.cy, p = o.r, m = +e.get("min"), v = +e.get("max"), y = e.getModel("splitLine"), b = e.getModel("axisTick"), C = e.getModel("axisLabel"), w = e.get("splitNumber"), I = b.get("splitNumber"), x = s(y.get("length"), p), A = s(b.get("length"), p), _ = a, S = (c - a) / w, k = S / I, L = y.getModel("lineStyle").getLineStyle(), T = b.getModel("lineStyle").getLineStyle(), O = 0; O <= w; O++) {
                var R = Math.cos(_), E = Math.sin(_);
                if (y.get("show")) {
                    var P = new r.Line({
                        shape: {x1: R * p + f, y1: E * p + g, x2: R * (p - x) + f, y2: E * (p - x) + g},
                        style: L,
                        silent: !0
                    });
                    "auto" === L.stroke && P.setStyle({stroke: i(O / w)}), d.add(P)
                }
                if (C.get("show")) {
                    var M = u(l(O / w * (v - m) + m), C.get("formatter")), N = C.get("distance"), D = i(O / w);
                    d.add(new r.Text({
                        style: r.setTextStyle({}, C, {
                            text: M,
                            x: R * (p - x - N) + f,
                            y: E * (p - x - N) + g,
                            textVerticalAlign: E < -.4 ? "top" : E > .4 ? "bottom" : "middle",
                            textAlign: R < -.4 ? "left" : R > .4 ? "right" : "center"
                        }, {autoColor: D}), silent: !0
                    }))
                }
                if (b.get("show") && O !== w) {
                    for (var B = 0; B <= I; B++) {
                        R = Math.cos(_), E = Math.sin(_);
                        var j = new r.Line({
                            shape: {
                                x1: R * p + f,
                                y1: E * p + g,
                                x2: R * (p - A) + f,
                                y2: E * (p - A) + g
                            }, silent: !0, style: T
                        });
                        "auto" === T.stroke && j.setStyle({stroke: i((O + B / I) / w)}), d.add(j), _ += k
                    }
                    _ -= k
                } else _ += S
            }
        }, _renderPointer: function (e, t, n, o, a, l, u, h) {
            var d = this.group, f = this._data;
            if (e.get("pointer.show")) {
                var g = [+e.get("min"), +e.get("max")], p = [l, u], m = e.getData(), v = m.mapDimension("value");
                m.diff(f).add((function (t) {
                    var n = new i({shape: {angle: l}});
                    r.initProps(n, {shape: {angle: c(m.get(v, t), g, p, !0)}}, e), d.add(n), m.setItemGraphicEl(t, n)
                })).update((function (t, n) {
                    var i = f.getItemGraphicEl(n);
                    r.updateProps(i, {shape: {angle: c(m.get(v, t), g, p, !0)}}, e), d.add(i), m.setItemGraphicEl(t, i)
                })).remove((function (e) {
                    var t = f.getItemGraphicEl(e);
                    d.remove(t)
                })).execute(), m.eachItemGraphicEl((function (e, t) {
                    var n = m.getItemModel(t), i = n.getModel("pointer");
                    e.setShape({
                        x: a.cx,
                        y: a.cy,
                        width: s(i.get("width"), a.r),
                        r: s(i.get("length"), a.r)
                    }), e.useStyle(n.getModel("itemStyle").getItemStyle()), "auto" === e.style.fill && e.setStyle("fill", o(c(m.get(v, t), g, [0, 1], !0))), r.setHoverStyle(e, n.getModel("emphasis.itemStyle").getItemStyle())
                })), this._data = m
            } else f && f.eachItemGraphicEl((function (e) {
                d.remove(e)
            }))
        }, _renderTitle: function (e, t, n, i, o) {
            var a = e.getData(), l = a.mapDimension("value"), u = e.getModel("title");
            if (u.get("show")) {
                var h = u.get("offsetCenter"), d = o.cx + s(h[0], o.r), f = o.cy + s(h[1], o.r), g = +e.get("min"),
                    p = +e.get("max"), m = e.getData().get(l, 0), v = i(c(m, [g, p], [0, 1], !0));
                this.group.add(new r.Text({
                    silent: !0,
                    style: r.setTextStyle({}, u, {
                        x: d,
                        y: f,
                        text: a.getName(0),
                        textAlign: "center",
                        textVerticalAlign: "middle"
                    }, {autoColor: v, forceRich: !0})
                }))
            }
        }, _renderDetail: function (e, t, n, i, o) {
            var a = e.getModel("detail"), l = +e.get("min"), h = +e.get("max");
            if (a.get("show")) {
                var d = a.get("offsetCenter"), f = o.cx + s(d[0], o.r), g = o.cy + s(d[1], o.r),
                    p = s(a.get("width"), o.r), m = s(a.get("height"), o.r), v = e.getData(),
                    y = v.get(v.mapDimension("value"), 0), b = i(c(y, [l, h], [0, 1], !0));
                this.group.add(new r.Text({
                    silent: !0,
                    style: r.setTextStyle({}, a, {
                        x: f,
                        y: g,
                        text: u(y, a.get("formatter")),
                        textWidth: isNaN(p) ? null : p,
                        textHeight: isNaN(m) ? null : m,
                        textAlign: "center",
                        textVerticalAlign: "middle"
                    }, {autoColor: b, forceRich: !0})
                }))
            }
        }
    });
    e.exports = d
}, function (e, t, n) {
    var i = n(11).extend({
        type: "echartsGaugePointer",
        shape: {angle: 0, width: 10, r: 10, x: 0, y: 0},
        buildPath: function (e, t) {
            var n = Math.cos, i = Math.sin, r = t.r, o = t.width, a = t.angle,
                s = t.x - n(a) * o * (o >= r / 3 ? 1 : 2), l = t.y - i(a) * o * (o >= r / 3 ? 1 : 2);
            a = t.angle - Math.PI / 2, e.moveTo(s, l), e.lineTo(t.x + n(a) * o, t.y + i(a) * o), e.lineTo(t.x + n(t.angle) * r, t.y + i(t.angle) * r), e.lineTo(t.x - n(a) * o, t.y - i(a) * o), e.lineTo(s, l)
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(2);
    n(395), n(396);
    var r = n(93), o = n(397), a = n(73);
    i.registerVisual(r("funnel")), i.registerLayout(o), i.registerProcessor(a("funnel"))
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(52), a = n(5).defaultEmphasis, s = n(29).makeSeriesEncodeForNameBased, l = n(72),
        c = i.extendSeriesModel({
            type: "series.funnel",
            init: function (e) {
                c.superApply(this, "init", arguments), this.legendVisualProvider = new l(r.bind(this.getData, this), r.bind(this.getRawData, this)), this._defaultLabelLine(e)
            },
            getInitialData: function (e, t) {
                return o(this, {coordDimensions: ["value"], encodeDefaulter: r.curry(s, this)})
            },
            _defaultLabelLine: function (e) {
                a(e, "labelLine", ["show"]);
                var t = e.labelLine, n = e.emphasis.labelLine;
                t.show = t.show && e.label.show, n.show = n.show && e.emphasis.label.show
            },
            getDataParams: function (e) {
                var t = this.getData(), n = c.superCall(this, "getDataParams", e), i = t.mapDimension("value"),
                    r = t.getSum(i);
                return n.percent = r ? +(t.get(i, e) / r * 100).toFixed(2) : 0, n.$vars.push("percent"), n
            },
            defaultOption: {
                zlevel: 0,
                z: 2,
                legendHoverLink: !0,
                left: 80,
                top: 60,
                right: 80,
                bottom: 60,
                minSize: "0%",
                maxSize: "100%",
                sort: "descending",
                gap: 0,
                funnelAlign: "center",
                label: {show: !0, position: "outer"},
                labelLine: {show: !0, length: 20, lineStyle: {width: 1, type: "solid"}},
                itemStyle: {borderColor: "#fff", borderWidth: 1},
                emphasis: {label: {show: !0}}
            }
        }), u = c;
    e.exports = u
}, function (e, t, n) {
    var i = n(3), r = n(1), o = n(26);

    function a(e, t) {
        i.Group.call(this);
        var n = new i.Polygon, r = new i.Polyline, o = new i.Text;
        this.add(n), this.add(r), this.add(o), this.highDownOnUpdate = function (e, t) {
            "emphasis" === t ? (r.ignore = r.hoverIgnore, o.ignore = o.hoverIgnore) : (r.ignore = r.normalIgnore, o.ignore = o.normalIgnore)
        }, this.updateData(e, t, !0)
    }

    var s = a.prototype, l = ["itemStyle", "opacity"];
    s.updateData = function (e, t, n) {
        var o = this.childAt(0), a = e.hostModel, s = e.getItemModel(t), c = e.getItemLayout(t),
            u = e.getItemModel(t).get(l);
        u = null == u ? 1 : u, o.useStyle({}), n ? (o.setShape({points: c.points}), o.setStyle({opacity: 0}), i.initProps(o, {style: {opacity: u}}, a, t)) : i.updateProps(o, {
            style: {opacity: u},
            shape: {points: c.points}
        }, a, t);
        var h = s.getModel("itemStyle"), d = e.getItemVisual(t, "color");
        o.setStyle(r.defaults({
            lineJoin: "round",
            fill: d
        }, h.getItemStyle(["opacity"]))), o.hoverStyle = h.getModel("emphasis").getItemStyle(), this._updateLabel(e, t), i.setHoverStyle(this)
    }, s._updateLabel = function (e, t) {
        var n = this.childAt(1), r = this.childAt(2), o = e.hostModel, a = e.getItemModel(t),
            s = e.getItemLayout(t).label, l = e.getItemVisual(t, "color");
        i.updateProps(n, {shape: {points: s.linePoints || s.linePoints}}, o, t), i.updateProps(r, {
            style: {
                x: s.x,
                y: s.y
            }
        }, o, t), r.attr({rotation: s.rotation, origin: [s.x, s.y], z2: 10});
        var c = a.getModel("label"), u = a.getModel("emphasis.label"), h = a.getModel("labelLine"),
            d = a.getModel("emphasis.labelLine");
        l = e.getItemVisual(t, "color");
        i.setLabelStyle(r.style, r.hoverStyle = {}, c, u, {
            labelFetcher: e.hostModel,
            labelDataIndex: t,
            defaultText: e.getName(t),
            autoColor: l,
            useInsideStyle: !!s.inside
        }, {
            textAlign: s.textAlign,
            textVerticalAlign: s.verticalAlign
        }), r.ignore = r.normalIgnore = !c.get("show"), r.hoverIgnore = !u.get("show"), n.ignore = n.normalIgnore = !h.get("show"), n.hoverIgnore = !d.get("show"), n.setStyle({stroke: l}), n.setStyle(h.getModel("lineStyle").getLineStyle()), n.hoverStyle = d.getModel("lineStyle").getLineStyle()
    }, r.inherits(a, i.Group);
    var c = o.extend({
        type: "funnel", render: function (e, t, n) {
            var i = e.getData(), r = this._data, o = this.group;
            i.diff(r).add((function (e) {
                var t = new a(i, e);
                i.setItemGraphicEl(e, t), o.add(t)
            })).update((function (e, t) {
                var n = r.getItemGraphicEl(t);
                n.updateData(i, e), o.add(n), i.setItemGraphicEl(e, n)
            })).remove((function (e) {
                var t = r.getItemGraphicEl(e);
                o.remove(t)
            })).execute(), this._data = i
        }, remove: function () {
            this.group.removeAll(), this._data = null
        }, dispose: function () {
        }
    });
    e.exports = c
}, function (e, t, n) {
    var i = n(7), r = n(4), o = r.parsePercent, a = r.linearMap;
    e.exports = function (e, t, n) {
        e.eachSeriesByType("funnel", (function (e) {
            var n = e.getData(), r = n.mapDimension("value"), s = e.get("sort"), l = function (e, t) {
                    return i.getLayoutRect(e.getBoxLayoutParams(), {width: t.getWidth(), height: t.getHeight()})
                }(e, t), c = function (e, t) {
                    for (var n = e.mapDimension("value"), i = e.mapArray(n, (function (e) {
                        return e
                    })), r = [], o = "ascending" === t, a = 0, s = e.count(); a < s; a++) r[a] = a;
                    return "function" == typeof t ? r.sort(t) : "none" !== t && r.sort((function (e, t) {
                        return o ? i[e] - i[t] : i[t] - i[e]
                    })), r
                }(n, s), u = [o(e.get("minSize"), l.width), o(e.get("maxSize"), l.width)], h = n.getDataExtent(r),
                d = e.get("min"), f = e.get("max");
            null == d && (d = Math.min(h[0], 0)), null == f && (f = h[1]);
            var g = e.get("funnelAlign"), p = e.get("gap"), m = (l.height - p * (n.count() - 1)) / n.count(), v = l.y,
                y = function (e, t) {
                    var i, o = n.get(r, e) || 0, s = a(o, [d, f], u, !0);
                    switch (g) {
                        case"left":
                            i = l.x;
                            break;
                        case"center":
                            i = l.x + (l.width - s) / 2;
                            break;
                        case"right":
                            i = l.x + l.width - s
                    }
                    return [[i, t], [i + s, t]]
                };
            "ascending" === s && (m = -m, p = -p, v += l.height, c = c.reverse());
            for (var b = 0; b < c.length; b++) {
                var C = c[b], w = c[b + 1], I = n.getItemModel(C).get("itemStyle.height");
                null == I ? I = m : (I = o(I, l.height), "ascending" === s && (I = -I));
                var x = y(C, v), A = y(w, v + I);
                v += I + p, n.setItemLayout(C, {points: x.concat(A.slice().reverse())})
            }
            !function (e) {
                e.each((function (t) {
                    var n, i, r, o, a = e.getItemModel(t), s = a.getModel("label").get("position"),
                        l = a.getModel("labelLine"), c = e.getItemLayout(t), u = c.points,
                        h = "inner" === s || "inside" === s || "center" === s || "insideLeft" === s || "insideRight" === s;
                    if (h) "insideLeft" === s ? (i = (u[0][0] + u[3][0]) / 2 + 5, r = (u[0][1] + u[3][1]) / 2, n = "left") : "insideRight" === s ? (i = (u[1][0] + u[2][0]) / 2 - 5, r = (u[1][1] + u[2][1]) / 2, n = "right") : (i = (u[0][0] + u[1][0] + u[2][0] + u[3][0]) / 4, r = (u[0][1] + u[1][1] + u[2][1] + u[3][1]) / 4, n = "center"), o = [[i, r], [i, r]]; else {
                        var d, f, g, p = l.get("length");
                        "left" === s ? (d = (u[3][0] + u[0][0]) / 2, f = (u[3][1] + u[0][1]) / 2, i = (g = d - p) - 5, n = "right") : "right" === s ? (d = (u[1][0] + u[2][0]) / 2, f = (u[1][1] + u[2][1]) / 2, i = (g = d + p) + 5, n = "left") : "rightTop" === s ? (d = u[1][0], f = u[1][1], i = (g = d + p) + 5, n = "top") : "rightBottom" === s ? (d = u[2][0], f = u[2][1], i = (g = d + p) + 5, n = "bottom") : "leftTop" === s ? (d = u[0][0], f = u[1][1], i = (g = d - p) - 5, n = "right") : "leftBottom" === s ? (d = u[3][0], f = u[2][1], i = (g = d - p) - 5, n = "right") : (d = (u[1][0] + u[2][0]) / 2, f = (u[1][1] + u[2][1]) / 2, i = (g = d + p) + 5, n = "left");
                        o = [[d, f], [g, f]], r = f
                    }
                    c.label = {linePoints: o, x: i, y: r, verticalAlign: "middle", textAlign: n, inside: h}
                }))
            }(n)
        }))
    }
}, function (e, t, n) {
    var i = n(2);
    n(197), n(407), n(408);
    var r = n(409);
    i.registerVisual(r)
}, function (e, t, n) {
    var i = n(1), r = n(5);
    e.exports = function (e) {
        !function (e) {
            if (e.parallel) return;
            var t = !1;
            i.each(e.series, (function (e) {
                e && "parallel" === e.type && (t = !0)
            })), t && (e.parallel = [{}])
        }(e), function (e) {
            var t = r.normalizeToArray(e.parallelAxis);
            i.each(t, (function (t) {
                if (i.isObject(t)) {
                    var n = t.parallelIndex || 0, o = r.normalizeToArray(e.parallel)[n];
                    o && o.parallelAxisDefault && i.merge(t, o.parallelAxisDefault, !1)
                }
            }))
        }(e)
    }
}, function (e, t, n) {
    var i = n(1), r = n(16), o = n(7), a = n(22), s = n(401), l = n(3), c = n(4), u = n(53), h = i.each, d = Math.min,
        f = Math.max, g = Math.floor, p = Math.ceil, m = c.round, v = Math.PI;

    function y(e, t, n) {
        this._axesMap = i.createHashMap(), this._axesLayout = {}, this.dimensions = e.dimensions, this._rect, this._model = e, this._init(e, t, n)
    }

    function b(e, t) {
        return d(f(e, t[0]), t[1])
    }

    function C(e, t) {
        var n = t.layoutLength / (t.axisCount - 1);
        return {position: n * e, axisNameAvailableWidth: n, axisLabelShow: !0}
    }

    function w(e, t) {
        var n, i, r = t.layoutLength, o = t.axisExpandWidth, a = t.axisCount, s = t.axisCollapseWidth,
            l = t.winInnerIndices, c = s, u = !1;
        return e < l[0] ? (n = e * s, i = s) : e <= l[1] ? (n = t.axisExpandWindow0Pos + e * o - t.axisExpandWindow[0], c = o, u = !0) : (n = r - (a - 1 - e) * s, i = s), {
            position: n,
            axisNameAvailableWidth: c,
            axisLabelShow: u,
            nameTruncateMaxWidth: i
        }
    }

    y.prototype = {
        type: "parallel", constructor: y, _init: function (e, t, n) {
            var i = e.dimensions, r = e.parallelAxisIndex;
            h(i, (function (e, n) {
                var i = r[n], o = t.getComponent("parallelAxis", i),
                    l = this._axesMap.set(e, new s(e, a.createScaleByModel(o), [0, 0], o.get("type"), i)),
                    c = "category" === l.type;
                l.onBand = c && o.get("boundaryGap"), l.inverse = o.get("inverse"), o.axis = l, l.model = o, l.coordinateSystem = o.coordinateSystem = this
            }), this)
        }, update: function (e, t) {
            this._updateAxesFromSeries(this._model, e)
        }, containPoint: function (e) {
            var t = this._makeLayoutInfo(), n = t.axisBase, i = t.layoutBase, r = t.pixelDimIndex, o = e[1 - r],
                a = e[r];
            return o >= n && o <= n + t.axisLength && a >= i && a <= i + t.layoutLength
        }, getModel: function () {
            return this._model
        }, _updateAxesFromSeries: function (e, t) {
            t.eachSeries((function (n) {
                if (e.contains(n, t)) {
                    var i = n.getData();
                    h(this.dimensions, (function (e) {
                        var t = this._axesMap.get(e);
                        t.scale.unionExtentFromData(i, i.mapDimension(e)), a.niceScaleExtent(t.scale, t.model)
                    }), this)
                }
            }), this)
        }, resize: function (e, t) {
            this._rect = o.getLayoutRect(e.getBoxLayoutParams(), {
                width: t.getWidth(),
                height: t.getHeight()
            }), this._layoutAxes()
        }, getRect: function () {
            return this._rect
        }, _makeLayoutInfo: function () {
            var e, t = this._model, n = this._rect, i = ["x", "y"], r = ["width", "height"], o = t.get("layout"),
                a = "horizontal" === o ? 0 : 1, s = n[r[a]], l = [0, s], c = this.dimensions.length,
                u = b(t.get("axisExpandWidth"), l), h = b(t.get("axisExpandCount") || 0, [0, c]),
                d = t.get("axisExpandable") && c > 3 && c > h && h > 1 && u > 0 && s > 0, f = t.get("axisExpandWindow");
            f ? (e = b(f[1] - f[0], l), f[1] = f[0] + e) : (e = b(u * (h - 1), l), (f = [u * (t.get("axisExpandCenter") || g(c / 2)) - e / 2])[1] = f[0] + e);
            var v = (s - e) / (c - h);
            v < 3 && (v = 0);
            var y = [g(m(f[0] / u, 1)) + 1, p(m(f[1] / u, 1)) - 1], C = v / u * f[0];
            return {
                layout: o,
                pixelDimIndex: a,
                layoutBase: n[i[a]],
                layoutLength: s,
                axisBase: n[i[1 - a]],
                axisLength: n[r[1 - a]],
                axisExpandable: d,
                axisExpandWidth: u,
                axisCollapseWidth: v,
                axisExpandWindow: f,
                axisCount: c,
                winInnerIndices: y,
                axisExpandWindow0Pos: C
            }
        }, _layoutAxes: function () {
            var e = this._rect, t = this._axesMap, n = this.dimensions, i = this._makeLayoutInfo(), o = i.layout;
            t.each((function (e) {
                var t = [0, i.axisLength], n = e.inverse ? 1 : 0;
                e.setExtent(t[n], t[1 - n])
            })), h(n, (function (t, n) {
                var a = (i.axisExpandable ? w : C)(n, i),
                    s = {horizontal: {x: a.position, y: i.axisLength}, vertical: {x: 0, y: a.position}},
                    l = {horizontal: v / 2, vertical: 0}, c = [s[o].x + e.x, s[o].y + e.y], u = l[o], h = r.create();
                r.rotate(h, h, u), r.translate(h, h, c), this._axesLayout[t] = {
                    position: c,
                    rotation: u,
                    transform: h,
                    axisNameAvailableWidth: a.axisNameAvailableWidth,
                    axisLabelShow: a.axisLabelShow,
                    nameTruncateMaxWidth: a.nameTruncateMaxWidth,
                    tickDirection: 1,
                    labelDirection: 1
                }
            }), this)
        }, getAxis: function (e) {
            return this._axesMap.get(e)
        }, dataToPoint: function (e, t) {
            return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(e), t)
        }, eachActiveState: function (e, t, n, r) {
            null == n && (n = 0), null == r && (r = e.count());
            var o = this._axesMap, a = this.dimensions, s = [], l = [];
            i.each(a, (function (t) {
                s.push(e.mapDimension(t)), l.push(o.get(t).model)
            }));
            for (var c = this.hasAxisBrushed(), u = n; u < r; u++) {
                var h;
                if (c) {
                    h = "active";
                    for (var d = e.getValues(s, u), f = 0, g = a.length; f < g; f++) {
                        if ("inactive" === l[f].getActiveState(d[f])) {
                            h = "inactive";
                            break
                        }
                    }
                } else h = "normal";
                t(h, u)
            }
        }, hasAxisBrushed: function () {
            for (var e = this.dimensions, t = this._axesMap, n = !1, i = 0, r = e.length; i < r; i++) "normal" !== t.get(e[i]).model.getActiveState() && (n = !0);
            return n
        }, axisCoordToPoint: function (e, t) {
            var n = this._axesLayout[t];
            return l.applyTransform([e, 0], n.transform)
        }, getAxisLayout: function (e) {
            return i.clone(this._axesLayout[e])
        }, getSlidedAxisExpandWindow: function (e) {
            var t = this._makeLayoutInfo(), n = t.pixelDimIndex, i = t.axisExpandWindow.slice(), r = i[1] - i[0],
                o = [0, t.axisExpandWidth * (t.axisCount - 1)];
            if (!this.containPoint(e)) return {behavior: "none", axisExpandWindow: i};
            var a, s = e[n] - t.layoutBase - t.axisExpandWindow0Pos, l = "slide", c = t.axisCollapseWidth,
                h = this._model.get("axisExpandSlideTriggerArea"), g = null != h[0];
            if (c) g && c && s < r * h[0] ? (l = "jump", a = s - r * h[2]) : g && c && s > r * (1 - h[0]) ? (l = "jump", a = s - r * (1 - h[2])) : (a = s - r * h[1]) >= 0 && (a = s - r * (1 - h[1])) <= 0 && (a = 0), (a *= t.axisExpandWidth / c) ? u(a, i, o, "all") : l = "none"; else {
                r = i[1] - i[0];
                (i = [f(0, o[1] * s / r - r / 2)])[1] = d(o[1], i[0] + r), i[0] = i[1] - r
            }
            return {axisExpandWindow: i, behavior: l}
        }
    };
    var I = y;
    e.exports = I
}, function (e, t, n) {
    var i = n(1), r = n(34), o = function (e, t, n, i, o) {
        r.call(this, e, t, n), this.type = i || "value", this.axisIndex = o
    };
    o.prototype = {
        constructor: o, model: null, isHorizontal: function () {
            return "horizontal" !== this.coordinateSystem.getModel().get("layout")
        }
    }, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1), r = n(14);
    n(403);
    var o = r.extend({
        type: "parallel",
        dependencies: ["parallelAxis"],
        coordinateSystem: null,
        dimensions: null,
        parallelAxisIndex: null,
        layoutMode: "box",
        defaultOption: {
            zlevel: 0,
            z: 0,
            left: 80,
            top: 60,
            right: 80,
            bottom: 60,
            layout: "horizontal",
            axisExpandable: !1,
            axisExpandCenter: null,
            axisExpandCount: 0,
            axisExpandWidth: 50,
            axisExpandRate: 17,
            axisExpandDebounce: 50,
            axisExpandSlideTriggerArea: [-.15, .05, .4],
            axisExpandTriggerOn: "click",
            parallelAxisDefault: null
        },
        init: function () {
            r.prototype.init.apply(this, arguments), this.mergeOption({})
        },
        mergeOption: function (e) {
            var t = this.option;
            e && i.merge(t, e, !0), this._initDimensions()
        },
        contains: function (e, t) {
            var n = e.get("parallelIndex");
            return null != n && t.getComponent("parallel", n) === this
        },
        setAxisExpand: function (e) {
            i.each(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], (function (t) {
                e.hasOwnProperty(t) && (this.option[t] = e[t])
            }), this)
        },
        _initDimensions: function () {
            var e = this.dimensions = [], t = this.parallelAxisIndex = [],
                n = i.filter(this.dependentModels.parallelAxis, (function (e) {
                    return (e.get("parallelIndex") || 0) === this.componentIndex
                }), this);
            i.each(n, (function (n) {
                e.push("dim" + n.get("dim")), t.push(n.componentIndex)
            }))
        }
    });
    e.exports = o
}, function (e, t, n) {
    var i = n(1), r = n(14), o = n(47), a = n(91), s = n(4), l = n(51), c = r.extend({
        type: "baseParallelAxis", axis: null, activeIntervals: [], getAreaSelectStyle: function () {
            return o([["fill", "color"], ["lineWidth", "borderWidth"], ["stroke", "borderColor"], ["width", "width"], ["opacity", "opacity"]])(this.getModel("areaSelectStyle"))
        }, setActiveIntervals: function (e) {
            var t = this.activeIntervals = i.clone(e);
            if (t) for (var n = t.length - 1; n >= 0; n--) s.asc(t[n])
        }, getActiveState: function (e) {
            var t = this.activeIntervals;
            if (!t.length) return "normal";
            if (null == e || isNaN(e)) return "inactive";
            if (1 === t.length) {
                var n = t[0];
                if (n[0] <= e && e <= n[1]) return "active"
            } else for (var i = 0, r = t.length; i < r; i++) if (t[i][0] <= e && e <= t[i][1]) return "active";
            return "inactive"
        }
    });
    i.merge(c.prototype, l), a("parallel", c, (function (e, t) {
        return t.type || (t.data ? "category" : "value")
    }), {
        type: "value",
        dim: null,
        areaSelectStyle: {
            width: 20,
            borderWidth: 1,
            borderColor: "rgba(160,197,232)",
            color: "rgba(160,197,232)",
            opacity: .3
        },
        realtime: !0,
        z: 10
    });
    var u = c;
    e.exports = u
}, function (e, t, n) {
    n(198), n(405), n(406)
}, function (e, t, n) {
    var i = n(2);
    i.registerAction({type: "axisAreaSelect", event: "axisAreaSelected"}, (function (e, t) {
        t.eachComponent({mainType: "parallelAxis", query: e}, (function (t) {
            t.axis.model.setActiveIntervals(e.intervals)
        }))
    })), i.registerAction("parallelAxisExpand", (function (e, t) {
        t.eachComponent({mainType: "parallel", query: e}, (function (t) {
            t.setAxisExpand(e)
        }))
    }))
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(35), a = n(123), s = n(199), l = n(3), c = ["axisLine", "axisTickLabel", "axisName"],
        u = i.extendComponentView({
            type: "parallelAxis", init: function (e, t) {
                u.superApply(this, "init", arguments), (this._brushController = new a(t.getZr())).on("brush", r.bind(this._onBrush, this))
            }, render: function (e, t, n, i) {
                if (!function (e, t, n) {
                    return n && "axisAreaSelect" === n.type && t.findComponents({
                        mainType: "parallelAxis",
                        query: n
                    })[0] === e
                }(e, t, i)) {
                    this.axisModel = e, this.api = n, this.group.removeAll();
                    var a = this._axisGroup;
                    if (this._axisGroup = new l.Group, this.group.add(this._axisGroup), e.get("show")) {
                        var s = function (e, t) {
                                return t.getComponent("parallel", e.get("parallelIndex"))
                            }(e, t), u = s.coordinateSystem, h = e.getAreaSelectStyle(), d = h.width, f = e.axis.dim,
                            g = u.getAxisLayout(f), p = r.extend({strokeContainThreshold: d}, g), m = new o(e, p);
                        r.each(c, m.add, m), this._axisGroup.add(m.getGroup()), this._refreshBrushController(p, h, e, s, d, n);
                        var v = i && !1 === i.animation ? null : e;
                        l.groupTransition(a, this._axisGroup, v)
                    }
                }
            }, _refreshBrushController: function (e, t, n, i, o, a) {
                var c = n.axis.getExtent(), u = c[1] - c[0], h = Math.min(30, .1 * Math.abs(u)),
                    d = l.BoundingRect.create({x: c[0], y: -o / 2, width: u, height: o});
                d.x -= h, d.width += 2 * h, this._brushController.mount({
                    enableGlobalPan: !0,
                    rotation: e.rotation,
                    position: e.position
                }).setPanels([{
                    panelId: "pl",
                    clipPath: s.makeRectPanelClipPath(d),
                    isTargetByCursor: s.makeRectIsTargetByCursor(d, a, i),
                    getLinearBrushOtherExtent: s.makeLinearBrushOtherExtent(d, 0)
                }]).enableBrush({brushType: "lineX", brushStyle: t, removeOnClick: !0}).updateCovers(function (e) {
                    var t = e.axis;
                    return r.map(e.activeIntervals, (function (e) {
                        return {
                            brushType: "lineX",
                            panelId: "pl",
                            range: [t.dataToCoord(e[0], !0), t.dataToCoord(e[1], !0)]
                        }
                    }))
                }(n))
            }, _onBrush: function (e, t) {
                var n = this.axisModel, i = n.axis, o = r.map(e, (function (e) {
                    return [i.coordToData(e.range[0], !0), i.coordToData(e.range[1], !0)]
                }));
                (!n.option.realtime === t.isEnd || t.removeOnClick) && this.api.dispatchAction({
                    type: "axisAreaSelect",
                    parallelAxisId: n.id,
                    intervals: o
                })
            }, dispose: function () {
                this._brushController.dispose()
            }
        });
    var h = u;
    e.exports = h
}, function (e, t, n) {
    var i = n(1), r = i.each, o = i.createHashMap, a = n(15), s = n(30), l = a.extend({
        type: "series.parallel",
        dependencies: ["parallel"],
        visualColorAccessPath: "lineStyle.color",
        getInitialData: function (e, t) {
            var n = this.getSource();
            return function (e, t) {
                if (e.encodeDefine) return;
                var n = t.ecModel.getComponent("parallel", t.get("parallelIndex"));
                if (!n) return;
                var i = e.encodeDefine = o();
                r(n.dimensions, (function (e) {
                    var t = +e.replace("dim", "");
                    i.set(e, t)
                }))
            }(n, this), s(n, this)
        },
        getRawIndicesByActiveState: function (e) {
            var t = this.coordinateSystem, n = this.getData(), i = [];
            return t.eachActiveState(n, (function (t, r) {
                e === t && i.push(n.getRawIndex(r))
            })), i
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "parallel",
            parallelIndex: 0,
            label: {show: !1},
            inactiveOpacity: .05,
            activeOpacity: 1,
            lineStyle: {width: 1, opacity: .45, type: "solid"},
            emphasis: {label: {show: !1}},
            progressive: 500,
            smooth: !1,
            animationEasing: "linear"
        }
    });
    e.exports = l
}, function (e, t, n) {
    var i = n(3), r = n(26);

    function o(e, t, n, i) {
        for (var r, o = [], a = 0; a < n.length; a++) {
            var s = n[a], l = e.get(e.mapDimension(s), t);
            r = l, ("category" === i.getAxis(s).type ? null == r : null == r || isNaN(r)) || o.push(i.dataToPoint(l, s))
        }
        return o
    }

    function a(e, t, n, r, a) {
        var s = o(e, n, r, a), l = new i.Polyline({shape: {points: s}, silent: !0, z2: 10});
        return t.add(l), e.setItemGraphicEl(n, l), l
    }

    function s(e) {
        var t = e.get("smooth", !0);
        return !0 === t && (t = .3), {lineStyle: e.getModel("lineStyle").getLineStyle(), smooth: null != t ? t : .3}
    }

    function l(e, t, n, i) {
        var r = i.lineStyle;
        t.hasItemOption && (r = t.getItemModel(n).getModel("lineStyle").getLineStyle());
        e.useStyle(r);
        var o = e.style;
        o.fill = null, o.stroke = t.getItemVisual(n, "color"), o.opacity = t.getItemVisual(n, "opacity"), i.smooth && (e.shape.smooth = i.smooth)
    }

    var c = r.extend({
        type: "parallel", init: function () {
            this._dataGroup = new i.Group, this.group.add(this._dataGroup), this._data, this._initialized
        }, render: function (e, t, n, r) {
            var c = this._dataGroup, u = e.getData(), h = this._data, d = e.coordinateSystem, f = d.dimensions,
                g = s(e);
            if (u.diff(h).add((function (e) {
                l(a(u, c, e, f, d), u, e, g)
            })).update((function (t, n) {
                var a = h.getItemGraphicEl(n), s = o(u, t, f, d);
                u.setItemGraphicEl(t, a);
                var c = r && !1 === r.animation ? null : e;
                i.updateProps(a, {shape: {points: s}}, c, t), l(a, u, t, g)
            })).remove((function (e) {
                var t = h.getItemGraphicEl(e);
                c.remove(t)
            })).execute(), !this._initialized) {
                this._initialized = !0;
                var p = function (e, t, n) {
                    var r = e.model, o = e.getRect(),
                        a = new i.Rect({shape: {x: o.x, y: o.y, width: o.width, height: o.height}}),
                        s = "horizontal" === r.get("layout") ? "width" : "height";
                    return a.setShape(s, 0), i.initProps(a, {shape: {width: o.width, height: o.height}}, t, n), a
                }(d, e, (function () {
                    setTimeout((function () {
                        c.removeClipPath()
                    }))
                }));
                c.setClipPath(p)
            }
            this._data = u
        }, incrementalPrepareRender: function (e, t, n) {
            this._initialized = !0, this._data = null, this._dataGroup.removeAll()
        }, incrementalRender: function (e, t, n) {
            for (var i = t.getData(), r = t.coordinateSystem, o = r.dimensions, c = s(t), u = e.start; u < e.end; u++) {
                var h = a(i, this._dataGroup, u, o, r);
                h.incremental = !0, l(h, i, u, c)
            }
        }, dispose: function () {
        }, remove: function () {
            this._dataGroup && this._dataGroup.removeAll(), this._data = null
        }
    });
    e.exports = c
}, function (e, t) {
    var n = ["lineStyle", "normal", "opacity"], i = {
        seriesType: "parallel", reset: function (e, t, i) {
            var r = e.getModel("itemStyle"), o = e.getModel("lineStyle"), a = t.get("color"),
                s = o.get("color") || r.get("color") || a[e.seriesIndex % a.length], l = e.get("inactiveOpacity"),
                c = e.get("activeOpacity"), u = e.getModel("lineStyle").getLineStyle(), h = e.coordinateSystem,
                d = e.getData(), f = {normal: u.opacity, active: c, inactive: l};
            return d.setVisual("color", s), {
                progress: function (e, t) {
                    h.eachActiveState(t, (function (e, i) {
                        var r = f[e];
                        if ("normal" === e && t.hasItemOption) {
                            var o = t.getItemModel(i).get(n, !0);
                            null != o && (r = o)
                        }
                        t.setItemVisual(i, "opacity", r)
                    }), e.start, e.end)
                }
            }
        }
    };
    e.exports = i
}, function (e, t, n) {
    var i = n(2);
    n(411), n(412), n(413);
    var r = n(414), o = n(415);
    i.registerLayout(r), i.registerVisual(o)
}, function (e, t, n) {
    var i = n(15), r = n(193), o = n(8).encodeHTML, a = n(13), s = (n(6).__DEV__, i.extend({
        type: "series.sankey",
        layoutInfo: null,
        levelModels: null,
        getInitialData: function (e, t) {
            for (var n = e.edges || e.links, i = e.data || e.nodes, o = e.levels, s = this.levelModels = {}, l = 0; l < o.length; l++) null != o[l].depth && o[l].depth >= 0 && (s[o[l].depth] = new a(o[l], this, t));
            if (i && n) return r(i, n, this, !0, (function (e, t) {
                e.wrapMethod("getItemModel", (function (e, t) {
                    return e.customizeGetParent((function (e) {
                        var n = this.parentModel, i = n.getData().getItemLayout(t).depth;
                        return n.levelModels[i] || this.parentModel
                    })), e
                })), t.wrapMethod("getItemModel", (function (e, t) {
                    return e.customizeGetParent((function (e) {
                        var n = this.parentModel, i = n.getGraph().getEdgeByIndex(t).node1.getLayout().depth;
                        return n.levelModels[i] || this.parentModel
                    })), e
                }))
            })).data
        },
        setNodePosition: function (e, t) {
            var n = this.option.data[e];
            n.localX = t[0], n.localY = t[1]
        },
        getGraph: function () {
            return this.getData().graph
        },
        getEdgeData: function () {
            return this.getGraph().edgeData
        },
        formatTooltip: function (e, t, n) {
            if ("edge" === n) {
                var i = this.getDataParams(e, n), r = i.data, a = r.source + " -- " + r.target;
                return i.value && (a += " : " + i.value), o(a)
            }
            if ("node" === n) {
                var l = this.getGraph().getNodeByIndex(e).getLayout().value, c = this.getDataParams(e, n).data.name;
                if (l) a = c + " : " + l;
                return o(a)
            }
            return s.superCall(this, "formatTooltip", e, t)
        },
        optionUpdated: function () {
            var e = this.option;
            !0 === e.focusNodeAdjacency && (e.focusNodeAdjacency = "allEdges")
        },
        getDataParams: function (e, t) {
            var n = s.superCall(this, "getDataParams", e, t);
            if (null == n.value && "node" === t) {
                var i = this.getGraph().getNodeByIndex(e).getLayout().value;
                n.value = i
            }
            return n
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "view",
            layout: null,
            left: "5%",
            top: "5%",
            right: "20%",
            bottom: "5%",
            orient: "horizontal",
            nodeWidth: 20,
            nodeGap: 8,
            draggable: !0,
            focusNodeAdjacency: !1,
            layoutIterations: 32,
            label: {show: !0, position: "right", color: "#000", fontSize: 12},
            levels: [],
            nodeAlign: "justify",
            itemStyle: {borderWidth: 1, borderColor: "#333"},
            lineStyle: {color: "#314656", opacity: .2, curveness: .5},
            emphasis: {label: {show: !0}, lineStyle: {opacity: .5}},
            animationEasing: "linear",
            animationDuration: 1e3
        }
    })), l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(3), r = n(2), o = n(1), a = ["itemStyle", "opacity"], s = ["emphasis", "itemStyle", "opacity"],
        l = ["lineStyle", "opacity"], c = ["emphasis", "lineStyle", "opacity"];

    function u(e, t) {
        return e.getVisual("opacity") || e.getModel().get(t)
    }

    function h(e, t, n) {
        var i = e.getGraphicEl(), r = u(e, t);
        null != n && (null == r && (r = 1), r *= n), i.downplay && i.downplay(), i.traverse((function (e) {
            "group" !== e.type && e.setStyle("opacity", r)
        }))
    }

    function d(e, t) {
        var n = u(e, t), i = e.getGraphicEl();
        i.traverse((function (e) {
            "group" !== e.type && e.setStyle("opacity", n)
        })), i.highlight && i.highlight()
    }

    var f = i.extendShape({
        shape: {
            x1: 0,
            y1: 0,
            x2: 0,
            y2: 0,
            cpx1: 0,
            cpy1: 0,
            cpx2: 0,
            cpy2: 0,
            extent: 0,
            orient: ""
        }, buildPath: function (e, t) {
            var n = t.extent;
            e.moveTo(t.x1, t.y1), e.bezierCurveTo(t.cpx1, t.cpy1, t.cpx2, t.cpy2, t.x2, t.y2), "vertical" === t.orient ? (e.lineTo(t.x2 + n, t.y2), e.bezierCurveTo(t.cpx2 + n, t.cpy2, t.cpx1 + n, t.cpy1, t.x1 + n, t.y1)) : (e.lineTo(t.x2, t.y2 + n), e.bezierCurveTo(t.cpx2, t.cpy2 + n, t.cpx1, t.cpy1 + n, t.x1, t.y1 + n)), e.closePath()
        }, highlight: function () {
            this.trigger("emphasis")
        }, downplay: function () {
            this.trigger("normal")
        }
    }), g = r.extendChartView({
        type: "sankey", _model: null, _focusAdjacencyDisabled: !1, render: function (e, t, n) {
            var r = this, o = e.getGraph(), a = this.group, s = e.layoutInfo, l = s.width, c = s.height,
                u = e.getData(), h = e.getData("edge"), d = e.get("orient");
            this._model = e, a.removeAll(), a.attr("position", [s.x, s.y]), o.eachEdge((function (t) {
                var n = new f;
                n.dataIndex = t.dataIndex, n.seriesIndex = e.seriesIndex, n.dataType = "edge";
                var r, o, s, u, g, p, m, v, y = t.getModel("lineStyle"), b = y.get("curveness"),
                    C = t.node1.getLayout(), w = t.node1.getModel(), I = w.get("localX"), x = w.get("localY"),
                    A = t.node2.getLayout(), _ = t.node2.getModel(), S = _.get("localX"), k = _.get("localY"),
                    L = t.getLayout();
                switch (n.shape.extent = Math.max(1, L.dy), n.shape.orient = d, "vertical" === d ? (r = (null != I ? I * l : C.x) + L.sy, o = (null != x ? x * c : C.y) + C.dy, s = (null != S ? S * l : A.x) + L.ty, g = r, p = o * (1 - b) + (u = null != k ? k * c : A.y) * b, m = s, v = o * b + u * (1 - b)) : (r = (null != I ? I * l : C.x) + C.dx, o = (null != x ? x * c : C.y) + L.sy, g = r * (1 - b) + (s = null != S ? S * l : A.x) * b, p = o, m = r * b + s * (1 - b), v = u = (null != k ? k * c : A.y) + L.ty), n.setShape({
                    x1: r,
                    y1: o,
                    x2: s,
                    y2: u,
                    cpx1: g,
                    cpy1: p,
                    cpx2: m,
                    cpy2: v
                }), n.setStyle(y.getItemStyle()), n.style.fill) {
                    case"source":
                        n.style.fill = t.node1.getVisual("color");
                        break;
                    case"target":
                        n.style.fill = t.node2.getVisual("color")
                }
                i.setHoverStyle(n, t.getModel("emphasis.lineStyle").getItemStyle()), a.add(n), h.setItemGraphicEl(t.dataIndex, n)
            })), o.eachNode((function (t) {
                var n = t.getLayout(), r = t.getModel(), o = r.get("localX"), s = r.get("localY"),
                    h = r.getModel("label"), d = r.getModel("emphasis.label"), f = new i.Rect({
                        shape: {
                            x: null != o ? o * l : n.x,
                            y: null != s ? s * c : n.y,
                            width: n.dx,
                            height: n.dy
                        }, style: r.getModel("itemStyle").getItemStyle()
                    }), g = t.getModel("emphasis.itemStyle").getItemStyle();
                i.setLabelStyle(f.style, g, h, d, {
                    labelFetcher: e,
                    labelDataIndex: t.dataIndex,
                    defaultText: t.id,
                    isRectText: !0
                }), f.setStyle("fill", t.getVisual("color")), i.setHoverStyle(f, g), a.add(f), u.setItemGraphicEl(t.dataIndex, f), f.dataType = "node"
            })), u.eachItemGraphicEl((function (t, i) {
                var o = u.getItemModel(i);
                o.get("draggable") && (t.drift = function (t, o) {
                    r._focusAdjacencyDisabled = !0, this.shape.x += t, this.shape.y += o, this.dirty(), n.dispatchAction({
                        type: "dragNode",
                        seriesId: e.id,
                        dataIndex: u.getRawIndex(i),
                        localX: this.shape.x / l,
                        localY: this.shape.y / c
                    })
                }, t.ondragend = function () {
                    r._focusAdjacencyDisabled = !1
                }, t.draggable = !0, t.cursor = "move"), t.highlight = function () {
                    this.trigger("emphasis")
                }, t.downplay = function () {
                    this.trigger("normal")
                }, t.focusNodeAdjHandler && t.off("mouseover", t.focusNodeAdjHandler), t.unfocusNodeAdjHandler && t.off("mouseout", t.unfocusNodeAdjHandler), o.get("focusNodeAdjacency") && (t.on("mouseover", t.focusNodeAdjHandler = function () {
                    r._focusAdjacencyDisabled || (r._clearTimer(), n.dispatchAction({
                        type: "focusNodeAdjacency",
                        seriesId: e.id,
                        dataIndex: t.dataIndex
                    }))
                }), t.on("mouseout", t.unfocusNodeAdjHandler = function () {
                    r._focusAdjacencyDisabled || r._dispatchUnfocus(n)
                }))
            })), h.eachItemGraphicEl((function (t, i) {
                var o = h.getItemModel(i);
                t.focusNodeAdjHandler && t.off("mouseover", t.focusNodeAdjHandler), t.unfocusNodeAdjHandler && t.off("mouseout", t.unfocusNodeAdjHandler), o.get("focusNodeAdjacency") && (t.on("mouseover", t.focusNodeAdjHandler = function () {
                    r._focusAdjacencyDisabled || (r._clearTimer(), n.dispatchAction({
                        type: "focusNodeAdjacency",
                        seriesId: e.id,
                        edgeDataIndex: t.dataIndex
                    }))
                }), t.on("mouseout", t.unfocusNodeAdjHandler = function () {
                    r._focusAdjacencyDisabled || r._dispatchUnfocus(n)
                }))
            })), !this._data && e.get("animation") && a.setClipPath(function (e, t, n) {
                var r = new i.Rect({shape: {x: e.x - 10, y: e.y - 10, width: 0, height: e.height + 20}});
                return i.initProps(r, {shape: {width: e.width + 20}}, t, n), r
            }(a.getBoundingRect(), e, (function () {
                a.removeClipPath()
            }))), this._data = e.getData()
        }, dispose: function () {
            this._clearTimer()
        }, _dispatchUnfocus: function (e) {
            var t = this;
            this._clearTimer(), this._unfocusDelayTimer = setTimeout((function () {
                t._unfocusDelayTimer = null, e.dispatchAction({type: "unfocusNodeAdjacency", seriesId: t._model.id})
            }), 500)
        }, _clearTimer: function () {
            this._unfocusDelayTimer && (clearTimeout(this._unfocusDelayTimer), this._unfocusDelayTimer = null)
        }, focusNodeAdjacency: function (e, t, n, i) {
            var r = e.getData(), u = r.graph, f = i.dataIndex, g = r.getItemModel(f), p = i.edgeDataIndex;
            if (null != f || null != p) {
                var m = u.getNodeByIndex(f), v = u.getEdgeByIndex(p);
                if (u.eachNode((function (e) {
                    h(e, a, .1)
                })), u.eachEdge((function (e) {
                    h(e, l, .1)
                })), m) {
                    d(m, s);
                    var y = g.get("focusNodeAdjacency");
                    "outEdges" === y ? o.each(m.outEdges, (function (e) {
                        e.dataIndex < 0 || (d(e, c), d(e.node2, s))
                    })) : "inEdges" === y ? o.each(m.inEdges, (function (e) {
                        e.dataIndex < 0 || (d(e, c), d(e.node1, s))
                    })) : "allEdges" === y && o.each(m.edges, (function (e) {
                        e.dataIndex < 0 || (d(e, c), e.node1 !== m && d(e.node1, s), e.node2 !== m && d(e.node2, s))
                    }))
                }
                v && (d(v, c), d(v.node1, s), d(v.node2, s))
            }
        }, unfocusNodeAdjacency: function (e, t, n, i) {
            var r = e.getGraph();
            r.eachNode((function (e) {
                h(e, a)
            })), r.eachEdge((function (e) {
                h(e, l)
            }))
        }
    });
    e.exports = g
}, function (e, t, n) {
    var i = n(2);
    n(194), i.registerAction({type: "dragNode", event: "dragnode", update: "update"}, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "sankey", query: e}, (function (t) {
            t.setNodePosition(e.dataIndex, [e.localX, e.localY])
        }))
    }))
}, function (e, t, n) {
    var i = n(7), r = n(1), o = n(5).groupData;

    function a(e) {
        var t = e.hostGraph.data.getRawDataItem(e.dataIndex);
        return null != t.depth && t.depth >= 0
    }

    function s(e, t, n, i, o) {
        var a = "vertical" === o ? "x" : "y";
        r.each(e, (function (e) {
            var r, s, l;
            e.sort((function (e, t) {
                return e.getLayout()[a] - t.getLayout()[a]
            }));
            for (var c = 0, u = e.length, h = "vertical" === o ? "dx" : "dy", d = 0; d < u; d++) (l = c - (s = e[d]).getLayout()[a]) > 0 && (r = s.getLayout()[a] + l, "vertical" === o ? s.setLayout({x: r}, !0) : s.setLayout({y: r}, !0)), c = s.getLayout()[a] + s.getLayout()[h] + t;
            if ((l = c - t - ("vertical" === o ? i : n)) > 0) for (r = s.getLayout()[a] - l, "vertical" === o ? s.setLayout({x: r}, !0) : s.setLayout({y: r}, !0), c = r, d = u - 2; d >= 0; --d) (l = (s = e[d]).getLayout()[a] + s.getLayout()[h] + t - c) > 0 && (r = s.getLayout()[a] - l, "vertical" === o ? s.setLayout({x: r}, !0) : s.setLayout({y: r}, !0)), c = s.getLayout()[a]
        }))
    }

    function l(e, t, n) {
        r.each(e.slice().reverse(), (function (e) {
            r.each(e, (function (e) {
                if (e.outEdges.length) {
                    var i = p(e.outEdges, c, n) / p(e.outEdges, g, n);
                    if (isNaN(i)) {
                        var r = e.outEdges.length;
                        i = r ? p(e.outEdges, u, n) / r : 0
                    }
                    if ("vertical" === n) {
                        var o = e.getLayout().x + (i - f(e, n)) * t;
                        e.setLayout({x: o}, !0)
                    } else {
                        var a = e.getLayout().y + (i - f(e, n)) * t;
                        e.setLayout({y: a}, !0)
                    }
                }
            }))
        }))
    }

    function c(e, t) {
        return f(e.node2, t) * e.getValue()
    }

    function u(e, t) {
        return f(e.node2, t)
    }

    function h(e, t) {
        return f(e.node1, t) * e.getValue()
    }

    function d(e, t) {
        return f(e.node1, t)
    }

    function f(e, t) {
        return "vertical" === t ? e.getLayout().x + e.getLayout().dx / 2 : e.getLayout().y + e.getLayout().dy / 2
    }

    function g(e) {
        return e.getValue()
    }

    function p(e, t, n) {
        for (var i = 0, r = e.length, o = -1; ++o < r;) {
            var a = +t.call(e, e[o], n);
            isNaN(a) || (i += a)
        }
        return i
    }

    function m(e, t, n) {
        r.each(e, (function (e) {
            r.each(e, (function (e) {
                if (e.inEdges.length) {
                    var i = p(e.inEdges, h, n) / p(e.inEdges, g, n);
                    if (isNaN(i)) {
                        var r = e.inEdges.length;
                        i = r ? p(e.inEdges, d, n) / r : 0
                    }
                    if ("vertical" === n) {
                        var o = e.getLayout().x + (i - f(e, n)) * t;
                        e.setLayout({x: o}, !0)
                    } else {
                        var a = e.getLayout().y + (i - f(e, n)) * t;
                        e.setLayout({y: a}, !0)
                    }
                }
            }))
        }))
    }

    e.exports = function (e, t, n) {
        e.eachSeriesByType("sankey", (function (e) {
            var n = e.get("nodeWidth"), c = e.get("nodeGap"), u = function (e, t) {
                return i.getLayoutRect(e.getBoxLayoutParams(), {width: t.getWidth(), height: t.getHeight()})
            }(e, t);
            e.layoutInfo = u;
            var h = u.width, d = u.height, f = e.getGraph(), v = f.nodes, y = f.edges;
            !function (e) {
                r.each(e, (function (e) {
                    var t = p(e.outEdges, g), n = p(e.inEdges, g), i = e.getValue() || 0, r = Math.max(t, n, i);
                    e.setLayout({value: r}, !0)
                }))
            }(v), function (e, t, n, i, c, u, h, d, f) {
                (function (e, t, n, i, o, s, l) {
                    for (var c = [], u = [], h = [], d = [], f = 0, g = 0; g < t.length; g++) c[g] = 1;
                    for (g = 0; g < e.length; g++) u[g] = e[g].inEdges.length, 0 === u[g] && h.push(e[g]);
                    var p = -1;
                    for (; h.length;) {
                        for (var m = 0; m < h.length; m++) {
                            var v = h[m], y = v.hostGraph.data.getRawDataItem(v.dataIndex),
                                b = null != y.depth && y.depth >= 0;
                            b && y.depth > p && (p = y.depth), v.setLayout({depth: b ? y.depth : f}, !0), "vertical" === s ? v.setLayout({dy: n}, !0) : v.setLayout({dx: n}, !0);
                            for (var C = 0; C < v.outEdges.length; C++) {
                                var w = v.outEdges[C], I = t.indexOf(w);
                                c[I] = 0;
                                var x = w.node2, A = e.indexOf(x);
                                0 == --u[A] && d.indexOf(x) < 0 && d.push(x)
                            }
                        }
                        ++f, h = d, d = []
                    }
                    for (g = 0; g < c.length; g++) if (1 === c[g]) throw new Error("Sankey is a DAG, the original data has cycle!");
                    var _ = p > f - 1 ? p : f - 1;
                    l && "left" !== l && function (e, t, n, i) {
                        if ("right" === t) {
                            for (var o = [], s = e, l = 0; s.length;) {
                                for (var c = 0; c < s.length; c++) {
                                    var u = s[c];
                                    u.setLayout({skNodeHeight: l}, !0);
                                    for (var h = 0; h < u.inEdges.length; h++) {
                                        var d = u.inEdges[h];
                                        o.indexOf(d.node1) < 0 && o.push(d.node1)
                                    }
                                }
                                s = o, o = [], ++l
                            }
                            r.each(e, (function (e) {
                                a(e) || e.setLayout({depth: Math.max(0, i - e.getLayout().skNodeHeight)}, !0)
                            }))
                        } else "justify" === t && function (e, t) {
                            r.each(e, (function (e) {
                                a(e) || e.outEdges.length || e.setLayout({depth: t}, !0)
                            }))
                        }(e, i)
                    }(e, l, 0, _);
                    !function (e, t, n) {
                        r.each(e, (function (e) {
                            var i = e.getLayout().depth * t;
                            "vertical" === n ? e.setLayout({y: i}, !0) : e.setLayout({x: i}, !0)
                        }))
                    }(e, "vertical" === s ? (o - n) / _ : (i - n) / _, s)
                })(e, t, n, c, u, d, f), function (e, t, n, i, a, c, u) {
                    var h = function (e, t) {
                        var n = [], i = "vertical" === t ? "y" : "x", a = o(e, (function (e) {
                            return e.getLayout()[i]
                        }));
                        return a.keys.sort((function (e, t) {
                            return e - t
                        })), r.each(a.keys, (function (e) {
                            n.push(a.buckets.get(e))
                        })), n
                    }(e, u);
                    (function (e, t, n, i, o, a) {
                        var s = 1 / 0;
                        r.each(e, (function (e) {
                            var t = e.length, l = 0;
                            r.each(e, (function (e) {
                                l += e.getLayout().value
                            }));
                            var c = "vertical" === a ? (i - (t - 1) * o) / l : (n - (t - 1) * o) / l;
                            c < s && (s = c)
                        })), r.each(e, (function (e) {
                            r.each(e, (function (e, t) {
                                var n = e.getLayout().value * s;
                                "vertical" === a ? (e.setLayout({x: t}, !0), e.setLayout({dx: n}, !0)) : (e.setLayout({y: t}, !0), e.setLayout({dy: n}, !0))
                            }))
                        })), r.each(t, (function (e) {
                            var t = +e.getValue() * s;
                            e.setLayout({dy: t}, !0)
                        }))
                    })(h, t, n, i, a, u), s(h, a, n, i, u);
                    for (var d = 1; c > 0; c--) l(h, d *= .99, u), s(h, a, n, i, u), m(h, d, u), s(h, a, n, i, u)
                }(e, t, u, c, i, h, d), function (e, t) {
                    var n = "vertical" === t ? "x" : "y";
                    r.each(e, (function (e) {
                        e.outEdges.sort((function (e, t) {
                            return e.node2.getLayout()[n] - t.node2.getLayout()[n]
                        })), e.inEdges.sort((function (e, t) {
                            return e.node1.getLayout()[n] - t.node1.getLayout()[n]
                        }))
                    })), r.each(e, (function (e) {
                        var t = 0, n = 0;
                        r.each(e.outEdges, (function (e) {
                            e.setLayout({sy: t}, !0), t += e.getLayout().dy
                        })), r.each(e.inEdges, (function (e) {
                            e.setLayout({ty: n}, !0), n += e.getLayout().dy
                        }))
                    }))
                }(e, d)
            }(v, y, n, c, h, d, 0 !== r.filter(v, (function (e) {
                return 0 === e.getLayout().value
            })).length ? 0 : e.get("layoutIterations"), e.get("orient"), e.get("nodeAlign"))
        }))
    }
}, function (e, t, n) {
    var i = n(45), r = n(1);
    e.exports = function (e, t) {
        e.eachSeriesByType("sankey", (function (e) {
            var t = e.getGraph().nodes;
            if (t.length) {
                var n = 1 / 0, o = -1 / 0;
                r.each(t, (function (e) {
                    var t = e.getLayout().value;
                    t < n && (n = t), t > o && (o = t)
                })), r.each(t, (function (t) {
                    var r = new i({
                        type: "color",
                        mappingMethod: "linear",
                        dataExtent: [n, o],
                        visual: e.get("color")
                    }).mapValueToVisual(t.getLayout().value), a = t.getModel().get("itemStyle.color");
                    null != a ? t.setVisual("color", a) : t.setVisual("color", r)
                }))
            }
        }))
    }
}, function (e, t, n) {
    var i = n(2);
    n(417), n(418);
    var r = n(419), o = n(420);
    i.registerVisual(r), i.registerLayout(o)
}, function (e, t, n) {
    var i = n(1), r = n(15), o = n(200).seriesModelMixin, a = r.extend({
        type: "series.boxplot",
        dependencies: ["xAxis", "yAxis", "grid"],
        defaultValueDimensions: [{name: "min", defaultTooltip: !0}, {name: "Q1", defaultTooltip: !0}, {
            name: "median",
            defaultTooltip: !0
        }, {name: "Q3", defaultTooltip: !0}, {name: "max", defaultTooltip: !0}],
        dimensions: null,
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            hoverAnimation: !0,
            layout: null,
            boxWidth: [7, 50],
            itemStyle: {color: "#fff", borderWidth: 1},
            emphasis: {
                itemStyle: {
                    borderWidth: 2,
                    shadowBlur: 5,
                    shadowOffsetX: 2,
                    shadowOffsetY: 2,
                    shadowColor: "rgba(0,0,0,0.4)"
                }
            },
            animationEasing: "elasticOut",
            animationDuration: 800
        }
    });
    i.mixin(a, o, !0);
    var s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(26), o = n(3), a = n(11), s = ["itemStyle"], l = ["emphasis", "itemStyle"], c = r.extend({
        type: "boxplot", render: function (e, t, n) {
            var i = e.getData(), r = this.group, o = this._data;
            this._data || r.removeAll();
            var a = "horizontal" === e.get("layout") ? 1 : 0;
            i.diff(o).add((function (e) {
                if (i.hasValue(e)) {
                    var t = h(i.getItemLayout(e), i, e, a, !0);
                    i.setItemGraphicEl(e, t), r.add(t)
                }
            })).update((function (e, t) {
                var n = o.getItemGraphicEl(t);
                if (i.hasValue(e)) {
                    var s = i.getItemLayout(e);
                    n ? d(s, n, i, e) : n = h(s, i, e, a), r.add(n), i.setItemGraphicEl(e, n)
                } else r.remove(n)
            })).remove((function (e) {
                var t = o.getItemGraphicEl(e);
                t && r.remove(t)
            })).execute(), this._data = i
        }, remove: function (e) {
            var t = this.group, n = this._data;
            this._data = null, n && n.eachItemGraphicEl((function (e) {
                e && t.remove(e)
            }))
        }, dispose: i.noop
    }), u = a.extend({
        type: "boxplotBoxPath", shape: {}, buildPath: function (e, t) {
            var n = t.points, i = 0;
            for (e.moveTo(n[i][0], n[i][1]), i++; i < 4; i++) e.lineTo(n[i][0], n[i][1]);
            for (e.closePath(); i < n.length; i++) e.moveTo(n[i][0], n[i][1]), i++, e.lineTo(n[i][0], n[i][1])
        }
    });

    function h(e, t, n, i, r) {
        var o = e.ends, a = new u({shape: {points: r ? f(o, i, e) : o}});
        return d(e, a, t, n, r), a
    }

    function d(e, t, n, i, r) {
        var a = n.hostModel;
        (0, o[r ? "initProps" : "updateProps"])(t, {shape: {points: e.ends}}, a, i);
        var c = n.getItemModel(i), u = c.getModel(s), h = n.getItemVisual(i, "color"),
            d = u.getItemStyle(["borderColor"]);
        d.stroke = h, d.strokeNoScale = !0, t.useStyle(d), t.z2 = 100;
        var f = c.getModel(l).getItemStyle();
        o.setHoverStyle(t, f)
    }

    function f(e, t, n) {
        return i.map(e, (function (e) {
            return (e = e.slice())[t] = n.initBaseline, e
        }))
    }

    var g = c;
    e.exports = g
}, function (e, t) {
    var n = ["itemStyle", "borderColor"];
    e.exports = function (e, t) {
        var i = e.get("color");
        e.eachRawSeriesByType("boxplot", (function (t) {
            var r = i[t.seriesIndex % i.length], o = t.getData();
            o.setVisual({
                legendSymbol: "roundRect",
                color: t.get(n) || r
            }), e.isSeriesFiltered(t) || o.each((function (e) {
                var t = o.getItemModel(e);
                o.setItemVisual(e, {color: t.get(n, !0)})
            }))
        }))
    }
}, function (e, t, n) {
    var i = n(1), r = n(4).parsePercent, o = i.each;
    e.exports = function (e) {
        var t = function (e) {
            var t = [], n = [];
            return e.eachSeriesByType("boxplot", (function (e) {
                var r = e.getBaseAxis(), o = i.indexOf(n, r);
                o < 0 && (o = n.length, n[o] = r, t[o] = {axis: r, seriesModels: []}), t[o].seriesModels.push(e)
            })), t
        }(e);
        o(t, (function (e) {
            var t = e.seriesModels;
            t.length && (!function (e) {
                var t, n, a = e.axis, s = e.seriesModels, l = s.length, c = e.boxWidthList = [],
                    u = e.boxOffsetList = [], h = [];
                if ("category" === a.type) n = a.getBandWidth(); else {
                    var d = 0;
                    o(s, (function (e) {
                        d = Math.max(d, e.getData().count())
                    })), t = a.getExtent(), Math.abs(t[1] - t[0])
                }
                o(s, (function (e) {
                    var t = e.get("boxWidth");
                    i.isArray(t) || (t = [t, t]), h.push([r(t[0], n) || 0, r(t[1], n) || 0])
                }));
                var f = .8 * n - 2, g = f / l * .3, p = (f - g * (l - 1)) / l, m = p / 2 - f / 2;
                o(s, (function (e, t) {
                    u.push(m), m += g + p, c.push(Math.min(Math.max(p, h[t][0]), h[t][1]))
                }))
            }(e), o(t, (function (t, n) {
                !function (e, t, n) {
                    var i = e.coordinateSystem, r = e.getData(), o = n / 2,
                        a = "horizontal" === e.get("layout") ? 0 : 1, s = 1 - a, l = ["x", "y"],
                        c = r.mapDimension(l[a]), u = r.mapDimension(l[s], !0);
                    if (null == c || u.length < 5) return;
                    for (var h = 0; h < r.count(); h++) {
                        var d = r.get(c, h), f = b(d, u[2], h), g = b(d, u[0], h), p = b(d, u[1], h), m = b(d, u[3], h),
                            v = b(d, u[4], h), y = [];
                        C(y, p, 0), C(y, m, 1), y.push(g, p, v, m), w(y, g), w(y, v), w(y, f), r.setItemLayout(h, {
                            initBaseline: f[s],
                            ends: y
                        })
                    }

                    function b(e, n, o) {
                        var l, c = r.get(n, o), u = [];
                        return u[a] = e, u[s] = c, isNaN(e) || isNaN(c) ? l = [NaN, NaN] : (l = i.dataToPoint(u))[a] += t, l
                    }

                    function C(e, t, n) {
                        var i = t.slice(), r = t.slice();
                        i[a] += o, r[a] -= o, n ? e.push(i, r) : e.push(r, i)
                    }

                    function w(e, t) {
                        var n = t.slice(), i = t.slice();
                        n[a] -= o, i[a] += o, e.push(n, i)
                    }
                }(t, e.boxOffsetList[n], e.boxWidthList[n])
            })))
        }))
    }
}, function (e, t, n) {
    var i = n(2);
    n(422), n(423);
    var r = n(424), o = n(425), a = n(426);
    i.registerPreprocessor(r), i.registerVisual(o), i.registerLayout(a)
}, function (e, t, n) {
    var i = n(1), r = n(15), o = n(200).seriesModelMixin, a = r.extend({
        type: "series.candlestick",
        dependencies: ["xAxis", "yAxis", "grid"],
        defaultValueDimensions: [{name: "open", defaultTooltip: !0}, {
            name: "close",
            defaultTooltip: !0
        }, {name: "lowest", defaultTooltip: !0}, {name: "highest", defaultTooltip: !0}],
        dimensions: null,
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            hoverAnimation: !0,
            layout: null,
            clip: !0,
            itemStyle: {
                color: "#c23531",
                color0: "#314656",
                borderWidth: 1,
                borderColor: "#c23531",
                borderColor0: "#314656"
            },
            emphasis: {itemStyle: {borderWidth: 2}},
            barMaxWidth: null,
            barMinWidth: null,
            barWidth: null,
            large: !0,
            largeThreshold: 600,
            progressive: 3e3,
            progressiveThreshold: 1e4,
            progressiveChunkMode: "mod",
            animationUpdate: !1,
            animationEasing: "linear",
            animationDuration: 300
        },
        getShadowDim: function () {
            return "open"
        },
        brushSelector: function (e, t, n) {
            var i = t.getItemLayout(e);
            return i && n.rect(i.brushRect)
        }
    });
    i.mixin(a, o, !0);
    var s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(26), o = n(3), a = n(11), s = n(69).createClipPath, l = ["itemStyle"],
        c = ["emphasis", "itemStyle"], u = ["color", "color0", "borderColor", "borderColor0"], h = r.extend({
            type: "candlestick", render: function (e, t, n) {
                this.group.removeClipPath(), this._updateDrawMode(e), this._isLargeDraw ? this._renderLarge(e) : this._renderNormal(e)
            }, incrementalPrepareRender: function (e, t, n) {
                this._clear(), this._updateDrawMode(e)
            }, incrementalRender: function (e, t, n, i) {
                this._isLargeDraw ? this._incrementalRenderLarge(e, t) : this._incrementalRenderNormal(e, t)
            }, _updateDrawMode: function (e) {
                var t = e.pipelineContext.large;
                (null == this._isLargeDraw || t ^ this._isLargeDraw) && (this._isLargeDraw = t, this._clear())
            }, _renderNormal: function (e) {
                var t = e.getData(), n = this._data, i = this.group, r = t.getLayout("isSimpleBox"), a = e.get("clip", !0),
                    s = e.coordinateSystem, l = s.getArea && s.getArea();
                this._data || i.removeAll(), t.diff(n).add((function (n) {
                    if (t.hasValue(n)) {
                        var s, c = t.getItemLayout(n);
                        if (a && g(l, c)) return;
                        s = f(c, n, !0), o.initProps(s, {shape: {points: c.ends}}, e, n), p(s, t, n, r), i.add(s), t.setItemGraphicEl(n, s)
                    }
                })).update((function (s, c) {
                    var u = n.getItemGraphicEl(c);
                    if (t.hasValue(s)) {
                        var h = t.getItemLayout(s);
                        a && g(l, h) ? i.remove(u) : (u ? o.updateProps(u, {shape: {points: h.ends}}, e, s) : u = f(h, s), p(u, t, s, r), i.add(u), t.setItemGraphicEl(s, u))
                    } else i.remove(u)
                })).remove((function (e) {
                    var t = n.getItemGraphicEl(e);
                    t && i.remove(t)
                })).execute(), this._data = t
            }, _renderLarge: function (e) {
                this._clear(), y(e, this.group);
                var t = e.get("clip", !0) ? s(e.coordinateSystem, !1, e) : null;
                t ? this.group.setClipPath(t) : this.group.removeClipPath()
            }, _incrementalRenderNormal: function (e, t) {
                for (var n, i = t.getData(), r = i.getLayout("isSimpleBox"); null != (n = e.next());) {
                    var o;
                    p(o = f(i.getItemLayout(n), n), i, n, r), o.incremental = !0, this.group.add(o)
                }
            }, _incrementalRenderLarge: function (e, t) {
                y(t, this.group, !0)
            }, remove: function (e) {
                this._clear()
            }, _clear: function () {
                this.group.removeAll(), this._data = null
            }, dispose: i.noop
        }), d = a.extend({
            type: "normalCandlestickBox", shape: {}, buildPath: function (e, t) {
                var n = t.points;
                this.__simpleBox ? (e.moveTo(n[4][0], n[4][1]), e.lineTo(n[6][0], n[6][1])) : (e.moveTo(n[0][0], n[0][1]), e.lineTo(n[1][0], n[1][1]), e.lineTo(n[2][0], n[2][1]), e.lineTo(n[3][0], n[3][1]), e.closePath(), e.moveTo(n[4][0], n[4][1]), e.lineTo(n[5][0], n[5][1]), e.moveTo(n[6][0], n[6][1]), e.lineTo(n[7][0], n[7][1]))
            }
        });

    function f(e, t, n) {
        var i = e.ends;
        return new d({shape: {points: n ? m(i, e) : i}, z2: 100})
    }

    function g(e, t) {
        for (var n = !0, i = 0; i < t.ends.length; i++) if (e.contain(t.ends[i][0], t.ends[i][1])) {
            n = !1;
            break
        }
        return n
    }

    function p(e, t, n, i) {
        var r = t.getItemModel(n), a = r.getModel(l), s = t.getItemVisual(n, "color"),
            h = t.getItemVisual(n, "borderColor") || s, d = a.getItemStyle(u);
        e.useStyle(d), e.style.strokeNoScale = !0, e.style.fill = s, e.style.stroke = h, e.__simpleBox = i;
        var f = r.getModel(c).getItemStyle();
        o.setHoverStyle(e, f)
    }

    function m(e, t) {
        return i.map(e, (function (e) {
            return (e = e.slice())[1] = t.initBaseline, e
        }))
    }

    var v = a.extend({
        type: "largeCandlestickBox", shape: {}, buildPath: function (e, t) {
            for (var n = t.points, i = 0; i < n.length;) if (this.__sign === n[i++]) {
                var r = n[i++];
                e.moveTo(r, n[i++]), e.lineTo(r, n[i++])
            } else i += 3
        }
    });

    function y(e, t, n) {
        var i = e.getData(), r = i.getLayout("largePoints"), o = new v({shape: {points: r}, __sign: 1});
        t.add(o);
        var a = new v({shape: {points: r}, __sign: -1});
        t.add(a), b(1, o, e, i), b(-1, a, e, i), n && (o.incremental = !0, a.incremental = !0)
    }

    function b(e, t, n, i) {
        var r = e > 0 ? "P" : "N", o = i.getVisual("borderColor" + r) || i.getVisual("color" + r),
            a = n.getModel(l).getItemStyle(u);
        t.useStyle(a), t.style.fill = null, t.style.stroke = o
    }

    var C = h;
    e.exports = C
}, function (e, t, n) {
    var i = n(1);
    e.exports = function (e) {
        e && i.isArray(e.series) && i.each(e.series, (function (e) {
            i.isObject(e) && "k" === e.type && (e.type = "candlestick")
        }))
    }
}, function (e, t, n) {
    var i = n(49), r = ["itemStyle", "borderColor"], o = ["itemStyle", "borderColor0"], a = ["itemStyle", "color"],
        s = ["itemStyle", "color0"], l = {
            seriesType: "candlestick", plan: i(), performRawSeries: !0, reset: function (e, t) {
                if (e.getData().setVisual({
                    legendSymbol: "roundRect",
                    colorP: n(1, e),
                    colorN: n(-1, e),
                    borderColorP: i(1, e),
                    borderColorN: i(-1, e)
                }), !t.isSeriesFiltered(e)) return !e.pipelineContext.large && {
                    progress: function (e, t) {
                        var r;
                        for (; null != (r = e.next());) {
                            var o = t.getItemModel(r), a = t.getItemLayout(r).sign;
                            t.setItemVisual(r, {color: n(a, o), borderColor: i(a, o)})
                        }
                    }
                };

                function n(e, t) {
                    return t.get(e > 0 ? a : s)
                }

                function i(e, t) {
                    return t.get(e > 0 ? r : o)
                }
            }
        };
    e.exports = l
}, function (e, t, n) {
    var i = n(3).subPixelOptimize, r = n(49), o = n(4).parsePercent, a = n(1).retrieve2,
        s = "undefined" != typeof Float32Array ? Float32Array : Array, l = {
            seriesType: "candlestick", plan: r(), reset: function (e) {
                var t = e.coordinateSystem, n = e.getData(), r = function (e, t) {
                        var n, i = e.getBaseAxis(),
                            r = "category" === i.type ? i.getBandWidth() : (n = i.getExtent(), Math.abs(n[1] - n[0]) / t.count()),
                            s = o(a(e.get("barMaxWidth"), r), r), l = o(a(e.get("barMinWidth"), 1), r), c = e.get("barWidth");
                        return null != c ? o(c, r) : Math.max(Math.min(r / 2, s), l)
                    }(e, n), l = ["x", "y"], u = n.mapDimension(l[0]), h = n.mapDimension(l[1], !0), d = h[0], f = h[1],
                    g = h[2], p = h[3];
                if (n.setLayout({candleWidth: r, isSimpleBox: r <= 1.3}), !(null == u || h.length < 4)) return {
                    progress: e.pipelineContext.large ? function (e, n) {
                        var i, r, o = new s(4 * e.count), a = 0, l = [], h = [];
                        for (; null != (r = e.next());) {
                            var m = n.get(u, r), v = n.get(d, r), y = n.get(f, r), b = n.get(g, r), C = n.get(p, r);
                            isNaN(m) || isNaN(b) || isNaN(C) ? (o[a++] = NaN, a += 3) : (o[a++] = c(n, r, v, y, f), l[0] = m, l[1] = b, i = t.dataToPoint(l, null, h), o[a++] = i ? i[0] : NaN, o[a++] = i ? i[1] : NaN, l[1] = C, i = t.dataToPoint(l, null, h), o[a++] = i ? i[1] : NaN)
                        }
                        n.setLayout("largePoints", o)
                    } : function (e, n) {
                        var o;
                        for (; null != (o = e.next());) {
                            var a = n.get(u, o), s = n.get(d, o), l = n.get(f, o), h = n.get(g, o), m = n.get(p, o),
                                v = Math.min(s, l), y = Math.max(s, l), b = A(v, a), C = A(y, a), w = A(h, a), I = A(m, a),
                                x = [];
                            _(x, C, 0), _(x, b, 1), x.push(k(I), k(C), k(w), k(b)), n.setItemLayout(o, {
                                sign: c(n, o, s, l, f),
                                initBaseline: s > l ? C[1] : b[1],
                                ends: x,
                                brushRect: S(h, m, a)
                            })
                        }

                        function A(e, n) {
                            var i = [];
                            return i[0] = n, i[1] = e, isNaN(n) || isNaN(e) ? [NaN, NaN] : t.dataToPoint(i)
                        }

                        function _(e, t, n) {
                            var o = t.slice(), a = t.slice();
                            o[0] = i(o[0] + r / 2, 1, !1), a[0] = i(a[0] - r / 2, 1, !0), n ? e.push(o, a) : e.push(a, o)
                        }

                        function S(e, t, n) {
                            var i = A(e, n), o = A(t, n);
                            return i[0] -= r / 2, o[0] -= r / 2, {x: i[0], y: i[1], width: r, height: o[1] - i[1]}
                        }

                        function k(e) {
                            return e[0] = i(e[0], 1), e
                        }
                    }
                }
            }
        };

    function c(e, t, n, i, r) {
        return n > i ? -1 : n < i ? 1 : t > 0 ? e.get(r, t - 1) <= i ? 1 : -1 : 1
    }

    e.exports = l
}, function (e, t, n) {
    var i = n(2);
    n(428), n(429);
    var r = n(42), o = n(70);
    i.registerVisual(r("effectScatter", "circle")), i.registerLayout(o("effectScatter"))
}, function (e, t, n) {
    var i = n(30), r = n(15).extend({
        type: "series.effectScatter",
        dependencies: ["grid", "polar"],
        getInitialData: function (e, t) {
            return i(this.getSource(), this, {useEncodeDefaulter: !0})
        },
        brushSelector: "point",
        defaultOption: {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            effectType: "ripple",
            progressive: 0,
            showEffectOn: "render",
            rippleEffect: {period: 4, scale: 2.5, brushType: "fill"},
            symbolSize: 10
        }
    });
    e.exports = r
}, function (e, t, n) {
    var i = n(2), r = n(68), o = n(430), a = n(16), s = n(70), l = i.extendChartView({
        type: "effectScatter", init: function () {
            this._symbolDraw = new r(o)
        }, render: function (e, t, n) {
            var i = e.getData(), r = this._symbolDraw;
            r.updateData(i), this.group.add(r.group)
        }, updateTransform: function (e, t, n) {
            var i = e.getData();
            this.group.dirty();
            var r = s().reset(e);
            r.progress && r.progress({start: 0, end: i.count()}, i), this._symbolDraw.updateLayout(i)
        }, _updateGroupTransform: function (e) {
            var t = e.coordinateSystem;
            t && t.getRoamTransform && (this.group.transform = a.clone(t.getRoamTransform()), this.group.decomposeTransform())
        }, remove: function (e, t) {
            this._symbolDraw && this._symbolDraw.remove(t)
        }, dispose: function () {
        }
    });
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(20).createSymbol, o = n(3).Group, a = n(4).parsePercent, s = n(90);

    function l(e, t) {
        var n = t.rippleEffectColor || t.color;
        e.eachChild((function (e) {
            e.attr({
                z: t.z,
                zlevel: t.zlevel,
                style: {stroke: "stroke" === t.brushType ? n : null, fill: "fill" === t.brushType ? n : null}
            })
        }))
    }

    function c(e, t) {
        o.call(this);
        var n = new s(e, t), i = new o;
        this.add(n), this.add(i), i.beforeUpdate = function () {
            this.attr(n.getScale())
        }, this.updateData(e, t)
    }

    var u = c.prototype;
    u.stopEffectAnimation = function () {
        this.childAt(1).removeAll()
    }, u.startEffectAnimation = function (e) {
        for (var t = e.symbolType, n = e.color, i = this.childAt(1), o = 0; o < 3; o++) {
            var a = r(t, -1, -1, 2, 2, n);
            a.attr({style: {strokeNoScale: !0}, z2: 99, silent: !0, scale: [.5, .5]});
            var s = -o / 3 * e.period + e.effectOffset;
            a.animate("", !0).when(e.period, {scale: [e.rippleScale / 2, e.rippleScale / 2]}).delay(s).start(), a.animateStyle(!0).when(e.period, {opacity: 0}).delay(s).start(), i.add(a)
        }
        l(i, e)
    }, u.updateEffectAnimation = function (e) {
        for (var t = this._effectCfg, n = this.childAt(1), i = ["symbolType", "period", "rippleScale"], r = 0; r < i.length; r++) {
            var o = i[r];
            if (t[o] !== e[o]) return this.stopEffectAnimation(), void this.startEffectAnimation(e)
        }
        l(n, e)
    }, u.highlight = function () {
        this.trigger("emphasis")
    }, u.downplay = function () {
        this.trigger("normal")
    }, u.updateData = function (e, t) {
        var n = e.hostModel;
        this.childAt(0).updateData(e, t);
        var r = this.childAt(1), o = e.getItemModel(t), s = e.getItemVisual(t, "symbol"), l = function (e) {
            return i.isArray(e) || (e = [+e, +e]), e
        }(e.getItemVisual(t, "symbolSize")), c = e.getItemVisual(t, "color");
        r.attr("scale", l), r.traverse((function (e) {
            e.attr({fill: c})
        }));
        var u = o.getShallow("symbolOffset");
        if (u) {
            var h = r.position;
            h[0] = a(u[0], l[0]), h[1] = a(u[1], l[1])
        }
        var d = e.getItemVisual(t, "symbolRotate");
        r.rotation = (d || 0) * Math.PI / 180 || 0;
        var f = {};
        if (f.showEffectOn = n.get("showEffectOn"), f.rippleScale = o.get("rippleEffect.scale"), f.brushType = o.get("rippleEffect.brushType"), f.period = 1e3 * o.get("rippleEffect.period"), f.effectOffset = t / e.count(), f.z = o.getShallow("z") || 0, f.zlevel = o.getShallow("zlevel") || 0, f.symbolType = s, f.color = c, f.rippleEffectColor = o.get("rippleEffect.color"), this.off("mouseover").off("mouseout").off("emphasis").off("normal"), "render" === f.showEffectOn) this._effectCfg ? this.updateEffectAnimation(f) : this.startEffectAnimation(f), this._effectCfg = f; else {
            this._effectCfg = null, this.stopEffectAnimation();
            var g = this.childAt(0), p = function () {
                g.highlight(), "render" !== f.showEffectOn && this.startEffectAnimation(f)
            }, m = function () {
                g.downplay(), "render" !== f.showEffectOn && this.stopEffectAnimation()
            };
            this.on("mouseover", p, this).on("mouseout", m, this).on("emphasis", p, this).on("normal", m, this)
        }
        this._effectCfg = f
    }, u.fadeOut = function (e) {
        this.off("mouseover").off("mouseout").off("emphasis").off("normal"), e && e()
    }, i.inherits(c, o);
    var h = c;
    e.exports = h
}, function (e, t, n) {
    var i = n(2);
    n(432), n(433);
    var r = n(203), o = n(436);
    i.registerLayout(r), i.registerVisual(o)
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(15), r = n(19), o = n(1), a = o.concatArray, s = o.mergeAll, l = o.map, c = n(8).encodeHTML,
        u = (n(21), "undefined" == typeof Uint32Array ? Array : Uint32Array),
        h = "undefined" == typeof Float64Array ? Array : Float64Array;

    function d(e) {
        var t = e.data;
        t && t[0] && t[0][0] && t[0][0].coord && (e.data = l(t, (function (e) {
            var t = {coords: [e[0].coord, e[1].coord]};
            return e[0].name && (t.fromName = e[0].name), e[1].name && (t.toName = e[1].name), s([t, e[0], e[1]])
        })))
    }

    var f = i.extend({
        type: "series.lines",
        dependencies: ["grid", "polar"],
        visualColorAccessPath: "lineStyle.color",
        init: function (e) {
            e.data = e.data || [], d(e);
            var t = this._processFlatCoordsArray(e.data);
            this._flatCoords = t.flatCoords, this._flatCoordsOffset = t.flatCoordsOffset, t.flatCoords && (e.data = new Float32Array(t.count)), f.superApply(this, "init", arguments)
        },
        mergeOption: function (e) {
            if (e.data = e.data || [], d(e), e.data) {
                var t = this._processFlatCoordsArray(e.data);
                this._flatCoords = t.flatCoords, this._flatCoordsOffset = t.flatCoordsOffset, t.flatCoords && (e.data = new Float32Array(t.count))
            }
            f.superApply(this, "mergeOption", arguments)
        },
        appendData: function (e) {
            var t = this._processFlatCoordsArray(e.data);
            t.flatCoords && (this._flatCoords ? (this._flatCoords = a(this._flatCoords, t.flatCoords), this._flatCoordsOffset = a(this._flatCoordsOffset, t.flatCoordsOffset)) : (this._flatCoords = t.flatCoords, this._flatCoordsOffset = t.flatCoordsOffset), e.data = new Float32Array(t.count)), this.getRawData().appendData(e.data)
        },
        _getCoordsFromItemModel: function (e) {
            var t = this.getData().getItemModel(e);
            return t.option instanceof Array ? t.option : t.getShallow("coords")
        },
        getLineCoordsCount: function (e) {
            return this._flatCoordsOffset ? this._flatCoordsOffset[2 * e + 1] : this._getCoordsFromItemModel(e).length
        },
        getLineCoords: function (e, t) {
            if (this._flatCoordsOffset) {
                for (var n = this._flatCoordsOffset[2 * e], i = this._flatCoordsOffset[2 * e + 1], r = 0; r < i; r++) t[r] = t[r] || [], t[r][0] = this._flatCoords[n + 2 * r], t[r][1] = this._flatCoords[n + 2 * r + 1];
                return i
            }
            var o = this._getCoordsFromItemModel(e);
            for (r = 0; r < o.length; r++) t[r] = t[r] || [], t[r][0] = o[r][0], t[r][1] = o[r][1];
            return o.length
        },
        _processFlatCoordsArray: function (e) {
            var t = 0;
            if (this._flatCoords && (t = this._flatCoords.length), "number" == typeof e[0]) {
                for (var n = e.length, i = new u(n), r = new h(n), o = 0, a = 0, s = 0, l = 0; l < n;) {
                    s++;
                    var c = e[l++];
                    i[a++] = o + t, i[a++] = c;
                    for (var d = 0; d < c; d++) {
                        var f = e[l++], g = e[l++];
                        r[o++] = f, r[o++] = g
                    }
                }
                return {flatCoordsOffset: new Uint32Array(i.buffer, 0, a), flatCoords: r, count: s}
            }
            return {flatCoordsOffset: null, flatCoords: null, count: e.length}
        },
        getInitialData: function (e, t) {
            var n = new r(["value"], this);
            return n.hasItemOption = !1, n.initData(e.data, [], (function (e, t, i, r) {
                if (e instanceof Array) return NaN;
                n.hasItemOption = !0;
                var o = e.value;
                return null != o ? o instanceof Array ? o[r] : o : void 0
            })), n
        },
        formatTooltip: function (e) {
            var t = this.getData().getItemModel(e), n = t.get("name");
            if (n) return n;
            var i = t.get("fromName"), r = t.get("toName"), o = [];
            return null != i && o.push(i), null != r && o.push(r), c(o.join(" > "))
        },
        preventIncremental: function () {
            return !!this.get("effect.show")
        },
        getProgressive: function () {
            var e = this.option.progressive;
            return null == e ? this.option.large ? 1e4 : this.get("progressive") : e
        },
        getProgressiveThreshold: function () {
            var e = this.option.progressiveThreshold;
            return null == e ? this.option.large ? 2e4 : this.get("progressiveThreshold") : e
        },
        defaultOption: {
            coordinateSystem: "geo",
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            hoverAnimation: !0,
            xAxisIndex: 0,
            yAxisIndex: 0,
            symbol: ["none", "none"],
            symbolSize: [10, 10],
            geoIndex: 0,
            effect: {show: !1, period: 4, constantSpeed: 0, symbol: "circle", symbolSize: 3, loop: !0, trailLength: .2},
            large: !1,
            largeThreshold: 2e3,
            polyline: !1,
            clip: !0,
            label: {show: !1, position: "end"},
            lineStyle: {opacity: .5}
        }
    }), g = f;
    e.exports = g
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(120), o = n(201), a = n(121), s = n(202), l = n(434), c = n(435), u = n(203),
        h = n(69).createClipPath, d = i.extendChartView({
            type: "lines", init: function () {
            }, render: function (e, t, n) {
                var i = e.getData(), r = this._updateLineDraw(i, e), o = e.get("zlevel"), a = e.get("effect.trailLength"),
                    s = n.getZr(), l = "svg" === s.painter.getType();
                l || s.painter.getLayer(o).clear(!0), null == this._lastZlevel || l || s.configLayer(this._lastZlevel, {motionBlur: !1}), this._showEffect(e) && a && (l || s.configLayer(o, {
                    motionBlur: !0,
                    lastFrameAlpha: Math.max(Math.min(a / 10 + .9, 1), 0)
                })), r.updateData(i);
                var c = e.get("clip", !0) && h(e.coordinateSystem, !1, e);
                c ? this.group.setClipPath(c) : this.group.removeClipPath(), this._lastZlevel = o, this._finished = !0
            }, incrementalPrepareRender: function (e, t, n) {
                var i = e.getData();
                this._updateLineDraw(i, e).incrementalPrepareUpdate(i), this._clearLayer(n), this._finished = !1
            }, incrementalRender: function (e, t, n) {
                this._lineDraw.incrementalUpdate(e, t.getData()), this._finished = e.end === t.getData().count()
            }, updateTransform: function (e, t, n) {
                var i = e.getData(), r = e.pipelineContext;
                if (!this._finished || r.large || r.progressiveRender) return {update: !0};
                var o = u.reset(e);
                o.progress && o.progress({start: 0, end: i.count()}, i), this._lineDraw.updateLayout(), this._clearLayer(n)
            }, _updateLineDraw: function (e, t) {
                var n = this._lineDraw, i = this._showEffect(t), u = !!t.get("polyline"), h = t.pipelineContext.large;
                return n && i === this._hasEffet && u === this._isPolyline && h === this._isLargeDraw || (n && n.remove(), n = this._lineDraw = h ? new c : new r(u ? i ? l : s : i ? o : a), this._hasEffet = i, this._isPolyline = u, this._isLargeDraw = h, this.group.removeAll()), this.group.add(n.group), n
            }, _showEffect: function (e) {
                return !!e.get("effect.show")
            }, _clearLayer: function (e) {
                var t = e.getZr();
                "svg" === t.painter.getType() || null == this._lastZlevel || t.painter.getLayer(this._lastZlevel).clear(!0)
            }, remove: function (e, t) {
                this._lineDraw && this._lineDraw.remove(), this._lineDraw = null, this._clearLayer(t)
            }, dispose: function () {
            }
        });
    e.exports = d
}, function (e, t, n) {
    var i = n(202), r = n(1), o = n(201), a = n(9);

    function s(e, t, n) {
        o.call(this, e, t, n), this._lastFrame = 0, this._lastFramePercent = 0
    }

    var l = s.prototype;
    l.createLine = function (e, t, n) {
        return new i(e, t, n)
    }, l.updateAnimationPoints = function (e, t) {
        this._points = t;
        for (var n = [0], i = 0, r = 1; r < t.length; r++) {
            var o = t[r - 1], s = t[r];
            i += a.dist(o, s), n.push(i)
        }
        if (0 !== i) {
            for (r = 0; r < n.length; r++) n[r] /= i;
            this._offsets = n, this._length = i
        }
    }, l.getLineLength = function (e) {
        return this._length
    }, l.updateSymbolPosition = function (e) {
        var t = e.__t, n = this._points, i = this._offsets, r = n.length;
        if (i) {
            var o = this._lastFrame;
            if (t < this._lastFramePercent) {
                for (s = Math.min(o + 1, r - 1); s >= 0 && !(i[s] <= t); s--) ;
                s = Math.min(s, r - 2)
            } else {
                for (var s = o; s < r && !(i[s] > t); s++) ;
                s = Math.min(s - 1, r - 2)
            }
            a.lerp(e.position, n[s], n[s + 1], (t - i[s]) / (i[s + 1] - i[s]));
            var l = n[s + 1][0] - n[s][0], c = n[s + 1][1] - n[s][1];
            e.rotation = -Math.atan2(c, l) - Math.PI / 2, this._lastFrame = s, this._lastFramePercent = t, e.ignore = !1
        }
    }, r.inherits(s, o);
    var c = s;
    e.exports = c
}, function (e, t, n) {
    var i = n(3), r = n(108), o = n(156), a = n(157), s = i.extendShape({
        shape: {polyline: !1, curveness: 0, segs: []}, buildPath: function (e, t) {
            var n = t.segs, i = t.curveness;
            if (t.polyline) for (var r = 0; r < n.length;) {
                var o = n[r++];
                if (o > 0) {
                    e.moveTo(n[r++], n[r++]);
                    for (var a = 1; a < o; a++) e.lineTo(n[r++], n[r++])
                }
            } else for (r = 0; r < n.length;) {
                var s = n[r++], l = n[r++], c = n[r++], u = n[r++];
                if (e.moveTo(s, l), i > 0) {
                    var h = (s + c) / 2 - (l - u) * i, d = (l + u) / 2 - (c - s) * i;
                    e.quadraticCurveTo(h, d, c, u)
                } else e.lineTo(c, u)
            }
        }, findDataIndex: function (e, t) {
            var n = this.shape, i = n.segs, r = n.curveness;
            if (n.polyline) for (var s = 0, l = 0; l < i.length;) {
                var c = i[l++];
                if (c > 0) for (var u = i[l++], h = i[l++], d = 1; d < c; d++) {
                    var f = i[l++], g = i[l++];
                    if (o.containStroke(u, h, f, g)) return s
                }
                s++
            } else for (s = 0, l = 0; l < i.length;) {
                u = i[l++], h = i[l++], f = i[l++], g = i[l++];
                if (r > 0) {
                    var p = (u + f) / 2 - (h - g) * r, m = (h + g) / 2 - (f - u) * r;
                    if (a.containStroke(u, h, p, m, f, g)) return s
                } else if (o.containStroke(u, h, f, g)) return s;
                s++
            }
            return -1
        }
    });

    function l() {
        this.group = new i.Group
    }

    var c = l.prototype;
    c.isPersistent = function () {
        return !this._incremental
    }, c.updateData = function (e) {
        this.group.removeAll();
        var t = new s({rectHover: !0, cursor: "default"});
        t.setShape({segs: e.getLayout("linesPoints")}), this._setCommon(t, e), this.group.add(t), this._incremental = null
    }, c.incrementalPrepareUpdate = function (e) {
        this.group.removeAll(), this._clearIncremental(), e.count() > 5e5 ? (this._incremental || (this._incremental = new r({silent: !0})), this.group.add(this._incremental)) : this._incremental = null
    }, c.incrementalUpdate = function (e, t) {
        var n = new s;
        n.setShape({segs: t.getLayout("linesPoints")}), this._setCommon(n, t, !!this._incremental), this._incremental ? this._incremental.addDisplayable(n, !0) : (n.rectHover = !0, n.cursor = "default", n.__startIndex = e.start, this.group.add(n))
    }, c.remove = function () {
        this._clearIncremental(), this._incremental = null, this.group.removeAll()
    }, c._setCommon = function (e, t, n) {
        var i = t.hostModel;
        e.setShape({
            polyline: i.get("polyline"),
            curveness: i.get("lineStyle.curveness")
        }), e.useStyle(i.getModel("lineStyle").getLineStyle()), e.style.strokeNoScale = !0;
        var r = t.getVisual("color");
        r && e.setStyle("stroke", r), e.setStyle("fill"), n || (e.seriesIndex = i.seriesIndex, e.on("mousemove", (function (t) {
            e.dataIndex = null;
            var n = e.findDataIndex(t.offsetX, t.offsetY);
            n > 0 && (e.dataIndex = n + e.__startIndex)
        })))
    }, c._clearIncremental = function () {
        var e = this._incremental;
        e && e.clearDisplaybles()
    };
    var u = l;
    e.exports = u
}, function (e, t) {
    function n(e) {
        return e instanceof Array || (e = [e, e]), e
    }

    var i = "lineStyle.opacity".split("."), r = {
        seriesType: "lines", reset: function (e, t, r) {
            var o = n(e.get("symbol")), a = n(e.get("symbolSize")), s = e.getData();
            return s.setVisual("fromSymbol", o && o[0]), s.setVisual("toSymbol", o && o[1]), s.setVisual("fromSymbolSize", a && a[0]), s.setVisual("toSymbolSize", a && a[1]), s.setVisual("opacity", e.get(i)), {
                dataEach: s.hasItemOption ? function (e, t) {
                    var r = e.getItemModel(t), o = n(r.getShallow("symbol", !0)), a = n(r.getShallow("symbolSize", !0)),
                        s = r.get(i);
                    o[0] && e.setItemVisual(t, "fromSymbol", o[0]), o[1] && e.setItemVisual(t, "toSymbol", o[1]), a[0] && e.setItemVisual(t, "fromSymbolSize", a[0]), a[1] && e.setItemVisual(t, "toSymbolSize", a[1]), e.setItemVisual(t, "opacity", s)
                } : null
            }
        }
    };
    e.exports = r
}, function (e, t, n) {
    n(438), n(439)
}, function (e, t, n) {
    var i = n(15), r = n(30), o = n(21), a = i.extend({
        type: "series.heatmap",
        getInitialData: function (e, t) {
            return r(this.getSource(), this, {generateCoord: "value"})
        },
        preventIncremental: function () {
            var e = o.get(this.get("coordinateSystem"));
            if (e && e.dimensions) return "lng" === e.dimensions[0] && "lat" === e.dimensions[1]
        },
        defaultOption: {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            geoIndex: 0,
            blurSize: 30,
            pointSize: 20,
            maxOpacity: 1,
            minOpacity: 0
        }
    });
    e.exports = a
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(3), o = n(440), a = n(1);
    var s = i.extendChartView({
        type: "heatmap", render: function (e, t, n) {
            var i;
            t.eachComponent("visualMap", (function (t) {
                t.eachTargetSeries((function (n) {
                    n === e && (i = t)
                }))
            })), this.group.removeAll(), this._incrementalDisplayable = null;
            var r = e.coordinateSystem;
            "cartesian2d" === r.type || "calendar" === r.type ? this._renderOnCartesianAndCalendar(e, n, 0, e.getData().count()) : function (e) {
                var t = e.dimensions;
                return "lng" === t[0] && "lat" === t[1]
            }(r) && this._renderOnGeo(r, e, i, n)
        }, incrementalPrepareRender: function (e, t, n) {
            this.group.removeAll()
        }, incrementalRender: function (e, t, n, i) {
            t.coordinateSystem && this._renderOnCartesianAndCalendar(t, i, e.start, e.end, !0)
        }, _renderOnCartesianAndCalendar: function (e, t, n, i, o) {
            var s, l, c = e.coordinateSystem;
            if ("cartesian2d" === c.type) {
                var u = c.getAxis("x"), h = c.getAxis("y");
                s = u.getBandWidth(), l = h.getBandWidth()
            }
            for (var d = this.group, f = e.getData(), g = e.getModel("itemStyle").getItemStyle(["color"]), p = e.getModel("emphasis.itemStyle").getItemStyle(), m = e.getModel("label"), v = e.getModel("emphasis.label"), y = c.type, b = "cartesian2d" === y ? [f.mapDimension("x"), f.mapDimension("y"), f.mapDimension("value")] : [f.mapDimension("time"), f.mapDimension("value")], C = n; C < i; C++) {
                var w;
                if ("cartesian2d" === y) {
                    if (isNaN(f.get(b[2], C))) continue;
                    var I = c.dataToPoint([f.get(b[0], C), f.get(b[1], C)]);
                    w = new r.Rect({
                        shape: {
                            x: Math.floor(Math.round(I[0]) - s / 2),
                            y: Math.floor(Math.round(I[1]) - l / 2),
                            width: Math.ceil(s),
                            height: Math.ceil(l)
                        }, style: {fill: f.getItemVisual(C, "color"), opacity: f.getItemVisual(C, "opacity")}
                    })
                } else {
                    if (isNaN(f.get(b[1], C))) continue;
                    w = new r.Rect({
                        z2: 1,
                        shape: c.dataToRect([f.get(b[0], C)]).contentShape,
                        style: {fill: f.getItemVisual(C, "color"), opacity: f.getItemVisual(C, "opacity")}
                    })
                }
                var x = f.getItemModel(C);
                f.hasItemOption && (g = x.getModel("itemStyle").getItemStyle(["color"]), p = x.getModel("emphasis.itemStyle").getItemStyle(), m = x.getModel("label"), v = x.getModel("emphasis.label"));
                var A = e.getRawValue(C), _ = "-";
                A && null != A[2] && (_ = A[2]), r.setLabelStyle(g, p, m, v, {
                    labelFetcher: e,
                    labelDataIndex: C,
                    defaultText: _,
                    isRectText: !0
                }), w.setStyle(g), r.setHoverStyle(w, f.hasItemOption ? p : a.extend({}, p)), w.incremental = o, o && (w.useHoverLayer = !0), d.add(w), f.setItemGraphicEl(C, w)
            }
        }, _renderOnGeo: function (e, t, n, i) {
            var s = n.targetVisuals.inRange, l = n.targetVisuals.outOfRange, c = t.getData(),
                u = this._hmLayer || this._hmLayer || new o;
            u.blurSize = t.get("blurSize"), u.pointSize = t.get("pointSize"), u.minOpacity = t.get("minOpacity"), u.maxOpacity = t.get("maxOpacity");
            var h = e.getViewRect().clone(), d = e.getRoamTransform();
            h.applyTransform(d);
            var f = Math.max(h.x, 0), g = Math.max(h.y, 0), p = Math.min(h.width + h.x, i.getWidth()),
                m = Math.min(h.height + h.y, i.getHeight()), v = p - f, y = m - g,
                b = [c.mapDimension("lng"), c.mapDimension("lat"), c.mapDimension("value")],
                C = c.mapArray(b, (function (t, n, i) {
                    var r = e.dataToPoint([t, n]);
                    return r[0] -= f, r[1] -= g, r.push(i), r
                })), w = n.getExtent(), I = "visualMap.continuous" === n.type ? function (e, t) {
                    var n = e[1] - e[0];
                    return t = [(t[0] - e[0]) / n, (t[1] - e[0]) / n], function (e) {
                        return e >= t[0] && e <= t[1]
                    }
                }(w, n.option.range) : function (e, t, n) {
                    var i = e[1] - e[0], r = (t = a.map(t, (function (t) {
                        return {interval: [(t.interval[0] - e[0]) / i, (t.interval[1] - e[0]) / i]}
                    }))).length, o = 0;
                    return function (e) {
                        for (var i = o; i < r; i++) {
                            if ((a = t[i].interval)[0] <= e && e <= a[1]) {
                                o = i;
                                break
                            }
                        }
                        if (i === r) for (i = o - 1; i >= 0; i--) {
                            var a;
                            if ((a = t[i].interval)[0] <= e && e <= a[1]) {
                                o = i;
                                break
                            }
                        }
                        return i >= 0 && i < r && n[i]
                    }
                }(w, n.getPieceList(), n.option.selected);
            u.update(C, v, y, s.color.getNormalizer(), {
                inRange: s.color.getColorMapper(),
                outOfRange: l.color.getColorMapper()
            }, I);
            var x = new r.Image({style: {width: v, height: y, x: f, y: g, image: u.canvas}, silent: !0});
            this.group.add(x)
        }, dispose: function () {
        }
    });
    e.exports = s
}, function (e, t, n) {
    var i = n(1);

    function r() {
        var e = i.createCanvas();
        this.canvas = e, this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = {}
    }

    r.prototype = {
        update: function (e, t, n, i, r, o) {
            var a = this._getBrush(), s = this._getGradient(e, r, "inRange"), l = this._getGradient(e, r, "outOfRange"),
                c = this.pointSize + this.blurSize, u = this.canvas, h = u.getContext("2d"), d = e.length;
            u.width = t, u.height = n;
            for (var f = 0; f < d; ++f) {
                var g = e[f], p = g[0], m = g[1], v = i(g[2]);
                h.globalAlpha = v, h.drawImage(a, p - c, m - c)
            }
            if (!u.width || !u.height) return u;
            for (var y = h.getImageData(0, 0, u.width, u.height), b = y.data, C = 0, w = b.length, I = this.minOpacity, x = this.maxOpacity - I; C < w;) {
                v = b[C + 3] / 256;
                var A = 4 * Math.floor(255 * v);
                if (v > 0) {
                    var _ = o(v) ? s : l;
                    v > 0 && (v = v * x + I), b[C++] = _[A], b[C++] = _[A + 1], b[C++] = _[A + 2], b[C++] = _[A + 3] * v * 256
                } else C += 4
            }
            return h.putImageData(y, 0, 0), u
        }, _getBrush: function () {
            var e = this._brushCanvas || (this._brushCanvas = i.createCanvas()), t = this.pointSize + this.blurSize,
                n = 2 * t;
            e.width = n, e.height = n;
            var r = e.getContext("2d");
            return r.clearRect(0, 0, n, n), r.shadowOffsetX = n, r.shadowBlur = this.blurSize, r.shadowColor = "#000", r.beginPath(), r.arc(-t, t, this.pointSize, 0, 2 * Math.PI, !0), r.closePath(), r.fill(), e
        }, _getGradient: function (e, t, n) {
            for (var i = this._gradientPixels, r = i[n] || (i[n] = new Uint8ClampedArray(1024)), o = [0, 0, 0, 0], a = 0, s = 0; s < 256; s++) t[n](s / 255, !0, o), r[a++] = o[0], r[a++] = o[1], r[a++] = o[2], r[a++] = o[3];
            return r
        }
    };
    var o = r;
    e.exports = o
}, function (e, t, n) {
    var i = n(2), r = n(1);
    n(113), n(442), n(443);
    var o = n(89).layout, a = n(42);
    n(71), i.registerLayout(r.curry(o, "pictorialBar")), i.registerVisual(a("pictorialBar", "roundRect"))
}, function (e, t, n) {
    var i = n(185).extend({
        type: "series.pictorialBar",
        dependencies: ["grid"],
        defaultOption: {
            symbol: "circle",
            symbolSize: null,
            symbolRotate: null,
            symbolPosition: null,
            symbolOffset: null,
            symbolMargin: null,
            symbolRepeat: !1,
            symbolRepeatDirection: "end",
            symbolClip: !1,
            symbolBoundingData: null,
            symbolPatternSize: 400,
            barGap: "-100%",
            progressive: 0,
            hoverAnimation: !1
        },
        getInitialData: function (e) {
            return e.stack = null, i.superApply(this, "getInitialData", arguments)
        }
    }), r = i;
    e.exports = r
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(3), a = n(20).createSymbol, s = n(4), l = s.parsePercent, c = s.isNumeric,
        u = n(186).setLabel, h = ["itemStyle", "borderWidth"],
        d = [{xy: "x", wh: "width", index: 0, posDesc: ["left", "right"]}, {
            xy: "y",
            wh: "height",
            index: 1,
            posDesc: ["top", "bottom"]
        }], f = new o.Circle;

    function g(e, t, n, i) {
        var o = e.getItemLayout(t), a = n.get("symbolRepeat"), s = n.get("symbolClip"),
            u = n.get("symbolPosition") || "start", d = (n.get("symbolRotate") || 0) * Math.PI / 180 || 0,
            g = n.get("symbolPatternSize") || 2, m = n.isAnimationEnabled(), v = {
                dataIndex: t,
                layout: o,
                itemModel: n,
                symbolType: e.getItemVisual(t, "symbol") || "circle",
                color: e.getItemVisual(t, "color"),
                symbolClip: s,
                symbolRepeat: a,
                symbolRepeatDirection: n.get("symbolRepeatDirection"),
                symbolPatternSize: g,
                rotation: d,
                animationModel: m ? n : null,
                hoverAnimation: m && n.get("hoverAnimation"),
                z2: n.getShallow("z", !0) || 0
            };
        !function (e, t, n, i, o) {
            var a, s = i.valueDim, l = e.get("symbolBoundingData"),
                c = i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()), u = c.toGlobalCoord(c.dataToCoord(0)),
                h = 1 - +(n[s.wh] <= 0);
            if (r.isArray(l)) {
                var d = [p(c, l[0]) - u, p(c, l[1]) - u];
                d[1] < d[0] && d.reverse(), a = d[h]
            } else a = null != l ? p(c, l) - u : t ? i.coordSysExtent[s.index][h] - u : n[s.wh];
            o.boundingLength = a, t && (o.repeatCutLength = n[s.wh]);
            o.pxSign = a > 0 ? 1 : a < 0 ? -1 : 0
        }(n, a, o, i, v), function (e, t, n, i, o, a, s, c, u, h) {
            var d = u.valueDim, f = u.categoryDim, g = Math.abs(n[f.wh]), p = e.getItemVisual(t, "symbolSize");
            r.isArray(p) ? p = p.slice() : (null == p && (p = "100%"), p = [p, p]);
            p[f.index] = l(p[f.index], g), p[d.index] = l(p[d.index], i ? g : Math.abs(a)), h.symbolSize = p, (h.symbolScale = [p[0] / c, p[1] / c])[d.index] *= (u.isHorizontal ? -1 : 1) * s
        }(e, t, o, a, 0, v.boundingLength, v.pxSign, g, i, v), function (e, t, n, i, r) {
            var o = e.get(h) || 0;
            o && (f.attr({
                scale: t.slice(),
                rotation: n
            }), f.updateTransform(), o /= f.getLineScale(), o *= t[i.valueDim.index]);
            r.valueLineWidth = o
        }(n, v.symbolScale, d, i, v);
        var y = v.symbolSize, b = n.get("symbolOffset");
        return r.isArray(b) && (b = [l(b[0], y[0]), l(b[1], y[1])]), function (e, t, n, i, o, a, s, u, h, d, f, g) {
            var p = f.categoryDim, m = f.valueDim, v = g.pxSign, y = Math.max(t[m.index] + u, 0), b = y;
            if (i) {
                var C = Math.abs(h), w = r.retrieve(e.get("symbolMargin"), "15%") + "", I = !1;
                w.lastIndexOf("!") === w.length - 1 && (I = !0, w = w.slice(0, w.length - 1)), w = l(w, t[m.index]);
                var x = Math.max(y + 2 * w, 0), A = I ? 0 : 2 * w, _ = c(i), S = _ ? i : R((C + A) / x);
                x = y + 2 * (w = (C - S * y) / 2 / (I ? S : S - 1)), A = I ? 0 : 2 * w, _ || "fixed" === i || (S = d ? R((Math.abs(d) + A) / x) : 0), b = S * x - A, g.repeatTimes = S, g.symbolMargin = w
            }
            var k = v * (b / 2), L = g.pathPosition = [];
            L[p.index] = n[p.wh] / 2, L[m.index] = "start" === s ? k : "end" === s ? h - k : h / 2, a && (L[0] += a[0], L[1] += a[1]);
            var T = g.bundlePosition = [];
            T[p.index] = n[p.xy], T[m.index] = n[m.xy];
            var O = g.barRectShape = r.extend({}, n);
            O[m.wh] = v * Math.max(Math.abs(n[m.wh]), Math.abs(L[m.index] + k)), O[p.wh] = n[p.wh];
            var E = g.clipShape = {};
            E[p.xy] = -n[p.xy], E[p.wh] = f.ecSize[p.wh], E[m.xy] = 0, E[m.wh] = n[m.wh]
        }(n, y, o, a, 0, b, u, v.valueLineWidth, v.boundingLength, v.repeatCutLength, i, v), v
    }

    function p(e, t) {
        return e.toGlobalCoord(e.dataToCoord(e.scale.parse(t)))
    }

    function m(e) {
        var t = e.symbolPatternSize, n = a(e.symbolType, -t / 2, -t / 2, t, t, e.color);
        return n.attr({culling: !0}), "image" !== n.type && n.setStyle({strokeNoScale: !0}), n
    }

    function v(e, t, n, i) {
        var r = e.__pictorialBundle, o = n.symbolSize, a = n.valueLineWidth, s = n.pathPosition, l = t.valueDim,
            c = n.repeatTimes || 0, u = 0, h = o[t.valueDim.index] + a + 2 * n.symbolMargin;
        for (L(e, (function (e) {
            e.__pictorialAnimationIndex = u, e.__pictorialRepeatTimes = c, u < c ? T(e, null, g(u), n, i) : T(e, null, {scale: [0, 0]}, n, i, (function () {
                r.remove(e)
            })), A(e, n), u++
        })); u < c; u++) {
            var d = m(n);
            d.__pictorialAnimationIndex = u, d.__pictorialRepeatTimes = c, r.add(d);
            var f = g(u);
            T(d, {position: f.position, scale: [0, 0]}, {
                scale: f.scale,
                rotation: f.rotation
            }, n, i), d.on("mouseover", p).on("mouseout", v), A(d, n)
        }

        function g(e) {
            var t = s.slice(), i = n.pxSign, r = e;
            return ("start" === n.symbolRepeatDirection ? i > 0 : i < 0) && (r = c - 1 - e), t[l.index] = h * (r - c / 2 + .5) + s[l.index], {
                position: t,
                scale: n.symbolScale.slice(),
                rotation: n.rotation
            }
        }

        function p() {
            L(e, (function (e) {
                e.trigger("emphasis")
            }))
        }

        function v() {
            L(e, (function (e) {
                e.trigger("normal")
            }))
        }
    }

    function y(e, t, n, i) {
        var r = e.__pictorialBundle, o = e.__pictorialMainPath;
        o ? T(o, null, {
            position: n.pathPosition.slice(),
            scale: n.symbolScale.slice(),
            rotation: n.rotation
        }, n, i) : (o = e.__pictorialMainPath = m(n), r.add(o), T(o, {
            position: n.pathPosition.slice(),
            scale: [0, 0],
            rotation: n.rotation
        }, {scale: n.symbolScale.slice()}, n, i), o.on("mouseover", (function () {
            this.trigger("emphasis")
        })).on("mouseout", (function () {
            this.trigger("normal")
        }))), A(o, n)
    }

    function b(e, t, n) {
        var i = r.extend({}, t.barRectShape), a = e.__pictorialBarRect;
        a ? T(a, null, {shape: i}, t, n) : (a = e.__pictorialBarRect = new o.Rect({
            z2: 2,
            shape: i,
            silent: !0,
            style: {stroke: "transparent", fill: "transparent", lineWidth: 0}
        }), e.add(a))
    }

    function C(e, t, n, i) {
        if (n.symbolClip) {
            var a = e.__pictorialClipPath, s = r.extend({}, n.clipShape), l = t.valueDim, c = n.animationModel,
                u = n.dataIndex;
            if (a) o.updateProps(a, {shape: s}, c, u); else {
                s[l.wh] = 0, a = new o.Rect({shape: s}), e.__pictorialBundle.setClipPath(a), e.__pictorialClipPath = a;
                var h = {};
                h[l.wh] = n.clipShape[l.wh], o[i ? "updateProps" : "initProps"](a, {shape: h}, c, u)
            }
        }
    }

    function w(e, t) {
        var n = e.getItemModel(t);
        return n.getAnimationDelayParams = I, n.isAnimationEnabled = x, n
    }

    function I(e) {
        return {index: e.__pictorialAnimationIndex, count: e.__pictorialRepeatTimes}
    }

    function x() {
        return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation")
    }

    function A(e, t) {
        e.off("emphasis").off("normal");
        var n = t.symbolScale.slice();
        t.hoverAnimation && e.on("emphasis", (function () {
            this.animateTo({scale: [1.1 * n[0], 1.1 * n[1]]}, 400, "elasticOut")
        })).on("normal", (function () {
            this.animateTo({scale: n.slice()}, 400, "elasticOut")
        }))
    }

    function _(e, t, n, i) {
        var r = new o.Group, a = new o.Group;
        return r.add(a), r.__pictorialBundle = a, a.attr("position", n.bundlePosition.slice()), n.symbolRepeat ? v(r, t, n) : y(r, 0, n), b(r, n, i), C(r, t, n, i), r.__pictorialShapeStr = k(e, n), r.__pictorialSymbolMeta = n, r
    }

    function S(e, t, n, i) {
        var a = i.__pictorialBarRect;
        a && (a.style.text = null);
        var s = [];
        L(i, (function (e) {
            s.push(e)
        })), i.__pictorialMainPath && s.push(i.__pictorialMainPath), i.__pictorialClipPath && (n = null), r.each(s, (function (e) {
            o.updateProps(e, {scale: [0, 0]}, n, t, (function () {
                i.parent && i.parent.remove(i)
            }))
        })), e.setItemGraphicEl(t, null)
    }

    function k(e, t) {
        return [e.getItemVisual(t.dataIndex, "symbol") || "none", !!t.symbolRepeat, !!t.symbolClip].join(":")
    }

    function L(e, t, n) {
        r.each(e.__pictorialBundle.children(), (function (i) {
            i !== e.__pictorialBarRect && t.call(n, i)
        }))
    }

    function T(e, t, n, i, r, a) {
        t && e.attr(t), i.symbolClip && !r ? n && e.attr(n) : n && o[r ? "updateProps" : "initProps"](e, n, i.animationModel, i.dataIndex, a)
    }

    function O(e, t, n) {
        var i = n.color, a = n.dataIndex, s = n.itemModel, l = s.getModel("itemStyle").getItemStyle(["color"]),
            c = s.getModel("emphasis.itemStyle").getItemStyle(), h = s.getShallow("cursor");
        L(e, (function (e) {
            e.setColor(i), e.setStyle(r.defaults({
                fill: i,
                opacity: n.opacity
            }, l)), o.setHoverStyle(e, c), h && (e.cursor = h), e.z2 = n.z2
        }));
        var d = {}, f = t.valueDim.posDesc[+(n.boundingLength > 0)], g = e.__pictorialBarRect;
        u(g.style, d, s, i, t.seriesModel, a, f), o.setHoverStyle(g, d)
    }

    function R(e) {
        var t = Math.round(e);
        return Math.abs(e - t) < 1e-4 ? t : Math.ceil(e)
    }

    var E = i.extendChartView({
        type: "pictorialBar", render: function (e, t, n) {
            var i = this.group, r = e.getData(), a = this._data, s = e.coordinateSystem,
                l = !!s.getBaseAxis().isHorizontal(), c = s.grid.getRect(), u = {
                    ecSize: {width: n.getWidth(), height: n.getHeight()},
                    seriesModel: e,
                    coordSys: s,
                    coordSysExtent: [[c.x, c.x + c.width], [c.y, c.y + c.height]],
                    isHorizontal: l,
                    valueDim: d[+l],
                    categoryDim: d[1 - l]
                };
            return r.diff(a).add((function (e) {
                if (r.hasValue(e)) {
                    var t = w(r, e), n = g(r, e, t, u), o = _(r, u, n);
                    r.setItemGraphicEl(e, o), i.add(o), O(o, u, n)
                }
            })).update((function (e, t) {
                var n = a.getItemGraphicEl(t);
                if (r.hasValue(e)) {
                    var s = w(r, e), l = g(r, e, s, u), c = k(r, l);
                    n && c !== n.__pictorialShapeStr && (i.remove(n), r.setItemGraphicEl(e, null), n = null), n ? function (e, t, n) {
                        var i = n.animationModel, r = n.dataIndex, a = e.__pictorialBundle;
                        o.updateProps(a, {position: n.bundlePosition.slice()}, i, r), n.symbolRepeat ? v(e, t, n, !0) : y(e, t, n, !0);
                        b(e, n, !0), C(e, t, n, !0)
                    }(n, u, l) : n = _(r, u, l, !0), r.setItemGraphicEl(e, n), n.__pictorialSymbolMeta = l, i.add(n), O(n, u, l)
                } else i.remove(n)
            })).remove((function (e) {
                var t = a.getItemGraphicEl(e);
                t && S(a, e, t.__pictorialSymbolMeta.animationModel, t)
            })).execute(), this._data = r, this.group
        }, dispose: r.noop, remove: function (e, t) {
            var n = this.group, i = this._data;
            e.get("animation") ? i && i.eachItemGraphicEl((function (t) {
                S(i, t.dataIndex, e, t)
            })) : n.removeAll()
        }
    });
    e.exports = E
}, function (e, t, n) {
    var i = n(2);
    n(204), n(454), n(455);
    var r = n(456), o = n(457), a = n(73);
    i.registerLayout(r), i.registerVisual(o), i.registerProcessor(a("themeRiver"))
}, function (e, t, n) {
    var i = n(446);
    n(21).register("single", {
        create: function (e, t) {
            var n = [];
            return e.eachComponent("singleAxis", (function (r, o) {
                var a = new i(r, e, t);
                a.name = "single_" + o, a.resize(r, t), r.coordinateSystem = a, n.push(a)
            })), e.eachSeries((function (t) {
                if ("singleAxis" === t.get("coordinateSystem")) {
                    var n = e.queryComponents({
                        mainType: "singleAxis",
                        index: t.get("singleAxisIndex"),
                        id: t.get("singleAxisId")
                    })[0];
                    t.coordinateSystem = n && n.coordinateSystem
                }
            })), n
        }, dimensions: i.prototype.dimensions
    })
}, function (e, t, n) {
    var i = n(447), r = n(22), o = n(7).getLayoutRect, a = n(1).each;

    function s(e, t, n) {
        this.dimension = "single", this.dimensions = ["single"], this._axis = null, this._rect, this._init(e, t, n), this.model = e
    }

    s.prototype = {
        type: "singleAxis", axisPointerEnabled: !0, constructor: s, _init: function (e, t, n) {
            var o = this.dimension, a = new i(o, r.createScaleByModel(e), [0, 0], e.get("type"), e.get("position")),
                s = "category" === a.type;
            a.onBand = s && e.get("boundaryGap"), a.inverse = e.get("inverse"), a.orient = e.get("orient"), e.axis = a, a.model = e, a.coordinateSystem = this, this._axis = a
        }, update: function (e, t) {
            e.eachSeries((function (e) {
                if (e.coordinateSystem === this) {
                    var t = e.getData();
                    a(t.mapDimension(this.dimension, !0), (function (e) {
                        this._axis.scale.unionExtentFromData(t, e)
                    }), this), r.niceScaleExtent(this._axis.scale, this._axis.model)
                }
            }), this)
        }, resize: function (e, t) {
            this._rect = o({
                left: e.get("left"),
                top: e.get("top"),
                right: e.get("right"),
                bottom: e.get("bottom"),
                width: e.get("width"),
                height: e.get("height")
            }, {width: t.getWidth(), height: t.getHeight()}), this._adjustAxis()
        }, getRect: function () {
            return this._rect
        }, _adjustAxis: function () {
            var e = this._rect, t = this._axis, n = t.isHorizontal(), i = n ? [0, e.width] : [0, e.height],
                r = t.reverse ? 1 : 0;
            t.setExtent(i[r], i[1 - r]), this._updateAxisTransform(t, n ? e.x : e.y)
        }, _updateAxisTransform: function (e, t) {
            var n = e.getExtent(), i = n[0] + n[1], r = e.isHorizontal();
            e.toGlobalCoord = r ? function (e) {
                return e + t
            } : function (e) {
                return i - e + t
            }, e.toLocalCoord = r ? function (e) {
                return e - t
            } : function (e) {
                return i - e + t
            }
        }, getAxis: function () {
            return this._axis
        }, getBaseAxis: function () {
            return this._axis
        }, getAxes: function () {
            return [this._axis]
        }, getTooltipAxes: function () {
            return {baseAxes: [this.getAxis()]}
        }, containPoint: function (e) {
            var t = this.getRect(), n = this.getAxis();
            return "horizontal" === n.orient ? n.contain(n.toLocalCoord(e[0])) && e[1] >= t.y && e[1] <= t.y + t.height : n.contain(n.toLocalCoord(e[1])) && e[0] >= t.y && e[0] <= t.y + t.height
        }, pointToData: function (e) {
            var t = this.getAxis();
            return [t.coordToData(t.toLocalCoord(e["horizontal" === t.orient ? 0 : 1]))]
        }, dataToPoint: function (e) {
            var t = this.getAxis(), n = this.getRect(), i = [], r = "horizontal" === t.orient ? 0 : 1;
            return e instanceof Array && (e = e[0]), i[r] = t.toGlobalCoord(t.dataToCoord(+e)), i[1 - r] = 0 === r ? n.y + n.height / 2 : n.x + n.width / 2, i
        }
    };
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(34), o = function (e, t, n, i, o) {
        r.call(this, e, t, n), this.type = i || "value", this.position = o || "bottom", this.orient = null
    };
    o.prototype = {
        constructor: o, model: null, isHorizontal: function () {
            var e = this.position;
            return "top" === e || "bottom" === e
        }, pointToData: function (e, t) {
            return this.coordinateSystem.pointToData(e, t)[0]
        }, toGlobalCoord: null, toLocalCoord: null
    }, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1), r = n(35), o = n(3), a = n(205), s = n(43), l = n(184), c = l.rectCoordAxisBuildSplitArea,
        u = l.rectCoordAxisHandleRemove, h = ["axisLine", "axisTickLabel", "axisName"], d = ["splitArea", "splitLine"],
        f = s.extend({
            type: "singleAxis", axisPointerClass: "SingleAxisPointer", render: function (e, t, n, s) {
                var l = this.group;
                l.removeAll();
                var c = this._axisGroup;
                this._axisGroup = new o.Group;
                var u = a.layout(e), g = new r(e, u);
                i.each(h, g.add, g), l.add(this._axisGroup), l.add(g.getGroup()), i.each(d, (function (t) {
                    e.get(t + ".show") && this["_" + t](e)
                }), this), o.groupTransition(c, this._axisGroup, e), f.superCall(this, "render", e, t, n, s)
            }, remove: function () {
                u(this)
            }, _splitLine: function (e) {
                var t = e.axis;
                if (!t.scale.isBlank()) {
                    var n = e.getModel("splitLine"), i = n.getModel("lineStyle"), r = i.get("width"),
                        a = i.get("color");
                    a = a instanceof Array ? a : [a];
                    for (var s = e.coordinateSystem.getRect(), l = t.isHorizontal(), c = [], u = 0, h = t.getTicksCoords({tickModel: n}), d = [], f = [], g = 0; g < h.length; ++g) {
                        var p = t.toGlobalCoord(h[g].coord);
                        l ? (d[0] = p, d[1] = s.y, f[0] = p, f[1] = s.y + s.height) : (d[0] = s.x, d[1] = p, f[0] = s.x + s.width, f[1] = p);
                        var m = u++ % a.length;
                        c[m] = c[m] || [], c[m].push(new o.Line({
                            subPixelOptimize: !0,
                            shape: {x1: d[0], y1: d[1], x2: f[0], y2: f[1]},
                            style: {lineWidth: r},
                            silent: !0
                        }))
                    }
                    for (g = 0; g < c.length; ++g) this.group.add(o.mergePath(c[g], {
                        style: {
                            stroke: a[g % a.length],
                            lineDash: i.getLineDash(r),
                            lineWidth: r
                        }, silent: !0
                    }))
                }
            }, _splitArea: function (e) {
                c(this, this._axisGroup, e, e)
            }
        }), g = f;
    e.exports = g
}, function (e, t, n) {
    var i = n(1), r = n(14), o = n(91), a = n(51), s = r.extend({
        type: "singleAxis",
        layoutMode: "box",
        axis: null,
        coordinateSystem: null,
        getCoordSysModel: function () {
            return this
        }
    });
    i.merge(s.prototype, a), o("single", s, (function (e, t) {
        return t.type || (t.data ? "category" : "value")
    }), {
        left: "5%",
        top: "5%",
        right: "5%",
        bottom: "5%",
        type: "value",
        position: "bottom",
        orient: "horizontal",
        axisLine: {show: !0, lineStyle: {width: 1, type: "solid"}},
        tooltip: {show: !0},
        axisTick: {show: !0, length: 6, lineStyle: {width: 1}},
        axisLabel: {show: !0, interval: "auto"},
        splitLine: {show: !0, lineStyle: {type: "dashed", opacity: .2}}
    });
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(5).makeInner, o = n(92), a = n(206), s = i.each, l = i.curry, c = r();

    function u(e, t, n, r, o) {
        var a = e.axis;
        if (!a.scale.isBlank() && a.containData(t)) if (e.involveSeries) {
            var l = function (e, t) {
                var n = t.axis, i = n.dim, r = e, o = [], a = Number.MAX_VALUE, l = -1;
                return s(t.seriesModels, (function (t, c) {
                    var u, h, d = t.getData().mapDimension(i, !0);
                    if (t.getAxisTooltipData) {
                        var f = t.getAxisTooltipData(d, e, n);
                        h = f.dataIndices, u = f.nestestValue
                    } else {
                        if (!(h = t.getData().indicesOfNearest(d[0], e, "category" === n.type ? .5 : null)).length) return;
                        u = t.getData().get(d[0], h[0])
                    }
                    if (null != u && isFinite(u)) {
                        var g = e - u, p = Math.abs(g);
                        p <= a && ((p < a || g >= 0 && l < 0) && (a = p, l = g, r = u, o.length = 0), s(h, (function (e) {
                            o.push({
                                seriesIndex: t.seriesIndex,
                                dataIndexInside: e,
                                dataIndex: t.getData().getRawIndex(e)
                            })
                        })))
                    }
                })), {payloadBatch: o, snapToValue: r}
            }(t, e), c = l.payloadBatch, u = l.snapToValue;
            c[0] && null == o.seriesIndex && i.extend(o, c[0]), !r && e.snap && a.containData(u) && null != u && (t = u), n.showPointer(e, t, c, o), n.showTooltip(e, l, u)
        } else n.showPointer(e, t)
    }

    function h(e, t, n, i) {
        e[t.key] = {value: n, payloadBatch: i}
    }

    function d(e, t, n, i) {
        var r = n.payloadBatch, a = t.axis, s = a.model, l = t.axisPointerModel;
        if (t.triggerTooltip && r.length) {
            var c = t.coordSys.model, u = o.makeKey(c), h = e.map[u];
            h || (h = e.map[u] = {
                coordSysId: c.id,
                coordSysIndex: c.componentIndex,
                coordSysType: c.type,
                coordSysMainType: c.mainType,
                dataByAxis: []
            }, e.list.push(h)), h.dataByAxis.push({
                axisDim: a.dim,
                axisIndex: s.componentIndex,
                axisType: s.type,
                axisId: s.id,
                value: i,
                valueLabelOpt: {precision: l.get("label.precision"), formatter: l.get("label.formatter")},
                seriesDataIndices: r.slice()
            })
        }
    }

    function f(e) {
        var t = e.axis.model, n = {}, i = n.axisDim = e.axis.dim;
        return n.axisIndex = n[i + "AxisIndex"] = t.componentIndex, n.axisName = n[i + "AxisName"] = t.name, n.axisId = n[i + "AxisId"] = t.id, n
    }

    function g(e) {
        return !e || null == e[0] || isNaN(e[0]) || null == e[1] || isNaN(e[1])
    }

    e.exports = function (e, t, n) {
        var r = e.currTrigger, o = [e.x, e.y], p = e, m = e.dispatchAction || i.bind(n.dispatchAction, n),
            v = t.getComponent("axisPointer").coordSysAxesInfo;
        if (v) {
            g(o) && (o = a({seriesIndex: p.seriesIndex, dataIndex: p.dataIndex}, t).point);
            var y = g(o), b = p.axesInfo, C = v.axesInfo, w = "leave" === r || g(o), I = {}, x = {},
                A = {list: [], map: {}}, _ = {showPointer: l(h, x), showTooltip: l(d, A)};
            s(v.coordSysMap, (function (e, t) {
                var n = y || e.containPoint(o);
                s(v.coordSysAxesInfo[t], (function (e, t) {
                    var i = e.axis, r = function (e, t) {
                        for (var n = 0; n < (e || []).length; n++) {
                            var i = e[n];
                            if (t.axis.dim === i.axisDim && t.axis.model.componentIndex === i.axisIndex) return i
                        }
                    }(b, e);
                    if (!w && n && (!b || r)) {
                        var a = r && r.value;
                        null != a || y || (a = i.pointToData(o)), null != a && u(e, a, _, !1, I)
                    }
                }))
            }));
            var S = {};
            return s(C, (function (e, t) {
                var n = e.linkGroup;
                n && !x[t] && s(n.axesInfo, (function (t, i) {
                    var r = x[i];
                    if (t !== e && r) {
                        var o = r.value;
                        n.mapper && (o = e.axis.scale.parse(n.mapper(o, f(t), f(e)))), S[e.key] = o
                    }
                }))
            })), s(S, (function (e, t) {
                u(C[t], e, _, !0, I)
            })), function (e, t, n) {
                var i = n.axesInfo = [];
                s(t, (function (t, n) {
                    var r = t.axisPointerModel.option, o = e[n];
                    o ? (!t.useHandle && (r.status = "show"), r.value = o.value, r.seriesDataIndices = (o.payloadBatch || []).slice()) : !t.useHandle && (r.status = "hide"), "show" === r.status && i.push({
                        axisDim: t.axis.dim,
                        axisIndex: t.axis.model.componentIndex,
                        value: r.value
                    })
                }))
            }(x, C, I), function (e, t, n, i) {
                if (g(t) || !e.list.length) return void i({type: "hideTip"});
                var r = ((e.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
                i({
                    type: "showTip",
                    escapeConnect: !0,
                    x: t[0],
                    y: t[1],
                    tooltipOption: n.tooltipOption,
                    position: n.position,
                    dataIndexInside: r.dataIndexInside,
                    dataIndex: r.dataIndex,
                    seriesIndex: r.seriesIndex,
                    dataByCoordSys: e.list
                })
            }(A, o, e, m), function (e, t, n) {
                var r = n.getZr(), o = c(r).axisPointerLastHighlights || {}, a = c(r).axisPointerLastHighlights = {};
                s(e, (function (e, t) {
                    var n = e.axisPointerModel.option;
                    "show" === n.status && s(n.seriesDataIndices, (function (e) {
                        var t = e.seriesIndex + " | " + e.dataIndex;
                        a[t] = e
                    }))
                }));
                var l = [], u = [];
                i.each(o, (function (e, t) {
                    !a[t] && u.push(e)
                })), i.each(a, (function (e, t) {
                    !o[t] && l.push(e)
                })), u.length && n.dispatchAction({
                    type: "downplay",
                    escapeConnect: !0,
                    batch: u
                }), l.length && n.dispatchAction({type: "highlight", escapeConnect: !0, batch: l})
            }(C, 0, n), I
        }
    }
}, function (e, t, n) {
    var i = n(2).extendComponentModel({
        type: "axisPointer",
        coordSysAxesInfo: null,
        defaultOption: {
            show: "auto",
            triggerOn: null,
            zlevel: 0,
            z: 50,
            type: "line",
            snap: !1,
            triggerTooltip: !0,
            value: null,
            status: null,
            link: [],
            animation: null,
            animationDurationUpdate: 200,
            lineStyle: {color: "#aaa", width: 1, type: "solid"},
            shadowStyle: {color: "rgba(150,150,150,0.3)"},
            label: {
                show: !0,
                formatter: null,
                precision: "auto",
                margin: 3,
                color: "#fff",
                padding: [5, 7, 5, 7],
                backgroundColor: "auto",
                borderColor: null,
                borderWidth: 0,
                shadowBlur: 3,
                shadowColor: "#aaa"
            },
            handle: {
                show: !1,
                icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
                size: 45,
                margin: 50,
                color: "#333",
                shadowBlur: 3,
                shadowColor: "#aaa",
                shadowOffsetX: 0,
                shadowOffsetY: 2,
                throttle: 40
            }
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(2), r = n(207), o = i.extendComponentView({
        type: "axisPointer", render: function (e, t, n) {
            var i = t.getComponent("tooltip"), o = e.get("triggerOn") || i && i.get("triggerOn") || "mousemove|click";
            r.register("axisPointer", n, (function (e, t, n) {
                "none" !== o && ("leave" === e || o.indexOf(e) >= 0) && n({
                    type: "updateAxisPointer",
                    currTrigger: e,
                    x: t && t.offsetX,
                    y: t && t.offsetY
                })
            }))
        }, remove: function (e, t) {
            r.unregister(t.getZr(), "axisPointer"), o.superApply(this._model, "remove", arguments)
        }, dispose: function (e, t) {
            r.unregister("axisPointer", t), o.superApply(this._model, "dispose", arguments)
        }
    }), a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(124), r = n(96), o = n(205), a = n(43), s = ["x", "y"], l = ["width", "height"], c = i.extend({
        makeElOption: function (e, t, n, i, a) {
            var s = n.axis, l = s.coordinateSystem, c = d(l, 1 - h(s)), f = l.dataToPoint(t)[0], g = i.get("type");
            if (g && "none" !== g) {
                var p = r.buildElStyle(i), m = u[g](s, f, c);
                m.style = p, e.graphicKey = m.type, e.pointer = m
            }
            var v = o.layout(n);
            r.buildCartesianSingleLabelElOption(t, e, v, n, i, a)
        }, getHandleTransform: function (e, t, n) {
            var i = o.layout(t, {labelInside: !1});
            return i.labelMargin = n.get("handle.margin"), {
                position: r.getTransformedPosition(t.axis, e, i),
                rotation: i.rotation + (i.labelDirection < 0 ? Math.PI : 0)
            }
        }, updateHandleTransform: function (e, t, n, i) {
            var r = n.axis, o = r.coordinateSystem, a = h(r), s = d(o, a), l = e.position;
            l[a] += t[a], l[a] = Math.min(s[1], l[a]), l[a] = Math.max(s[0], l[a]);
            var c = d(o, 1 - a), u = (c[1] + c[0]) / 2, f = [u, u];
            return f[a] = l[a], {
                position: l,
                rotation: e.rotation,
                cursorPoint: f,
                tooltipOption: {verticalAlign: "middle"}
            }
        }
    }), u = {
        line: function (e, t, n) {
            return {type: "Line", subPixelOptimize: !0, shape: r.makeLineShape([t, n[0]], [t, n[1]], h(e))}
        }, shadow: function (e, t, n) {
            var i = e.getBandWidth(), o = n[1] - n[0];
            return {type: "Rect", shape: r.makeRectShape([t - i / 2, n[0]], [i, o], h(e))}
        }
    };

    function h(e) {
        return e.isHorizontal() ? 0 : 1
    }

    function d(e, t) {
        var n = e.getRect();
        return [n[s[t]], n[s[t]] + n[l[t]]]
    }

    a.registerAxisPointerClass("SingleAxisPointer", c);
    var f = c;
    e.exports = f
}, function (e, t, n) {
    var i = n(15), r = n(50), o = n(67).getDimensionTypeByAxis, a = n(19), s = n(1), l = n(5).groupData,
        c = n(8).encodeHTML, u = n(72), h = i.extend({
            type: "series.themeRiver",
            dependencies: ["singleAxis"],
            nameMap: null,
            init: function (e) {
                h.superApply(this, "init", arguments), this.legendVisualProvider = new u(s.bind(this.getData, this), s.bind(this.getRawData, this))
            },
            fixData: function (e) {
                var t = e.length, n = l(e, (function (e) {
                    return e[2]
                })), i = [];
                n.buckets.each((function (e, t) {
                    i.push({name: t, dataList: e})
                }));
                for (var r = i.length, o = -1, a = -1, s = 0; s < r; ++s) {
                    var c = i[s].dataList.length;
                    c > o && (o = c, a = s)
                }
                for (var u = 0; u < r; ++u) if (u !== a) for (var h = i[u].name, d = 0; d < o; ++d) {
                    for (var f = i[a].dataList[d][0], g = i[u].dataList.length, p = -1, m = 0; m < g; ++m) {
                        if (i[u].dataList[m][0] === f) {
                            p = m;
                            break
                        }
                    }
                    -1 === p && (e[t] = [], e[t][0] = f, e[t][1] = 0, e[t][2] = h, t++)
                }
                return e
            },
            getInitialData: function (e, t) {
                for (var n = t.queryComponents({
                    mainType: "singleAxis",
                    index: this.get("singleAxisIndex"),
                    id: this.get("singleAxisId")
                })[0].get("type"), i = s.filter(e.data, (function (e) {
                    return void 0 !== e[2]
                })), l = this.fixData(i || []), c = [], u = this.nameMap = s.createHashMap(), h = 0, d = 0; d < l.length; ++d) c.push(l[d][2]), u.get(l[d][2]) || (u.set(l[d][2], h), h++);
                var f = r(l, {
                    coordDimensions: ["single"],
                    dimensionsDefine: [{name: "time", type: o(n)}, {name: "value", type: "float"}, {
                        name: "name",
                        type: "ordinal"
                    }],
                    encodeDefine: {single: 0, value: 1, itemName: 2}
                }), g = new a(f, this);
                return g.initData(l), g
            },
            getLayerSeries: function () {
                for (var e = this.getData(), t = e.count(), n = [], i = 0; i < t; ++i) n[i] = i;
                var r = e.mapDimension("single"), o = l(n, (function (t) {
                    return e.get("name", t)
                })), a = [];
                return o.buckets.each((function (t, n) {
                    t.sort((function (t, n) {
                        return e.get(r, t) - e.get(r, n)
                    })), a.push({name: n, indices: t})
                })), a
            },
            getAxisTooltipData: function (e, t, n) {
                s.isArray(e) || (e = e ? [e] : []);
                for (var i, r = this.getData(), o = this.getLayerSeries(), a = [], l = o.length, c = 0; c < l; ++c) {
                    for (var u = Number.MAX_VALUE, h = -1, d = o[c].indices.length, f = 0; f < d; ++f) {
                        var g = r.get(e[0], o[c].indices[f]), p = Math.abs(g - t);
                        p <= u && (i = g, u = p, h = o[c].indices[f])
                    }
                    a.push(h)
                }
                return {dataIndices: a, nestestValue: i}
            },
            formatTooltip: function (e) {
                var t = this.getData(), n = t.getName(e), i = t.get(t.mapDimension("value"), e);
                return (isNaN(i) || null == i) && (i = "-"), c(n + " : " + i)
            },
            defaultOption: {
                zlevel: 0,
                z: 2,
                coordinateSystem: "singleAxis",
                boundaryGap: ["10%", "10%"],
                singleAxisIndex: 0,
                animationEasing: "linear",
                label: {margin: 4, show: !0, position: "left", color: "#000", fontSize: 11},
                emphasis: {label: {show: !0}}
            }
        }), d = h;
    e.exports = d
}, function (e, t, n) {
    var i = n(2), r = n(180).Polygon, o = n(3), a = n(1), s = a.bind, l = a.extend, c = n(41), u = i.extendChartView({
        type: "themeRiver", init: function () {
            this._layers = []
        }, render: function (e, t, n) {
            var i = e.getData(), a = this.group, u = e.getLayerSeries(), h = i.getLayout("layoutInfo"), d = h.rect,
                f = h.boundaryGap;

            function g(e) {
                return e.name
            }

            a.attr("position", [0, d.y + f[0]]);
            var p = new c(this._layersSeries || [], u, g, g), m = {};

            function v(t, n, s) {
                var c = this._layers;
                if ("remove" !== t) {
                    for (var h, d, f, g = [], p = [], v = u[n].indices, y = 0; y < v.length; y++) {
                        var b = i.getItemLayout(v[y]), C = b.x, w = b.y0, I = b.y;
                        g.push([C, w]), p.push([C, w + I]), h = i.getItemVisual(v[y], "color")
                    }
                    var x = i.getItemLayout(v[0]), A = i.getItemModel(v[y - 1]), _ = A.getModel("label"),
                        S = _.get("margin");
                    if ("add" === t) {
                        var k = m[n] = new o.Group;
                        d = new r({
                            shape: {
                                points: g,
                                stackedOnPoints: p,
                                smooth: .4,
                                stackedOnSmooth: .4,
                                smoothConstraint: !1
                            }, z2: 0
                        }), f = new o.Text({
                            style: {
                                x: x.x - S,
                                y: x.y0 + x.y / 2
                            }
                        }), k.add(d), k.add(f), a.add(k), d.setClipPath(function (e, t, n) {
                            var i = new o.Rect({shape: {x: e.x - 10, y: e.y - 10, width: 0, height: e.height + 20}});
                            return o.initProps(i, {shape: {width: e.width + 20, height: e.height + 20}}, t, n), i
                        }(d.getBoundingRect(), e, (function () {
                            d.removeClipPath()
                        })))
                    } else {
                        k = c[s];
                        d = k.childAt(0), f = k.childAt(1), a.add(k), m[n] = k, o.updateProps(d, {
                            shape: {
                                points: g,
                                stackedOnPoints: p
                            }
                        }, e), o.updateProps(f, {style: {x: x.x - S, y: x.y0 + x.y / 2}}, e)
                    }
                    var L = A.getModel("emphasis.itemStyle"), T = A.getModel("itemStyle");
                    o.setTextStyle(f.style, _, {
                        text: _.get("show") ? e.getFormattedLabel(v[y - 1], "normal") || i.getName(v[y - 1]) : null,
                        textVerticalAlign: "middle"
                    }), d.setStyle(l({fill: h}, T.getItemStyle(["color"]))), o.setHoverStyle(d, L.getItemStyle())
                } else a.remove(c[n])
            }

            p.add(s(v, this, "add")).update(s(v, this, "update")).remove(s(v, this, "remove")).execute(), this._layersSeries = u, this._layers = m
        }, dispose: function () {
        }
    });
    e.exports = u
}, function (e, t, n) {
    var i = n(1), r = n(4);

    function o(e, t, n) {
        if (e.count()) for (var r, o = t.coordinateSystem, a = t.getLayerSeries(), s = e.mapDimension("single"), l = e.mapDimension("value"), c = i.map(a, (function (t) {
            return i.map(t.indices, (function (t) {
                var n = o.dataToPoint(e.get(s, t));
                return n[1] = e.get(l, t), n
            }))
        })), u = function (e) {
            for (var t = e.length, n = e[0].length, i = [], r = [], o = 0, a = {}, s = 0; s < n; ++s) {
                for (var l = 0, c = 0; l < t; ++l) c += e[l][s][1];
                c > o && (o = c), i.push(c)
            }
            for (var u = 0; u < n; ++u) r[u] = (o - i[u]) / 2;
            o = 0;
            for (var h = 0; h < n; ++h) {
                var d = i[h] + r[h];
                d > o && (o = d)
            }
            return a.y0 = r, a.max = o, a
        }(c), h = u.y0, d = n / u.max, f = a.length, g = a[0].indices.length, p = 0; p < g; ++p) {
            r = h[p] * d, e.setItemLayout(a[0].indices[p], {layerIndex: 0, x: c[0][p][0], y0: r, y: c[0][p][1] * d});
            for (var m = 1; m < f; ++m) r += c[m - 1][p][1] * d, e.setItemLayout(a[m].indices[p], {
                layerIndex: m,
                x: c[m][p][0],
                y0: r,
                y: c[m][p][1] * d
            })
        }
    }

    e.exports = function (e, t) {
        e.eachSeriesByType("themeRiver", (function (e) {
            var t = e.getData(), n = e.coordinateSystem, i = {}, a = n.getRect();
            i.rect = a;
            var s = e.get("boundaryGap"), l = n.getAxis();
            (i.boundaryGap = s, "horizontal" === l.orient) ? (s[0] = r.parsePercent(s[0], a.height), s[1] = r.parsePercent(s[1], a.height), o(t, e, a.height - s[0] - s[1])) : (s[0] = r.parsePercent(s[0], a.width), s[1] = r.parsePercent(s[1], a.width), o(t, e, a.width - s[0] - s[1]));
            t.setLayout("layoutInfo", i)
        }))
    }
}, function (e, t, n) {
    var i = n(1).createHashMap;
    e.exports = function (e) {
        e.eachSeriesByType("themeRiver", (function (e) {
            var t = e.getData(), n = e.getRawData(), r = e.get("color"), o = i();
            t.each((function (e) {
                o.set(t.getRawIndex(e), e)
            })), n.each((function (i) {
                var a = n.getName(i), s = r[(e.nameMap.get(a) - 1) % r.length];
                n.setItemVisual(i, "color", s);
                var l = o.get(i);
                null != l && t.setItemVisual(l, "color", s)
            }))
        }))
    }
}, function (e, t, n) {
    var i = n(2), r = n(1);
    n(459), n(460), n(462);
    var o = n(93), a = n(463), s = n(73);
    i.registerVisual(r.curry(o, "sunburst")), i.registerLayout(r.curry(a, "sunburst")), i.registerProcessor(r.curry(s, "sunburst"))
}, function (e, t, n) {
    var i = n(1), r = n(15), o = n(119), a = n(44).wrapTreePathInfo, s = r.extend({
        type: "series.sunburst",
        _viewRoot: null,
        getInitialData: function (e, t) {
            var n = {name: e.name, children: e.data};
            !function e(t) {
                var n = 0;
                i.each(t.children, (function (t) {
                    e(t);
                    var r = t.value;
                    i.isArray(r) && (r = r[0]), n += r
                }));
                var r = t.value;
                i.isArray(r) && (r = r[0]);
                (null == r || isNaN(r)) && (r = n);
                r < 0 && (r = 0);
                i.isArray(t.value) ? t.value[0] = r : t.value = r
            }(n);
            var r = e.levels || [], a = {};
            return a.levels = r, o.createTree(n, this, a).data
        },
        optionUpdated: function () {
            this.resetViewRoot()
        },
        getDataParams: function (e) {
            var t = r.prototype.getDataParams.apply(this, arguments), n = this.getData().tree.getNodeByDataIndex(e);
            return t.treePathInfo = a(n, this), t
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            center: ["50%", "50%"],
            radius: [0, "75%"],
            clockwise: !0,
            startAngle: 90,
            minAngle: 0,
            percentPrecision: 2,
            stillShowZeroSum: !0,
            highlightPolicy: "descendant",
            nodeClick: "rootToNode",
            renderLabelForZeroData: !1,
            label: {
                rotate: "radial",
                show: !0,
                opacity: 1,
                align: "center",
                position: "inside",
                distance: 5,
                silent: !0
            },
            itemStyle: {
                borderWidth: 1,
                borderColor: "white",
                borderType: "solid",
                shadowBlur: 0,
                shadowColor: "rgba(0, 0, 0, 0.2)",
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                opacity: 1
            },
            highlight: {itemStyle: {opacity: 1}},
            downplay: {itemStyle: {opacity: .5}, label: {opacity: .6}},
            animationType: "expansion",
            animationDuration: 1e3,
            animationDurationUpdate: 500,
            animationEasing: "cubicOut",
            data: [],
            levels: [],
            sort: "desc"
        },
        getViewRoot: function () {
            return this._viewRoot
        },
        resetViewRoot: function (e) {
            e ? this._viewRoot = e : e = this._viewRoot;
            var t = this.getRawData().tree.root;
            e && (e === t || t.contains(e)) || (this._viewRoot = t)
        }
    });
    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(26), o = n(461), a = n(41), s = n(8).windowOpen, l = r.extend({
        type: "sunburst", init: function () {
        }, render: function (e, t, n, r) {
            var s = this;
            this.seriesModel = e, this.api = n, this.ecModel = t;
            var l = e.getData(), c = l.tree.root, u = e.getViewRoot(), h = this.group,
                d = e.get("renderLabelForZeroData"), f = [];
            u.eachNode((function (e) {
                f.push(e)
            }));
            var g = this._oldChildren || [];
            if (function (n, r) {
                if (0 === n.length && 0 === r.length) return;

                function s(e) {
                    return e.getId()
                }

                function u(i, a) {
                    !function (n, i) {
                        d || !n || n.getValue() || (n = null);
                        if (n !== c && i !== c) if (i && i.piece) n ? (i.piece.updateData(!1, n, "normal", e, t), l.setItemGraphicEl(n.dataIndex, i.piece)) : function (e) {
                            if (!e) return;
                            e.piece && (h.remove(e.piece), e.piece = null)
                        }(i); else if (n) {
                            var r = new o(n, e, t);
                            h.add(r), l.setItemGraphicEl(n.dataIndex, r)
                        }
                    }(null == i ? null : n[i], null == a ? null : r[a])
                }

                new a(r, n, s, s).add(u).update(u).remove(i.curry(u, null)).execute()
            }(f, g), function (n, i) {
                if (i.depth > 0) {
                    s.virtualPiece ? s.virtualPiece.updateData(!1, n, "normal", e, t) : (s.virtualPiece = new o(n, e, t), h.add(s.virtualPiece)), i.piece._onclickEvent && i.piece.off("click", i.piece._onclickEvent);
                    var r = function (e) {
                        s._rootToNode(i.parentNode)
                    };
                    i.piece._onclickEvent = r, s.virtualPiece.on("click", r)
                } else s.virtualPiece && (h.remove(s.virtualPiece), s.virtualPiece = null)
            }(c, u), r && r.highlight && r.highlight.piece) {
                var p = e.getShallow("highlightPolicy");
                r.highlight.piece.onEmphasis(p)
            } else if (r && r.unhighlight) {
                var m = this.virtualPiece;
                !m && c.children.length && (m = c.children[0].piece), m && m.onNormal()
            }
            this._initEvents(), this._oldChildren = f
        }, dispose: function () {
        }, _initEvents: function () {
            var e = this, t = function (t) {
                var n = !1;
                e.seriesModel.getViewRoot().eachNode((function (i) {
                    if (!n && i.piece && i.piece.childAt(0) === t.target) {
                        var r = i.getModel().get("nodeClick");
                        if ("rootToNode" === r) e._rootToNode(i); else if ("link" === r) {
                            var o = i.getModel(), a = o.get("link");
                            if (a) {
                                var l = o.get("target", !0) || "_blank";
                                s(a, l)
                            }
                        }
                        n = !0
                    }
                }))
            };
            this.group._onclickEvent && this.group.off("click", this.group._onclickEvent), this.group.on("click", t), this.group._onclickEvent = t
        }, _rootToNode: function (e) {
            e !== this.seriesModel.getViewRoot() && this.api.dispatchAction({
                type: "sunburstRootToNode",
                from: this.uid,
                seriesId: this.seriesModel.id,
                targetNode: e
            })
        }, containPoint: function (e, t) {
            var n = t.getData().getItemLayout(0);
            if (n) {
                var i = e[0] - n.cx, r = e[1] - n.cy, o = Math.sqrt(i * i + r * r);
                return o <= n.r && o >= n.r0
            }
        }
    });
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(3), o = "none", a = "ancestor", s = "self";

    function l(e, t, n) {
        r.Group.call(this);
        var i = new r.Sector({z2: 2});
        i.seriesIndex = t.seriesIndex;
        var o = new r.Text({z2: 4, silent: e.getModel("label").get("silent")});

        function a() {
            o.ignore = o.hoverIgnore
        }

        function s() {
            o.ignore = o.normalIgnore
        }

        this.add(i), this.add(o), this.updateData(!0, e, "normal", t, n), this.on("emphasis", a).on("normal", s).on("mouseover", a).on("mouseout", s)
    }

    var c = l.prototype;
    c.updateData = function (e, t, n, o, a) {
        this.node = t, t.piece = this, o = o || this._seriesModel, a = a || this._ecModel;
        var s = this.childAt(0);
        s.dataIndex = t.dataIndex;
        var l = t.getModel(), c = t.getLayout(), u = i.extend({}, c);
        u.label = null;
        var h = function (e, t, n) {
            var r = e.getVisual("color"), o = e.getVisual("visualMeta");
            o && 0 !== o.length || (r = null);
            var a = e.getModel("itemStyle").get("color");
            if (a) return a;
            if (r) return r;
            if (0 === e.depth) return n.option.color[0];
            var s = n.option.color.length;
            a = n.option.color[function (e) {
                var t = e;
                for (; t.depth > 1;) t = t.parentNode;
                var n = e.getAncestors()[0];
                return i.indexOf(n.children, t)
            }(e) % s];
            return a
        }(t, 0, a);
        !function (e, t, n) {
            t.getData().setItemVisual(e.dataIndex, "color", n)
        }(t, o, h);
        var d, f = l.getModel("itemStyle").getItemStyle();
        if ("normal" === n) d = f; else {
            var g = l.getModel(n + ".itemStyle").getItemStyle();
            d = i.merge(g, f)
        }
        d = i.defaults({
            lineJoin: "bevel",
            fill: d.fill || h
        }, d), e ? (s.setShape(u), s.shape.r = c.r0, r.updateProps(s, {shape: {r: c.r}}, o, t.dataIndex), s.useStyle(d)) : "object" == typeof d.fill && d.fill.type || "object" == typeof s.style.fill && s.style.fill.type ? (r.updateProps(s, {shape: u}, o), s.useStyle(d)) : r.updateProps(s, {
            shape: u,
            style: d
        }, o), this._updateLabel(o, h, n);
        var p = l.getShallow("cursor");
        if (p && s.attr("cursor", p), e) {
            var m = o.getShallow("highlightPolicy");
            this._initEvents(s, t, o, m)
        }
        this._seriesModel = o || this._seriesModel, this._ecModel = a || this._ecModel, r.setHoverStyle(this)
    }, c.onEmphasis = function (e) {
        var t = this;
        this.node.hostTree.root.eachNode((function (n) {
            var i, r, l;
            n.piece && (t.node === n ? n.piece.updateData(!1, n, "emphasis") : (i = n, r = t.node, (l = e) !== o && (l === s ? i === r : l === a ? i === r || i.isAncestorOf(r) : i === r || i.isDescendantOf(r)) ? n.piece.childAt(0).trigger("highlight") : e !== o && n.piece.childAt(0).trigger("downplay")))
        }))
    }, c.onNormal = function () {
        this.node.hostTree.root.eachNode((function (e) {
            e.piece && e.piece.updateData(!1, e, "normal")
        }))
    }, c.onHighlight = function () {
        this.updateData(!1, this.node, "highlight")
    }, c.onDownplay = function () {
        this.updateData(!1, this.node, "downplay")
    }, c._updateLabel = function (e, t, n) {
        var o = this.node.getModel(), a = o.getModel("label"),
            s = "normal" === n || "emphasis" === n ? a : o.getModel(n + ".label"), l = o.getModel("emphasis.label"),
            c = i.retrieve(e.getFormattedLabel(this.node.dataIndex, n, null, null, "label"), this.node.name);
        !1 === _("show") && (c = "");
        var u = this.node.getLayout(), h = s.get("minAngle");
        null == h && (h = a.get("minAngle")), h = h / 180 * Math.PI;
        var d = u.endAngle - u.startAngle;
        null != h && Math.abs(d) < h && (c = "");
        var f = this.childAt(1);
        r.setLabelStyle(f.style, f.hoverStyle || {}, a, l, {
            defaultText: s.getShallow("show") ? c : null,
            autoColor: t,
            useInsideStyle: !0
        });
        var g, p = (u.startAngle + u.endAngle) / 2, m = Math.cos(p), v = Math.sin(p), y = _("position"),
            b = _("distance") || 0, C = _("align");
        "outside" === y ? (g = u.r + b, C = p > Math.PI / 2 ? "right" : "left") : C && "center" !== C ? "left" === C ? (g = u.r0 + b, p > Math.PI / 2 && (C = "right")) : "right" === C && (g = u.r - b, p > Math.PI / 2 && (C = "left")) : (g = (u.r + u.r0) / 2, C = "center"), f.attr("style", {
            text: c,
            textAlign: C,
            textVerticalAlign: _("verticalAlign") || "middle",
            opacity: _("opacity")
        });
        var w = g * m + u.cx, I = g * v + u.cy;
        f.attr("position", [w, I]);
        var x = _("rotate"), A = 0;

        function _(e) {
            var t = s.get(e);
            return null == t ? a.get(e) : t
        }

        "radial" === x ? (A = -p) < -Math.PI / 2 && (A += Math.PI) : "tangential" === x ? (A = Math.PI / 2 - p) > Math.PI / 2 ? A -= Math.PI : A < -Math.PI / 2 && (A += Math.PI) : "number" == typeof x && (A = x * Math.PI / 180), f.attr("rotation", A)
    }, c._initEvents = function (e, t, n, i) {
        e.off("mouseover").off("mouseout").off("emphasis").off("normal");
        var r = this, o = function () {
            r.onEmphasis(i)
        }, a = function () {
            r.onNormal()
        };
        n.isAnimationEnabled() && e.on("mouseover", o).on("mouseout", a).on("emphasis", o).on("normal", a).on("downplay", (function () {
            r.onDownplay()
        })).on("highlight", (function () {
            r.onHighlight()
        }))
    }, i.inherits(l, r.Group);
    var u = l;
    e.exports = u
}, function (e, t, n) {
    var i = n(2), r = n(44);
    i.registerAction({type: "sunburstRootToNode", update: "updateView"}, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "sunburst", query: e}, (function (t, n) {
            var i = r.retrieveTargetInfo(e, ["sunburstRootToNode"], t);
            if (i) {
                var o = t.getViewRoot();
                o && (e.direction = r.aboveViewRoot(o, i.node) ? "rollUp" : "drillDown"), t.resetViewRoot(i.node)
            }
        }))
    }));
    i.registerAction({type: "sunburstHighlight", update: "updateView"}, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "sunburst", query: e}, (function (t, n) {
            var i = r.retrieveTargetInfo(e, ["sunburstHighlight"], t);
            i && (e.highlight = i.node)
        }))
    }));
    i.registerAction({type: "sunburstUnhighlight", update: "updateView"}, (function (e, t) {
        t.eachComponent({mainType: "series", subType: "sunburst", query: e}, (function (t, n) {
            e.unhighlight = !0
        }))
    }))
}, function (e, t, n) {
    var i = n(4).parsePercent, r = n(1), o = Math.PI / 180;

    function a(e, t) {
        var n = e.children || [];
        e.children = function (e, t) {
            if ("function" == typeof t) return e.sort(t);
            var n = "asc" === t;
            return e.sort((function (e, t) {
                var i = (e.getValue() - t.getValue()) * (n ? 1 : -1);
                return 0 === i ? (e.dataIndex - t.dataIndex) * (n ? -1 : 1) : i
            }))
        }(n, t), n.length && r.each(e.children, (function (e) {
            a(e, t)
        }))
    }

    e.exports = function (e, t, n, s) {
        t.eachSeriesByType(e, (function (e) {
            var t = e.get("center"), s = e.get("radius");
            r.isArray(s) || (s = [0, s]), r.isArray(t) || (t = [t, t]);
            var l = n.getWidth(), c = n.getHeight(), u = Math.min(l, c), h = i(t[0], l), d = i(t[1], c),
                f = i(s[0], u / 2), g = i(s[1], u / 2), p = -e.get("startAngle") * o, m = e.get("minAngle") * o,
                v = e.getData().tree.root, y = e.getViewRoot(), b = y.depth, C = e.get("sort");
            null != C && a(y, C);
            var w = 0;
            r.each(y.children, (function (e) {
                !isNaN(e.getValue()) && w++
            }));
            var I = y.getValue(), x = Math.PI / (I || w) * 2, A = y.depth > 0, _ = y.height - (A ? -1 : 1),
                S = (g - f) / (_ || 1), k = e.get("clockwise"), L = e.get("stillShowZeroSum"), T = k ? 1 : -1,
                O = function (e, t) {
                    if (e) {
                        var n = t;
                        if (e !== v) {
                            var o = e.getValue(), a = 0 === I && L ? x : o * x;
                            a < m && (a = m), n = t + T * a;
                            var s = e.depth - b - (A ? -1 : 1), l = f + S * s, c = f + S * (s + 1), g = e.getModel();
                            null != g.get("r0") && (l = i(g.get("r0"), u / 2)), null != g.get("r") && (c = i(g.get("r"), u / 2)), e.setLayout({
                                angle: a,
                                startAngle: t,
                                endAngle: n,
                                clockwise: k,
                                cx: h,
                                cy: d,
                                r0: l,
                                r: c
                            })
                        }
                        if (e.children && e.children.length) {
                            var p = 0;
                            r.each(e.children, (function (e) {
                                p += O(e, t + p)
                            }))
                        }
                        return n - t
                    }
                };
            if (A) {
                var R = f, E = f + S, P = 2 * Math.PI;
                v.setLayout({angle: P, startAngle: p, endAngle: p + P, clockwise: k, cx: h, cy: d, r0: R, r: E})
            }
            O(y, p)
        }))
    }
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(3), o = n(112).getDefaultLabel, a = n(30), s = n(89).getLayoutOnAxis, l = n(41), c = n(15),
        u = n(13), h = n(26), d = n(69).createClipPath, f = n(465), g = n(466), p = n(467), m = n(468), v = n(469),
        y = r.CACHED_LABEL_STYLE_PROPERTIES, b = ["itemStyle"], C = ["emphasis", "itemStyle"], w = ["label"],
        I = ["emphasis", "label"], x = {cartesian2d: f, geo: g, singleAxis: p, polar: m, calendar: v};

    function A(e, t, n, i, r) {
        null == n[e] || r || (t[e] = n[e], n[e] = i[e])
    }

    function _(e, t, n, a) {
        var l = e.get("renderItem"), c = e.coordinateSystem, u = {};
        c && (u = c.prepareCustoms ? c.prepareCustoms() : x[c.type](c));
        var h, d, f, g, p, m = i.defaults({
            getWidth: a.getWidth,
            getHeight: a.getHeight,
            getZr: a.getZr,
            getDevicePixelRatio: a.getDevicePixelRatio,
            value: function (e, n) {
                return null == n && (n = h), t.get(t.getDimension(e || 0), n)
            },
            style: function (n, a) {
                null == a && (a = h), A(a);
                var s = d.getModel(b).getItemStyle();
                null != p && (s.fill = p);
                var l = t.getItemVisual(a, "opacity");
                null != l && (s.opacity = l);
                var c = n ? R(n, f) : f;
                return r.setTextStyle(s, c, null, {
                    autoColor: p,
                    isRectText: !0
                }), s.text = c.getShallow("show") ? i.retrieve2(e.getFormattedLabel(a, "normal"), o(t, a)) : null, n && E(s, n), s
            },
            styleEmphasis: function (n, a) {
                null == a && (a = h), A(a);
                var s = d.getModel(C).getItemStyle(), l = n ? R(n, g) : g;
                return r.setTextStyle(s, l, null, {isRectText: !0}, !0), s.text = l.getShallow("show") ? i.retrieve3(e.getFormattedLabel(a, "emphasis"), e.getFormattedLabel(a, "normal"), o(t, a)) : null, n && E(s, n), s
            },
            visual: function (e, n) {
                return null == n && (n = h), t.getItemVisual(n, e)
            },
            barLayout: function (e) {
                if (c.getBaseAxis) {
                    var t = c.getBaseAxis();
                    return s(i.defaults({axis: t}, e), a)
                }
            },
            currentSeriesIndices: function () {
                return n.getCurrentSeriesIndices()
            },
            font: function (e) {
                return r.getFont(e, n)
            }
        }, u.api || {}), v = {
            context: {},
            seriesId: e.id,
            seriesName: e.name,
            seriesIndex: e.seriesIndex,
            coordSys: u.coordSys,
            dataInsideLength: t.count(),
            encode: S(e.getData())
        }, y = !0;
        return function (e, n) {
            return h = e, y = !0, l && l(i.defaults({
                dataIndexInside: e,
                dataIndex: t.getRawIndex(e),
                actionType: n ? n.type : null
            }, v), m)
        };

        function A(e) {
            null == e && (e = h), y && (d = t.getItemModel(e), f = d.getModel(w), g = d.getModel(I), p = t.getItemVisual(e, "color"), y = !1)
        }
    }

    function S(e) {
        var t = {};
        return i.each(e.dimensions, (function (n, i) {
            var r = e.getDimensionInfo(n);
            if (!r.isExtraCoord) {
                var o = r.coordDim;
                (t[o] = t[o] || [])[r.coordDimIndex] = i
            }
        })), t
    }

    function k(e, t, n, i, r, o) {
        return (e = L(e, t, n, i, r, o, !0)) && o.setItemGraphicEl(t, e), e
    }

    function L(e, t, n, o, a, s, c) {
        var u, h = !n, d = (n = n || {}).type, f = n.shape, g = n.style;
        if (e && (h || null != d && d !== e.__customGraphicType || "path" === d && ((u = f) && (u.hasOwnProperty("pathData") || u.hasOwnProperty("d"))) && M(f) !== e.__customPathData || "image" === d && N(g, "image") && g.image !== e.__customImagePath || "text" === d && N(f, "text") && g.text !== e.__customText) && (a.remove(e), e = null), !h) {
            var p = !e;
            return !e && (e = function (e) {
                var t, n = e.type;
                if ("path" === n) {
                    var i = e.shape, o = null != i.width && null != i.height ? {
                        x: i.x || 0,
                        y: i.y || 0,
                        width: i.width,
                        height: i.height
                    } : null, a = M(i);
                    (t = r.makePath(a, null, o, i.layout || "center")).__customPathData = a
                } else if ("image" === n) (t = new r.Image({})).__customImagePath = e.style.image; else if ("text" === n) (t = new r.Text({})).__customText = e.style.text; else if ("group" === n) t = new r.Group; else {
                    if ("compoundPath" === n) throw new Error('"compoundPath" is not supported yet.');
                    t = new (r.getShapeClass(n))
                }
                return t.__customGraphicType = n, t.name = e.name, t
            }(n)), function (e, t, n, o, a, s, l) {
                var c = {}, u = n.style || {};
                if (n.shape && (c.shape = i.clone(n.shape)), n.position && (c.position = n.position.slice()), n.scale && (c.scale = n.scale.slice()), n.origin && (c.origin = n.origin.slice()), n.rotation && (c.rotation = n.rotation), "image" === e.type && n.style) {
                    var h = c.style = {};
                    i.each(["x", "y", "width", "height"], (function (t) {
                        A(t, h, u, e.style, s)
                    }))
                }
                if ("text" === e.type && n.style) {
                    h = c.style = {};
                    i.each(["x", "y"], (function (t) {
                        A(t, h, u, e.style, s)
                    })), !u.hasOwnProperty("textFill") && u.fill && (u.textFill = u.fill), !u.hasOwnProperty("textStroke") && u.stroke && (u.textStroke = u.stroke)
                }
                if ("group" !== e.type && (e.useStyle(u), s)) {
                    e.style.opacity = 0;
                    var d = u.opacity;
                    null == d && (d = 1), r.initProps(e, {style: {opacity: d}}, o, t)
                }
                s ? e.attr(c) : r.updateProps(e, c, o, t), n.hasOwnProperty("z2") && e.attr("z2", n.z2 || 0), n.hasOwnProperty("silent") && e.attr("silent", n.silent), n.hasOwnProperty("invisible") && e.attr("invisible", n.invisible), n.hasOwnProperty("ignore") && e.attr("ignore", n.ignore), n.hasOwnProperty("info") && e.attr("info", n.info);
                var f = n.styleEmphasis;
                r.setElementHoverStyle(e, f), l && r.setAsHighDownDispatcher(e, !1 !== f)
            }(e, t, n, o, 0, p, c), "group" === d && function (e, t, n, i, r) {
                var o = n.children, a = o ? o.length : 0, s = n.$mergeChildren,
                    c = "byName" === s || n.diffChildrenByName, u = !1 === s;
                if (!a && !c && !u) return;
                if (c) return h = {
                    oldChildren: e.children() || [],
                    newChildren: o || [],
                    dataIndex: t,
                    animatableModel: i,
                    group: e,
                    data: r
                }, void new l(h.oldChildren, h.newChildren, T, T, h).add(O).update(O).remove(P).execute();
                var h;
                u && e.removeAll();
                for (var d = 0; d < a; d++) o[d] && L(e.childAt(d), t, o[d], i, e, r)
            }(e, t, n, o, s), a.add(e), e
        }
    }

    function T(e, t) {
        var n = e && e.name;
        return null != n ? n : "e\0\0" + t
    }

    function O(e, t) {
        var n = this.context, i = null != e ? n.newChildren[e] : null;
        L(null != t ? n.oldChildren[t] : null, n.dataIndex, i, n.animatableModel, n.group, n.data)
    }

    function R(e, t) {
        var n = new u({}, t);
        return i.each(y, (function (t, i) {
            e.hasOwnProperty(t) && (n.option[i] = e[t])
        })), n
    }

    function E(e, t) {
        for (var n in t) !t.hasOwnProperty(n) && y.hasOwnProperty(n) || (e[n] = t[n])
    }

    function P(e) {
        var t = this.context, n = t.oldChildren[e];
        n && t.group.remove(n)
    }

    function M(e) {
        return e && (e.pathData || e.d)
    }

    function N(e, t) {
        return e && e.hasOwnProperty(t)
    }

    c.extend({
        type: "series.custom",
        dependencies: ["grid", "polar", "geo", "singleAxis", "calendar"],
        defaultOption: {
            coordinateSystem: "cartesian2d",
            zlevel: 0,
            z: 2,
            legendHoverLink: !0,
            useTransform: !0,
            clip: !1
        },
        getInitialData: function (e, t) {
            return a(this.getSource(), this)
        },
        getDataParams: function (e, t, n) {
            var i = c.prototype.getDataParams.apply(this, arguments);
            return n && (i.info = n.info), i
        }
    }), h.extend({
        type: "custom", _data: null, render: function (e, t, n, i) {
            var r = this._data, o = e.getData(), a = this.group, s = _(e, o, t, n);
            o.diff(r).add((function (t) {
                k(null, t, s(t, i), e, a, o)
            })).update((function (t, n) {
                k(r.getItemGraphicEl(n), t, s(t, i), e, a, o)
            })).remove((function (e) {
                var t = r.getItemGraphicEl(e);
                t && a.remove(t)
            })).execute();
            var l = e.get("clip", !0) ? d(e.coordinateSystem, !1, e) : null;
            l ? a.setClipPath(l) : a.removeClipPath(), this._data = o
        }, incrementalPrepareRender: function (e, t, n) {
            this.group.removeAll(), this._data = null
        }, incrementalRender: function (e, t, n, i, r) {
            var o = t.getData(), a = _(t, o, n, i);

            function s(e) {
                e.isGroup || (e.incremental = !0, e.useHoverLayer = !0)
            }

            for (var l = e.start; l < e.end; l++) {
                k(null, l, a(l, r), t, this.group, o).traverse(s)
            }
        }, dispose: i.noop, filterForExposedEvent: function (e, t, n, i) {
            var r = t.element;
            if (null == r || n.name === r) return !0;
            for (; (n = n.parent) && n !== this.group;) if (n.name === r) return !0;
            return !1
        }
    })
}, function (e, t, n) {
    var i = n(1);

    function r(e, t) {
        return t = t || [0, 0], i.map(["x", "y"], (function (n, i) {
            var r = this.getAxis(n), o = t[i], a = e[i] / 2;
            return "category" === r.type ? r.getBandWidth() : Math.abs(r.dataToCoord(o - a) - r.dataToCoord(o + a))
        }), this)
    }

    e.exports = function (e) {
        var t = e.grid.getRect();
        return {
            coordSys: {type: "cartesian2d", x: t.x, y: t.y, width: t.width, height: t.height},
            api: {
                coord: function (t) {
                    return e.dataToPoint(t)
                }, size: i.bind(r, e)
            }
        }
    }
}, function (e, t, n) {
    var i = n(1);

    function r(e, t) {
        return t = t || [0, 0], i.map([0, 1], (function (n) {
            var i = t[n], r = e[n] / 2, o = [], a = [];
            return o[n] = i - r, a[n] = i + r, o[1 - n] = a[1 - n] = t[1 - n], Math.abs(this.dataToPoint(o)[n] - this.dataToPoint(a)[n])
        }), this)
    }

    e.exports = function (e) {
        var t = e.getBoundingRect();
        return {
            coordSys: {type: "geo", x: t.x, y: t.y, width: t.width, height: t.height, zoom: e.getZoom()},
            api: {
                coord: function (t) {
                    return e.dataToPoint(t)
                }, size: i.bind(r, e)
            }
        }
    }
}, function (e, t, n) {
    var i = n(1);

    function r(e, t) {
        var n = this.getAxis(), i = t instanceof Array ? t[0] : t, r = (e instanceof Array ? e[0] : e) / 2;
        return "category" === n.type ? n.getBandWidth() : Math.abs(n.dataToCoord(i - r) - n.dataToCoord(i + r))
    }

    e.exports = function (e) {
        var t = e.getRect();
        return {
            coordSys: {type: "singleAxis", x: t.x, y: t.y, width: t.width, height: t.height},
            api: {
                coord: function (t) {
                    return e.dataToPoint(t)
                }, size: i.bind(r, e)
            }
        }
    }
}, function (e, t, n) {
    var i = n(1);

    function r(e, t) {
        return i.map(["Radius", "Angle"], (function (n, i) {
            var r = this["get" + n + "Axis"](), o = t[i], a = e[i] / 2, s = "dataTo" + n,
                l = "category" === r.type ? r.getBandWidth() : Math.abs(r[s](o - a) - r[s](o + a));
            return "Angle" === n && (l = l * Math.PI / 180), l
        }), this)
    }

    e.exports = function (e) {
        var t = e.getRadiusAxis(), n = e.getAngleAxis(), o = t.getExtent();
        return o[0] > o[1] && o.reverse(), {
            coordSys: {type: "polar", cx: e.cx, cy: e.cy, r: o[1], r0: o[0]},
            api: {
                coord: i.bind((function (i) {
                    var r = t.dataToRadius(i[0]), o = n.dataToAngle(i[1]), a = e.coordToPoint([r, o]);
                    return a.push(r, o * Math.PI / 180), a
                })), size: i.bind(r, e)
            }
        }
    }
}, function (e, t) {
    e.exports = function (e) {
        var t = e.getRect(), n = e.getRangeInfo();
        return {
            coordSys: {
                type: "calendar",
                x: t.x,
                y: t.y,
                width: t.width,
                height: t.height,
                cellWidth: e.getCellWidth(),
                cellHeight: e.getCellHeight(),
                rangeInfo: {start: n.start, end: n.end, weeks: n.weeks, dayCount: n.allDay}
            }, api: {
                coord: function (t, n) {
                    return e.dataToPoint(t, n)
                }
            }
        }
    }
}, function (e, t, n) {
    n(71), n(208), n(75)
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(472);
    n(125), n(478), n(480), n(75), n(482), i.registerLayout(r.curry(o, "bar")), i.extendComponentView({type: "polar"})
}, function (e, t, n) {
    var i = n(1), r = n(4).parsePercent, o = n(27).isDimensionStacked;

    function a(e) {
        return e.get("stack") || "__ec_stack_" + e.seriesIndex
    }

    function s(e, t) {
        return t.dim + e.model.componentIndex
    }

    var l = function (e, t, n) {
        var l = {}, c = function (e, t) {
            var n = {};
            i.each(e, (function (e, t) {
                var i = e.getData(), o = e.coordinateSystem, l = o.getBaseAxis(), c = s(o, l), u = l.getExtent(),
                    h = "category" === l.type ? l.getBandWidth() : Math.abs(u[1] - u[0]) / i.count(), d = n[c] || {
                        bandWidth: h,
                        remainedWidth: h,
                        autoWidthCount: 0,
                        categoryGap: "20%",
                        gap: "30%",
                        stacks: {}
                    }, f = d.stacks;
                n[c] = d;
                var g = a(e);
                f[g] || d.autoWidthCount++, f[g] = f[g] || {width: 0, maxWidth: 0};
                var p = r(e.get("barWidth"), h), m = r(e.get("barMaxWidth"), h), v = e.get("barGap"),
                    y = e.get("barCategoryGap");
                p && !f[g].width && (p = Math.min(d.remainedWidth, p), f[g].width = p, d.remainedWidth -= p), m && (f[g].maxWidth = m), null != v && (d.gap = v), null != y && (d.categoryGap = y)
            }));
            var o = {};
            return i.each(n, (function (e, t) {
                o[t] = {};
                var n = e.stacks, a = e.bandWidth, s = r(e.categoryGap, a), l = r(e.gap, 1), c = e.remainedWidth,
                    u = e.autoWidthCount, h = (c - s) / (u + (u - 1) * l);
                h = Math.max(h, 0), i.each(n, (function (e, t) {
                    var n = e.maxWidth;
                    n && n < h && (n = Math.min(n, c), e.width && (n = Math.min(n, e.width)), c -= n, e.width = n, u--)
                })), h = (c - s) / (u + (u - 1) * l), h = Math.max(h, 0);
                var d, f = 0;
                i.each(n, (function (e, t) {
                    e.width || (e.width = h), d = e, f += e.width * (1 + l)
                })), d && (f -= d.width * l);
                var g = -f / 2;
                i.each(n, (function (e, n) {
                    o[t][n] = o[t][n] || {offset: g, width: e.width}, g += e.width * (1 + l)
                }))
            })), o
        }(i.filter(t.getSeriesByType(e), (function (e) {
            return !t.isSeriesFiltered(e) && e.coordinateSystem && "polar" === e.coordinateSystem.type
        })));
        t.eachSeriesByType(e, (function (e) {
            if ("polar" === e.coordinateSystem.type) {
                var t = e.getData(), n = e.coordinateSystem, i = n.getBaseAxis(), r = s(n, i), u = a(e), h = c[r][u],
                    d = h.offset, f = h.width, g = n.getOtherAxis(i), p = e.coordinateSystem.cx,
                    m = e.coordinateSystem.cy, v = e.get("barMinHeight") || 0, y = e.get("barMinAngle") || 0;
                l[u] = l[u] || [];
                for (var b = t.mapDimension(g.dim), C = t.mapDimension(i.dim), w = o(t, b), I = "radius" !== i.dim || !e.get("roundCap", !0), x = g.getExtent()[0], A = 0, _ = t.count(); A < _; A++) {
                    var S, k, L, T, O = t.get(b, A), R = t.get(C, A), E = O >= 0 ? "p" : "n", P = x;
                    if (w && (l[u][R] || (l[u][R] = {p: x, n: x}), P = l[u][R][E]), "radius" === g.dim) {
                        var M = g.dataToRadius(O) - x, N = i.dataToAngle(R);
                        Math.abs(M) < v && (M = (M < 0 ? -1 : 1) * v), S = P, k = P + M, T = (L = N - d) - f, w && (l[u][R][E] = k)
                    } else {
                        var D = g.dataToAngle(O, I) - x, B = i.dataToRadius(R);
                        Math.abs(D) < y && (D = (D < 0 ? -1 : 1) * y), k = (S = B + d) + f, L = P, T = P + D, w && (l[u][R][E] = T)
                    }
                    t.setItemLayout(A, {
                        cx: p,
                        cy: m,
                        r0: S,
                        r: k,
                        startAngle: -L * Math.PI / 180,
                        endAngle: -T * Math.PI / 180
                    })
                }
            }
        }), this)
    };
    e.exports = l
}, function (e, t, n) {
    var i = n(474), r = n(475), o = function (e) {
        this.name = e || "", this.cx = 0, this.cy = 0, this._radiusAxis = new i, this._angleAxis = new r, this._radiusAxis.polar = this._angleAxis.polar = this
    };
    o.prototype = {
        type: "polar",
        axisPointerEnabled: !0,
        constructor: o,
        dimensions: ["radius", "angle"],
        model: null,
        containPoint: function (e) {
            var t = this.pointToCoord(e);
            return this._radiusAxis.contain(t[0]) && this._angleAxis.contain(t[1])
        },
        containData: function (e) {
            return this._radiusAxis.containData(e[0]) && this._angleAxis.containData(e[1])
        },
        getAxis: function (e) {
            return this["_" + e + "Axis"]
        },
        getAxes: function () {
            return [this._radiusAxis, this._angleAxis]
        },
        getAxesByScale: function (e) {
            var t = [], n = this._angleAxis, i = this._radiusAxis;
            return n.scale.type === e && t.push(n), i.scale.type === e && t.push(i), t
        },
        getAngleAxis: function () {
            return this._angleAxis
        },
        getRadiusAxis: function () {
            return this._radiusAxis
        },
        getOtherAxis: function (e) {
            var t = this._angleAxis;
            return e === t ? this._radiusAxis : t
        },
        getBaseAxis: function () {
            return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis()
        },
        getTooltipAxes: function (e) {
            var t = null != e && "auto" !== e ? this.getAxis(e) : this.getBaseAxis();
            return {baseAxes: [t], otherAxes: [this.getOtherAxis(t)]}
        },
        dataToPoint: function (e, t) {
            return this.coordToPoint([this._radiusAxis.dataToRadius(e[0], t), this._angleAxis.dataToAngle(e[1], t)])
        },
        pointToData: function (e, t) {
            var n = this.pointToCoord(e);
            return [this._radiusAxis.radiusToData(n[0], t), this._angleAxis.angleToData(n[1], t)]
        },
        pointToCoord: function (e) {
            var t = e[0] - this.cx, n = e[1] - this.cy, i = this.getAngleAxis(), r = i.getExtent(),
                o = Math.min(r[0], r[1]), a = Math.max(r[0], r[1]);
            i.inverse ? o = a - 360 : a = o + 360;
            var s = Math.sqrt(t * t + n * n);
            t /= s, n /= s;
            for (var l = Math.atan2(-n, t) / Math.PI * 180, c = l < o ? 1 : -1; l < o || l > a;) l += 360 * c;
            return [s, l]
        },
        coordToPoint: function (e) {
            var t = e[0], n = e[1] / 180 * Math.PI;
            return [Math.cos(n) * t + this.cx, -Math.sin(n) * t + this.cy]
        },
        getArea: function () {
            var e = this.getAngleAxis(), t = this.getRadiusAxis().getExtent().slice();
            t[0] > t[1] && t.reverse();
            var n = e.getExtent(), i = Math.PI / 180;
            return {
                cx: this.cx,
                cy: this.cy,
                r0: t[0],
                r: t[1],
                startAngle: -n[0] * i,
                endAngle: -n[1] * i,
                clockwise: e.inverse,
                contain: function (e, t) {
                    var n = e - this.cx, i = t - this.cy, r = n * n + i * i, o = this.r, a = this.r0;
                    return r <= o * o && r >= a * a
                }
            }
        }
    };
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1), r = n(34);

    function o(e, t) {
        r.call(this, "radius", e, t), this.type = "category"
    }

    o.prototype = {
        constructor: o, pointToData: function (e, t) {
            return this.polar.pointToData(e, t)["radius" === this.dim ? 0 : 1]
        }, dataToRadius: r.prototype.dataToCoord, radiusToData: r.prototype.coordToData
    }, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(1), r = n(17), o = n(34), a = (0, n(5).makeInner)();

    function s(e, t) {
        t = t || [0, 360], o.call(this, "angle", e, t), this.type = "category"
    }

    s.prototype = {
        constructor: s,
        pointToData: function (e, t) {
            return this.polar.pointToData(e, t)["radius" === this.dim ? 0 : 1]
        },
        dataToAngle: o.prototype.dataToCoord,
        angleToData: o.prototype.coordToData,
        calculateCategoryInterval: function () {
            var e = this.getLabelModel(), t = this.scale, n = t.getExtent(), i = t.count();
            if (n[1] - n[0] < 1) return 0;
            var o = n[0], s = this.dataToCoord(o + 1) - this.dataToCoord(o), l = Math.abs(s),
                c = r.getBoundingRect(o, e.getFont(), "center", "top"), u = Math.max(c.height, 7) / l;
            isNaN(u) && (u = 1 / 0);
            var h = Math.max(0, Math.floor(u)), d = a(this.model), f = d.lastAutoInterval, g = d.lastTickCount;
            return null != f && null != g && Math.abs(f - h) <= 1 && Math.abs(g - i) <= 1 && f > h ? h = f : (d.lastTickCount = i, d.lastAutoInterval = h), h
        }
    }, i.inherits(s, o);
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(2);
    n(477);
    var r = i.extendComponentModel({
        type: "polar",
        dependencies: ["polarAxis", "angleAxis"],
        coordinateSystem: null,
        findAxisModel: function (e) {
            var t;
            return this.ecModel.eachComponent(e, (function (e) {
                e.getCoordSysModel() === this && (t = e)
            }), this), t
        },
        defaultOption: {zlevel: 0, z: 0, center: ["50%", "50%"], radius: "80%"}
    });
    e.exports = r
}, function (e, t, n) {
    var i = n(1), r = n(14), o = n(91), a = n(51), s = r.extend({
        type: "polarAxis", axis: null, getCoordSysModel: function () {
            return this.ecModel.queryComponents({
                mainType: "polar",
                index: this.option.polarIndex,
                id: this.option.polarId
            })[0]
        }
    });
    i.merge(s.prototype, a);
    var l = {splitNumber: 5};

    function c(e, t) {
        return t.type || (t.data ? "category" : "value")
    }

    o("angle", s, c, {startAngle: 90, clockwise: !0, splitNumber: 12, axisLabel: {rotate: !1}}), o("radius", s, c, l)
}, function (e, t, n) {
    n(125), n(479)
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(13), a = n(43), s = n(35),
        l = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"];

    function c(e, t, n) {
        t[1] > t[0] && (t = t.slice().reverse());
        var i = e.coordToPoint([t[0], n]), r = e.coordToPoint([t[1], n]);
        return {x1: i[0], y1: i[1], x2: r[0], y2: r[1]}
    }

    function u(e) {
        return e.getRadiusAxis().inverse ? 0 : 1
    }

    function h(e) {
        var t = e[0], n = e[e.length - 1];
        t && n && Math.abs(Math.abs(t.coord - n.coord) - 360) < 1e-4 && e.pop()
    }

    var d = a.extend({
        type: "angleAxis", axisPointerClass: "PolarAxisPointer", render: function (e, t) {
            if (this.group.removeAll(), e.get("show")) {
                var n = e.axis, r = n.polar, o = r.getRadiusAxis().getExtent(), a = n.getTicksCoords(),
                    s = n.getMinorTicksCoords(), c = i.map(n.getViewLabels(), (function (e) {
                        return (e = i.clone(e)).coord = n.dataToCoord(e.tickValue), e
                    }));
                h(c), h(a), i.each(l, (function (t) {
                    !e.get(t + ".show") || n.scale.isBlank() && "axisLine" !== t || this["_" + t](e, r, a, s, o, c)
                }), this)
            }
        }, _axisLine: function (e, t, n, i, o) {
            var a, s = e.getModel("axisLine.lineStyle"), l = u(t), c = l ? 0 : 1;
            (a = 0 === o[c] ? new r.Circle({
                shape: {cx: t.cx, cy: t.cy, r: o[l]},
                style: s.getLineStyle(),
                z2: 1,
                silent: !0
            }) : new r.Ring({
                shape: {cx: t.cx, cy: t.cy, r: o[l], r0: o[c]},
                style: s.getLineStyle(),
                z2: 1,
                silent: !0
            })).style.fill = null, this.group.add(a)
        }, _axisTick: function (e, t, n, o, a) {
            var s = e.getModel("axisTick"), l = (s.get("inside") ? -1 : 1) * s.get("length"), h = a[u(t)],
                d = i.map(n, (function (e) {
                    return new r.Line({shape: c(t, [h, h + l], e.coord)})
                }));
            this.group.add(r.mergePath(d, {style: i.defaults(s.getModel("lineStyle").getLineStyle(), {stroke: e.get("axisLine.lineStyle.color")})}))
        }, _minorTick: function (e, t, n, o, a) {
            if (o.length) {
                for (var s = e.getModel("axisTick"), l = e.getModel("minorTick"), h = (s.get("inside") ? -1 : 1) * l.get("length"), d = a[u(t)], f = [], g = 0; g < o.length; g++) for (var p = 0; p < o[g].length; p++) f.push(new r.Line({shape: c(t, [d, d + h], o[g][p].coord)}));
                this.group.add(r.mergePath(f, {style: i.defaults(l.getModel("lineStyle").getLineStyle(), i.defaults(s.getLineStyle(), {stroke: e.get("axisLine.lineStyle.color")}))}))
            }
        }, _axisLabel: function (e, t, n, a, l, c) {
            var h = e.getCategories(!0), d = e.getModel("axisLabel"), f = d.get("margin"), g = e.get("triggerEvent");
            i.each(c, (function (n, i) {
                var a = d, c = n.tickValue, p = l[u(t)], m = t.coordToPoint([p + f, n.coord]), v = t.cx, y = t.cy,
                    b = Math.abs(m[0] - v) / p < .3 ? "center" : m[0] > v ? "left" : "right",
                    C = Math.abs(m[1] - y) / p < .3 ? "middle" : m[1] > y ? "top" : "bottom";
                h && h[c] && h[c].textStyle && (a = new o(h[c].textStyle, d, d.ecModel));
                var w = new r.Text({silent: s.isLabelSilent(e)});
                this.group.add(w), r.setTextStyle(w.style, a, {
                    x: m[0],
                    y: m[1],
                    textFill: a.getTextColor() || e.get("axisLine.lineStyle.color"),
                    text: n.formattedLabel,
                    textAlign: b,
                    textVerticalAlign: C
                }), g && (w.eventData = s.makeAxisEventDataBase(e), w.eventData.targetType = "axisLabel", w.eventData.value = n.rawLabel)
            }), this)
        }, _splitLine: function (e, t, n, o, a) {
            var s = e.getModel("splitLine").getModel("lineStyle"), l = s.get("color"), u = 0;
            l = l instanceof Array ? l : [l];
            for (var h = [], d = 0; d < n.length; d++) {
                var f = u++ % l.length;
                h[f] = h[f] || [], h[f].push(new r.Line({shape: c(t, a, n[d].coord)}))
            }
            for (d = 0; d < h.length; d++) this.group.add(r.mergePath(h[d], {
                style: i.defaults({stroke: l[d % l.length]}, s.getLineStyle()),
                silent: !0,
                z: e.get("z")
            }))
        }, _minorSplitLine: function (e, t, n, i, o) {
            if (i.length) {
                for (var a = e.getModel("minorSplitLine").getModel("lineStyle"), s = [], l = 0; l < i.length; l++) for (var u = 0; u < i[l].length; u++) s.push(new r.Line({shape: c(t, o, i[l][u].coord)}));
                this.group.add(r.mergePath(s, {style: a.getLineStyle(), silent: !0, z: e.get("z")}))
            }
        }, _splitArea: function (e, t, n, o, a) {
            if (n.length) {
                var s = e.getModel("splitArea").getModel("areaStyle"), l = s.get("color"), c = 0;
                l = l instanceof Array ? l : [l];
                for (var u = [], h = Math.PI / 180, d = -n[0].coord * h, f = Math.min(a[0], a[1]), g = Math.max(a[0], a[1]), p = e.get("clockwise"), m = 1; m < n.length; m++) {
                    var v = c++ % l.length;
                    u[v] = u[v] || [], u[v].push(new r.Sector({
                        shape: {
                            cx: t.cx,
                            cy: t.cy,
                            r0: f,
                            r: g,
                            startAngle: d,
                            endAngle: -n[m].coord * h,
                            clockwise: p
                        }, silent: !0
                    })), d = -n[m].coord * h
                }
                for (m = 0; m < u.length; m++) this.group.add(r.mergePath(u[m], {
                    style: i.defaults({fill: l[m % l.length]}, s.getAreaStyle()),
                    silent: !0
                }))
            }
        }
    });
    e.exports = d
}, function (e, t, n) {
    n(125), n(481)
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(35), a = n(43), s = ["axisLine", "axisTickLabel", "axisName"],
        l = ["splitLine", "splitArea", "minorSplitLine"], c = a.extend({
            type: "radiusAxis", axisPointerClass: "PolarAxisPointer", render: function (e, t) {
                if (this.group.removeAll(), e.get("show")) {
                    var n = e.axis, r = n.polar, a = r.getAngleAxis(), c = n.getTicksCoords(), u = n.getMinorTicksCoords(),
                        h = a.getExtent()[0], d = n.getExtent(), f = function (e, t, n) {
                            return {
                                position: [e.cx, e.cy],
                                rotation: n / 180 * Math.PI,
                                labelDirection: -1,
                                tickDirection: -1,
                                nameDirection: 1,
                                labelRotate: t.getModel("axisLabel").get("rotate"),
                                z2: 1
                            }
                        }(r, e, h), g = new o(e, f);
                    i.each(s, g.add, g), this.group.add(g.getGroup()), i.each(l, (function (t) {
                        e.get(t + ".show") && !n.scale.isBlank() && this["_" + t](e, r, h, d, c, u)
                    }), this)
                }
            }, _splitLine: function (e, t, n, o, a) {
                var s = e.getModel("splitLine").getModel("lineStyle"), l = s.get("color"), c = 0;
                l = l instanceof Array ? l : [l];
                for (var u = [], h = 0; h < a.length; h++) {
                    var d = c++ % l.length;
                    u[d] = u[d] || [], u[d].push(new r.Circle({shape: {cx: t.cx, cy: t.cy, r: a[h].coord}}))
                }
                for (h = 0; h < u.length; h++) this.group.add(r.mergePath(u[h], {
                    style: i.defaults({
                        stroke: l[h % l.length],
                        fill: null
                    }, s.getLineStyle()), silent: !0
                }))
            }, _minorSplitLine: function (e, t, n, o, a, s) {
                if (s.length) {
                    for (var l = e.getModel("minorSplitLine").getModel("lineStyle"), c = [], u = 0; u < s.length; u++) for (var h = 0; h < s[u].length; h++) c.push(new r.Circle({
                        shape: {
                            cx: t.cx,
                            cy: t.cy,
                            r: s[u][h].coord
                        }
                    }));
                    this.group.add(r.mergePath(c, {style: i.defaults({fill: null}, l.getLineStyle()), silent: !0}))
                }
            }, _splitArea: function (e, t, n, o, a) {
                if (a.length) {
                    var s = e.getModel("splitArea").getModel("areaStyle"), l = s.get("color"), c = 0;
                    l = l instanceof Array ? l : [l];
                    for (var u = [], h = a[0].coord, d = 1; d < a.length; d++) {
                        var f = c++ % l.length;
                        u[f] = u[f] || [], u[f].push(new r.Sector({
                            shape: {
                                cx: t.cx,
                                cy: t.cy,
                                r0: h,
                                r: a[d].coord,
                                startAngle: 0,
                                endAngle: 2 * Math.PI
                            }, silent: !0
                        })), h = a[d].coord
                    }
                    for (d = 0; d < u.length; d++) this.group.add(r.mergePath(u[d], {
                        style: i.defaults({fill: l[d % l.length]}, s.getAreaStyle()),
                        silent: !0
                    }))
                }
            }
        });
    e.exports = c
}, function (e, t, n) {
    var i = n(8), r = n(124), o = n(3), a = n(96), s = n(16), l = n(35), c = n(43), u = r.extend({
        makeElOption: function (e, t, n, r, c) {
            var u = n.axis;
            "angle" === u.dim && (this.animationThreshold = Math.PI / 18);
            var d, f = u.polar, g = f.getOtherAxis(u).getExtent();
            d = u["dataTo" + i.capitalFirst(u.dim)](t);
            var p = r.get("type");
            if (p && "none" !== p) {
                var m = a.buildElStyle(r), v = h[p](u, f, d, g, m);
                v.style = m, e.graphicKey = v.type, e.pointer = v
            }
            var y = function (e, t, n, i, r) {
                var a = t.axis, c = a.dataToCoord(e), u = i.getAngleAxis().getExtent()[0];
                u = u / 180 * Math.PI;
                var h, d, f, g = i.getRadiusAxis().getExtent();
                if ("radius" === a.dim) {
                    var p = s.create();
                    s.rotate(p, p, u), s.translate(p, p, [i.cx, i.cy]), h = o.applyTransform([c, -r], p);
                    var m = t.getModel("axisLabel").get("rotate") || 0, v = l.innerTextLayout(u, m * Math.PI / 180, -1);
                    d = v.textAlign, f = v.textVerticalAlign
                } else {
                    var y = g[1];
                    h = i.coordToPoint([y + r, c]);
                    var b = i.cx, C = i.cy;
                    d = Math.abs(h[0] - b) / y < .3 ? "center" : h[0] > b ? "left" : "right", f = Math.abs(h[1] - C) / y < .3 ? "middle" : h[1] > C ? "top" : "bottom"
                }
                return {position: h, align: d, verticalAlign: f}
            }(t, n, 0, f, r.get("label.margin"));
            a.buildLabelElOption(e, n, r, c, y)
        }
    });
    var h = {
        line: function (e, t, n, i, r) {
            return "angle" === e.dim ? {
                type: "Line",
                shape: a.makeLineShape(t.coordToPoint([i[0], n]), t.coordToPoint([i[1], n]))
            } : {type: "Circle", shape: {cx: t.cx, cy: t.cy, r: n}}
        }, shadow: function (e, t, n, i, r) {
            var o = Math.max(1, e.getBandWidth()), s = Math.PI / 180;
            return "angle" === e.dim ? {
                type: "Sector",
                shape: a.makeSectorShape(t.cx, t.cy, i[0], i[1], (-n - o / 2) * s, (o / 2 - n) * s)
            } : {type: "Sector", shape: a.makeSectorShape(t.cx, t.cy, n - o / 2, n + o / 2, 0, 2 * Math.PI)}
        }
    };
    c.registerAxisPointerClass("PolarAxisPointer", u);
    var d = u;
    e.exports = d
}, function (e, t, n) {
    var i = n(2), r = n(1);

    function o(e, t) {
        t.update = "updateView", i.registerAction(t, (function (t, n) {
            var i = {};
            return n.eachComponent({mainType: "geo", query: t}, (function (n) {
                n[e](t.name);
                var o = n.coordinateSystem;
                r.each(o.regions, (function (e) {
                    i[e.name] = n.isSelected(e.name) || !1
                }))
            })), {selected: i, name: t.name}
        }))
    }

    n(484), n(117), n(485), n(190), o("toggleSelected", {
        type: "geoToggleSelect",
        event: "geoselectchanged"
    }), o("select", {type: "geoSelect", event: "geoselected"}), o("unSelect", {
        type: "geoUnSelect",
        event: "geounselected"
    })
}, function (e, t, n) {
    var i = n(1), r = n(5), o = n(14), a = n(13), s = n(114), l = n(117), c = o.extend({
        type: "geo",
        coordinateSystem: null,
        layoutMode: "box",
        init: function (e) {
            o.prototype.init.apply(this, arguments), r.defaultEmphasis(e, "label", ["show"])
        },
        optionUpdated: function () {
            var e = this.option, t = this;
            e.regions = l.getFilledRegions(e.regions, e.map, e.nameMap), this._optionModelMap = i.reduce(e.regions || [], (function (e, n) {
                return n.name && e.set(n.name, new a(n, t)), e
            }), i.createHashMap()), this.updateSelectedMap(e.regions)
        },
        defaultOption: {
            zlevel: 0,
            z: 0,
            show: !0,
            left: "center",
            top: "center",
            aspectScale: null,
            silent: !1,
            map: "",
            boundingCoords: null,
            center: null,
            zoom: 1,
            scaleLimit: null,
            label: {show: !1, color: "#000"},
            itemStyle: {borderWidth: .5, borderColor: "#444", color: "#eee"},
            emphasis: {label: {show: !0, color: "rgb(100,0,0)"}, itemStyle: {color: "rgba(255,215,0,0.8)"}},
            regions: []
        },
        getRegionModel: function (e) {
            return this._optionModelMap.get(e) || new a(null, this, this.ecModel)
        },
        getFormattedLabel: function (e, t) {
            var n = this.getRegionModel(e).get("label" + ("normal" === t ? "." : t + ".") + "formatter"), i = {name: e};
            return "function" == typeof n ? (i.status = t, n(i)) : "string" == typeof n ? n.replace("{a}", null != e ? e : "") : void 0
        },
        setZoom: function (e) {
            this.option.zoom = e
        },
        setCenter: function (e) {
            this.option.center = e
        }
    });
    i.mixin(c, s);
    var u = c;
    e.exports = u
}, function (e, t, n) {
    var i = n(188), r = n(2).extendComponentView({
        type: "geo", init: function (e, t) {
            var n = new i(t, !0);
            this._mapDraw = n, this.group.add(n.group)
        }, render: function (e, t, n, i) {
            if (!i || "geoToggleSelect" !== i.type || i.from !== this.uid) {
                var r = this._mapDraw;
                e.get("show") ? r.draw(e, t, n, this, i) : this._mapDraw.group.removeAll(), this.group.silent = e.get("silent")
            }
        }, dispose: function () {
            this._mapDraw && this._mapDraw.remove()
        }
    });
    e.exports = r
}, function (e, t, n) {
    n(487), n(488), n(489)
}, function (e, t, n) {
    var i = n(1), r = n(7), o = n(4), a = n(21);

    function s(e, t, n) {
        this._model = e
    }

    function l(e, t, n, i) {
        var r = n.calendarModel, o = n.seriesModel, a = r ? r.coordinateSystem : o ? o.coordinateSystem : null;
        return a === this ? a[e](i) : null
    }

    s.prototype = {
        constructor: s,
        type: "calendar",
        dimensions: ["time", "value"],
        getDimensionsInfo: function () {
            return [{name: "time", type: "time"}, "value"]
        },
        getRangeInfo: function () {
            return this._rangeInfo
        },
        getModel: function () {
            return this._model
        },
        getRect: function () {
            return this._rect
        },
        getCellWidth: function () {
            return this._sw
        },
        getCellHeight: function () {
            return this._sh
        },
        getOrient: function () {
            return this._orient
        },
        getFirstDayOfWeek: function () {
            return this._firstDayOfWeek
        },
        getDateInfo: function (e) {
            var t = (e = o.parseDate(e)).getFullYear(), n = e.getMonth() + 1;
            n = n < 10 ? "0" + n : n;
            var i = e.getDate();
            i = i < 10 ? "0" + i : i;
            var r = e.getDay();
            return {
                y: t,
                m: n,
                d: i,
                day: r = Math.abs((r + 7 - this.getFirstDayOfWeek()) % 7),
                time: e.getTime(),
                formatedDate: t + "-" + n + "-" + i,
                date: e
            }
        },
        getNextNDay: function (e, t) {
            return 0 === (t = t || 0) || (e = new Date(this.getDateInfo(e).time)).setDate(e.getDate() + t), this.getDateInfo(e)
        },
        update: function (e, t) {
            this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"), this._orient = this._model.get("orient"), this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0, this._rangeInfo = this._getRangeInfo(this._initRangeOption());
            var n = this._rangeInfo.weeks || 1, o = ["width", "height"], a = this._model.get("cellSize").slice(),
                s = this._model.getBoxLayoutParams(), l = "horizontal" === this._orient ? [n, 7] : [7, n];
            i.each([0, 1], (function (e) {
                h(a, e) && (s[o[e]] = a[e] * l[e])
            }));
            var c = {width: t.getWidth(), height: t.getHeight()}, u = this._rect = r.getLayoutRect(s, c);

            function h(e, t) {
                return null != e[t] && "auto" !== e[t]
            }

            i.each([0, 1], (function (e) {
                h(a, e) || (a[e] = u[o[e]] / l[e])
            })), this._sw = a[0], this._sh = a[1]
        },
        dataToPoint: function (e, t) {
            i.isArray(e) && (e = e[0]), null == t && (t = !0);
            var n = this.getDateInfo(e), r = this._rangeInfo, o = n.formatedDate;
            if (t && !(n.time >= r.start.time && n.time < r.end.time + 864e5)) return [NaN, NaN];
            var a = n.day, s = this._getRangeInfo([r.start.time, o]).nthWeek;
            return "vertical" === this._orient ? [this._rect.x + a * this._sw + this._sw / 2, this._rect.y + s * this._sh + this._sh / 2] : [this._rect.x + s * this._sw + this._sw / 2, this._rect.y + a * this._sh + this._sh / 2]
        },
        pointToData: function (e) {
            var t = this.pointToDate(e);
            return t && t.time
        },
        dataToRect: function (e, t) {
            var n = this.dataToPoint(e, t);
            return {
                contentShape: {
                    x: n[0] - (this._sw - this._lineWidth) / 2,
                    y: n[1] - (this._sh - this._lineWidth) / 2,
                    width: this._sw - this._lineWidth,
                    height: this._sh - this._lineWidth
                },
                center: n,
                tl: [n[0] - this._sw / 2, n[1] - this._sh / 2],
                tr: [n[0] + this._sw / 2, n[1] - this._sh / 2],
                br: [n[0] + this._sw / 2, n[1] + this._sh / 2],
                bl: [n[0] - this._sw / 2, n[1] + this._sh / 2]
            }
        },
        pointToDate: function (e) {
            var t = Math.floor((e[0] - this._rect.x) / this._sw) + 1,
                n = Math.floor((e[1] - this._rect.y) / this._sh) + 1, i = this._rangeInfo.range;
            return "vertical" === this._orient ? this._getDateByWeeksAndDay(n, t - 1, i) : this._getDateByWeeksAndDay(t, n - 1, i)
        },
        convertToPixel: i.curry(l, "dataToPoint"),
        convertFromPixel: i.curry(l, "pointToData"),
        _initRangeOption: function () {
            var e = this._model.get("range"), t = e;
            if (i.isArray(t) && 1 === t.length && (t = t[0]), /^\d{4}$/.test(t) && (e = [t + "-01-01", t + "-12-31"]), /^\d{4}[\/|-]\d{1,2}$/.test(t)) {
                var n = this.getDateInfo(t), r = n.date;
                r.setMonth(r.getMonth() + 1);
                var o = this.getNextNDay(r, -1);
                e = [n.formatedDate, o.formatedDate]
            }
            /^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(t) && (e = [t, t]);
            var a = this._getRangeInfo(e);
            return a.start.time > a.end.time && e.reverse(), e
        },
        _getRangeInfo: function (e) {
            var t;
            (e = [this.getDateInfo(e[0]), this.getDateInfo(e[1])])[0].time > e[1].time && (t = !0, e.reverse());
            var n = Math.floor(e[1].time / 864e5) - Math.floor(e[0].time / 864e5) + 1, i = new Date(e[0].time),
                r = i.getDate(), o = e[1].date.getDate();
            i.setDate(r + n - 1);
            var a = i.getDate();
            if (a !== o) for (var s = i.getTime() - e[1].time > 0 ? 1 : -1; (a = i.getDate()) !== o && (i.getTime() - e[1].time) * s > 0;) n -= s, i.setDate(a - s);
            var l = Math.floor((n + e[0].day + 6) / 7), c = t ? 1 - l : l - 1;
            return t && e.reverse(), {
                range: [e[0].formatedDate, e[1].formatedDate],
                start: e[0],
                end: e[1],
                allDay: n,
                weeks: l,
                nthWeek: c,
                fweek: e[0].day,
                lweek: e[1].day
            }
        },
        _getDateByWeeksAndDay: function (e, t, n) {
            var i = this._getRangeInfo(n);
            if (e > i.weeks || 0 === e && t < i.fweek || e === i.weeks && t > i.lweek) return !1;
            var r = 7 * (e - 1) - i.fweek + t, o = new Date(i.start.time);
            return o.setDate(i.start.d + r), this.getDateInfo(o)
        }
    }, s.dimensions = s.prototype.dimensions, s.getDimensionsInfo = s.prototype.getDimensionsInfo, s.create = function (e, t) {
        var n = [];
        return e.eachComponent("calendar", (function (i) {
            var r = new s(i, e, t);
            n.push(r), i.coordinateSystem = r
        })), e.eachSeries((function (e) {
            "calendar" === e.get("coordinateSystem") && (e.coordinateSystem = n[e.get("calendarIndex") || 0])
        })), n
    }, a.register("calendar", s);
    var c = s;
    e.exports = c
}, function (e, t, n) {
    var i = n(1), r = n(14), o = n(7), a = o.getLayoutParams, s = o.sizeCalculable, l = o.mergeLayoutParam,
        c = r.extend({
            type: "calendar",
            coordinateSystem: null,
            defaultOption: {
                zlevel: 0,
                z: 2,
                left: 80,
                top: 60,
                cellSize: 20,
                orient: "horizontal",
                splitLine: {show: !0, lineStyle: {color: "#000", width: 1, type: "solid"}},
                itemStyle: {color: "#fff", borderWidth: 1, borderColor: "#ccc"},
                dayLabel: {show: !0, firstDay: 0, position: "start", margin: "50%", nameMap: "en", color: "#000"},
                monthLabel: {
                    show: !0,
                    position: "start",
                    margin: 5,
                    align: "center",
                    nameMap: "en",
                    formatter: null,
                    color: "#000"
                },
                yearLabel: {
                    show: !0,
                    position: null,
                    margin: 30,
                    formatter: null,
                    color: "#ccc",
                    fontFamily: "sans-serif",
                    fontWeight: "bolder",
                    fontSize: 20
                }
            },
            init: function (e, t, n, i) {
                var r = a(e);
                c.superApply(this, "init", arguments), u(e, r)
            },
            mergeOption: function (e, t) {
                c.superApply(this, "mergeOption", arguments), u(this.option, e)
            }
        });

    function u(e, t) {
        var n = e.cellSize;
        i.isArray(n) ? 1 === n.length && (n[1] = n[0]) : n = e.cellSize = [n, n];
        var r = i.map([0, 1], (function (e) {
            return s(t, e) && (n[e] = "auto"), null != n[e] && "auto" !== n[e]
        }));
        l(e, t, {type: "box", ignoreSize: r})
    }

    var h = c;
    e.exports = h
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(3), a = n(8), s = n(4), l = {
            EN: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            CN: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
        }, c = {EN: ["S", "M", "T", "W", "T", "F", "S"], CN: ["日", "一", "二", "三", "四", "五", "六"]},
        u = i.extendComponentView({
            type: "calendar",
            _tlpoints: null,
            _blpoints: null,
            _firstDayOfMonth: null,
            _firstDayPoints: null,
            render: function (e, t, n) {
                var i = this.group;
                i.removeAll();
                var r = e.coordinateSystem, o = r.getRangeInfo(), a = r.getOrient();
                this._renderDayRect(e, o, i), this._renderLines(e, o, a, i), this._renderYearText(e, o, a, i), this._renderMonthText(e, a, i), this._renderWeekText(e, o, a, i)
            },
            _renderDayRect: function (e, t, n) {
                for (var i = e.coordinateSystem, r = e.getModel("itemStyle").getItemStyle(), a = i.getCellWidth(), s = i.getCellHeight(), l = t.start.time; l <= t.end.time; l = i.getNextNDay(l, 1).time) {
                    var c = i.dataToRect([l], !1).tl,
                        u = new o.Rect({shape: {x: c[0], y: c[1], width: a, height: s}, cursor: "default", style: r});
                    n.add(u)
                }
            },
            _renderLines: function (e, t, n, i) {
                var r = this, o = e.coordinateSystem, a = e.getModel("splitLine.lineStyle").getLineStyle(),
                    s = e.get("splitLine.show"), l = a.lineWidth;
                this._tlpoints = [], this._blpoints = [], this._firstDayOfMonth = [], this._firstDayPoints = [];
                for (var c = t.start, u = 0; c.time <= t.end.time; u++) {
                    d(c.formatedDate), 0 === u && (c = o.getDateInfo(t.start.y + "-" + t.start.m));
                    var h = c.date;
                    h.setMonth(h.getMonth() + 1), c = o.getDateInfo(h)
                }

                function d(t) {
                    r._firstDayOfMonth.push(o.getDateInfo(t)), r._firstDayPoints.push(o.dataToRect([t], !1).tl);
                    var l = r._getLinePointsOfOneWeek(e, t, n);
                    r._tlpoints.push(l[0]), r._blpoints.push(l[l.length - 1]), s && r._drawSplitline(l, a, i)
                }

                d(o.getNextNDay(t.end.time, 1).formatedDate), s && this._drawSplitline(r._getEdgesPoints(r._tlpoints, l, n), a, i), s && this._drawSplitline(r._getEdgesPoints(r._blpoints, l, n), a, i)
            },
            _getEdgesPoints: function (e, t, n) {
                var i = [e[0].slice(), e[e.length - 1].slice()], r = "horizontal" === n ? 0 : 1;
                return i[0][r] = i[0][r] - t / 2, i[1][r] = i[1][r] + t / 2, i
            },
            _drawSplitline: function (e, t, n) {
                var i = new o.Polyline({z2: 20, shape: {points: e}, style: t});
                n.add(i)
            },
            _getLinePointsOfOneWeek: function (e, t, n) {
                var i = e.coordinateSystem;
                t = i.getDateInfo(t);
                for (var r = [], o = 0; o < 7; o++) {
                    var a = i.getNextNDay(t.time, o), s = i.dataToRect([a.time], !1);
                    r[2 * a.day] = s.tl, r[2 * a.day + 1] = s["horizontal" === n ? "bl" : "tr"]
                }
                return r
            },
            _formatterLabel: function (e, t) {
                return "string" == typeof e && e ? a.formatTplSimple(e, t) : "function" == typeof e ? e(t) : t.nameMap
            },
            _yearTextPositionControl: function (e, t, n, i, r) {
                t = t.slice();
                var o = ["center", "bottom"];
                "bottom" === i ? (t[1] += r, o = ["center", "top"]) : "left" === i ? t[0] -= r : "right" === i ? (t[0] += r, o = ["center", "top"]) : t[1] -= r;
                var a = 0;
                return "left" !== i && "right" !== i || (a = Math.PI / 2), {
                    rotation: a,
                    position: t,
                    style: {textAlign: o[0], textVerticalAlign: o[1]}
                }
            },
            _renderYearText: function (e, t, n, i) {
                var r = e.getModel("yearLabel");
                if (r.get("show")) {
                    var a = r.get("margin"), s = r.get("position");
                    s || (s = "horizontal" !== n ? "top" : "left");
                    var l = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]], c = (l[0][0] + l[1][0]) / 2,
                        u = (l[0][1] + l[1][1]) / 2, h = "horizontal" === n ? 0 : 1,
                        d = {top: [c, l[h][1]], bottom: [c, l[1 - h][1]], left: [l[1 - h][0], u], right: [l[h][0], u]},
                        f = t.start.y;
                    +t.end.y > +t.start.y && (f = f + "-" + t.end.y);
                    var g = r.get("formatter"), p = {start: t.start.y, end: t.end.y, nameMap: f},
                        m = this._formatterLabel(g, p), v = new o.Text({z2: 30});
                    o.setTextStyle(v.style, r, {text: m}), v.attr(this._yearTextPositionControl(v, d[s], n, s, a)), i.add(v)
                }
            },
            _monthTextPositionControl: function (e, t, n, i, r) {
                var o = "left", a = "top", s = e[0], l = e[1];
                return "horizontal" === n ? (l += r, t && (o = "center"), "start" === i && (a = "bottom")) : (s += r, t && (a = "middle"), "start" === i && (o = "right")), {
                    x: s,
                    y: l,
                    textAlign: o,
                    textVerticalAlign: a
                }
            },
            _renderMonthText: function (e, t, n) {
                var i = e.getModel("monthLabel");
                if (i.get("show")) {
                    var a = i.get("nameMap"), s = i.get("margin"), c = i.get("position"), u = i.get("align"),
                        h = [this._tlpoints, this._blpoints];
                    r.isString(a) && (a = l[a.toUpperCase()] || []);
                    var d = "start" === c ? 0 : 1, f = "horizontal" === t ? 0 : 1;
                    s = "start" === c ? -s : s;
                    for (var g = "center" === u, p = 0; p < h[d].length - 1; p++) {
                        var m = h[d][p].slice(), v = this._firstDayOfMonth[p];
                        if (g) {
                            var y = this._firstDayPoints[p];
                            m[f] = (y[f] + h[0][p + 1][f]) / 2
                        }
                        var b = i.get("formatter"), C = a[+v.m - 1],
                            w = {yyyy: v.y, yy: (v.y + "").slice(2), MM: v.m, M: +v.m, nameMap: C},
                            I = this._formatterLabel(b, w), x = new o.Text({z2: 30});
                        r.extend(o.setTextStyle(x.style, i, {text: I}), this._monthTextPositionControl(m, g, t, c, s)), n.add(x)
                    }
                }
            },
            _weekTextPositionControl: function (e, t, n, i, r) {
                var o = "center", a = "middle", s = e[0], l = e[1], c = "start" === n;
                return "horizontal" === t ? (s = s + i + (c ? 1 : -1) * r[0] / 2, o = c ? "right" : "left") : (l = l + i + (c ? 1 : -1) * r[1] / 2, a = c ? "bottom" : "top"), {
                    x: s,
                    y: l,
                    textAlign: o,
                    textVerticalAlign: a
                }
            },
            _renderWeekText: function (e, t, n, i) {
                var a = e.getModel("dayLabel");
                if (a.get("show")) {
                    var l = e.coordinateSystem, u = a.get("position"), h = a.get("nameMap"), d = a.get("margin"),
                        f = l.getFirstDayOfWeek();
                    r.isString(h) && (h = c[h.toUpperCase()] || []);
                    var g = l.getNextNDay(t.end.time, 7 - t.lweek).time, p = [l.getCellWidth(), l.getCellHeight()];
                    d = s.parsePercent(d, p["horizontal" === n ? 0 : 1]), "start" === u && (g = l.getNextNDay(t.start.time, -(7 + t.fweek)).time, d = -d);
                    for (var m = 0; m < 7; m++) {
                        var v, y = l.getNextNDay(g, m), b = l.dataToRect([y.time], !1).center;
                        v = Math.abs((m + f) % 7);
                        var C = new o.Text({z2: 30});
                        r.extend(o.setTextStyle(C.style, a, {text: h[v]}), this._weekTextPositionControl(b, n, u, d, p)), i.add(C)
                    }
                }
            }
        });
    e.exports = u
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(5), a = n(3), s = n(7), l = n(4).parsePercent,
        c = {path: null, compoundPath: null, group: a.Group, image: a.Image, text: a.Text};
    i.registerPreprocessor((function (e) {
        var t = e.graphic;
        r.isArray(t) ? t[0] && t[0].elements ? e.graphic = [e.graphic[0]] : e.graphic = [{elements: t}] : t && !t.elements && (e.graphic = [{elements: [t]}])
    }));
    var u = i.extendComponentModel({
        type: "graphic",
        defaultOption: {elements: [], parentId: null},
        _elOptionsToUpdate: null,
        mergeOption: function (e) {
            var t = this.option.elements;
            this.option.elements = null, u.superApply(this, "mergeOption", arguments), this.option.elements = t
        },
        optionUpdated: function (e, t) {
            var n = this.option, i = (t ? n : e).elements, a = n.elements = t ? [] : n.elements, l = [];
            this._flatten(i, l);
            var c = o.mappingToExists(a, l);
            o.makeIdAndName(c);
            var u = this._elOptionsToUpdate = [];
            r.each(c, (function (e, t) {
                var n = e.option;
                n && (u.push(n), function (e, t) {
                    var n = e.exist;
                    if (t.id = e.keyInfo.id, !t.type && n && (t.type = n.type), null == t.parentId) {
                        var i = t.parentOption;
                        i ? t.parentId = i.id : n && (t.parentId = n.parentId)
                    }
                    t.parentOption = null
                }(e, n), function (e, t, n) {
                    var i = r.extend({}, n), o = e[t], a = n.$action || "merge";
                    "merge" === a ? o ? (r.merge(o, i, !0), s.mergeLayoutParam(o, i, {ignoreSize: !0}), s.copyLayoutParams(n, o)) : e[t] = i : "replace" === a ? e[t] = i : "remove" === a && o && (e[t] = null)
                }(a, t, n), function (e, t) {
                    if (!e) return;
                    e.hv = t.hv = [f(t, ["left", "right"]), f(t, ["top", "bottom"])], "group" === e.type && (null == e.width && (e.width = t.width = 0), null == e.height && (e.height = t.height = 0))
                }(a[t], n))
            }), this);
            for (var h = a.length - 1; h >= 0; h--) null == a[h] ? a.splice(h, 1) : delete a[h].$action
        },
        _flatten: function (e, t, n) {
            r.each(e, (function (e) {
                if (e) {
                    n && (e.parentOption = n), t.push(e);
                    var i = e.children;
                    "group" === e.type && i && this._flatten(i, t, e), delete e.children
                }
            }), this)
        },
        useElOptionsToUpdate: function () {
            var e = this._elOptionsToUpdate;
            return this._elOptionsToUpdate = null, e
        }
    });

    function h(e, t, n, i) {
        var r = n.type, o = new (c.hasOwnProperty(r) ? c[r] : a.getShapeClass(r))(n);
        t.add(o), i.set(e, o), o.__ecGraphicId = e
    }

    function d(e, t) {
        var n = e && e.parent;
        n && ("group" === e.type && e.traverse((function (e) {
            d(e, t)
        })), t.removeKey(e.__ecGraphicId), n.remove(e))
    }

    function f(e, t) {
        var n;
        return r.each(t, (function (t) {
            null != e[t] && "auto" !== e[t] && (n = !0)
        })), n
    }

    i.extendComponentView({
        type: "graphic", init: function (e, t) {
            this._elMap = r.createHashMap(), this._lastGraphicModel
        }, render: function (e, t, n) {
            e !== this._lastGraphicModel && this._clear(), this._lastGraphicModel = e, this._updateElements(e), this._relocate(e, n)
        }, _updateElements: function (e) {
            var t = e.useElOptionsToUpdate();
            if (t) {
                var n = this._elMap, i = this.group;
                r.each(t, (function (t) {
                    var o = t.$action, a = t.id, l = n.get(a), c = t.parentId, u = null != c ? n.get(c) : i,
                        f = t.style;
                    "text" === t.type && f && (t.hv && t.hv[1] && (f.textVerticalAlign = f.textBaseline = null), !f.hasOwnProperty("textFill") && f.fill && (f.textFill = f.fill), !f.hasOwnProperty("textStroke") && f.stroke && (f.textStroke = f.stroke));
                    var g = function (e) {
                        return e = r.extend({}, e), r.each(["id", "parentId", "$action", "hv", "bounding"].concat(s.LOCATION_PARAMS), (function (t) {
                            delete e[t]
                        })), e
                    }(t);
                    o && "merge" !== o ? "replace" === o ? (d(l, n), h(a, u, g, n)) : "remove" === o && d(l, n) : l ? l.attr(g) : h(a, u, g, n);
                    var p = n.get(a);
                    p && (p.__ecGraphicWidthOption = t.width, p.__ecGraphicHeightOption = t.height, function (e, t, n) {
                        var i = e.eventData;
                        e.silent || e.ignore || i || (i = e.eventData = {
                            componentType: "graphic",
                            componentIndex: t.componentIndex,
                            name: e.name
                        });
                        i && (i.info = e.info)
                    }(p, e))
                }))
            }
        }, _relocate: function (e, t) {
            for (var n = e.option.elements, i = this.group, r = this._elMap, o = t.getWidth(), a = t.getHeight(), c = 0; c < n.length; c++) {
                var u = n[c];
                if ((d = r.get(u.id)) && d.isGroup) {
                    var h = (f = d.parent) === i;
                    d.__ecGraphicWidth = l(d.__ecGraphicWidthOption, h ? o : f.__ecGraphicWidth) || 0, d.__ecGraphicHeight = l(d.__ecGraphicHeightOption, h ? a : f.__ecGraphicHeight) || 0
                }
            }
            for (c = n.length - 1; c >= 0; c--) {
                var d;
                u = n[c];
                if (d = r.get(u.id)) {
                    var f, g = (f = d.parent) === i ? {width: o, height: a} : {
                        width: f.__ecGraphicWidth,
                        height: f.__ecGraphicHeight
                    };
                    s.positionElement(d, u, g, null, {hv: u.hv, boundingMode: u.bounding})
                }
            }
        }, _clear: function () {
            var e = this._elMap;
            e.each((function (t) {
                d(t, e)
            })), this._elMap = r.createHashMap()
        }, dispose: function () {
            this._clear()
        }
    })
}, function (e, t, n) {
    n(492), n(493), n(494), n(495), n(496), n(497), n(502)
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(36), a = i.extendComponentModel({
        type: "toolbox",
        layoutMode: {type: "box", ignoreSize: !0},
        optionUpdated: function () {
            a.superApply(this, "optionUpdated", arguments), r.each(this.option.feature, (function (e, t) {
                var n = o.get(t);
                n && r.merge(e, n.defaultOption)
            }))
        },
        defaultOption: {
            show: !0,
            z: 6,
            zlevel: 0,
            orient: "horizontal",
            left: "right",
            top: "top",
            backgroundColor: "transparent",
            borderColor: "#ccc",
            borderRadius: 0,
            borderWidth: 0,
            padding: 5,
            itemSize: 15,
            itemGap: 8,
            showTitle: !0,
            iconStyle: {borderColor: "#666", color: "none"},
            emphasis: {iconStyle: {borderColor: "#3E98C5"}},
            tooltip: {show: !1}
        }
    }), s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(17), a = n(36), s = n(3), l = n(13), c = n(41), u = n(209),
        h = i.extendComponentView({
            type: "toolbox", render: function (e, t, n, i) {
                var h = this.group;
                if (h.removeAll(), e.get("show")) {
                    var d = +e.get("itemSize"), f = e.get("feature") || {}, g = this._features || (this._features = {}),
                        p = [];
                    r.each(f, (function (e, t) {
                        p.push(t)
                    })), new c(this._featureNames || [], p).add(m).update(m).remove(r.curry(m, null)).execute(), this._featureNames = p, u.layout(h, e, n), h.add(u.makeBackground(h.getBoundingRect(), e)), h.eachChild((function (e) {
                        var t = e.__title, i = e.hoverStyle;
                        if (i && t) {
                            var r = o.getBoundingRect(t, o.makeFont(i)), a = e.position[0] + h.position[0], s = !1;
                            e.position[1] + h.position[1] + d + r.height > n.getHeight() && (i.textPosition = "top", s = !0);
                            var l = s ? -5 - r.height : d + 8;
                            a + r.width / 2 > n.getWidth() ? (i.textPosition = ["100%", l], i.textAlign = "right") : a - r.width / 2 < 0 && (i.textPosition = [0, l], i.textAlign = "left")
                        }
                    }))
                }

                function m(o, c) {
                    var u, m = p[o], v = p[c], y = f[m], b = new l(y, e, e.ecModel);
                    if (i && null != i.newTitle && i.featureName === m && (y.title = i.newTitle), m && !v) {
                        if (function (e) {
                            return 0 === e.indexOf("my")
                        }(m)) u = {model: b, onclick: b.option.onclick, featureName: m}; else {
                            var C = a.get(m);
                            if (!C) return;
                            u = new C(b, t, n)
                        }
                        g[m] = u
                    } else {
                        if (!(u = g[v])) return;
                        u.model = b, u.ecModel = t, u.api = n
                    }
                    m || !v ? b.get("show") && !u.unusable ? (!function (i, o, a) {
                        var l = i.getModel("iconStyle"), c = i.getModel("emphasis.iconStyle"),
                            u = o.getIcons ? o.getIcons() : i.get("icon"), f = i.get("title") || {};
                        if ("string" == typeof u) {
                            var g = u, p = f;
                            f = {}, (u = {})[a] = g, f[a] = p
                        }
                        var m = i.iconPaths = {};
                        r.each(u, (function (a, u) {
                            var g = s.createIcon(a, {}, {x: -d / 2, y: -d / 2, width: d, height: d});
                            g.setStyle(l.getItemStyle()), g.hoverStyle = c.getItemStyle(), g.setStyle({
                                text: f[u],
                                textAlign: c.get("textAlign"),
                                textBorderRadius: c.get("textBorderRadius"),
                                textPadding: c.get("textPadding"),
                                textFill: null
                            });
                            var p = e.getModel("tooltip");
                            p && p.get("show") && g.attr("tooltip", r.extend({
                                content: f[u],
                                formatter: p.get("formatter", !0) || function () {
                                    return f[u]
                                },
                                formatterParams: {
                                    componentType: "toolbox",
                                    name: u,
                                    title: f[u],
                                    $vars: ["name", "title"]
                                },
                                position: p.get("position", !0) || "bottom"
                            }, p.option)), s.setHoverStyle(g), e.get("showTitle") && (g.__title = f[u], g.on("mouseover", (function () {
                                var t = c.getItemStyle(),
                                    n = "vertical" === e.get("orient") ? null == e.get("right") ? "right" : "left" : null == e.get("bottom") ? "bottom" : "top";
                                g.setStyle({
                                    textFill: c.get("textFill") || t.fill || t.stroke || "#000",
                                    textBackgroundColor: c.get("textBackgroundColor"),
                                    textPosition: c.get("textPosition") || n
                                })
                            })).on("mouseout", (function () {
                                g.setStyle({textFill: null, textBackgroundColor: null})
                            }))), g.trigger(i.get("iconStatus." + u) || "normal"), h.add(g), g.on("click", r.bind(o.onclick, o, t, n, u)), m[u] = g
                        }))
                    }(b, u, m), b.setIconStatus = function (e, t) {
                        var n = this.option, i = this.iconPaths;
                        n.iconStatus = n.iconStatus || {}, n.iconStatus[e] = t, i[e] && i[e].trigger(t)
                    }, u.render && u.render(b, t, n, i)) : u.remove && u.remove(t, n) : u.dispose && u.dispose(t, n)
                }
            }, updateView: function (e, t, n, i) {
                r.each(this._features, (function (e) {
                    e.updateView && e.updateView(e.model, t, n, i)
                }))
            }, remove: function (e, t) {
                r.each(this._features, (function (n) {
                    n.remove && n.remove(e, t)
                })), this.group.removeAll()
            }, dispose: function (e, t) {
                r.each(this._features, (function (n) {
                    n.dispose && n.dispose(e, t)
                }))
            }
        });
    e.exports = h
}, function (e, t, n) {
    var i = n(12), r = n(33), o = n(36), a = r.toolbox.saveAsImage;

    function s(e) {
        this.model = e
    }

    s.defaultOption = {
        show: !0,
        icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",
        title: a.title,
        type: "png",
        connectedBackgroundColor: "#fff",
        name: "",
        excludeComponents: ["toolbox"],
        pixelRatio: 1,
        lang: a.lang.slice()
    }, s.prototype.unusable = !i.canvasSupported, s.prototype.onclick = function (e, t) {
        var n = this.model, r = n.get("name") || e.get("title.0.text") || "echarts",
            o = "svg" === t.getZr().painter.getType() ? "svg" : n.get("type", !0) || "png", a = t.getConnectedDataURL({
                type: o,
                backgroundColor: n.get("backgroundColor", !0) || e.get("backgroundColor") || "#fff",
                connectedBackgroundColor: n.get("connectedBackgroundColor"),
                excludeComponents: n.get("excludeComponents"),
                pixelRatio: n.get("pixelRatio")
            });
        if ("function" != typeof MouseEvent || i.browser.ie || i.browser.edge) if (window.navigator.msSaveOrOpenBlob) {
            for (var s = atob(a.split(",")[1]), l = s.length, c = new Uint8Array(l); l--;) c[l] = s.charCodeAt(l);
            var u = new Blob([c]);
            window.navigator.msSaveOrOpenBlob(u, r + "." + o)
        } else {
            var h = n.get("lang"),
                d = '<body style="margin:0;"><img src="' + a + '" style="max-width:100%;" title="' + (h && h[0] || "") + '" /></body>';
            window.open().document.write(d)
        } else {
            var f = document.createElement("a");
            f.download = r + "." + o, f.target = "_blank", f.href = a;
            var g = new MouseEvent("click", {view: window, bubbles: !0, cancelable: !1});
            f.dispatchEvent(g)
        }
    }, o.register("saveAsImage", s);
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(33), a = n(36), s = o.toolbox.magicType;

    function l(e) {
        this.model = e
    }

    l.defaultOption = {
        show: !0,
        type: [],
        icon: {
            line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",
            bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",
            stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"
        },
        title: r.clone(s.title),
        option: {},
        seriesIndex: {}
    };
    var c = l.prototype;
    c.getIcons = function () {
        var e = this.model, t = e.get("icon"), n = {};
        return r.each(e.get("type"), (function (e) {
            t[e] && (n[e] = t[e])
        })), n
    };
    var u = {
        line: function (e, t, n, i) {
            if ("bar" === e) return r.merge({
                id: t,
                type: "line",
                data: n.get("data"),
                stack: n.get("stack"),
                markPoint: n.get("markPoint"),
                markLine: n.get("markLine")
            }, i.get("option.line") || {}, !0)
        }, bar: function (e, t, n, i) {
            if ("line" === e) return r.merge({
                id: t,
                type: "bar",
                data: n.get("data"),
                stack: n.get("stack"),
                markPoint: n.get("markPoint"),
                markLine: n.get("markLine")
            }, i.get("option.bar") || {}, !0)
        }, stack: function (e, t, n, i) {
            var o = "__ec_magicType_stack__" === n.get("stack");
            if ("line" === e || "bar" === e) return i.setIconStatus("stack", o ? "normal" : "emphasis"), r.merge({
                id: t,
                stack: o ? "" : "__ec_magicType_stack__"
            }, i.get("option.stack") || {}, !0)
        }
    }, h = [["line", "bar"], ["stack"]];
    c.onclick = function (e, t, n) {
        var i = this.model, o = i.get("seriesIndex." + n);
        if (u[n]) {
            var a, l = {series: []};
            if (r.each(h, (function (e) {
                r.indexOf(e, n) >= 0 && r.each(e, (function (e) {
                    i.setIconStatus(e, "normal")
                }))
            })), i.setIconStatus(n, "emphasis"), e.eachComponent({
                mainType: "series",
                query: null == o ? null : {seriesIndex: o}
            }, (function (t) {
                var o = t.subType, a = t.id, s = u[n](o, a, t, i);
                s && (r.defaults(s, t.option), l.series.push(s));
                var c = t.coordinateSystem;
                if (c && "cartesian2d" === c.type && ("line" === n || "bar" === n)) {
                    var h = c.getAxesByScale("ordinal")[0];
                    if (h) {
                        var d = h.dim + "Axis", f = e.queryComponents({
                            mainType: d,
                            index: t.get(name + "Index"),
                            id: t.get(name + "Id")
                        })[0].componentIndex;
                        l[d] = l[d] || [];
                        for (var g = 0; g <= f; g++) l[d][f] = l[d][f] || {};
                        l[d][f].boundaryGap = "bar" === n
                    }
                }
            })), "stack" === n) a = l.series && l.series[0] && "__ec_magicType_stack__" === l.series[0].stack ? r.merge({stack: s.title.tiled}, s.title) : r.clone(s.title);
            t.dispatchAction({
                type: "changeMagicType",
                currentType: n,
                newOption: l,
                newTitle: a,
                featureName: "magicType"
            })
        }
    }, i.registerAction({
        type: "changeMagicType",
        event: "magicTypeChanged",
        update: "prepareAndUpdate"
    }, (function (e, t) {
        t.mergeOption(e.newOption)
    })), a.register("magicType", l);
    var d = l;
    e.exports = d
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(24), a = n(33), s = n(36), l = a.toolbox.dataView, c = new Array(60).join("-");

    function u(e) {
        return r.map(e, (function (e) {
            var t = e.getRawData(), n = [e.name], i = [];
            return t.each(t.dimensions, (function () {
                for (var e = arguments.length, r = arguments[e - 1], o = t.getName(r), a = 0; a < e - 1; a++) i[a] = arguments[a];
                n.push((o ? o + "\t" : "") + i.join("\t"))
            })), n.join("\n")
        })).join("\n\n" + c + "\n\n")
    }

    function h(e) {
        return e.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
    }

    var d = new RegExp("[\t]+", "g");

    function f(e, t) {
        var n = e.split(new RegExp("\n*" + c + "\n*", "g")), i = {series: []};
        return r.each(n, (function (e, n) {
            if (function (e) {
                if (e.slice(0, e.indexOf("\n")).indexOf("\t") >= 0) return !0
            }(e)) {
                var o = function (e) {
                    for (var t = e.split(/\n+/g), n = h(t.shift()).split(d), i = [], o = r.map(n, (function (e) {
                        return {name: e, data: []}
                    })), a = 0; a < t.length; a++) {
                        var s = h(t[a]).split(d);
                        i.push(s.shift());
                        for (var l = 0; l < s.length; l++) o[l] && (o[l].data[a] = s[l])
                    }
                    return {series: o, categories: i}
                }(e), a = t[n], s = a.axisDim + "Axis";
                a && (i[s] = i[s] || [], i[s][a.axisIndex] = {data: o.categories}, i.series = i.series.concat(o.series))
            } else {
                o = function (e) {
                    for (var t = e.split(/\n+/g), n = h(t.shift()), i = [], r = 0; r < t.length; r++) {
                        var o, a = h(t[r]).split(d), s = "", l = !1;
                        isNaN(a[0]) ? (l = !0, s = a[0], a = a.slice(1), i[r] = {
                            name: s,
                            value: []
                        }, o = i[r].value) : o = i[r] = [];
                        for (var c = 0; c < a.length; c++) o.push(+a[c]);
                        1 === o.length && (l ? i[r].value = o[0] : i[r] = o[0])
                    }
                    return {name: n, data: i}
                }(e);
                i.series.push(o)
            }
        })), i
    }

    function g(e) {
        this._dom = null, this.model = e
    }

    function p(e, t) {
        return r.map(e, (function (e, n) {
            var i = t && t[n];
            return r.isObject(i) && !r.isArray(i) ? (r.isObject(e) && !r.isArray(e) && (e = e.value), r.defaults({value: e}, i)) : e
        }))
    }

    g.defaultOption = {
        show: !0,
        readOnly: !1,
        optionToContent: null,
        contentToOption: null,
        icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",
        title: r.clone(l.title),
        lang: r.clone(l.lang),
        backgroundColor: "#fff",
        textColor: "#000",
        textareaColor: "#fff",
        textareaBorderColor: "#333",
        buttonColor: "#c23531",
        buttonTextColor: "#fff"
    }, g.prototype.onclick = function (e, t) {
        var n = t.getDom(), i = this.model;
        this._dom && n.removeChild(this._dom);
        var a = document.createElement("div");
        a.style.cssText = "position:absolute;left:5px;top:5px;bottom:5px;right:5px;", a.style.backgroundColor = i.get("backgroundColor") || "#fff";
        var s = document.createElement("h4"), l = i.get("lang") || [];
        s.innerHTML = l[0] || i.get("title"), s.style.cssText = "margin: 10px 20px;", s.style.color = i.get("textColor");
        var h = document.createElement("div"), d = document.createElement("textarea");
        h.style.cssText = "display:block;width:100%;overflow:auto;";
        var g = i.get("optionToContent"), p = i.get("contentToOption"), m = function (e) {
            var t, n, i = function (e) {
                var t = {}, n = [], i = [];
                return e.eachRawSeries((function (e) {
                    var r = e.coordinateSystem;
                    if (!r || "cartesian2d" !== r.type && "polar" !== r.type) n.push(e); else {
                        var o = r.getBaseAxis();
                        if ("category" === o.type) {
                            var a = o.dim + "_" + o.index;
                            t[a] || (t[a] = {
                                categoryAxis: o,
                                valueAxis: r.getOtherAxis(o),
                                series: []
                            }, i.push({axisDim: o.dim, axisIndex: o.index})), t[a].series.push(e)
                        } else n.push(e)
                    }
                })), {seriesGroupByCategoryAxis: t, other: n, meta: i}
            }(e);
            return {
                value: r.filter([(t = i.seriesGroupByCategoryAxis, n = [], r.each(t, (function (e, t) {
                    var i = e.categoryAxis, o = e.valueAxis.dim, a = [" "].concat(r.map(e.series, (function (e) {
                        return e.name
                    }))), s = [i.model.getCategories()];
                    r.each(e.series, (function (e) {
                        s.push(e.getRawData().mapArray(o, (function (e) {
                            return e
                        })))
                    }));
                    for (var l = [a.join("\t")], c = 0; c < s[0].length; c++) {
                        for (var u = [], h = 0; h < s.length; h++) u.push(s[h][c]);
                        l.push(u.join("\t"))
                    }
                    n.push(l.join("\n"))
                })), n.join("\n\n" + c + "\n\n")), u(i.other)], (function (e) {
                    return e.replace(/[\n\t\s]/g, "")
                })).join("\n\n" + c + "\n\n"), meta: i.meta
            }
        }(e);
        if ("function" == typeof g) {
            var v = g(t.getOption());
            "string" == typeof v ? h.innerHTML = v : r.isDom(v) && h.appendChild(v)
        } else h.appendChild(d), d.readOnly = i.get("readOnly"), d.style.cssText = "width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;", d.style.color = i.get("textColor"), d.style.borderColor = i.get("textareaBorderColor"), d.style.backgroundColor = i.get("textareaColor"), d.value = m.value;
        var y = m.meta, b = document.createElement("div");
        b.style.cssText = "position:absolute;bottom:0;left:0;right:0;";
        var C = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",
            w = document.createElement("div"), I = document.createElement("div");
        C += ";background-color:" + i.get("buttonColor"), C += ";color:" + i.get("buttonTextColor");
        var x = this;

        function A() {
            n.removeChild(a), x._dom = null
        }

        o.addEventListener(w, "click", A), o.addEventListener(I, "click", (function () {
            var e;
            try {
                e = "function" == typeof p ? p(h, t.getOption()) : f(d.value, y)
            } catch (e) {
                throw A(), new Error("Data view format error " + e)
            }
            e && t.dispatchAction({type: "changeDataView", newOption: e}), A()
        })), w.innerHTML = l[1], I.innerHTML = l[2], I.style.cssText = C, w.style.cssText = C, !i.get("readOnly") && b.appendChild(I), b.appendChild(w), a.appendChild(s), a.appendChild(h), a.appendChild(b), h.style.height = n.clientHeight - 80 + "px", n.appendChild(a), this._dom = a
    }, g.prototype.remove = function (e, t) {
        this._dom && t.getDom().removeChild(this._dom)
    }, g.prototype.dispose = function (e, t) {
        this.remove(e, t)
    }, s.register("dataView", g), i.registerAction({
        type: "changeDataView",
        event: "dataViewChanged",
        update: "prepareAndUpdate"
    }, (function (e, t) {
        var n = [];
        r.each(e.newOption.series, (function (e) {
            var i = t.getSeriesByName(e.name)[0];
            if (i) {
                var o = i.get("data");
                n.push({name: e.name, data: p(e.data, o)})
            } else n.push(r.extend({type: "scatter"}, e))
        })), t.mergeOption(r.defaults({series: n}, e.newOption))
    }));
    var m = g;
    e.exports = m
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(123), a = n(210), s = n(211), l = n(53), c = n(33), u = n(36);
    n(498);
    var h = c.toolbox.dataZoom, d = r.each;

    function f(e, t, n) {
        (this._brushController = new o(n.getZr())).on("brush", r.bind(this._onBrush, this)).mount(), this._isZoomActive
    }

    f.defaultOption = {
        show: !0,
        filterMode: "filter",
        icon: {
            zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",
            back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"
        },
        title: r.clone(h.title)
    };
    var g = f.prototype;
    g.render = function (e, t, n, i) {
        this.model = e, this.ecModel = t, this.api = n, function (e, t, n, i, r) {
            var o = n._isZoomActive;
            i && "takeGlobalCursor" === i.type && (o = "dataZoomSelect" === i.key && i.dataZoomSelectActive);
            n._isZoomActive = o, e.setIconStatus("zoom", o ? "emphasis" : "normal");
            var s = new a(m(e.option), t, {include: ["grid"]});
            n._brushController.setPanels(s.makePanelOpts(r, (function (e) {
                return e.xAxisDeclared && !e.yAxisDeclared ? "lineX" : !e.xAxisDeclared && e.yAxisDeclared ? "lineY" : "rect"
            }))).enableBrush(!!o && {brushType: "auto", brushStyle: {lineWidth: 0, fill: "rgba(0,0,0,0.2)"}})
        }(e, t, this, i, n), function (e, t) {
            e.setIconStatus("back", s.count(t) > 1 ? "emphasis" : "normal")
        }(e, t)
    }, g.onclick = function (e, t, n) {
        p[n].call(this)
    }, g.remove = function (e, t) {
        this._brushController.unmount()
    }, g.dispose = function (e, t) {
        this._brushController.dispose()
    };
    var p = {
        zoom: function () {
            var e = !this._isZoomActive;
            this.api.dispatchAction({type: "takeGlobalCursor", key: "dataZoomSelect", dataZoomSelectActive: e})
        }, back: function () {
            this._dispatchZoomAction(s.pop(this.ecModel))
        }
    };

    function m(e) {
        var t = {};
        return r.each(["xAxisIndex", "yAxisIndex"], (function (n) {
            t[n] = e[n], null == t[n] && (t[n] = "all"), (!1 === t[n] || "none" === t[n]) && (t[n] = [])
        })), t
    }

    g._onBrush = function (e, t) {
        if (t.isEnd && e.length) {
            var n = {}, i = this.ecModel;
            this._brushController.updateCovers([]), new a(m(this.model.option), i, {include: ["grid"]}).matchOutputRanges(e, i, (function (e, t, n) {
                if ("cartesian2d" === n.type) {
                    var i = e.brushType;
                    "rect" === i ? (r("x", n, t[0]), r("y", n, t[1])) : r({lineX: "x", lineY: "y"}[i], n, t)
                }
            })), s.push(i, n), this._dispatchZoomAction(n)
        }

        function r(e, t, r) {
            var o = t.getAxis(e), a = o.model, s = function (e, t, n) {
                var i;
                return n.eachComponent({mainType: "dataZoom", subType: "select"}, (function (n) {
                    n.getAxisModel(e, t.componentIndex) && (i = n)
                })), i
            }(e, a, i), c = s.findRepresentativeAxisProxy(a).getMinMaxSpan();
            null == c.minValueSpan && null == c.maxValueSpan || (r = l(0, r.slice(), o.scale.getExtent(), 0, c.minValueSpan, c.maxValueSpan)), s && (n[s.id] = {
                dataZoomId: s.id,
                startValue: r[0],
                endValue: r[1]
            })
        }
    }, g._dispatchZoomAction = function (e) {
        var t = [];
        d(e, (function (e, n) {
            t.push(r.clone(e))
        })), t.length && this.api.dispatchAction({type: "dataZoom", from: this.uid, batch: t})
    }, u.register("dataZoom", f), i.registerPreprocessor((function (e) {
        if (e) {
            var t = e.dataZoom || (e.dataZoom = []);
            r.isArray(t) || (e.dataZoom = t = [t]);
            var n = e.toolbox;
            if (n && (r.isArray(n) && (n = n[0]), n && n.feature)) {
                var i = n.feature.dataZoom;
                o("xAxis", i), o("yAxis", i)
            }
        }

        function o(n, i) {
            if (i) {
                var o = n + "Index", a = i[o];
                null == a || "all" === a || r.isArray(a) || (a = !1 === a || "none" === a ? [] : [a]), function (t, n) {
                    var i = e[t];
                    r.isArray(i) || (i = i ? [i] : []);
                    d(i, n)
                }(n, (function (e, s) {
                    if (null == a || "all" === a || -1 !== r.indexOf(a, s)) {
                        var l = {
                            type: "select",
                            $fromToolbox: !0,
                            filterMode: i.filterMode || "filter",
                            id: "\0_ec_\0toolbox-dataZoom_" + n + s
                        };
                        l[o] = s, t.push(l)
                    }
                }))
            }
        }
    }));
    var v = f;
    e.exports = v
}, function (e, t, n) {
    n(126), n(54), n(55), n(500), n(501), n(128), n(129)
}, function (e, t, n) {
    var i = n(1), r = n(4), o = n(127), a = n(53), s = i.each, l = r.asc, c = function (e, t, n, i) {
        this._dimName = e, this._axisIndex = t, this._valueWindow, this._percentWindow, this._dataExtent, this._minMaxSpan, this.ecModel = i, this._dataZoomModel = n
    };

    function u(e, t) {
        var n = e.getAxisModel(), i = e._percentWindow, o = e._valueWindow;
        if (i) {
            var a = r.getPixelPrecision(o, [0, 500]);
            a = Math.min(a, 20);
            var s = t || 0 === i[0] && 100 === i[1];
            n.setRange(s ? null : +o[0].toFixed(a), s ? null : +o[1].toFixed(a))
        }
    }

    c.prototype = {
        constructor: c, hostedBy: function (e) {
            return this._dataZoomModel === e
        }, getDataValueWindow: function () {
            return this._valueWindow.slice()
        }, getDataPercentWindow: function () {
            return this._percentWindow.slice()
        }, getTargetSeriesModels: function () {
            var e = [], t = this.ecModel;
            return t.eachSeries((function (n) {
                if (o.isCoordSupported(n.get("coordinateSystem"))) {
                    var i = this._dimName, r = t.queryComponents({
                        mainType: i + "Axis",
                        index: n.get(i + "AxisIndex"),
                        id: n.get(i + "AxisId")
                    })[0];
                    this._axisIndex === (r && r.componentIndex) && e.push(n)
                }
            }), this), e
        }, getAxisModel: function () {
            return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex)
        }, getOtherAxisModel: function () {
            var e, t, n, i = this._dimName, r = this.ecModel, o = this.getAxisModel();
            return "x" === i || "y" === i ? (t = "gridIndex", e = "x" === i ? "y" : "x") : (t = "polarIndex", e = "angle" === i ? "radius" : "angle"), r.eachComponent(e + "Axis", (function (e) {
                (e.get(t) || 0) === (o.get(t) || 0) && (n = e)
            })), n
        }, getMinMaxSpan: function () {
            return i.clone(this._minMaxSpan)
        }, calculateDataWindow: function (e) {
            var t, n = this._dataExtent, i = this.getAxisModel().axis.scale, o = this._dataZoomModel.getRangePropMode(),
                c = [0, 100], u = [], h = [];
            s(["start", "end"], (function (a, s) {
                var l = e[a], d = e[a + "Value"];
                "percent" === o[s] ? (null == l && (l = c[s]), d = i.parse(r.linearMap(l, c, n))) : (t = !0, d = null == d ? n[s] : i.parse(d), l = r.linearMap(d, n, c)), h[s] = d, u[s] = l
            })), l(h), l(u);
            var d = this._minMaxSpan;

            function f(e, t, n, o, s) {
                var l = s ? "Span" : "ValueSpan";
                a(0, e, n, "all", d["min" + l], d["max" + l]);
                for (var c = 0; c < 2; c++) t[c] = r.linearMap(e[c], n, o, !0), s && (t[c] = i.parse(t[c]))
            }

            return t ? f(h, u, n, c, !1) : f(u, h, c, n, !0), {valueWindow: h, percentWindow: u}
        }, reset: function (e) {
            if (e === this._dataZoomModel) {
                var t = this.getTargetSeriesModels();
                this._dataExtent = function (e, t, n) {
                    var i = [1 / 0, -1 / 0];
                    s(n, (function (e) {
                        var n = e.getData();
                        n && s(n.mapDimension(t, !0), (function (e) {
                            var t = n.getApproximateExtent(e);
                            t[0] < i[0] && (i[0] = t[0]), t[1] > i[1] && (i[1] = t[1])
                        }))
                    })), i[1] < i[0] && (i = [NaN, NaN]);
                    return function (e, t) {
                        var n = e.getAxisModel(), i = n.getMin(!0), r = "category" === n.get("type"),
                            o = r && n.getCategories().length;
                        null != i && "dataMin" !== i && "function" != typeof i ? t[0] = i : r && (t[0] = o > 0 ? 0 : NaN);
                        var a = n.getMax(!0);
                        null != a && "dataMax" !== a && "function" != typeof a ? t[1] = a : r && (t[1] = o > 0 ? o - 1 : NaN);
                        n.get("scale", !0) || (t[0] > 0 && (t[0] = 0), t[1] < 0 && (t[1] = 0))
                    }(e, i), i
                }(this, this._dimName, t), function (e) {
                    var t = e._minMaxSpan = {}, n = e._dataZoomModel, i = e._dataExtent;
                    s(["min", "max"], (function (o) {
                        var a = n.get(o + "Span"), s = n.get(o + "ValueSpan");
                        null != s && (s = e.getAxisModel().axis.scale.parse(s)), null != s ? a = r.linearMap(i[0] + s, i, [0, 100], !0) : null != a && (s = r.linearMap(a, [0, 100], i, !0) - i[0]), t[o + "Span"] = a, t[o + "ValueSpan"] = s
                    }))
                }(this);
                var n = this.calculateDataWindow(e.settledOption);
                this._valueWindow = n.valueWindow, this._percentWindow = n.percentWindow, u(this)
            }
        }, restore: function (e) {
            e === this._dataZoomModel && (this._valueWindow = this._percentWindow = null, u(this, !0))
        }, filterData: function (e, t) {
            if (e === this._dataZoomModel) {
                var n = this._dimName, i = this.getTargetSeriesModels(), r = e.get("filterMode"), o = this._valueWindow;
                "none" !== r && s(i, (function (e) {
                    var t = e.getData(), i = t.mapDimension(n, !0);
                    i.length && ("weakFilter" === r ? t.filterSelf((function (e) {
                        for (var n, r, a, s = 0; s < i.length; s++) {
                            var l = t.get(i[s], e), c = !isNaN(l), u = l < o[0], h = l > o[1];
                            if (c && !u && !h) return !0;
                            c && (a = !0), u && (n = !0), h && (r = !0)
                        }
                        return a && n && r
                    })) : s(i, (function (n) {
                        if ("empty" === r) e.setData(t = t.map(n, (function (e) {
                            return function (e) {
                                return e >= o[0] && e <= o[1]
                            }(e) ? e : NaN
                        }))); else {
                            var i = {};
                            i[n] = o, t.selectRange(i)
                        }
                    })), s(i, (function (e) {
                        t.setApproximateExtent(o, e)
                    })))
                }))
            }
        }
    };
    var h = c;
    e.exports = h
}, function (e, t, n) {
    var i = n(54).extend({type: "dataZoom.select"});
    e.exports = i
}, function (e, t, n) {
    var i = n(55).extend({type: "dataZoom.select"});
    e.exports = i
}, function (e, t, n) {
    var i = n(2), r = n(211), o = n(33), a = n(36), s = o.toolbox.restore;

    function l(e) {
        this.model = e
    }

    l.defaultOption = {
        show: !0,
        icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",
        title: s.title
    }, l.prototype.onclick = function (e, t, n) {
        r.clear(e), t.dispatchAction({type: "restore", from: this.uid})
    }, a.register("restore", l), i.registerAction({
        type: "restore",
        event: "restore",
        update: "prepareAndUpdate"
    }, (function (e, t) {
        t.resetOption("recreate")
    }));
    var c = l;
    e.exports = c
}, function (e, t, n) {
    var i = n(2);
    n(75), n(504), n(505), i.registerAction({
        type: "showTip",
        event: "showTip",
        update: "tooltip:manuallyShowTip"
    }, (function () {
    })), i.registerAction({type: "hideTip", event: "hideTip", update: "tooltip:manuallyHideTip"}, (function () {
    }))
}, function (e, t, n) {
    var i = n(2).extendComponentModel({
        type: "tooltip",
        dependencies: ["axisPointer"],
        defaultOption: {
            zlevel: 0,
            z: 60,
            show: !0,
            showContent: !0,
            trigger: "item",
            triggerOn: "mousemove|click",
            alwaysShowContent: !1,
            displayMode: "single",
            renderMode: "auto",
            confine: !1,
            showDelay: 0,
            hideDelay: 100,
            transitionDuration: .4,
            enterable: !1,
            backgroundColor: "rgba(50,50,50,0.7)",
            borderColor: "#333",
            borderRadius: 4,
            borderWidth: 0,
            padding: 5,
            extraCssText: "",
            axisPointer: {
                type: "line",
                axis: "auto",
                animation: "auto",
                animationDurationUpdate: 200,
                animationEasingUpdate: "exponentialOut",
                crossStyle: {color: "#999", width: 1, type: "dashed", textStyle: {}}
            },
            textStyle: {color: "#fff", fontSize: 14}
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(12), a = n(506), s = n(507), l = n(8), c = n(4), u = n(3), h = n(206), d = n(7),
        f = n(13), g = n(207), p = n(22), m = n(96), v = n(5).getTooltipRenderMode, y = r.bind, b = r.each,
        C = c.parsePercent, w = new u.Rect({shape: {x: -1, y: -1, width: 2, height: 2}}), I = i.extendComponentView({
            type: "tooltip", init: function (e, t) {
                if (!o.node) {
                    var n, i = e.getComponent("tooltip"), r = i.get("renderMode");
                    this._renderMode = v(r), "html" === this._renderMode ? (n = new a(t.getDom(), t, {appendToBody: i.get("appendToBody", !0)}), this._newLine = "<br/>") : (n = new s(t), this._newLine = "\n"), this._tooltipContent = n
                }
            }, render: function (e, t, n) {
                if (!o.node) {
                    this.group.removeAll(), this._tooltipModel = e, this._ecModel = t, this._api = n, this._lastDataByCoordSys = null, this._alwaysShowContent = e.get("alwaysShowContent");
                    var i = this._tooltipContent;
                    i.update(), i.setEnterable(e.get("enterable")), this._initGlobalListener(), this._keepShow()
                }
            }, _initGlobalListener: function () {
                var e = this._tooltipModel.get("triggerOn");
                g.register("itemTooltip", this._api, y((function (t, n, i) {
                    "none" !== e && (e.indexOf(t) >= 0 ? this._tryShow(n, i) : "leave" === t && this._hide(i))
                }), this))
            }, _keepShow: function () {
                var e = this._tooltipModel, t = this._ecModel, n = this._api;
                if (null != this._lastX && null != this._lastY && "none" !== e.get("triggerOn")) {
                    var i = this;
                    clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout((function () {
                        !n.isDisposed() && i.manuallyShowTip(e, t, n, {x: i._lastX, y: i._lastY})
                    }))
                }
            }, manuallyShowTip: function (e, t, n, i) {
                if (i.from !== this.uid && !o.node) {
                    var r = A(i, n);
                    this._ticket = "";
                    var a = i.dataByCoordSys;
                    if (i.tooltip && null != i.x && null != i.y) {
                        var s = w;
                        s.position = [i.x, i.y], s.update(), s.tooltip = i.tooltip, this._tryShow({
                            offsetX: i.x,
                            offsetY: i.y,
                            target: s
                        }, r)
                    } else if (a) this._tryShow({
                        offsetX: i.x,
                        offsetY: i.y,
                        position: i.position,
                        dataByCoordSys: i.dataByCoordSys,
                        tooltipOption: i.tooltipOption
                    }, r); else if (null != i.seriesIndex) {
                        if (this._manuallyAxisShowTip(e, t, n, i)) return;
                        var l = h(i, t), c = l.point[0], u = l.point[1];
                        null != c && null != u && this._tryShow({
                            offsetX: c,
                            offsetY: u,
                            position: i.position,
                            target: l.el
                        }, r)
                    } else null != i.x && null != i.y && (n.dispatchAction({
                        type: "updateAxisPointer",
                        x: i.x,
                        y: i.y
                    }), this._tryShow({
                        offsetX: i.x,
                        offsetY: i.y,
                        position: i.position,
                        target: n.getZr().findHover(i.x, i.y).target
                    }, r))
                }
            }, manuallyHideTip: function (e, t, n, i) {
                var r = this._tooltipContent;
                !this._alwaysShowContent && this._tooltipModel && r.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = null, i.from !== this.uid && this._hide(A(i, n))
            }, _manuallyAxisShowTip: function (e, t, n, i) {
                var r = i.seriesIndex, o = i.dataIndex, a = t.getComponent("axisPointer").coordSysAxesInfo;
                if (null != r && null != o && null != a) {
                    var s = t.getSeriesByIndex(r);
                    if (s) if ("axis" === (e = x([s.getData().getItemModel(o), s, (s.coordinateSystem || {}).model, e])).get("trigger")) return n.dispatchAction({
                        type: "updateAxisPointer",
                        seriesIndex: r,
                        dataIndex: o,
                        position: i.position
                    }), !0
                }
            }, _tryShow: function (e, t) {
                var n = e.target;
                if (this._tooltipModel) {
                    this._lastX = e.offsetX, this._lastY = e.offsetY;
                    var i = e.dataByCoordSys;
                    i && i.length ? this._showAxisTooltip(i, e) : n && null != n.dataIndex ? (this._lastDataByCoordSys = null, this._showSeriesItemTooltip(e, n, t)) : n && n.tooltip ? (this._lastDataByCoordSys = null, this._showComponentItemTooltip(e, n, t)) : (this._lastDataByCoordSys = null, this._hide(t))
                }
            }, _showOrMove: function (e, t) {
                var n = e.get("showDelay");
                t = r.bind(t, this), clearTimeout(this._showTimout), n > 0 ? this._showTimout = setTimeout(t, n) : t()
            }, _showAxisTooltip: function (e, t) {
                var n = this._ecModel, i = this._tooltipModel, o = [t.offsetX, t.offsetY], a = [], s = [],
                    c = x([t.tooltipOption, i]), u = this._renderMode, h = this._newLine, d = {};
                b(e, (function (e) {
                    b(e.dataByAxis, (function (e) {
                        var t = n.getComponent(e.axisDim + "Axis", e.axisIndex), i = e.value, o = [];
                        if (t && null != i) {
                            var c = m.getValueLabel(i, t.axis, n, e.seriesDataIndices, e.valueLabelOpt);
                            r.each(e.seriesDataIndices, (function (a) {
                                var l = n.getSeriesByIndex(a.seriesIndex), h = a.dataIndexInside,
                                    f = l && l.getDataParams(h);
                                if (f.axisDim = e.axisDim, f.axisIndex = e.axisIndex, f.axisType = e.axisType, f.axisId = e.axisId, f.axisValue = p.getAxisRawValue(t.axis, i), f.axisValueLabel = c, f) {
                                    s.push(f);
                                    var g, m = l.formatTooltip(h, !0, null, u);
                                    if (r.isObject(m)) {
                                        g = m.html;
                                        var v = m.markers;
                                        r.merge(d, v)
                                    } else g = m;
                                    o.push(g)
                                }
                            }));
                            var f = c;
                            "html" !== u ? a.push(o.join(h)) : a.push((f ? l.encodeHTML(f) + h : "") + o.join(h))
                        }
                    }))
                }), this), a.reverse(), a = a.join(this._newLine + this._newLine);
                var f = t.position;
                this._showOrMove(c, (function () {
                    this._updateContentNotChangedOnAxis(e) ? this._updatePosition(c, f, o[0], o[1], this._tooltipContent, s) : this._showTooltipContent(c, a, s, Math.random(), o[0], o[1], f, void 0, d)
                }))
            }, _showSeriesItemTooltip: function (e, t, n) {
                var i = this._ecModel, o = t.seriesIndex, a = i.getSeriesByIndex(o), s = t.dataModel || a, l = t.dataIndex,
                    c = t.dataType, u = s.getData(c),
                    h = x([u.getItemModel(l), s, a && (a.coordinateSystem || {}).model, this._tooltipModel]),
                    d = h.get("trigger");
                if (null == d || "item" === d) {
                    var f, g, p = s.getDataParams(l, c), m = s.formatTooltip(l, !1, c, this._renderMode);
                    r.isObject(m) ? (f = m.html, g = m.markers) : (f = m, g = null);
                    var v = "item_" + s.name + "_" + l;
                    this._showOrMove(h, (function () {
                        this._showTooltipContent(h, f, p, v, e.offsetX, e.offsetY, e.position, e.target, g)
                    })), n({
                        type: "showTip",
                        dataIndexInside: l,
                        dataIndex: u.getRawIndex(l),
                        seriesIndex: o,
                        from: this.uid
                    })
                }
            }, _showComponentItemTooltip: function (e, t, n) {
                var i = t.tooltip;
                if ("string" == typeof i) {
                    i = {content: i, formatter: i}
                }
                var r = new f(i, this._tooltipModel, this._ecModel), o = r.get("content"), a = Math.random();
                this._showOrMove(r, (function () {
                    this._showTooltipContent(r, o, r.get("formatterParams") || {}, a, e.offsetX, e.offsetY, e.position, t)
                })), n({type: "showTip", from: this.uid})
            }, _showTooltipContent: function (e, t, n, i, r, o, a, s, c) {
                if (this._ticket = "", e.get("showContent") && e.get("show")) {
                    var u = this._tooltipContent, h = e.get("formatter");
                    a = a || e.get("position");
                    var d = t;
                    if (h && "string" == typeof h) d = l.formatTpl(h, n, !0); else if ("function" == typeof h) {
                        var f = y((function (t, i) {
                            t === this._ticket && (u.setContent(i, c, e), this._updatePosition(e, a, r, o, u, n, s))
                        }), this);
                        this._ticket = i, d = h(n, i, f)
                    }
                    u.setContent(d, c, e), u.show(e), this._updatePosition(e, a, r, o, u, n, s)
                }
            }, _updatePosition: function (e, t, n, i, o, a, s) {
                var l = this._api.getWidth(), c = this._api.getHeight();
                t = t || e.get("position");
                var u = o.getSize(), h = e.get("align"), f = e.get("verticalAlign"), g = s && s.getBoundingRect().clone();
                if (s && g.applyTransform(s.transform), "function" == typeof t && (t = t([n, i], a, o.el, g, {
                    viewSize: [l, c],
                    contentSize: u.slice()
                })), r.isArray(t)) n = C(t[0], l), i = C(t[1], c); else if (r.isObject(t)) {
                    t.width = u[0], t.height = u[1];
                    var p = d.getLayoutRect(t, {width: l, height: c});
                    n = p.x, i = p.y, h = null, f = null
                } else if ("string" == typeof t && s) {
                    var m = function (e, t, n) {
                        var i = n[0], r = n[1], o = 0, a = 0, s = t.width, l = t.height;
                        switch (e) {
                            case"inside":
                                o = t.x + s / 2 - i / 2, a = t.y + l / 2 - r / 2;
                                break;
                            case"top":
                                o = t.x + s / 2 - i / 2, a = t.y - r - 5;
                                break;
                            case"bottom":
                                o = t.x + s / 2 - i / 2, a = t.y + l + 5;
                                break;
                            case"left":
                                o = t.x - i - 5, a = t.y + l / 2 - r / 2;
                                break;
                            case"right":
                                o = t.x + s + 5, a = t.y + l / 2 - r / 2
                        }
                        return [o, a]
                    }(t, g, u);
                    n = m[0], i = m[1]
                } else {
                    m = function (e, t, n, i, r, o, a) {
                        var s = n.getOuterSize(), l = s.width, c = s.height;
                        null != o && (e + l + o > i ? e -= l + o : e += o);
                        null != a && (t + c + a > r ? t -= c + a : t += a);
                        return [e, t]
                    }(n, i, o, l, c, h ? null : 20, f ? null : 20);
                    n = m[0], i = m[1]
                }
                if (h && (n -= _(h) ? u[0] / 2 : "right" === h ? u[0] : 0), f && (i -= _(f) ? u[1] / 2 : "bottom" === f ? u[1] : 0), e.get("confine")) {
                    m = function (e, t, n, i, r) {
                        var o = n.getOuterSize(), a = o.width, s = o.height;
                        return e = Math.min(e + a, i) - a, t = Math.min(t + s, r) - s, e = Math.max(e, 0), t = Math.max(t, 0), [e, t]
                    }(n, i, o, l, c);
                    n = m[0], i = m[1]
                }
                o.moveTo(n, i)
            }, _updateContentNotChangedOnAxis: function (e) {
                var t = this._lastDataByCoordSys, n = !!t && t.length === e.length;
                return n && b(t, (function (t, i) {
                    var r = t.dataByAxis || {}, o = (e[i] || {}).dataByAxis || [];
                    (n &= r.length === o.length) && b(r, (function (e, t) {
                        var i = o[t] || {}, r = e.seriesDataIndices || [], a = i.seriesDataIndices || [];
                        (n &= e.value === i.value && e.axisType === i.axisType && e.axisId === i.axisId && r.length === a.length) && b(r, (function (e, t) {
                            var i = a[t];
                            n &= e.seriesIndex === i.seriesIndex && e.dataIndex === i.dataIndex
                        }))
                    }))
                })), this._lastDataByCoordSys = e, !!n
            }, _hide: function (e) {
                this._lastDataByCoordSys = null, e({type: "hideTip", from: this.uid})
            }, dispose: function (e, t) {
                o.node || (this._tooltipContent.dispose(), g.unregister("itemTooltip", t))
            }
        });

    function x(e) {
        for (var t = e.pop(); e.length;) {
            var n = e.pop();
            n && (f.isInstance(n) && (n = n.get("tooltip", !0)), "string" == typeof n && (n = {formatter: n}), t = new f(n, t, t.ecModel))
        }
        return t
    }

    function A(e, t) {
        return e.dispatchAction || r.bind(t.dispatchAction, t)
    }

    function _(e) {
        return "center" === e || "middle" === e
    }

    e.exports = I
}, function (e, t, n) {
    var i = n(1), r = n(25), o = n(24), a = n(145), s = n(12), l = n(8), c = i.each, u = l.toCamelCase,
        h = ["", "-webkit-", "-moz-", "-o-"];

    function d(e) {
        var t, n, o = [], a = e.get("transitionDuration"), d = e.get("backgroundColor"), f = e.getModel("textStyle"),
            g = e.get("padding");
        return a && o.push((n = "left " + (t = a) + "s cubic-bezier(0.23, 1, 0.32, 1),top " + t + "s cubic-bezier(0.23, 1, 0.32, 1)", i.map(h, (function (e) {
            return e + "transition:" + n
        })).join(";"))), d && (s.canvasSupported ? o.push("background-Color:" + d) : (o.push("background-Color:#" + r.toHex(d)), o.push("filter:alpha(opacity=70)"))), c(["width", "color", "radius"], (function (t) {
            var n = "border-" + t, i = u(n), r = e.get(i);
            null != r && o.push(n + ":" + r + ("color" === t ? "" : "px"))
        })), o.push(function (e) {
            var t = [], n = e.get("fontSize"), i = e.getTextColor();
            return i && t.push("color:" + i), t.push("font:" + e.getFont()), n && t.push("line-height:" + Math.round(3 * n / 2) + "px"), c(["decoration", "align"], (function (n) {
                var i = e.get(n);
                i && t.push("text-" + n + ":" + i)
            })), t.join(";")
        }(f)), null != g && o.push("padding:" + l.normalizeCssArray(g).join("px ") + "px"), o.join(";") + ";"
    }

    function f(e, t, n, i, r) {
        var o = t && t.painter;
        if (n) {
            var s = o && o.getViewportRoot();
            s && a.transformLocalCoord(e, s, document.body, i, r)
        } else {
            e[0] = i, e[1] = r;
            var l = o && o.getViewportRootOffset();
            l && (e[0] += l.offsetLeft, e[1] += l.offsetTop)
        }
    }

    function g(e, t, n) {
        if (s.wxa) return null;
        var i = document.createElement("div");
        i.domBelongToZr = !0, this.el = i;
        var r = this._zr = t.getZr(), a = this._appendToBody = n && n.appendToBody;
        this._styleCoord = [0, 0], f(this._styleCoord, r, a, t.getWidth() / 2, t.getHeight() / 2), a ? document.body.appendChild(i) : e.appendChild(i), this._container = e, this._show = !1, this._hideTimeout;
        var l = this;
        i.onmouseenter = function () {
            l._enterable && (clearTimeout(l._hideTimeout), l._show = !0), l._inContent = !0
        }, i.onmousemove = function (e) {
            if (e = e || window.event, !l._enterable) {
                var t = r.handler, n = r.painter.getViewportRoot();
                o.normalizeEvent(n, e, !0), t.dispatch("mousemove", e)
            }
        }, i.onmouseleave = function () {
            l._enterable && l._show && l.hideLater(l._hideDelay), l._inContent = !1
        }
    }

    g.prototype = {
        constructor: g, _enterable: !0, update: function () {
            var e = this._container, t = e.currentStyle || document.defaultView.getComputedStyle(e), n = e.style;
            "absolute" !== n.position && "absolute" !== t.position && (n.position = "relative")
        }, show: function (e) {
            clearTimeout(this._hideTimeout);
            var t = this.el, n = this._styleCoord;
            t.style.cssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + d(e) + ";left:" + n[0] + "px;top:" + n[1] + "px;" + (e.get("extraCssText") || ""), t.style.display = t.innerHTML ? "block" : "none", t.style.pointerEvents = this._enterable ? "auto" : "none", this._show = !0
        }, setContent: function (e) {
            this.el.innerHTML = null == e ? "" : e
        }, setEnterable: function (e) {
            this._enterable = e
        }, getSize: function () {
            var e = this.el;
            return [e.clientWidth, e.clientHeight]
        }, moveTo: function (e, t) {
            var n = this._styleCoord;
            f(n, this._zr, this._appendToBody, e, t);
            var i = this.el.style;
            i.left = n[0] + "px", i.top = n[1] + "px"
        }, hide: function () {
            this.el.style.display = "none", this._show = !1
        }, hideLater: function (e) {
            !this._show || this._inContent && this._enterable || (e ? (this._hideDelay = e, this._show = !1, this._hideTimeout = setTimeout(i.bind(this.hide, this), e)) : this.hide())
        }, isShow: function () {
            return this._show
        }, dispose: function () {
            this.el.parentNode.removeChild(this.el)
        }, getOuterSize: function () {
            var e = this.el.clientWidth, t = this.el.clientHeight;
            if (document.defaultView && document.defaultView.getComputedStyle) {
                var n = document.defaultView.getComputedStyle(this.el);
                n && (e += parseInt(n.borderLeftWidth, 10) + parseInt(n.borderRightWidth, 10), t += parseInt(n.borderTopWidth, 10) + parseInt(n.borderBottomWidth, 10))
            }
            return {width: e, height: t}
        }
    };
    var p = g;
    e.exports = p
}, function (e, t, n) {
    var i = n(1), r = n(39);

    function o(e) {
        this._zr = e.getZr(), this._show = !1, this._hideTimeout
    }

    o.prototype = {
        constructor: o, _enterable: !0, update: function () {
        }, show: function (e) {
            this._hideTimeout && clearTimeout(this._hideTimeout), this.el.attr("show", !0), this._show = !0
        }, setContent: function (e, t, n) {
            this.el && this._zr.remove(this.el);
            for (var i = {}, o = e, a = o.indexOf("{marker"); a >= 0;) {
                var s = o.indexOf("|}"), l = o.substr(a + "{marker".length, s - a - "{marker".length);
                l.indexOf("sub") > -1 ? i["marker" + l] = {
                    textWidth: 4,
                    textHeight: 4,
                    textBorderRadius: 2,
                    textBackgroundColor: t[l],
                    textOffset: [3, 0]
                } : i["marker" + l] = {
                    textWidth: 10,
                    textHeight: 10,
                    textBorderRadius: 5,
                    textBackgroundColor: t[l]
                }, a = (o = o.substr(s + 1)).indexOf("{marker")
            }
            this.el = new r({
                style: {
                    rich: i,
                    text: e,
                    textLineHeight: 20,
                    textBackgroundColor: n.get("backgroundColor"),
                    textBorderRadius: n.get("borderRadius"),
                    textFill: n.get("textStyle.color"),
                    textPadding: n.get("padding")
                }, z: n.get("z")
            }), this._zr.add(this.el);
            var c = this;
            this.el.on("mouseover", (function () {
                c._enterable && (clearTimeout(c._hideTimeout), c._show = !0), c._inContent = !0
            })), this.el.on("mouseout", (function () {
                c._enterable && c._show && c.hideLater(c._hideDelay), c._inContent = !1
            }))
        }, setEnterable: function (e) {
            this._enterable = e
        }, getSize: function () {
            var e = this.el.getBoundingRect();
            return [e.width, e.height]
        }, moveTo: function (e, t) {
            this.el && this.el.attr("position", [e, t])
        }, hide: function () {
            this.el && this.el.hide(), this._show = !1
        }, hideLater: function (e) {
            !this._show || this._inContent && this._enterable || (e ? (this._hideDelay = e, this._show = !1, this._hideTimeout = setTimeout(i.bind(this.hide, this), e)) : this.hide())
        }, isShow: function () {
            return this._show
        }, getOuterSize: function () {
            var e = this.getSize();
            return {width: e[0], height: e[1]}
        }
    };
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(2), r = n(509);
    n(212), n(511), n(512), n(513), n(514), i.registerPreprocessor(r)
}, function (e, t, n) {
    var i = n(1), r = ["rect", "polygon", "keep", "clear"];
    e.exports = function (e, t) {
        var n = e && e.brush;
        if (i.isArray(n) || (n = n ? [n] : []), n.length) {
            var o = [];
            i.each(n, (function (e) {
                var t = e.hasOwnProperty("toolbox") ? e.toolbox : [];
                t instanceof Array && (o = o.concat(t))
            }));
            var a = e && e.toolbox;
            i.isArray(a) && (a = a[0]), a || (a = {feature: {}}, e.toolbox = [a]);
            var s, l, c = a.feature || (a.feature = {}), u = c.brush || (c.brush = {}), h = u.type || (u.type = []);
            h.push.apply(h, o), s = h, l = {}, i.each(s, (function (e) {
                l[e] = 1
            })), s.length = 0, i.each(l, (function (e, t) {
                s.push(t)
            })), t && !h.length && h.push.apply(h, r)
        }
    }
}, function (e, t, n) {
    var i = n(178), r = n(10), o = n(3).linePolygonIntersect;

    function a(e) {
        var t = ["x", "y"], n = ["width", "height"];
        return {
            point: function (t, n, i) {
                if (t) {
                    var r = i.range;
                    return s(t[e], r)
                }
            }, rect: function (i, r, o) {
                if (i) {
                    var a = o.range, l = [i[t[e]], i[t[e]] + i[n[e]]];
                    return l[1] < l[0] && l.reverse(), s(l[0], a) || s(l[1], a) || s(a[0], l) || s(a[1], l)
                }
            }
        }
    }

    function s(e, t) {
        return t[0] <= e && e <= t[1]
    }

    var l = {
        lineX: a(0), lineY: a(1), rect: {
            point: function (e, t, n) {
                return e && n.boundingRect.contain(e[0], e[1])
            }, rect: function (e, t, n) {
                return e && n.boundingRect.intersect(e)
            }
        }, polygon: {
            point: function (e, t, n) {
                return e && n.boundingRect.contain(e[0], e[1]) && i.contain(n.range, e[0], e[1])
            }, rect: function (e, t, n) {
                var a = n.range;
                if (!e || a.length <= 1) return !1;
                var s = e.x, l = e.y, c = e.width, u = e.height, h = a[0];
                return !!(i.contain(a, s, l) || i.contain(a, s + c, l) || i.contain(a, s, l + u) || i.contain(a, s + c, l + u) || r.create(e).contain(h[0], h[1]) || o(s, l, s + c, l, a) || o(s, l, s, l + u, a) || o(s + c, l, s + c, l + u, a) || o(s, l + u, s + c, l + u, a)) || void 0
            }
        }
    };
    e.exports = l
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(2), r = n(1), o = n(97), a = n(13), s = ["#ddd"];

    function l(e, t) {
        return r.merge({
            brushType: e.brushType,
            brushMode: e.brushMode,
            transformable: e.transformable,
            brushStyle: new a(e.brushStyle).getItemStyle(),
            removeOnClick: e.removeOnClick,
            z: e.z
        }, t, !0)
    }

    var c = i.extendComponentModel({
        type: "brush",
        dependencies: ["geo", "grid", "xAxis", "yAxis", "parallel", "series"],
        defaultOption: {
            toolbox: null,
            brushLink: null,
            seriesIndex: "all",
            geoIndex: null,
            xAxisIndex: null,
            yAxisIndex: null,
            brushType: "rect",
            brushMode: "single",
            transformable: !0,
            brushStyle: {borderWidth: 1, color: "rgba(120,140,180,0.3)", borderColor: "rgba(120,140,180,0.8)"},
            throttleType: "fixRate",
            throttleDelay: 0,
            removeOnClick: !0,
            z: 1e4
        },
        areas: [],
        brushType: null,
        brushOption: {},
        coordInfoList: [],
        optionUpdated: function (e, t) {
            var n = this.option;
            !t && o.replaceVisualOption(n, e, ["inBrush", "outOfBrush"]);
            var i = n.inBrush = n.inBrush || {};
            n.outOfBrush = n.outOfBrush || {color: s}, i.hasOwnProperty("liftZ") || (i.liftZ = 5)
        },
        setAreas: function (e) {
            e && (this.areas = r.map(e, (function (e) {
                return l(this.option, e)
            }), this))
        },
        setBrushOption: function (e) {
            this.brushOption = l(this.option, e), this.brushType = this.brushOption.brushType
        }
    });
    e.exports = c
}, function (e, t, n) {
    var i = n(2), r = n(1), o = n(123), a = n(212).layoutCovers, s = i.extendComponentView({
        type: "brush", init: function (e, t) {
            this.ecModel = e, this.api = t, this.model, (this._brushController = new o(t.getZr())).on("brush", r.bind(this._onBrush, this)).mount()
        }, render: function (e) {
            return this.model = e, l.apply(this, arguments)
        }, updateTransform: function (e, t) {
            return a(t), l.apply(this, arguments)
        }, updateView: l, dispose: function () {
            this._brushController.dispose()
        }, _onBrush: function (e, t) {
            var n = this.model.id;
            this.model.brushTargetManager.setOutputRanges(e, this.ecModel), (!t.isEnd || t.removeOnClick) && this.api.dispatchAction({
                type: "brush",
                brushId: n,
                areas: r.clone(e),
                $from: n
            }), t.isEnd && this.api.dispatchAction({type: "brushEnd", brushId: n, areas: r.clone(e), $from: n})
        }
    });

    function l(e, t, n, i) {
        (!i || i.$from !== e.id) && this._brushController.setPanels(e.brushTargetManager.makePanelOpts(n)).enableBrush(e.brushOption).updateCovers(e.areas.slice())
    }

    e.exports = s
}, function (e, t, n) {
    var i = n(2);
    i.registerAction({type: "brush", event: "brush"}, (function (e, t) {
        t.eachComponent({mainType: "brush", query: e}, (function (t) {
            t.setAreas(e.areas)
        }))
    })), i.registerAction({type: "brushSelect", event: "brushSelected", update: "none"}, (function () {
    })), i.registerAction({type: "brushEnd", event: "brushEnd", update: "none"}, (function () {
    }))
}, function (e, t, n) {
    var i = n(1), r = n(36), o = n(33).toolbox.brush;

    function a(e, t, n) {
        this.model = e, this.ecModel = t, this.api = n, this._brushType, this._brushMode
    }

    a.defaultOption = {
        show: !0, type: ["rect", "polygon", "lineX", "lineY", "keep", "clear"], icon: {
            rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",
            polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",
            lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",
            lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",
            keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",
            clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"
        }, title: i.clone(o.title)
    };
    var s = a.prototype;
    s.render = s.updateView = function (e, t, n) {
        var r, o, a;
        t.eachComponent({mainType: "brush"}, (function (e) {
            r = e.brushType, o = e.brushOption.brushMode || "single", a |= e.areas.length
        })), this._brushType = r, this._brushMode = o, i.each(e.get("type", !0), (function (t) {
            e.setIconStatus(t, ("keep" === t ? "multiple" === o : "clear" === t ? a : t === r) ? "emphasis" : "normal")
        }))
    }, s.getIcons = function () {
        var e = this.model, t = e.get("icon", !0), n = {};
        return i.each(e.get("type", !0), (function (e) {
            t[e] && (n[e] = t[e])
        })), n
    }, s.onclick = function (e, t, n) {
        var i = this._brushType, r = this._brushMode;
        "clear" === n ? (t.dispatchAction({type: "axisAreaSelect", intervals: []}), t.dispatchAction({
            type: "brush",
            command: "clear",
            areas: []
        })) : t.dispatchAction({
            type: "takeGlobalCursor",
            key: "brush",
            brushOption: {
                brushType: "keep" === n ? i : i !== n && n,
                brushMode: "keep" === n ? "multiple" === r ? "single" : "multiple" : r
            }
        })
    }, r.register("brush", a);
    var l = a;
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(2), o = n(3), a = n(7).getLayoutRect, s = n(8).windowOpen;
    r.extendComponentModel({
        type: "title",
        layoutMode: {type: "box", ignoreSize: !0},
        defaultOption: {
            zlevel: 0,
            z: 6,
            show: !0,
            text: "",
            target: "blank",
            subtext: "",
            subtarget: "blank",
            left: 0,
            top: 0,
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            textStyle: {fontSize: 18, fontWeight: "bolder", color: "#333"},
            subtextStyle: {color: "#aaa"}
        }
    }), r.extendComponentView({
        type: "title", render: function (e, t, n) {
            if (this.group.removeAll(), e.get("show")) {
                var r = this.group, l = e.getModel("textStyle"), c = e.getModel("subtextStyle"), u = e.get("textAlign"),
                    h = i.retrieve2(e.get("textBaseline"), e.get("textVerticalAlign")), d = new o.Text({
                        style: o.setTextStyle({}, l, {
                            text: e.get("text"),
                            textFill: l.getTextColor()
                        }, {disableBox: !0}), z2: 10
                    }), f = d.getBoundingRect(), g = e.get("subtext"), p = new o.Text({
                        style: o.setTextStyle({}, c, {
                            text: g,
                            textFill: c.getTextColor(),
                            y: f.height + e.get("itemGap"),
                            textVerticalAlign: "top"
                        }, {disableBox: !0}), z2: 10
                    }), m = e.get("link"), v = e.get("sublink"), y = e.get("triggerEvent", !0);
                d.silent = !m && !y, p.silent = !v && !y, m && d.on("click", (function () {
                    s(m, "_" + e.get("target"))
                })), v && p.on("click", (function () {
                    s(m, "_" + e.get("subtarget"))
                })), d.eventData = p.eventData = y ? {
                    componentType: "title",
                    componentIndex: e.componentIndex
                } : null, r.add(d), g && r.add(p);
                var b = r.getBoundingRect(), C = e.getBoxLayoutParams();
                C.width = b.width, C.height = b.height;
                var w = a(C, {width: n.getWidth(), height: n.getHeight()}, e.get("padding"));
                u || ("middle" === (u = e.get("left") || e.get("right")) && (u = "center"), "right" === u ? w.x += w.width : "center" === u && (w.x += w.width / 2)), h || ("center" === (h = e.get("top") || e.get("bottom")) && (h = "middle"), "bottom" === h ? w.y += w.height : "middle" === h && (w.y += w.height / 2), h = h || "top"), r.attr("position", [w.x, w.y]);
                var I = {textAlign: u, textVerticalAlign: h};
                d.setStyle(I), p.setStyle(I), b = r.getBoundingRect();
                var x = w.margin, A = e.getItemStyle(["color", "opacity"]);
                A.fill = e.get("backgroundColor");
                var _ = new o.Rect({
                    shape: {
                        x: b.x - x[3],
                        y: b.y - x[0],
                        width: b.width + x[1] + x[3],
                        height: b.height + x[0] + x[2],
                        r: e.get("borderRadius")
                    }, style: A, subPixelOptimize: !0, silent: !0
                });
                r.add(_)
            }
        }
    })
}, function (e, t, n) {
    var i = n(2), r = n(517);
    n(518), n(519), n(520), n(522), i.registerPreprocessor(r)
}, function (e, t, n) {
    var i = n(1);

    function r(e) {
        var t = e.itemStyle || (e.itemStyle = {}), n = t.emphasis || (t.emphasis = {}), r = e.label || e.label || {},
            a = r.normal || (r.normal = {}), s = {normal: 1, emphasis: 1};
        i.each(r, (function (e, t) {
            s[t] || o(a, t) || (a[t] = e)
        })), n.label && !o(r, "emphasis") && (r.emphasis = n.label, delete n.label)
    }

    function o(e, t) {
        return e.hasOwnProperty(t)
    }

    e.exports = function (e) {
        var t = e && e.timeline;
        i.isArray(t) || (t = t ? [t] : []), i.each(t, (function (e) {
            e && function (e) {
                var t = e.type, n = {number: "value", time: "time"};
                n[t] && (e.axisType = n[t], delete e.type);
                if (r(e), o(e, "controlPosition")) {
                    var a = e.controlStyle || (e.controlStyle = {});
                    o(a, "position") || (a.position = e.controlPosition), "none" !== a.position || o(a, "show") || (a.show = !1, delete a.position), delete e.controlPosition
                }
                i.each(e.data || [], (function (e) {
                    i.isObject(e) && !i.isArray(e) && (!o(e, "value") && o(e, "name") && (e.value = e.name), r(e))
                }))
            }(e)
        }))
    }
}, function (e, t, n) {
    n(14).registerSubTypeDefaulter("timeline", (function () {
        return "slider"
    }))
}, function (e, t, n) {
    var i = n(2), r = n(1);
    i.registerAction({type: "timelineChange", event: "timelineChanged", update: "prepareAndUpdate"}, (function (e, t) {
        var n = t.getComponent("timeline");
        return n && null != e.currentIndex && (n.setCurrentIndex(e.currentIndex), !n.get("loop", !0) && n.isIndexMax() && n.setPlayState(!1)), t.resetOption("timeline"), r.defaults({currentIndex: n.option.currentIndex}, e)
    })), i.registerAction({
        type: "timelinePlayChange",
        event: "timelinePlayChanged",
        update: "update"
    }, (function (e, t) {
        var n = t.getComponent("timeline");
        n && null != e.playState && n.setPlayState(e.playState)
    }))
}, function (e, t, n) {
    var i = n(1), r = n(521), o = n(109), a = r.extend({
        type: "timeline.slider", defaultOption: {
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderWidth: 0,
            orient: "horizontal",
            inverse: !1,
            tooltip: {trigger: "item"},
            symbol: "emptyCircle",
            symbolSize: 10,
            lineStyle: {show: !0, width: 2, color: "#304654"},
            label: {position: "auto", show: !0, interval: "auto", rotate: 0, color: "#304654"},
            itemStyle: {color: "#304654", borderWidth: 1},
            checkpointStyle: {
                symbol: "circle",
                symbolSize: 13,
                color: "#c23531",
                borderWidth: 5,
                borderColor: "rgba(194,53,49, 0.5)",
                animation: !0,
                animationDuration: 300,
                animationEasing: "quinticInOut"
            },
            controlStyle: {
                show: !0,
                showPlayBtn: !0,
                showPrevBtn: !0,
                showNextBtn: !0,
                itemSize: 22,
                itemGap: 12,
                position: "left",
                playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",
                stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",
                nextIcon: "path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",
                prevIcon: "path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",
                color: "#304654",
                borderColor: "#304654",
                borderWidth: 1
            },
            emphasis: {
                label: {show: !0, color: "#c23531"},
                itemStyle: {color: "#c23531"},
                controlStyle: {color: "#c23531", borderColor: "#c23531", borderWidth: 2}
            },
            data: []
        }
    });
    i.mixin(a, o);
    var s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(1), r = n(14), o = n(19), a = n(5), s = r.extend({
        type: "timeline",
        layoutMode: "box",
        defaultOption: {
            zlevel: 0,
            z: 4,
            show: !0,
            axisType: "time",
            realtime: !0,
            left: "20%",
            top: null,
            right: "20%",
            bottom: 0,
            width: null,
            height: 40,
            padding: 5,
            controlPosition: "left",
            autoPlay: !1,
            rewind: !1,
            loop: !0,
            playInterval: 2e3,
            currentIndex: 0,
            itemStyle: {},
            label: {color: "#000"},
            data: []
        },
        init: function (e, t, n) {
            this._data, this._names, this.mergeDefaultAndTheme(e, n), this._initData()
        },
        mergeOption: function (e) {
            s.superApply(this, "mergeOption", arguments), this._initData()
        },
        setCurrentIndex: function (e) {
            null == e && (e = this.option.currentIndex);
            var t = this._data.count();
            this.option.loop ? e = (e % t + t) % t : (e >= t && (e = t - 1), e < 0 && (e = 0)), this.option.currentIndex = e
        },
        getCurrentIndex: function () {
            return this.option.currentIndex
        },
        isIndexMax: function () {
            return this.getCurrentIndex() >= this._data.count() - 1
        },
        setPlayState: function (e) {
            this.option.autoPlay = !!e
        },
        getPlayState: function () {
            return !!this.option.autoPlay
        },
        _initData: function () {
            var e = this.option, t = e.data || [], n = e.axisType, r = this._names = [];
            if ("category" === n) {
                var s = [];
                i.each(t, (function (e, t) {
                    var n, o = a.getDataItemValue(e);
                    i.isObject(e) ? (n = i.clone(e)).value = t : n = t, s.push(n), i.isString(o) || null != o && !isNaN(o) || (o = ""), r.push(o + "")
                })), t = s
            }
            var l = {category: "ordinal", time: "time"}[n] || "number";
            (this._data = new o([{name: "value", type: l}], this)).initData(t, r)
        },
        getData: function () {
            return this._data
        },
        getCategories: function () {
            if ("category" === this.get("axisType")) return this._names.slice()
        }
    }), l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(1), r = n(10), o = n(16), a = n(3), s = n(7), l = n(523), c = n(524), u = n(20).createSymbol, h = n(22),
        d = n(4), f = n(8).encodeHTML, g = i.bind, p = i.each, m = Math.PI, v = l.extend({
            type: "timeline.slider", init: function (e, t) {
                this.api = t, this._axis, this._viewRect, this._timer, this._currentPointer, this._mainGroup, this._labelGroup
            }, render: function (e, t, n, i) {
                if (this.model = e, this.api = n, this.ecModel = t, this.group.removeAll(), e.get("show", !0)) {
                    var r = this._layout(e, n), o = this._createGroup("mainGroup"), a = this._createGroup("labelGroup"),
                        s = this._axis = this._createAxis(r, e);
                    e.formatTooltip = function (e) {
                        return f(s.scale.getLabel(e))
                    }, p(["AxisLine", "AxisTick", "Control", "CurrentPointer"], (function (t) {
                        this["_render" + t](r, o, s, e)
                    }), this), this._renderAxisLabel(r, a, s, e), this._position(r, e)
                }
                this._doPlayStop()
            }, remove: function () {
                this._clearTimer(), this.group.removeAll()
            }, dispose: function () {
                this._clearTimer()
            }, _layout: function (e, t) {
                var n = e.get("label.position"), i = e.get("orient"), r = function (e, t) {
                    return s.getLayoutRect(e.getBoxLayoutParams(), {
                        width: t.getWidth(),
                        height: t.getHeight()
                    }, e.get("padding"))
                }(e, t);
                null == n || "auto" === n ? n = "horizontal" === i ? r.y + r.height / 2 < t.getHeight() / 2 ? "-" : "+" : r.x + r.width / 2 < t.getWidth() / 2 ? "+" : "-" : isNaN(n) && (n = {
                    horizontal: {
                        top: "-",
                        bottom: "+"
                    }, vertical: {left: "-", right: "+"}
                }[i][n]);
                var o, a, l, c, u = {horizontal: "center", vertical: n >= 0 || "+" === n ? "left" : "right"},
                    h = {horizontal: n >= 0 || "+" === n ? "top" : "bottom", vertical: "middle"},
                    d = {horizontal: 0, vertical: m / 2}, f = "vertical" === i ? r.height : r.width,
                    g = e.getModel("controlStyle"), p = g.get("show", !0), v = p ? g.get("itemSize") : 0,
                    y = p ? g.get("itemGap") : 0, b = v + y, C = e.get("label.rotate") || 0;
                C = C * m / 180;
                var w = g.get("position", !0), I = p && g.get("showPlayBtn", !0), x = p && g.get("showPrevBtn", !0),
                    A = p && g.get("showNextBtn", !0), _ = 0, S = f;
                return "left" === w || "bottom" === w ? (I && (o = [0, 0], _ += b), x && (a = [_, 0], _ += b), A && (l = [S - v, 0], S -= b)) : (I && (o = [S - v, 0], S -= b), x && (a = [0, 0], _ += b), A && (l = [S - v, 0], S -= b)), c = [_, S], e.get("inverse") && c.reverse(), {
                    viewRect: r,
                    mainLength: f,
                    orient: i,
                    rotation: d[i],
                    labelRotation: C,
                    labelPosOpt: n,
                    labelAlign: e.get("label.align") || u[i],
                    labelBaseline: e.get("label.verticalAlign") || e.get("label.baseline") || h[i],
                    playPosition: o,
                    prevBtnPosition: a,
                    nextBtnPosition: l,
                    axisExtent: c,
                    controlSize: v,
                    controlGap: y
                }
            }, _position: function (e, t) {
                var n = this._mainGroup, i = this._labelGroup, r = e.viewRect;
                if ("vertical" === e.orient) {
                    var a = o.create(), s = r.x, l = r.y + r.height;
                    o.translate(a, a, [-s, -l]), o.rotate(a, a, -m / 2), o.translate(a, a, [s, l]), (r = r.clone()).applyTransform(a)
                }
                var c = y(r), u = y(n.getBoundingRect()), h = y(i.getBoundingRect()), d = n.position, f = i.position;
                f[0] = d[0] = c[0][0];
                var g, p = e.labelPosOpt;
                isNaN(p) ? (b(d, u, c, 1, g = "+" === p ? 0 : 1), b(f, h, c, 1, 1 - g)) : (b(d, u, c, 1, g = p >= 0 ? 0 : 1), f[1] = d[1] + p);

                function v(e) {
                    var t = e.position;
                    e.origin = [c[0][0] - t[0], c[1][0] - t[1]]
                }

                function y(e) {
                    return [[e.x, e.x + e.width], [e.y, e.y + e.height]]
                }

                function b(e, t, n, i, r) {
                    e[i] += n[i][r] - t[i][r]
                }

                n.attr("position", d), i.attr("position", f), n.rotation = i.rotation = e.rotation, v(n), v(i)
            }, _createAxis: function (e, t) {
                var n = t.getData(), i = t.get("axisType"), r = h.createScaleByModel(t, i);
                r.getTicks = function () {
                    return n.mapArray(["value"], (function (e) {
                        return e
                    }))
                };
                var o = n.getDataExtent("value");
                r.setExtent(o[0], o[1]), r.niceTicks();
                var a = new c("value", r, e.axisExtent, i);
                return a.model = t, a
            }, _createGroup: function (e) {
                var t = this["_" + e] = new a.Group;
                return this.group.add(t), t
            }, _renderAxisLine: function (e, t, n, r) {
                var o = n.getExtent();
                r.get("lineStyle.show") && t.add(new a.Line({
                    shape: {x1: o[0], y1: 0, x2: o[1], y2: 0},
                    style: i.extend({lineCap: "round"}, r.getModel("lineStyle").getLineStyle()),
                    silent: !0,
                    z2: 1
                }))
            }, _renderAxisTick: function (e, t, n, i) {
                var r = i.getData(), o = n.scale.getTicks();
                p(o, (function (e) {
                    var o = n.dataToCoord(e), s = r.getItemModel(e), l = s.getModel("itemStyle"),
                        c = s.getModel("emphasis.itemStyle"),
                        u = {position: [o, 0], onclick: g(this._changeTimeline, this, e)}, h = y(s, l, t, u);
                    a.setHoverStyle(h, c.getItemStyle()), s.get("tooltip") ? (h.dataIndex = e, h.dataModel = i) : h.dataIndex = h.dataModel = null
                }), this)
            }, _renderAxisLabel: function (e, t, n, i) {
                if (n.getLabelModel().get("show")) {
                    var r = i.getData(), o = n.getViewLabels();
                    p(o, (function (i) {
                        var o = i.tickValue, s = r.getItemModel(o), l = s.getModel("label"),
                            c = s.getModel("emphasis.label"), u = n.dataToCoord(i.tickValue), h = new a.Text({
                                position: [u, 0],
                                rotation: e.labelRotation - e.rotation,
                                onclick: g(this._changeTimeline, this, o),
                                silent: !1
                            });
                        a.setTextStyle(h.style, l, {
                            text: i.formattedLabel,
                            textAlign: e.labelAlign,
                            textVerticalAlign: e.labelBaseline
                        }), t.add(h), a.setHoverStyle(h, a.setTextStyle({}, c))
                    }), this)
                }
            }, _renderControl: function (e, t, n, o) {
                var s = e.controlSize, l = e.rotation, c = o.getModel("controlStyle").getItemStyle(),
                    u = o.getModel("emphasis.controlStyle").getItemStyle(), h = [0, -s / 2, s, s], d = o.getPlayState(),
                    f = o.get("inverse", !0);

                function p(e, n, d, f) {
                    if (e) {
                        var g = function (e, t, n, o) {
                            return a.makePath(e.get(t).replace(/^path:\/\//, ""), i.clone(o || {}), new r(n[0], n[1], n[2], n[3]), "center")
                        }(o, n, h, {
                            position: e,
                            origin: [s / 2, 0],
                            rotation: f ? -l : 0,
                            rectHover: !0,
                            style: c,
                            onclick: d
                        });
                        t.add(g), a.setHoverStyle(g, u)
                    }
                }

                p(e.nextBtnPosition, "controlStyle.nextIcon", g(this._changeTimeline, this, f ? "-" : "+")), p(e.prevBtnPosition, "controlStyle.prevIcon", g(this._changeTimeline, this, f ? "+" : "-")), p(e.playPosition, "controlStyle." + (d ? "stopIcon" : "playIcon"), g(this._handlePlayClick, this, !d), !0)
            }, _renderCurrentPointer: function (e, t, n, i) {
                var r = i.getData(), o = i.getCurrentIndex(), a = r.getItemModel(o).getModel("checkpointStyle"), s = this,
                    l = {
                        onCreate: function (e) {
                            e.draggable = !0, e.drift = g(s._handlePointerDrag, s), e.ondragend = g(s._handlePointerDragend, s), b(e, o, n, i, !0)
                        }, onUpdate: function (e) {
                            b(e, o, n, i)
                        }
                    };
                this._currentPointer = y(a, a, this._mainGroup, {}, this._currentPointer, l)
            }, _handlePlayClick: function (e) {
                this._clearTimer(), this.api.dispatchAction({type: "timelinePlayChange", playState: e, from: this.uid})
            }, _handlePointerDrag: function (e, t, n) {
                this._clearTimer(), this._pointerChangeTimeline([n.offsetX, n.offsetY])
            }, _handlePointerDragend: function (e) {
                this._pointerChangeTimeline([e.offsetX, e.offsetY], !0)
            }, _pointerChangeTimeline: function (e, t) {
                var n = this._toAxisCoord(e)[0], i = this._axis, r = d.asc(i.getExtent().slice());
                n > r[1] && (n = r[1]), n < r[0] && (n = r[0]), this._currentPointer.position[0] = n, this._currentPointer.dirty();
                var o = this._findNearestTick(n), a = this.model;
                (t || o !== a.getCurrentIndex() && a.get("realtime")) && this._changeTimeline(o)
            }, _doPlayStop: function () {
                this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(g((function () {
                    var e = this.model;
                    this._changeTimeline(e.getCurrentIndex() + (e.get("rewind", !0) ? -1 : 1))
                }), this), this.model.get("playInterval")))
            }, _toAxisCoord: function (e) {
                var t = this._mainGroup.getLocalTransform();
                return a.applyTransform(e, t, !0)
            }, _findNearestTick: function (e) {
                var t, n = this.model.getData(), i = 1 / 0, r = this._axis;
                return n.each(["value"], (function (n, o) {
                    var a = r.dataToCoord(n), s = Math.abs(a - e);
                    s < i && (i = s, t = o)
                })), t
            }, _clearTimer: function () {
                this._timer && (clearTimeout(this._timer), this._timer = null)
            }, _changeTimeline: function (e) {
                var t = this.model.getCurrentIndex();
                "+" === e ? e = t + 1 : "-" === e && (e = t - 1), this.api.dispatchAction({
                    type: "timelineChange",
                    currentIndex: e,
                    from: this.uid
                })
            }
        });

    function y(e, t, n, r, o, a) {
        var s = t.get("color");
        if (o) o.setColor(s), n.add(o), a && a.onUpdate(o); else {
            var l = e.get("symbol");
            (o = u(l, -1, -1, 2, 2, s)).setStyle("strokeNoScale", !0), n.add(o), a && a.onCreate(o)
        }
        var c = t.getItemStyle(["color", "symbol", "symbolSize"]);
        o.setStyle(c), r = i.merge({rectHover: !0, z2: 100}, r, !0);
        var h = e.get("symbolSize");
        (h = h instanceof Array ? h.slice() : [+h, +h])[0] /= 2, h[1] /= 2, r.scale = h;
        var f = e.get("symbolOffset");
        if (f) {
            var g = r.position = r.position || [0, 0];
            g[0] += d.parsePercent(f[0], h[0]), g[1] += d.parsePercent(f[1], h[1])
        }
        var p = e.get("symbolRotate");
        return r.rotation = (p || 0) * Math.PI / 180 || 0, o.attr(r), o.updateTransform(), o
    }

    function b(e, t, n, i, r) {
        if (!e.dragging) {
            var o = i.getModel("checkpointStyle"), a = n.dataToCoord(i.getData().get(["value"], t));
            r || !o.get("animation", !0) ? e.attr({position: [a, 0]}) : (e.stopAnimation(!0), e.animateTo({position: [a, 0]}, o.get("animationDuration", !0), o.get("animationEasing", !0)))
        }
    }

    e.exports = v
}, function (e, t, n) {
    var i = n(86).extend({type: "timeline"});
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(34), o = function (e, t, n, i) {
        r.call(this, e, t, n), this.type = i || "value", this.model = null
    };
    o.prototype = {
        constructor: o, getLabelModel: function () {
            return this.model.getModel("label")
        }, isHorizontal: function () {
            return "horizontal" === this.model.get("orient")
        }
    }, i.inherits(o, r);
    var a = o;
    e.exports = a
}, function (e, t, n) {
    var i = n(2);
    n(526), n(527), i.registerPreprocessor((function (e) {
        e.markPoint = e.markPoint || {}
    }))
}, function (e, t, n) {
    var i = n(130).extend({
        type: "markPoint",
        defaultOption: {
            zlevel: 0,
            z: 5,
            symbol: "pin",
            symbolSize: 50,
            tooltip: {trigger: "item"},
            label: {show: !0, position: "inside"},
            itemStyle: {borderWidth: 2},
            emphasis: {label: {show: !0}}
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(68), o = n(4), a = n(19), s = n(131);

    function l(e, t, n) {
        var i = t.coordinateSystem;
        e.each((function (r) {
            var a, s = e.getItemModel(r), l = o.parsePercent(s.get("x"), n.getWidth()),
                c = o.parsePercent(s.get("y"), n.getHeight());
            if (isNaN(l) || isNaN(c)) {
                if (t.getMarkerPosition) a = t.getMarkerPosition(e.getValues(e.dimensions, r)); else if (i) {
                    var u = e.get(i.dimensions[0], r), h = e.get(i.dimensions[1], r);
                    a = i.dataToPoint([u, h])
                }
            } else a = [l, c];
            isNaN(l) || (a[0] = l), isNaN(c) || (a[1] = c), e.setItemLayout(r, a)
        }))
    }

    var c = n(132).extend({
        type: "markPoint", updateTransform: function (e, t, n) {
            t.eachSeries((function (e) {
                var t = e.markPointModel;
                t && (l(t.getData(), e, n), this.markerGroupMap.get(e.id).updateLayout(t))
            }), this)
        }, renderSeries: function (e, t, n, o) {
            var c = e.coordinateSystem, u = e.id, h = e.getData(), d = this.markerGroupMap,
                f = d.get(u) || d.set(u, new r), g = function (e, t, n) {
                    var r;
                    r = e ? i.map(e && e.dimensions, (function (e) {
                        var n = t.getData().getDimensionInfo(t.getData().mapDimension(e)) || {};
                        return i.defaults({name: e}, n)
                    })) : [{name: "value", type: "float"}];
                    var o = new a(r, n), l = i.map(n.get("data"), i.curry(s.dataTransform, t));
                    e && (l = i.filter(l, i.curry(s.dataFilter, e)));
                    return o.initData(l, null, e ? s.dimValueGetter : function (e) {
                        return e.value
                    }), o
                }(c, e, t);
            t.setData(g), l(t.getData(), e, o), g.each((function (e) {
                var n = g.getItemModel(e), r = n.getShallow("symbol"), o = n.getShallow("symbolSize"),
                    a = i.isFunction(r), s = i.isFunction(o);
                if (a || s) {
                    var l = t.getRawValue(e), c = t.getDataParams(e);
                    a && (r = r(l, c)), s && (o = o(l, c))
                }
                g.setItemVisual(e, {symbol: r, symbolSize: o, color: n.get("itemStyle.color") || h.getVisual("color")})
            })), f.updateData(g), this.group.add(f.group), g.eachItemGraphicEl((function (e) {
                e.traverse((function (e) {
                    e.dataModel = t
                }))
            })), f.__keep = !0, f.group.silent = t.get("silent") || e.get("silent")
        }
    });
    e.exports = c
}, function (e, t, n) {
    var i = n(2);
    n(529), n(530), i.registerPreprocessor((function (e) {
        e.markLine = e.markLine || {}
    }))
}, function (e, t, n) {
    var i = n(130).extend({
        type: "markLine",
        defaultOption: {
            zlevel: 0,
            z: 5,
            symbol: ["circle", "arrow"],
            symbolSize: [8, 16],
            precision: 2,
            tooltip: {trigger: "item"},
            label: {show: !0, position: "end", distance: 5},
            lineStyle: {type: "dashed"},
            emphasis: {label: {show: !0}, lineStyle: {width: 3}},
            animationEasing: "linear"
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(19), o = n(4), a = n(131), s = n(120), l = n(132), c = n(27).getStackedDimension,
        u = function (e, t, n, r) {
            var o = e.getData(), s = r.type;
            if (!i.isArray(r) && ("min" === s || "max" === s || "average" === s || "median" === s || null != r.xAxis || null != r.yAxis)) {
                var l, u;
                if (null != r.yAxis || null != r.xAxis) l = t.getAxis(null != r.yAxis ? "y" : "x"), u = i.retrieve(r.yAxis, r.xAxis); else {
                    var h = a.getAxisInfo(r, o, t, e);
                    l = h.valueAxis;
                    var d = c(o, h.valueDataDim);
                    u = a.numCalculate(o, d, s)
                }
                var f = "x" === l.dim ? 0 : 1, g = 1 - f, p = i.clone(r), m = {};
                p.type = null, p.coord = [], m.coord = [], p.coord[g] = -1 / 0, m.coord[g] = 1 / 0;
                var v = n.get("precision");
                v >= 0 && "number" == typeof u && (u = +u.toFixed(Math.min(v, 20))), p.coord[f] = m.coord[f] = u, r = [p, m, {
                    type: s,
                    valueIndex: r.valueIndex,
                    value: u
                }]
            }
            return (r = [a.dataTransform(e, r[0]), a.dataTransform(e, r[1]), i.extend({}, r[2])])[2].type = r[2].type || "", i.merge(r[2], r[0]), i.merge(r[2], r[1]), r
        };

    function h(e) {
        return !isNaN(e) && !isFinite(e)
    }

    function d(e, t, n, i) {
        var r = 1 - e, o = i.dimensions[e];
        return h(t[r]) && h(n[r]) && t[e] === n[e] && i.getAxis(o).containData(t[e])
    }

    function f(e, t) {
        if ("cartesian2d" === e.type) {
            var n = t[0].coord, i = t[1].coord;
            if (n && i && (d(1, n, i, e) || d(0, n, i, e))) return !0
        }
        return a.dataFilter(e, t[0]) && a.dataFilter(e, t[1])
    }

    function g(e, t, n, i, r) {
        var a, s = i.coordinateSystem, l = e.getItemModel(t), c = o.parsePercent(l.get("x"), r.getWidth()),
            u = o.parsePercent(l.get("y"), r.getHeight());
        if (isNaN(c) || isNaN(u)) {
            if (i.getMarkerPosition) a = i.getMarkerPosition(e.getValues(e.dimensions, t)); else {
                var d = s.dimensions, f = e.get(d[0], t), g = e.get(d[1], t);
                a = s.dataToPoint([f, g])
            }
            if ("cartesian2d" === s.type) {
                var p = s.getAxis("x"), m = s.getAxis("y");
                d = s.dimensions;
                h(e.get(d[0], t)) ? a[0] = p.toGlobalCoord(p.getExtent()[n ? 0 : 1]) : h(e.get(d[1], t)) && (a[1] = m.toGlobalCoord(m.getExtent()[n ? 0 : 1]))
            }
            isNaN(c) || (a[0] = c), isNaN(u) || (a[1] = u)
        } else a = [c, u];
        e.setItemLayout(t, a)
    }

    var p = l.extend({
        type: "markLine", updateTransform: function (e, t, n) {
            t.eachSeries((function (e) {
                var t = e.markLineModel;
                if (t) {
                    var i = t.getData(), r = t.__from, o = t.__to;
                    r.each((function (t) {
                        g(r, t, !0, e, n), g(o, t, !1, e, n)
                    })), i.each((function (e) {
                        i.setItemLayout(e, [r.getItemLayout(e), o.getItemLayout(e)])
                    })), this.markerGroupMap.get(e.id).updateLayout()
                }
            }), this)
        }, renderSeries: function (e, t, n, o) {
            var l = e.coordinateSystem, c = e.id, h = e.getData(), d = this.markerGroupMap,
                p = d.get(c) || d.set(c, new s);
            this.group.add(p.group);
            var m = function (e, t, n) {
                var o;
                o = e ? i.map(e && e.dimensions, (function (e) {
                    var n = t.getData().getDimensionInfo(t.getData().mapDimension(e)) || {};
                    return i.defaults({name: e}, n)
                })) : [{name: "value", type: "float"}];
                var s = new r(o, n), l = new r(o, n), c = new r([], n), h = i.map(n.get("data"), i.curry(u, t, e, n));
                e && (h = i.filter(h, i.curry(f, e)));
                var d = e ? a.dimValueGetter : function (e) {
                    return e.value
                };
                return s.initData(i.map(h, (function (e) {
                    return e[0]
                })), null, d), l.initData(i.map(h, (function (e) {
                    return e[1]
                })), null, d), c.initData(i.map(h, (function (e) {
                    return e[2]
                }))), c.hasItemOption = !0, {from: s, to: l, line: c}
            }(l, e, t), v = m.from, y = m.to, b = m.line;
            t.__from = v, t.__to = y, t.setData(b);
            var C = t.get("symbol"), w = t.get("symbolSize");

            function I(t, n, i) {
                var r = t.getItemModel(n);
                g(t, n, i, e, o), t.setItemVisual(n, {
                    symbolSize: r.get("symbolSize") || w[i ? 0 : 1],
                    symbol: r.get("symbol", !0) || C[i ? 0 : 1],
                    color: r.get("itemStyle.color") || h.getVisual("color")
                })
            }

            i.isArray(C) || (C = [C, C]), "number" == typeof w && (w = [w, w]), m.from.each((function (e) {
                I(v, e, !0), I(y, e, !1)
            })), b.each((function (e) {
                var t = b.getItemModel(e).get("lineStyle.color");
                b.setItemVisual(e, {color: t || v.getItemVisual(e, "color")}), b.setItemLayout(e, [v.getItemLayout(e), y.getItemLayout(e)]), b.setItemVisual(e, {
                    fromSymbolSize: v.getItemVisual(e, "symbolSize"),
                    fromSymbol: v.getItemVisual(e, "symbol"),
                    toSymbolSize: y.getItemVisual(e, "symbolSize"),
                    toSymbol: y.getItemVisual(e, "symbol")
                })
            })), p.updateData(b), m.line.eachItemGraphicEl((function (e, n) {
                e.traverse((function (e) {
                    e.dataModel = t
                }))
            })), p.__keep = !0, p.group.silent = t.get("silent") || e.get("silent")
        }
    });
    e.exports = p
}, function (e, t, n) {
    var i = n(2);
    n(532), n(533), i.registerPreprocessor((function (e) {
        e.markArea = e.markArea || {}
    }))
}, function (e, t, n) {
    var i = n(130).extend({
        type: "markArea",
        defaultOption: {
            zlevel: 0,
            z: 1,
            tooltip: {trigger: "item"},
            animation: !1,
            label: {show: !0, position: "top"},
            itemStyle: {borderWidth: 0},
            emphasis: {label: {show: !0, position: "top"}}
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(25), o = n(19), a = n(4), s = n(3), l = n(131), c = n(132), u = function (e, t, n, r) {
        var o = l.dataTransform(e, r[0]), a = l.dataTransform(e, r[1]), s = i.retrieve, c = o.coord, u = a.coord;
        c[0] = s(c[0], -1 / 0), c[1] = s(c[1], -1 / 0), u[0] = s(u[0], 1 / 0), u[1] = s(u[1], 1 / 0);
        var h = i.mergeAll([{}, o, a]);
        return h.coord = [o.coord, a.coord], h.x0 = o.x, h.y0 = o.y, h.x1 = a.x, h.y1 = a.y, h
    };

    function h(e) {
        return !isNaN(e) && !isFinite(e)
    }

    function d(e, t, n, i) {
        var r = 1 - e;
        return h(t[r]) && h(n[r])
    }

    function f(e, t) {
        var n = t.coord[0], i = t.coord[1];
        return !("cartesian2d" !== e.type || !n || !i || !d(1, n, i) && !d(0, n, i)) || (l.dataFilter(e, {
            coord: n,
            x: t.x0,
            y: t.y0
        }) || l.dataFilter(e, {coord: i, x: t.x1, y: t.y1}))
    }

    function g(e, t, n, i, r) {
        var o, s = i.coordinateSystem, l = e.getItemModel(t), c = a.parsePercent(l.get(n[0]), r.getWidth()),
            u = a.parsePercent(l.get(n[1]), r.getHeight());
        if (isNaN(c) || isNaN(u)) {
            if (i.getMarkerPosition) o = i.getMarkerPosition(e.getValues(n, t)); else {
                var d = [p = e.get(n[0], t), m = e.get(n[1], t)];
                s.clampData && s.clampData(d, d), o = s.dataToPoint(d, !0)
            }
            if ("cartesian2d" === s.type) {
                var f = s.getAxis("x"), g = s.getAxis("y"), p = e.get(n[0], t), m = e.get(n[1], t);
                h(p) ? o[0] = f.toGlobalCoord(f.getExtent()["x0" === n[0] ? 0 : 1]) : h(m) && (o[1] = g.toGlobalCoord(g.getExtent()["y0" === n[1] ? 0 : 1]))
            }
            isNaN(c) || (o[0] = c), isNaN(u) || (o[1] = u)
        } else o = [c, u];
        return o
    }

    var p = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]];
    c.extend({
        type: "markArea", updateTransform: function (e, t, n) {
            t.eachSeries((function (e) {
                var t = e.markAreaModel;
                if (t) {
                    var r = t.getData();
                    r.each((function (t) {
                        var o = i.map(p, (function (i) {
                            return g(r, t, i, e, n)
                        }));
                        r.setItemLayout(t, o), r.getItemGraphicEl(t).setShape("points", o)
                    }))
                }
            }), this)
        }, renderSeries: function (e, t, n, a) {
            var l = e.coordinateSystem, c = e.id, h = e.getData(), d = this.markerGroupMap,
                m = d.get(c) || d.set(c, {group: new s.Group});
            this.group.add(m.group), m.__keep = !0;
            var v = function (e, t, n) {
                var r, a;
                e ? (r = i.map(e && e.dimensions, (function (e) {
                    var n = t.getData(), r = n.getDimensionInfo(n.mapDimension(e)) || {};
                    return i.defaults({name: e}, r)
                })), a = new o(i.map(["x0", "y0", "x1", "y1"], (function (e, t) {
                    return {name: e, type: r[t % 2].type}
                })), n)) : a = new o(r = [{name: "value", type: "float"}], n);
                var s = i.map(n.get("data"), i.curry(u, t, e, n));
                e && (s = i.filter(s, i.curry(f, e)));
                var l = e ? function (e, t, n, i) {
                    return e.coord[Math.floor(i / 2)][i % 2]
                } : function (e) {
                    return e.value
                };
                return a.initData(s, null, l), a.hasItemOption = !0, a
            }(l, e, t);
            t.setData(v), v.each((function (t) {
                v.setItemLayout(t, i.map(p, (function (n) {
                    return g(v, t, n, e, a)
                }))), v.setItemVisual(t, {color: h.getVisual("color")})
            })), v.diff(m.__data).add((function (e) {
                var t = new s.Polygon({shape: {points: v.getItemLayout(e)}});
                v.setItemGraphicEl(e, t), m.group.add(t)
            })).update((function (e, n) {
                var i = m.__data.getItemGraphicEl(n);
                s.updateProps(i, {shape: {points: v.getItemLayout(e)}}, t, e), m.group.add(i), v.setItemGraphicEl(e, i)
            })).remove((function (e) {
                var t = m.__data.getItemGraphicEl(e);
                m.group.remove(t)
            })).execute(), v.eachItemGraphicEl((function (e, n) {
                var o = v.getItemModel(n), a = o.getModel("label"), l = o.getModel("emphasis.label"),
                    c = v.getItemVisual(n, "color");
                e.useStyle(i.defaults(o.getModel("itemStyle").getItemStyle(), {
                    fill: r.modifyAlpha(c, .4),
                    stroke: c
                })), e.hoverStyle = o.getModel("emphasis.itemStyle").getItemStyle(), s.setLabelStyle(e.style, e.hoverStyle, a, l, {
                    labelFetcher: t,
                    labelDataIndex: n,
                    defaultText: v.getName(n) || "",
                    isRectText: !0,
                    autoColor: c
                }), s.setHoverStyle(e, {}), e.dataModel = t
            })), m.__data = v, m.group.silent = t.get("silent") || e.get("silent")
        }
    })
}, function (e, t, n) {
    n(213), n(537), n(538), n(539)
}, function (e, t, n) {
    var i = n(2), r = n(1);

    function o(e, t, n) {
        var i, o = {}, a = "toggleSelected" === e;
        return n.eachComponent("legend", (function (n) {
            a && null != i ? n[i ? "select" : "unSelect"](t.name) : "allSelect" === e || "inverseSelect" === e ? n[e]() : (n[e](t.name), i = n.isSelected(t.name));
            var s = n.getData();
            r.each(s, (function (e) {
                var t = e.get("name");
                if ("\n" !== t && "" !== t) {
                    var i = n.isSelected(t);
                    o.hasOwnProperty(t) ? o[t] = o[t] && i : o[t] = i
                }
            }))
        })), "allSelect" === e || "inverseSelect" === e ? {selected: o} : {name: t.name, selected: o}
    }

    i.registerAction("legendToggleSelect", "legendselectchanged", r.curry(o, "toggleSelected")), i.registerAction("legendAllSelect", "legendselectall", r.curry(o, "allSelect")), i.registerAction("legendInverseSelect", "legendinverseselect", r.curry(o, "inverseSelect")), i.registerAction("legendSelect", "legendselected", r.curry(o, "select")), i.registerAction("legendUnSelect", "legendunselected", r.curry(o, "unSelect"))
}, function (e, t) {
    e.exports = function (e) {
        var t = e.findComponents({mainType: "legend"});
        t && t.length && e.filterSeries((function (e) {
            for (var n = 0; n < t.length; n++) if (!t[n].isSelected(e.name)) return !1;
            return !0
        }))
    }
}, function (e, t, n) {
    var i = n(214), r = n(7), o = r.mergeLayoutParam, a = r.getLayoutParams, s = i.extend({
        type: "legend.scroll",
        setScrollDataIndex: function (e) {
            this.option.scrollDataIndex = e
        },
        defaultOption: {
            scrollDataIndex: 0,
            pageButtonItemGap: 5,
            pageButtonGap: null,
            pageButtonPosition: "end",
            pageFormatter: "{current}/{total}",
            pageIcons: {
                horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"],
                vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"]
            },
            pageIconColor: "#2f4554",
            pageIconInactiveColor: "#aaa",
            pageIconSize: 15,
            pageTextStyle: {color: "#333"},
            animationDurationUpdate: 800
        },
        init: function (e, t, n, i) {
            var r = a(e);
            s.superCall(this, "init", e, t, n, i), l(this, e, r)
        },
        mergeOption: function (e, t) {
            s.superCall(this, "mergeOption", e, t), l(this, this.option, e)
        }
    });

    function l(e, t, n) {
        var i = [1, 1];
        i[e.getOrient().index] = 0, o(t, n, {type: "box", ignoreSize: i})
    }

    var c = s;
    e.exports = c
}, function (e, t, n) {
    var i = n(1), r = n(3), o = n(7), a = n(215), s = r.Group, l = ["width", "height"], c = ["x", "y"], u = a.extend({
        type: "legend.scroll", newlineDisabled: !0, init: function () {
            u.superCall(this, "init"), this._currentIndex = 0, this.group.add(this._containerGroup = new s), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new s), this._showController
        }, resetInner: function () {
            u.superCall(this, "resetInner"), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null
        }, renderInner: function (e, t, n, o, a, s, l) {
            var c = this;
            u.superCall(this, "renderInner", e, t, n, o, a, s, l);
            var h = this._controllerGroup, d = t.get("pageIconSize", !0);
            i.isArray(d) || (d = [d, d]), g("pagePrev", 0);
            var f = t.getModel("pageTextStyle");

            function g(e, n) {
                var a = e + "DataIndex",
                    s = r.createIcon(t.get("pageIcons", !0)[t.getOrient().name][n], {onclick: i.bind(c._pageGo, c, a, t, o)}, {
                        x: -d[0] / 2,
                        y: -d[1] / 2,
                        width: d[0],
                        height: d[1]
                    });
                s.name = e, h.add(s)
            }

            h.add(new r.Text({
                name: "pageText",
                style: {
                    textFill: f.getTextColor(),
                    font: f.getFont(),
                    textVerticalAlign: "middle",
                    textAlign: "center"
                },
                silent: !0
            })), g("pageNext", 1)
        }, layoutInner: function (e, t, n, r, a, s) {
            var u = this.getSelectorGroup(), h = e.getOrient().index, d = l[h], f = c[h], g = l[1 - h], p = c[1 - h];
            a && o.box("horizontal", u, e.get("selectorItemGap", !0));
            var m = e.get("selectorButtonGap", !0), v = u.getBoundingRect(), y = [-v.x, -v.y], b = i.clone(n);
            a && (b[d] = n[d] - v[d] - m);
            var C = this._layoutContentAndController(e, r, b, h, d, g, p);
            if (a) {
                if ("end" === s) y[h] += C[d] + m; else {
                    var w = v[d] + m;
                    y[h] -= w, C[f] -= w
                }
                C[d] += v[d] + m, y[1 - h] += C[p] + C[g] / 2 - v[g] / 2, C[g] = Math.max(C[g], v[g]), C[p] = Math.min(C[p], v[p] + y[1 - h]), u.attr("position", y)
            }
            return C
        }, _layoutContentAndController: function (e, t, n, a, s, l, c) {
            var u = this.getContentGroup(), h = this._containerGroup, d = this._controllerGroup;
            o.box(e.get("orient"), u, e.get("itemGap"), a ? n.width : null, a ? null : n.height), o.box("horizontal", d, e.get("pageButtonItemGap", !0));
            var f = u.getBoundingRect(), g = d.getBoundingRect(), p = this._showController = f[s] > n[s],
                m = [-f.x, -f.y];
            t || (m[a] = u.position[a]);
            var v = [0, 0], y = [-g.x, -g.y], b = i.retrieve2(e.get("pageButtonGap", !0), e.get("itemGap", !0));
            p && ("end" === e.get("pageButtonPosition", !0) ? y[a] += n[s] - g[s] : v[a] += g[s] + b);
            y[1 - a] += f[l] / 2 - g[l] / 2, u.attr("position", m), h.attr("position", v), d.attr("position", y);
            var C = {x: 0, y: 0};
            if (C[s] = p ? n[s] : f[s], C[l] = Math.max(f[l], g[l]), C[c] = Math.min(0, g[c] + y[1 - a]), h.__rectSize = n[s], p) {
                var w = {x: 0, y: 0};
                w[s] = Math.max(n[s] - g[s] - b, 0), w[l] = C[l], h.setClipPath(new r.Rect({shape: w})), h.__rectSize = w[s]
            } else d.eachChild((function (e) {
                e.attr({invisible: !0, silent: !0})
            }));
            var I = this._getPageInfo(e);
            return null != I.pageIndex && r.updateProps(u, {position: I.contentPosition}, !!p && e), this._updatePageInfoView(e, I), C
        }, _pageGo: function (e, t, n) {
            var i = this._getPageInfo(t)[e];
            null != i && n.dispatchAction({type: "legendScroll", scrollDataIndex: i, legendId: t.id})
        }, _updatePageInfoView: function (e, t) {
            var n = this._controllerGroup;
            i.each(["pagePrev", "pageNext"], (function (i) {
                var r = null != t[i + "DataIndex"], o = n.childOfName(i);
                o && (o.setStyle("fill", r ? e.get("pageIconColor", !0) : e.get("pageIconInactiveColor", !0)), o.cursor = r ? "pointer" : "default")
            }));
            var r = n.childOfName("pageText"), o = e.get("pageFormatter"), a = t.pageIndex, s = null != a ? a + 1 : 0,
                l = t.pageCount;
            r && o && r.setStyle("text", i.isString(o) ? o.replace("{current}", s).replace("{total}", l) : o({
                current: s,
                total: l
            }))
        }, _getPageInfo: function (e) {
            var t = e.get("scrollDataIndex", !0), n = this.getContentGroup(), i = this._containerGroup.__rectSize,
                r = e.getOrient().index, o = l[r], a = c[r], s = this._findTargetItemIndex(t), u = n.children(),
                h = u[s], d = u.length, f = d ? 1 : 0, g = {
                    contentPosition: n.position.slice(),
                    pageCount: f,
                    pageIndex: f - 1,
                    pagePrevDataIndex: null,
                    pageNextDataIndex: null
                };
            if (!h) return g;
            var p = C(h);
            g.contentPosition[r] = -p.s;
            for (var m = s + 1, v = p, y = p, b = null; m <= d; ++m) (!(b = C(u[m])) && y.e > v.s + i || b && !w(b, v.s)) && (v = y.i > v.i ? y : b) && (null == g.pageNextDataIndex && (g.pageNextDataIndex = v.i), ++g.pageCount), y = b;
            for (m = s - 1, v = p, y = p, b = null; m >= -1; --m) (b = C(u[m])) && w(y, b.s) || !(v.i < y.i) || (y = v, null == g.pagePrevDataIndex && (g.pagePrevDataIndex = v.i), ++g.pageCount, ++g.pageIndex), v = b;
            return g;

            function C(e) {
                if (e) {
                    var t = e.getBoundingRect(), n = t[a] + e.position[r];
                    return {s: n, e: n + t[o], i: e.__legendDataIndex}
                }
            }

            function w(e, t) {
                return e.e >= t && e.s <= t + i
            }
        }, _findTargetItemIndex: function (e) {
            return this._showController ? (this.getContentGroup().eachChild((function (i, r) {
                var o = i.__legendDataIndex;
                null == n && null != o && (n = r), o === e && (t = r)
            })), null != t ? t : n) : 0;
            var t, n
        }
    }), h = u;
    e.exports = h
}, function (e, t, n) {
    n(2).registerAction("legendScroll", "legendscroll", (function (e, t) {
        var n = e.scrollDataIndex;
        null != n && t.eachComponent({mainType: "legend", subType: "scroll", query: e}, (function (e) {
            e.setScrollDataIndex(n)
        }))
    }))
}, function (e, t, n) {
    n(216), n(217)
}, function (e, t, n) {
    var i = n(54).extend({
        type: "dataZoom.slider",
        layoutMode: "box",
        defaultOption: {
            show: !0,
            right: "ph",
            top: "ph",
            width: "ph",
            height: "ph",
            left: null,
            bottom: null,
            backgroundColor: "rgba(47,69,84,0)",
            dataBackground: {
                lineStyle: {color: "#2f4554", width: .5, opacity: .3},
                areaStyle: {color: "rgba(47,69,84,0.3)", opacity: .3}
            },
            borderColor: "#ddd",
            fillerColor: "rgba(167,183,204,0.4)",
            handleIcon: "M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z",
            handleSize: "100%",
            handleStyle: {color: "#a7b7cc"},
            labelPrecision: null,
            labelFormatter: null,
            showDetail: !0,
            showDataShadow: "auto",
            realtime: !0,
            zoomLock: !1,
            textStyle: {color: "#333"}
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(24), o = n(3), a = n(32), s = n(55), l = n(4), c = n(7), u = n(53), h = o.Rect, d = l.linearMap,
        f = l.asc, g = i.bind, p = i.each, m = ["line", "bar", "candlestick", "scatter"], v = s.extend({
            type: "dataZoom.slider", init: function (e, t) {
                this._displayables = {}, this._orient, this._range, this._handleEnds, this._size, this._handleWidth, this._handleHeight, this._location, this._dragging, this._dataShadowInfo, this.api = t
            }, render: function (e, t, n, i) {
                v.superApply(this, "render", arguments), a.createOrUpdate(this, "_dispatchZoomAction", this.dataZoomModel.get("throttle"), "fixRate"), this._orient = e.get("orient"), !1 !== this.dataZoomModel.get("show") ? (i && "dataZoom" === i.type && i.from === this.uid || this._buildView(), this._updateView()) : this.group.removeAll()
            }, remove: function () {
                v.superApply(this, "remove", arguments), a.clear(this, "_dispatchZoomAction")
            }, dispose: function () {
                v.superApply(this, "dispose", arguments), a.clear(this, "_dispatchZoomAction")
            }, _buildView: function () {
                var e = this.group;
                e.removeAll(), this._resetLocation(), this._resetInterval();
                var t = this._displayables.barGroup = new o.Group;
                this._renderBackground(), this._renderHandle(), this._renderDataShadow(), e.add(t), this._positionGroup()
            }, _resetLocation: function () {
                var e = this.dataZoomModel, t = this.api, n = this._findCoordRect(),
                    r = {width: t.getWidth(), height: t.getHeight()}, o = "horizontal" === this._orient ? {
                        right: r.width - n.x - n.width,
                        top: r.height - 30 - 7,
                        width: n.width,
                        height: 30
                    } : {right: 7, top: n.y, width: 30, height: n.height}, a = c.getLayoutParams(e.option);
                i.each(["right", "top", "width", "height"], (function (e) {
                    "ph" === a[e] && (a[e] = o[e])
                }));
                var s = c.getLayoutRect(a, r, e.padding);
                this._location = {
                    x: s.x,
                    y: s.y
                }, this._size = [s.width, s.height], "vertical" === this._orient && this._size.reverse()
            }, _positionGroup: function () {
                var e = this.group, t = this._location, n = this._orient, i = this.dataZoomModel.getFirstTargetAxisModel(),
                    r = i && i.get("inverse"), o = this._displayables.barGroup,
                    a = (this._dataShadowInfo || {}).otherAxisInverse;
                o.attr("horizontal" !== n || r ? "horizontal" === n && r ? {scale: a ? [-1, 1] : [-1, -1]} : "vertical" !== n || r ? {
                    scale: a ? [-1, -1] : [-1, 1],
                    rotation: Math.PI / 2
                } : {scale: a ? [1, -1] : [1, 1], rotation: Math.PI / 2} : {scale: a ? [1, 1] : [1, -1]});
                var s = e.getBoundingRect([o]);
                e.attr("position", [t.x - s.x, t.y - s.y])
            }, _getViewExtent: function () {
                return [0, this._size[0]]
            }, _renderBackground: function () {
                var e = this.dataZoomModel, t = this._size, n = this._displayables.barGroup;
                n.add(new h({
                    silent: !0,
                    shape: {x: 0, y: 0, width: t[0], height: t[1]},
                    style: {fill: e.get("backgroundColor")},
                    z2: -40
                })), n.add(new h({
                    shape: {x: 0, y: 0, width: t[0], height: t[1]},
                    style: {fill: "transparent"},
                    z2: 0,
                    onclick: i.bind(this._onClickPanelClick, this)
                }))
            }, _renderDataShadow: function () {
                var e = this._dataShadowInfo = this._prepareDataShadowInfo();
                if (e) {
                    var t = this._size, n = e.series, r = n.getRawData(),
                        a = n.getShadowDim ? n.getShadowDim() : e.otherDim;
                    if (null != a) {
                        var s = r.getDataExtent(a), l = .3 * (s[1] - s[0]);
                        s = [s[0] - l, s[1] + l];
                        var c, u = [0, t[1]], h = [0, t[0]], f = [[t[0], 0], [0, 0]], g = [], p = h[1] / (r.count() - 1),
                            m = 0, v = Math.round(r.count() / t[0]);
                        r.each([a], (function (e, t) {
                            if (v > 0 && t % v) m += p; else {
                                var n = null == e || isNaN(e) || "" === e, i = n ? 0 : d(e, s, u, !0);
                                n && !c && t ? (f.push([f[f.length - 1][0], 0]), g.push([g[g.length - 1][0], 0])) : !n && c && (f.push([m, 0]), g.push([m, 0])), f.push([m, i]), g.push([m, i]), m += p, c = n
                            }
                        }));
                        var y = this.dataZoomModel;
                        this._displayables.barGroup.add(new o.Polygon({
                            shape: {points: f},
                            style: i.defaults({fill: y.get("dataBackgroundColor")}, y.getModel("dataBackground.areaStyle").getAreaStyle()),
                            silent: !0,
                            z2: -20
                        })), this._displayables.barGroup.add(new o.Polyline({
                            shape: {points: g},
                            style: y.getModel("dataBackground.lineStyle").getLineStyle(),
                            silent: !0,
                            z2: -19
                        }))
                    }
                }
            }, _prepareDataShadowInfo: function () {
                var e = this.dataZoomModel, t = e.get("showDataShadow");
                if (!1 !== t) {
                    var n, r = this.ecModel;
                    return e.eachTargetAxis((function (o, a) {
                        var s = e.getAxisProxy(o.name, a).getTargetSeriesModels();
                        i.each(s, (function (e) {
                            if (!(n || !0 !== t && i.indexOf(m, e.get("type")) < 0)) {
                                var s, l = r.getComponent(o.axis, a).axis,
                                    c = {x: "y", y: "x", radius: "angle", angle: "radius"}[o.name], u = e.coordinateSystem;
                                null != c && u.getOtherAxis && (s = u.getOtherAxis(l).inverse), c = e.getData().mapDimension(c), n = {
                                    thisAxis: l,
                                    series: e,
                                    thisDim: o.name,
                                    otherDim: c,
                                    otherAxisInverse: s
                                }
                            }
                        }), this)
                    }), this), n
                }
            }, _renderHandle: function () {
                var e = this._displayables, t = e.handles = [], n = e.handleLabels = [], i = this._displayables.barGroup,
                    r = this._size, a = this.dataZoomModel;
                i.add(e.filler = new h({
                    draggable: !0,
                    cursor: y(this._orient),
                    drift: g(this._onDragMove, this, "all"),
                    ondragstart: g(this._showDataInfo, this, !0),
                    ondragend: g(this._onDragEnd, this),
                    onmouseover: g(this._showDataInfo, this, !0),
                    onmouseout: g(this._showDataInfo, this, !1),
                    style: {fill: a.get("fillerColor"), textPosition: "inside"}
                })), i.add(new h({
                    silent: !0,
                    subPixelOptimize: !0,
                    shape: {x: 0, y: 0, width: r[0], height: r[1]},
                    style: {
                        stroke: a.get("dataBackgroundColor") || a.get("borderColor"),
                        lineWidth: 1,
                        fill: "rgba(0,0,0,0)"
                    }
                })), p([0, 1], (function (e) {
                    var r = o.createIcon(a.get("handleIcon"), {
                        cursor: y(this._orient),
                        draggable: !0,
                        drift: g(this._onDragMove, this, e),
                        ondragend: g(this._onDragEnd, this),
                        onmouseover: g(this._showDataInfo, this, !0),
                        onmouseout: g(this._showDataInfo, this, !1)
                    }, {x: -1, y: 0, width: 2, height: 2}), s = r.getBoundingRect();
                    this._handleHeight = l.parsePercent(a.get("handleSize"), this._size[1]), this._handleWidth = s.width / s.height * this._handleHeight, r.setStyle(a.getModel("handleStyle").getItemStyle());
                    var c = a.get("handleColor");
                    null != c && (r.style.fill = c), i.add(t[e] = r);
                    var u = a.textStyleModel;
                    this.group.add(n[e] = new o.Text({
                        silent: !0,
                        invisible: !0,
                        style: {
                            x: 0,
                            y: 0,
                            text: "",
                            textVerticalAlign: "middle",
                            textAlign: "center",
                            textFill: u.getTextColor(),
                            textFont: u.getFont()
                        },
                        z2: 10
                    }))
                }), this)
            }, _resetInterval: function () {
                var e = this._range = this.dataZoomModel.getPercentRange(), t = this._getViewExtent();
                this._handleEnds = [d(e[0], [0, 100], t, !0), d(e[1], [0, 100], t, !0)]
            }, _updateInterval: function (e, t) {
                var n = this.dataZoomModel, i = this._handleEnds, r = this._getViewExtent(),
                    o = n.findRepresentativeAxisProxy().getMinMaxSpan(), a = [0, 100];
                u(t, i, r, n.get("zoomLock") ? "all" : e, null != o.minSpan ? d(o.minSpan, a, r, !0) : null, null != o.maxSpan ? d(o.maxSpan, a, r, !0) : null);
                var s = this._range, l = this._range = f([d(i[0], r, a, !0), d(i[1], r, a, !0)]);
                return !s || s[0] !== l[0] || s[1] !== l[1]
            }, _updateView: function (e) {
                var t = this._displayables, n = this._handleEnds, i = f(n.slice()), r = this._size;
                p([0, 1], (function (e) {
                    var i = t.handles[e], o = this._handleHeight;
                    i.attr({scale: [o / 2, o / 2], position: [n[e], r[1] / 2 - o / 2]})
                }), this), t.filler.setShape({x: i[0], y: 0, width: i[1] - i[0], height: r[1]}), this._updateDataInfo(e)
            }, _updateDataInfo: function (e) {
                var t = this.dataZoomModel, n = this._displayables, i = n.handleLabels, r = this._orient, a = ["", ""];
                if (t.get("showDetail")) {
                    var s = t.findRepresentativeAxisProxy();
                    if (s) {
                        var l = s.getAxisModel().axis, c = this._range,
                            u = e ? s.calculateDataWindow({start: c[0], end: c[1]}).valueWindow : s.getDataValueWindow();
                        a = [this._formatLabel(u[0], l), this._formatLabel(u[1], l)]
                    }
                }
                var h = f(this._handleEnds.slice());

                function d(e) {
                    var t = o.getTransform(n.handles[e].parent, this.group),
                        s = o.transformDirection(0 === e ? "right" : "left", t), l = this._handleWidth / 2 + 5,
                        c = o.applyTransform([h[e] + (0 === e ? -l : l), this._size[1] / 2], t);
                    i[e].setStyle({
                        x: c[0],
                        y: c[1],
                        textVerticalAlign: "horizontal" === r ? "middle" : s,
                        textAlign: "horizontal" === r ? s : "center",
                        text: a[e]
                    })
                }

                d.call(this, 0), d.call(this, 1)
            }, _formatLabel: function (e, t) {
                var n = this.dataZoomModel, r = n.get("labelFormatter"), o = n.get("labelPrecision");
                null != o && "auto" !== o || (o = t.getPixelPrecision());
                var a = null == e || isNaN(e) ? "" : "category" === t.type || "time" === t.type ? t.scale.getLabel(Math.round(e)) : e.toFixed(Math.min(o, 20));
                return i.isFunction(r) ? r(e, a) : i.isString(r) ? r.replace("{value}", a) : a
            }, _showDataInfo: function (e) {
                e = this._dragging || e;
                var t = this._displayables.handleLabels;
                t[0].attr("invisible", !e), t[1].attr("invisible", !e)
            }, _onDragMove: function (e, t, n, i) {
                this._dragging = !0, r.stop(i.event);
                var a = this._displayables.barGroup.getLocalTransform(), s = o.applyTransform([t, n], a, !0),
                    l = this._updateInterval(e, s[0]), c = this.dataZoomModel.get("realtime");
                this._updateView(!c), l && c && this._dispatchZoomAction()
            }, _onDragEnd: function () {
                this._dragging = !1, this._showDataInfo(!1), !this.dataZoomModel.get("realtime") && this._dispatchZoomAction()
            }, _onClickPanelClick: function (e) {
                var t = this._size, n = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);
                if (!(n[0] < 0 || n[0] > t[0] || n[1] < 0 || n[1] > t[1])) {
                    var i = this._handleEnds, r = (i[0] + i[1]) / 2, o = this._updateInterval("all", n[0] - r);
                    this._updateView(), o && this._dispatchZoomAction()
                }
            }, _dispatchZoomAction: function () {
                var e = this._range;
                this.api.dispatchAction({
                    type: "dataZoom",
                    from: this.uid,
                    dataZoomId: this.dataZoomModel.id,
                    start: e[0],
                    end: e[1]
                })
            }, _findCoordRect: function () {
                var e;
                if (p(this.getTargetCoordInfo(), (function (t) {
                    if (!e && t.length) {
                        var n = t[0].model.coordinateSystem;
                        e = n.getRect && n.getRect()
                    }
                })), !e) {
                    var t = this.api.getWidth(), n = this.api.getHeight();
                    e = {x: .2 * t, y: .2 * n, width: .6 * t, height: .6 * n}
                }
                return e
            }
        });

    function y(e) {
        return "vertical" === e ? "ns-resize" : "ew-resize"
    }

    var b = v;
    e.exports = b
}, function (e, t, n) {
    var i = n(54).extend({
        type: "dataZoom.inside",
        defaultOption: {
            disabled: !1,
            zoomLock: !1,
            zoomOnMouseWheel: !0,
            moveOnMouseMove: !0,
            moveOnMouseWheel: !1,
            preventDefaultMouseMove: !0
        }
    });
    e.exports = i
}, function (e, t, n) {
    var i = n(1), r = n(55), o = n(53), a = n(545), s = i.bind, l = r.extend({
        type: "dataZoom.inside", init: function (e, t) {
            this._range
        }, render: function (e, t, n, r) {
            l.superApply(this, "render", arguments), this._range = e.getPercentRange(), i.each(this.getTargetCoordInfo(), (function (t, r) {
                var o = i.map(t, (function (e) {
                    return a.generateCoordId(e.model)
                }));
                i.each(t, (function (t) {
                    var l = t.model, u = {};
                    i.each(["pan", "zoom", "scrollMove"], (function (e) {
                        u[e] = s(c[e], this, t, r)
                    }), this), a.register(n, {
                        coordId: a.generateCoordId(l),
                        allCoordIds: o,
                        containsPoint: function (e, t, n) {
                            return l.coordinateSystem.containPoint([t, n])
                        },
                        dataZoomId: e.id,
                        dataZoomModel: e,
                        getRange: u
                    })
                }), this)
            }), this)
        }, dispose: function () {
            a.unregister(this.api, this.dataZoomModel.id), l.superApply(this, "dispose", arguments), this._range = null
        }
    }), c = {
        zoom: function (e, t, n, i) {
            var r = this._range, a = r.slice(), s = e.axisModels[0];
            if (s) {
                var l = h[t](null, [i.originX, i.originY], s, n, e),
                    c = (l.signal > 0 ? l.pixelStart + l.pixelLength - l.pixel : l.pixel - l.pixelStart) / l.pixelLength * (a[1] - a[0]) + a[0],
                    u = Math.max(1 / i.scale, 0);
                a[0] = (a[0] - c) * u + c, a[1] = (a[1] - c) * u + c;
                var d = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
                return o(0, a, [0, 100], 0, d.minSpan, d.maxSpan), this._range = a, r[0] !== a[0] || r[1] !== a[1] ? a : void 0
            }
        }, pan: u((function (e, t, n, i, r, o) {
            var a = h[i]([o.oldX, o.oldY], [o.newX, o.newY], t, r, n);
            return a.signal * (e[1] - e[0]) * a.pixel / a.pixelLength
        })), scrollMove: u((function (e, t, n, i, r, o) {
            return h[i]([0, 0], [o.scrollDelta, o.scrollDelta], t, r, n).signal * (e[1] - e[0]) * o.scrollDelta
        }))
    };

    function u(e) {
        return function (t, n, i, r) {
            var a = this._range, s = a.slice(), l = t.axisModels[0];
            if (l) {
                var c = e(s, l, t, n, i, r);
                return o(c, s, [0, 100], "all"), this._range = s, a[0] !== s[0] || a[1] !== s[1] ? s : void 0
            }
        }
    }

    var h = {
        grid: function (e, t, n, i, r) {
            var o = n.axis, a = {}, s = r.model.coordinateSystem.getRect();
            return e = e || [0, 0], "x" === o.dim ? (a.pixel = t[0] - e[0], a.pixelLength = s.width, a.pixelStart = s.x, a.signal = o.inverse ? 1 : -1) : (a.pixel = t[1] - e[1], a.pixelLength = s.height, a.pixelStart = s.y, a.signal = o.inverse ? -1 : 1), a
        }, polar: function (e, t, n, i, r) {
            var o = n.axis, a = {}, s = r.model.coordinateSystem, l = s.getRadiusAxis().getExtent(),
                c = s.getAngleAxis().getExtent();
            return e = e ? s.pointToCoord(e) : [0, 0], t = s.pointToCoord(t), "radiusAxis" === n.mainType ? (a.pixel = t[0] - e[0], a.pixelLength = l[1] - l[0], a.pixelStart = l[0], a.signal = o.inverse ? 1 : -1) : (a.pixel = t[1] - e[1], a.pixelLength = c[1] - c[0], a.pixelStart = c[0], a.signal = o.inverse ? -1 : 1), a
        }, singleAxis: function (e, t, n, i, r) {
            var o = n.axis, a = r.model.coordinateSystem.getRect(), s = {};
            return e = e || [0, 0], "horizontal" === o.orient ? (s.pixel = t[0] - e[0], s.pixelLength = a.width, s.pixelStart = a.x, s.signal = o.inverse ? 1 : -1) : (s.pixel = t[1] - e[1], s.pixelLength = a.height, s.pixelStart = a.y, s.signal = o.inverse ? -1 : 1), s
        }
    }, d = l;
    e.exports = d
}, function (e, t, n) {
    var i = n(1), r = n(74), o = n(32), a = "\0_ec_dataZoom_roams";

    function s(e) {
        var t = e.getZr();
        return t[a] || (t[a] = {})
    }

    function l(e) {
        i.each(e, (function (t, n) {
            t.count || (t.controller.dispose(), delete e[n])
        }))
    }

    function c(e, t) {
        e.dispatchAction({type: "dataZoom", batch: t})
    }

    t.register = function (e, t) {
        var n = s(e), a = t.dataZoomId, u = t.coordId;
        i.each(n, (function (e, n) {
            var r = e.dataZoomInfos;
            r[a] && i.indexOf(t.allCoordIds, u) < 0 && (delete r[a], e.count--)
        })), l(n);
        var h = n[u];
        h || ((h = n[u] = {coordId: u, dataZoomInfos: {}, count: 0}).controller = function (e, t) {
            var n = new r(e.getZr());
            return i.each(["pan", "zoom", "scrollMove"], (function (e) {
                n.on(e, (function (n) {
                    var r = [];
                    i.each(t.dataZoomInfos, (function (i) {
                        if (n.isAvailableBehavior(i.dataZoomModel.option)) {
                            var o = (i.getRange || {})[e], a = o && o(t.controller, n);
                            !i.dataZoomModel.get("disabled", !0) && a && r.push({
                                dataZoomId: i.dataZoomId,
                                start: a[0],
                                end: a[1]
                            })
                        }
                    })), r.length && t.dispatchAction(r)
                }))
            })), n
        }(e, h), h.dispatchAction = i.curry(c, e)), !h.dataZoomInfos[a] && h.count++, h.dataZoomInfos[a] = t;
        var d, f, g, p, m = (d = h.dataZoomInfos, g = {
            type_true: 2,
            type_move: 1,
            type_false: 0,
            type_undefined: -1
        }, p = !0, i.each(d, (function (e) {
            var t = e.dataZoomModel, n = !t.get("disabled", !0) && (!t.get("zoomLock", !0) || "move");
            g["type_" + n] > g["type_" + f] && (f = n), p &= t.get("preventDefaultMouseMove", !0)
        })), {
            controlType: f,
            opt: {zoomOnMouseWheel: !0, moveOnMouseMove: !0, moveOnMouseWheel: !0, preventDefaultMouseMove: !!p}
        });
        h.controller.enable(m.controlType, m.opt), h.controller.setPointerChecker(t.containsPoint), o.createOrUpdate(h, "dispatchAction", t.dataZoomModel.get("throttle", !0), "fixRate")
    }, t.unregister = function (e, t) {
        var n = s(e);
        i.each(n, (function (e) {
            e.controller.dispose();
            var n = e.dataZoomInfos;
            n[t] && (delete n[t], e.count--)
        })), l(n)
    }, t.generateCoordId = function (e) {
        return e.type + "\0_" + e.id
    }
}, function (e, t, n) {
    n(218), n(227)
}, function (e, t, n) {
    var i = n(1), r = n(222), o = n(4), a = [20, 140], s = r.extend({
        type: "visualMap.continuous",
        defaultOption: {
            align: "auto",
            calculable: !1,
            range: null,
            realtime: !0,
            itemHeight: null,
            itemWidth: null,
            hoverLink: !0,
            hoverLinkDataSize: null,
            hoverLinkOnHandle: null
        },
        optionUpdated: function (e, t) {
            s.superApply(this, "optionUpdated", arguments), this.resetExtent(), this.resetVisual((function (e) {
                e.mappingMethod = "linear", e.dataExtent = this.getExtent()
            })), this._resetRange()
        },
        resetItemSize: function () {
            s.superApply(this, "resetItemSize", arguments);
            var e = this.itemSize;
            "horizontal" === this._orient && e.reverse(), (null == e[0] || isNaN(e[0])) && (e[0] = a[0]), (null == e[1] || isNaN(e[1])) && (e[1] = a[1])
        },
        _resetRange: function () {
            var e = this.getExtent(), t = this.option.range;
            !t || t.auto ? (e.auto = 1, this.option.range = e) : i.isArray(t) && (t[0] > t[1] && t.reverse(), t[0] = Math.max(t[0], e[0]), t[1] = Math.min(t[1], e[1]))
        },
        completeVisualOption: function () {
            r.prototype.completeVisualOption.apply(this, arguments), i.each(this.stateList, (function (e) {
                var t = this.option.controller[e].symbolSize;
                t && t[0] !== t[1] && (t[0] = 0)
            }), this)
        },
        setSelected: function (e) {
            this.option.range = e.slice(), this._resetRange()
        },
        getSelected: function () {
            var e = this.getExtent(), t = o.asc((this.get("range") || []).slice());
            return t[0] > e[1] && (t[0] = e[1]), t[1] > e[1] && (t[1] = e[1]), t[0] < e[0] && (t[0] = e[0]), t[1] < e[0] && (t[1] = e[0]), t
        },
        getValueState: function (e) {
            var t = this.option.range, n = this.getExtent();
            return (t[0] <= n[0] || t[0] <= e) && (t[1] >= n[1] || e <= t[1]) ? "inRange" : "outOfRange"
        },
        findTargetDataIndices: function (e) {
            var t = [];
            return this.eachTargetSeries((function (n) {
                var i = [], r = n.getData();
                r.each(this.getDataDimension(r), (function (t, n) {
                    e[0] <= t && t <= e[1] && i.push(n)
                }), this), t.push({seriesId: n.id, dataIndex: i})
            }), this), t
        },
        getVisualMeta: function (e) {
            var t = l(this, "outOfRange", this.getExtent()), n = l(this, "inRange", this.option.range.slice()), i = [];

            function r(t, n) {
                i.push({value: t, color: e(t, n)})
            }

            for (var o = 0, a = 0, s = n.length, c = t.length; a < c && (!n.length || t[a] <= n[0]); a++) t[a] < n[o] && r(t[a], "outOfRange");
            for (var u = 1; o < s; o++, u = 0) u && i.length && r(n[o], "outOfRange"), r(n[o], "inRange");
            for (u = 1; a < c; a++) (!n.length || n[n.length - 1] < t[a]) && (u && (i.length && r(i[i.length - 1].value, "outOfRange"), u = 0), r(t[a], "outOfRange"));
            var h = i.length;
            return {stops: i, outerColors: [h ? i[0].color : "transparent", h ? i[h - 1].color : "transparent"]}
        }
    });

    function l(e, t, n) {
        if (n[0] === n[1]) return n.slice();
        for (var i = (n[1] - n[0]) / 200, r = n[0], o = [], a = 0; a <= 200 && r < n[1]; a++) o.push(r), r += i;
        return o.push(n[1]), o
    }

    var c = s;
    e.exports = c
}, function (e, t, n) {
    var i = n(1), r = n(107), o = n(24), a = n(224), s = n(3), l = n(4), c = n(53), u = n(225), h = n(5),
        d = l.linearMap, f = i.each, g = Math.min, p = Math.max, m = a.extend({
            type: "visualMap.continuous", init: function () {
                m.superApply(this, "init", arguments), this._shapes = {}, this._dataInterval = [], this._handleEnds = [], this._orient, this._useHandle, this._hoverLinkDataIndices = [], this._dragging, this._hovering
            }, doRender: function (e, t, n, i) {
                i && "selectDataRange" === i.type && i.from === this.uid || this._buildView()
            }, _buildView: function () {
                this.group.removeAll();
                var e = this.visualMapModel, t = this.group;
                this._orient = e.get("orient"), this._useHandle = e.get("calculable"), this._resetInterval(), this._renderBar(t);
                var n = e.get("text");
                this._renderEndsText(t, n, 0), this._renderEndsText(t, n, 1), this._updateView(!0), this.renderBackground(t), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(t)
            }, _renderEndsText: function (e, t, n) {
                if (t) {
                    var i = t[1 - n];
                    i = null != i ? i + "" : "";
                    var r = this.visualMapModel, o = r.get("textGap"), a = r.itemSize, l = this._shapes.barGroup,
                        c = this._applyTransform([a[0] / 2, 0 === n ? -o : a[1] + o], l),
                        u = this._applyTransform(0 === n ? "bottom" : "top", l), h = this._orient,
                        d = this.visualMapModel.textStyleModel;
                    this.group.add(new s.Text({
                        style: {
                            x: c[0],
                            y: c[1],
                            textVerticalAlign: "horizontal" === h ? "middle" : u,
                            textAlign: "horizontal" === h ? u : "center",
                            text: i,
                            textFont: d.getFont(),
                            textFill: d.getTextColor()
                        }
                    }))
                }
            }, _renderBar: function (e) {
                var t = this.visualMapModel, n = this._shapes, r = t.itemSize, o = this._orient, a = this._useHandle,
                    s = u.getItemAlign(t, this.api, r), l = n.barGroup = this._createBarGroup(s);
                l.add(n.outOfRange = v()), l.add(n.inRange = v(null, a ? b(this._orient) : null, i.bind(this._dragHandle, this, "all", !1), i.bind(this._dragHandle, this, "all", !0)));
                var c = t.textStyleModel.getTextRect("国"), h = p(c.width, c.height);
                a && (n.handleThumbs = [], n.handleLabels = [], n.handleLabelPoints = [], this._createHandle(l, 0, r, h, o, s), this._createHandle(l, 1, r, h, o, s)), this._createIndicator(l, r, h, o), e.add(l)
            }, _createHandle: function (e, t, n, r, a) {
                var l = i.bind(this._dragHandle, this, t, !1), c = i.bind(this._dragHandle, this, t, !0),
                    u = v(function (e, t) {
                        return 0 === e ? [[0, 0], [t, 0], [t, -t]] : [[0, 0], [t, 0], [t, t]]
                    }(t, r), b(this._orient), l, c);
                u.position[0] = n[0], e.add(u);
                var h = this.visualMapModel.textStyleModel, d = new s.Text({
                    draggable: !0, drift: l, onmousemove: function (e) {
                        o.stop(e.event)
                    }, ondragend: c, style: {x: 0, y: 0, text: "", textFont: h.getFont(), textFill: h.getTextColor()}
                });
                this.group.add(d);
                var f = ["horizontal" === a ? r / 2 : 1.5 * r, "horizontal" === a ? 0 === t ? -1.5 * r : 1.5 * r : 0 === t ? -r / 2 : r / 2],
                    g = this._shapes;
                g.handleThumbs[t] = u, g.handleLabelPoints[t] = f, g.handleLabels[t] = d
            }, _createIndicator: function (e, t, n, i) {
                var r = v([[0, 0]], "move");
                r.position[0] = t[0], r.attr({invisible: !0, silent: !0}), e.add(r);
                var o = this.visualMapModel.textStyleModel, a = new s.Text({
                    silent: !0,
                    invisible: !0,
                    style: {x: 0, y: 0, text: "", textFont: o.getFont(), textFill: o.getTextColor()}
                });
                this.group.add(a);
                var l = ["horizontal" === i ? n / 2 : 9, 0], c = this._shapes;
                c.indicator = r, c.indicatorLabel = a, c.indicatorLabelPoint = l
            }, _dragHandle: function (e, t, n, i) {
                if (this._useHandle) {
                    if (this._dragging = !t, !t) {
                        var r = this._applyTransform([n, i], this._shapes.barGroup, !0);
                        this._updateInterval(e, r[1]), this._updateView()
                    }
                    t === !this.visualMapModel.get("realtime") && this.api.dispatchAction({
                        type: "selectDataRange",
                        from: this.uid,
                        visualMapId: this.visualMapModel.id,
                        selected: this._dataInterval.slice()
                    }), t ? !this._hovering && this._clearHoverLinkToSeries() : y(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[e], !1)
                }
            }, _resetInterval: function () {
                var e = this.visualMapModel, t = this._dataInterval = e.getSelected(), n = e.getExtent(),
                    i = [0, e.itemSize[1]];
                this._handleEnds = [d(t[0], n, i, !0), d(t[1], n, i, !0)]
            }, _updateInterval: function (e, t) {
                t = t || 0;
                var n = this.visualMapModel, i = this._handleEnds, r = [0, n.itemSize[1]];
                c(t, i, r, e, 0);
                var o = n.getExtent();
                this._dataInterval = [d(i[0], r, o, !0), d(i[1], r, o, !0)]
            }, _updateView: function (e) {
                var t = this.visualMapModel, n = t.getExtent(), i = this._shapes, r = [0, t.itemSize[1]],
                    o = e ? r : this._handleEnds, a = this._createBarVisual(this._dataInterval, n, o, "inRange"),
                    s = this._createBarVisual(n, n, r, "outOfRange");
                i.inRange.setStyle({
                    fill: a.barColor,
                    opacity: a.opacity
                }).setShape("points", a.barPoints), i.outOfRange.setStyle({
                    fill: s.barColor,
                    opacity: s.opacity
                }).setShape("points", s.barPoints), this._updateHandle(o, a)
            }, _createBarVisual: function (e, t, n, i) {
                var o = {forceState: i, convertOpacityToAlpha: !0}, a = this._makeColorGradient(e, o),
                    s = [this.getControllerVisual(e[0], "symbolSize", o), this.getControllerVisual(e[1], "symbolSize", o)],
                    l = this._createBarPoints(n, s);
                return {barColor: new r(0, 0, 0, 1, a), barPoints: l, handlesColor: [a[0].color, a[a.length - 1].color]}
            }, _makeColorGradient: function (e, t) {
                var n = [], i = (e[1] - e[0]) / 100;
                n.push({color: this.getControllerVisual(e[0], "color", t), offset: 0});
                for (var r = 1; r < 100; r++) {
                    var o = e[0] + i * r;
                    if (o > e[1]) break;
                    n.push({color: this.getControllerVisual(o, "color", t), offset: r / 100})
                }
                return n.push({color: this.getControllerVisual(e[1], "color", t), offset: 1}), n
            }, _createBarPoints: function (e, t) {
                var n = this.visualMapModel.itemSize;
                return [[n[0] - t[0], e[0]], [n[0], e[0]], [n[0], e[1]], [n[0] - t[1], e[1]]]
            }, _createBarGroup: function (e) {
                var t = this._orient, n = this.visualMapModel.get("inverse");
                return new s.Group("horizontal" !== t || n ? "horizontal" === t && n ? {
                    scale: "bottom" === e ? [-1, 1] : [1, 1],
                    rotation: -Math.PI / 2
                } : "vertical" !== t || n ? {scale: "left" === e ? [1, 1] : [-1, 1]} : {scale: "left" === e ? [1, -1] : [-1, -1]} : {
                    scale: "bottom" === e ? [1, 1] : [-1, 1],
                    rotation: Math.PI / 2
                })
            }, _updateHandle: function (e, t) {
                if (this._useHandle) {
                    var n = this._shapes, i = this.visualMapModel, r = n.handleThumbs, o = n.handleLabels;
                    f([0, 1], (function (a) {
                        var l = r[a];
                        l.setStyle("fill", t.handlesColor[a]), l.position[1] = e[a];
                        var c = s.applyTransform(n.handleLabelPoints[a], s.getTransform(l, this.group));
                        o[a].setStyle({
                            x: c[0],
                            y: c[1],
                            text: i.formatValueText(this._dataInterval[a]),
                            textVerticalAlign: "middle",
                            textAlign: this._applyTransform("horizontal" === this._orient ? 0 === a ? "bottom" : "top" : "left", n.barGroup)
                        })
                    }), this)
                }
            }, _showIndicator: function (e, t, n, i) {
                var r = this.visualMapModel, o = r.getExtent(), a = r.itemSize, l = [0, a[1]], c = d(e, o, l, !0),
                    u = this._shapes, h = u.indicator;
                if (h) {
                    h.position[1] = c, h.attr("invisible", !1), h.setShape("points", function (e, t, n, i) {
                        return e ? [[0, -g(t, p(n, 0))], [6, 0], [0, g(t, p(i - n, 0))]] : [[0, 0], [5, -5], [5, 5]]
                    }(!!n, i, c, a[1]));
                    var f = this.getControllerVisual(e, "color", {convertOpacityToAlpha: !0});
                    h.setStyle("fill", f);
                    var m = s.applyTransform(u.indicatorLabelPoint, s.getTransform(h, this.group)), v = u.indicatorLabel;
                    v.attr("invisible", !1);
                    var y = this._applyTransform("left", u.barGroup), b = this._orient;
                    v.setStyle({
                        text: (n || "") + r.formatValueText(t),
                        textVerticalAlign: "horizontal" === b ? y : "middle",
                        textAlign: "horizontal" === b ? "center" : y,
                        x: m[0],
                        y: m[1]
                    })
                }
            }, _enableHoverLinkToSeries: function () {
                var e = this;
                this._shapes.barGroup.on("mousemove", (function (t) {
                    if (e._hovering = !0, !e._dragging) {
                        var n = e.visualMapModel.itemSize,
                            i = e._applyTransform([t.offsetX, t.offsetY], e._shapes.barGroup, !0, !0);
                        i[1] = g(p(0, i[1]), n[1]), e._doHoverLinkToSeries(i[1], 0 <= i[0] && i[0] <= n[0])
                    }
                })).on("mouseout", (function () {
                    e._hovering = !1, !e._dragging && e._clearHoverLinkToSeries()
                }))
            }, _enableHoverLinkFromSeries: function () {
                var e = this.api.getZr();
                this.visualMapModel.option.hoverLink ? (e.on("mouseover", this._hoverLinkFromSeriesMouseOver, this), e.on("mouseout", this._hideIndicator, this)) : this._clearHoverLinkFromSeries()
            }, _doHoverLinkToSeries: function (e, t) {
                var n = this.visualMapModel, i = n.itemSize;
                if (n.option.hoverLink) {
                    var r = [0, i[1]], o = n.getExtent();
                    e = g(p(r[0], e), r[1]);
                    var a = function (e, t, n) {
                        var i = 6, r = e.get("hoverLinkDataSize");
                        r && (i = d(r, t, n, !0) / 2);
                        return i
                    }(n, o, r), s = [e - a, e + a], l = d(e, r, o, !0), c = [d(s[0], r, o, !0), d(s[1], r, o, !0)];
                    s[0] < r[0] && (c[0] = -1 / 0), s[1] > r[1] && (c[1] = 1 / 0), t && (c[0] === -1 / 0 ? this._showIndicator(l, c[1], "< ", a) : c[1] === 1 / 0 ? this._showIndicator(l, c[0], "> ", a) : this._showIndicator(l, l, "≈ ", a));
                    var f = this._hoverLinkDataIndices, m = [];
                    (t || y(n)) && (m = this._hoverLinkDataIndices = n.findTargetDataIndices(c));
                    var v = h.compressBatches(f, m);
                    this._dispatchHighDown("downplay", u.makeHighDownBatch(v[0], n)), this._dispatchHighDown("highlight", u.makeHighDownBatch(v[1], n))
                }
            }, _hoverLinkFromSeriesMouseOver: function (e) {
                var t = e.target, n = this.visualMapModel;
                if (t && null != t.dataIndex) {
                    var i = this.ecModel.getSeriesByIndex(t.seriesIndex);
                    if (n.isTargetSeries(i)) {
                        var r = i.getData(t.dataType), o = r.get(n.getDataDimension(r), t.dataIndex, !0);
                        isNaN(o) || this._showIndicator(o, o)
                    }
                }
            }, _hideIndicator: function () {
                var e = this._shapes;
                e.indicator && e.indicator.attr("invisible", !0), e.indicatorLabel && e.indicatorLabel.attr("invisible", !0)
            }, _clearHoverLinkToSeries: function () {
                this._hideIndicator();
                var e = this._hoverLinkDataIndices;
                this._dispatchHighDown("downplay", u.makeHighDownBatch(e, this.visualMapModel)), e.length = 0
            }, _clearHoverLinkFromSeries: function () {
                this._hideIndicator();
                var e = this.api.getZr();
                e.off("mouseover", this._hoverLinkFromSeriesMouseOver), e.off("mouseout", this._hideIndicator)
            }, _applyTransform: function (e, t, n, r) {
                var o = s.getTransform(t, r ? null : this.group);
                return s[i.isArray(e) ? "applyTransform" : "transformDirection"](e, o, n)
            }, _dispatchHighDown: function (e, t) {
                t && t.length && this.api.dispatchAction({type: e, batch: t})
            }, dispose: function () {
                this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries()
            }, remove: function () {
                this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries()
            }
        });

    function v(e, t, n, i) {
        return new s.Polygon({
            shape: {points: e}, draggable: !!n, cursor: t, drift: n, onmousemove: function (e) {
                o.stop(e.event)
            }, ondragend: i
        })
    }

    function y(e) {
        var t = e.get("hoverLinkOnHandle");
        return !!(null == t ? e.get("realtime") : t)
    }

    function b(e) {
        return "vertical" === e ? "ns-resize" : "ew-resize"
    }

    var C = m;
    e.exports = C
}, function (e, t, n) {
    n(6).__DEV__;
    var i = n(1), r = n(222), o = n(45), a = n(223), s = n(4).reformIntervals, l = r.extend({
        type: "visualMap.piecewise",
        defaultOption: {
            selected: null,
            minOpen: !1,
            maxOpen: !1,
            align: "auto",
            itemWidth: 20,
            itemHeight: 14,
            itemSymbol: "roundRect",
            pieceList: null,
            categories: null,
            splitNumber: 5,
            selectedMode: "multiple",
            itemGap: 10,
            hoverLink: !0,
            showLabel: null
        },
        optionUpdated: function (e, t) {
            l.superApply(this, "optionUpdated", arguments), this._pieceList = [], this.resetExtent();
            var n = this._mode = this._determineMode();
            c[this._mode].call(this), this._resetSelected(e, t);
            var r = this.option.categories;
            this.resetVisual((function (e, t) {
                "categories" === n ? (e.mappingMethod = "category", e.categories = i.clone(r)) : (e.dataExtent = this.getExtent(), e.mappingMethod = "piecewise", e.pieceList = i.map(this._pieceList, (function (e) {
                    e = i.clone(e);
                    return "inRange" !== t && (e.visual = null), e
                })))
            }))
        },
        completeVisualOption: function () {
            var e = this.option, t = {}, n = o.listVisualTypes(), s = this.isCategory();

            function l(e, t, n) {
                return e && e[t] && (i.isObject(e[t]) ? e[t].hasOwnProperty(n) : e[t] === n)
            }

            i.each(e.pieces, (function (e) {
                i.each(n, (function (n) {
                    e.hasOwnProperty(n) && (t[n] = 1)
                }))
            })), i.each(t, (function (t, n) {
                var r = 0;
                i.each(this.stateList, (function (t) {
                    r |= l(e, t, n) || l(e.target, t, n)
                }), this), !r && i.each(this.stateList, (function (t) {
                    (e[t] || (e[t] = {}))[n] = a.get(n, "inRange" === t ? "active" : "inactive", s)
                }))
            }), this), r.prototype.completeVisualOption.apply(this, arguments)
        },
        _resetSelected: function (e, t) {
            var n = this.option, r = this._pieceList, o = (t ? n : e).selected || {};
            if (n.selected = o, i.each(r, (function (e, t) {
                var n = this.getSelectedMapKey(e);
                o.hasOwnProperty(n) || (o[n] = !0)
            }), this), "single" === n.selectedMode) {
                var a = !1;
                i.each(r, (function (e, t) {
                    var n = this.getSelectedMapKey(e);
                    o[n] && (a ? o[n] = !1 : a = !0)
                }), this)
            }
        },
        getSelectedMapKey: function (e) {
            return "categories" === this._mode ? e.value + "" : e.index + ""
        },
        getPieceList: function () {
            return this._pieceList
        },
        _determineMode: function () {
            var e = this.option;
            return e.pieces && e.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"
        },
        setSelected: function (e) {
            this.option.selected = i.clone(e)
        },
        getValueState: function (e) {
            var t = o.findPieceIndex(e, this._pieceList);
            return null != t && this.option.selected[this.getSelectedMapKey(this._pieceList[t])] ? "inRange" : "outOfRange"
        },
        findTargetDataIndices: function (e) {
            var t = [];
            return this.eachTargetSeries((function (n) {
                var i = [], r = n.getData();
                r.each(this.getDataDimension(r), (function (t, n) {
                    o.findPieceIndex(t, this._pieceList) === e && i.push(n)
                }), this), t.push({seriesId: n.id, dataIndex: i})
            }), this), t
        },
        getRepresentValue: function (e) {
            var t;
            if (this.isCategory()) t = e.value; else if (null != e.value) t = e.value; else {
                var n = e.interval || [];
                t = n[0] === -1 / 0 && n[1] === 1 / 0 ? 0 : (n[0] + n[1]) / 2
            }
            return t
        },
        getVisualMeta: function (e) {
            if (!this.isCategory()) {
                var t = [], n = [], r = this, o = this._pieceList.slice();
                if (o.length) {
                    var a = o[0].interval[0];
                    a !== -1 / 0 && o.unshift({interval: [-1 / 0, a]}), (a = o[o.length - 1].interval[1]) !== 1 / 0 && o.push({interval: [a, 1 / 0]})
                } else o.push({interval: [-1 / 0, 1 / 0]});
                var s = -1 / 0;
                return i.each(o, (function (e) {
                    var t = e.interval;
                    t && (t[0] > s && l([s, t[0]], "outOfRange"), l(t.slice()), s = t[1])
                }), this), {stops: t, outerColors: n}
            }

            function l(i, o) {
                var a = r.getRepresentValue({interval: i});
                o || (o = r.getValueState(a));
                var s = e(a, o);
                i[0] === -1 / 0 ? n[0] = s : i[1] === 1 / 0 ? n[1] = s : t.push({value: i[0], color: s}, {
                    value: i[1],
                    color: s
                })
            }
        }
    }), c = {
        splitNumber: function () {
            var e = this.option, t = this._pieceList, n = Math.min(e.precision, 20), r = this.getExtent(),
                o = e.splitNumber;
            o = Math.max(parseInt(o, 10), 1), e.splitNumber = o;
            for (var a = (r[1] - r[0]) / o; +a.toFixed(n) !== a && n < 5;) n++;
            e.precision = n, a = +a.toFixed(n), e.minOpen && t.push({interval: [-1 / 0, r[0]], close: [0, 0]});
            for (var l = 0, c = r[0]; l < o; c += a, l++) {
                var u = l === o - 1 ? r[1] : c + a;
                t.push({interval: [c, u], close: [1, 1]})
            }
            e.maxOpen && t.push({interval: [r[1], 1 / 0], close: [0, 0]}), s(t), i.each(t, (function (e, t) {
                e.index = t, e.text = this.formatValueText(e.interval)
            }), this)
        }, categories: function () {
            var e = this.option;
            i.each(e.categories, (function (e) {
                this._pieceList.push({text: this.formatValueText(e, !0), value: e})
            }), this), u(e, this._pieceList)
        }, pieces: function () {
            var e = this.option, t = this._pieceList;
            i.each(e.pieces, (function (e, n) {
                i.isObject(e) || (e = {value: e});
                var r = {text: "", index: n};
                if (null != e.label && (r.text = e.label), e.hasOwnProperty("value")) {
                    var a = r.value = e.value;
                    r.interval = [a, a], r.close = [1, 1]
                } else {
                    for (var s = r.interval = [], l = r.close = [0, 0], c = [1, 0, 1], u = [-1 / 0, 1 / 0], h = [], d = 0; d < 2; d++) {
                        for (var f = [["gte", "gt", "min"], ["lte", "lt", "max"]][d], g = 0; g < 3 && null == s[d]; g++) s[d] = e[f[g]], l[d] = c[g], h[d] = 2 === g;
                        null == s[d] && (s[d] = u[d])
                    }
                    h[0] && s[1] === 1 / 0 && (l[0] = 0), h[1] && s[0] === -1 / 0 && (l[1] = 0), s[0] === s[1] && l[0] && l[1] && (r.value = s[0])
                }
                r.visual = o.retrieveVisuals(e), t.push(r)
            }), this), u(e, t), s(t), i.each(t, (function (e) {
                var t = e.close, n = [["<", "≤"][t[1]], [">", "≥"][t[0]]];
                e.text = e.text || this.formatValueText(null != e.value ? e.value : e.interval, !1, n)
            }), this)
        }
    };

    function u(e, t) {
        var n = e.inverse;
        ("vertical" === e.orient ? !n : n) && t.reverse()
    }

    var h = l;
    e.exports = h
}, function (e, t, n) {
    var i = n(1), r = n(224), o = n(3), a = n(20).createSymbol, s = n(7), l = n(225), c = r.extend({
        type: "visualMap.piecewise", doRender: function () {
            var e = this.group;
            e.removeAll();
            var t = this.visualMapModel, n = t.get("textGap"), r = t.textStyleModel, a = r.getFont(),
                l = r.getTextColor(), c = this._getItemAlign(), u = t.itemSize, h = this._getViewData(), d = h.endsText,
                f = i.retrieve(t.get("showLabel", !0), !d);
            d && this._renderEndsText(e, d[0], u, f, c), i.each(h.viewPieceList, (function (r) {
                var s = r.piece, h = new o.Group;
                h.onclick = i.bind(this._onItemClick, this, s), this._enableHoverLink(h, r.indexInModelPieceList);
                var d = t.getRepresentValue(s);
                if (this._createItemSymbol(h, d, [0, 0, u[0], u[1]]), f) {
                    var g = this.visualMapModel.getValueState(d);
                    h.add(new o.Text({
                        style: {
                            x: "right" === c ? -n : u[0] + n,
                            y: u[1] / 2,
                            text: s.text,
                            textVerticalAlign: "middle",
                            textAlign: c,
                            textFont: a,
                            textFill: l,
                            opacity: "outOfRange" === g ? .5 : 1
                        }
                    }))
                }
                e.add(h)
            }), this), d && this._renderEndsText(e, d[1], u, f, c), s.box(t.get("orient"), e, t.get("itemGap")), this.renderBackground(e), this.positionGroup(e)
        }, _enableHoverLink: function (e, t) {
            function n(e) {
                var n = this.visualMapModel;
                n.option.hoverLink && this.api.dispatchAction({
                    type: e,
                    batch: l.makeHighDownBatch(n.findTargetDataIndices(t), n)
                })
            }

            e.on("mouseover", i.bind(n, this, "highlight")).on("mouseout", i.bind(n, this, "downplay"))
        }, _getItemAlign: function () {
            var e = this.visualMapModel, t = e.option;
            if ("vertical" === t.orient) return l.getItemAlign(e, this.api, e.itemSize);
            var n = t.align;
            return n && "auto" !== n || (n = "left"), n
        }, _renderEndsText: function (e, t, n, i, r) {
            if (t) {
                var a = new o.Group, s = this.visualMapModel.textStyleModel;
                a.add(new o.Text({
                    style: {
                        x: i ? "right" === r ? n[0] : 0 : n[0] / 2,
                        y: n[1] / 2,
                        textVerticalAlign: "middle",
                        textAlign: i ? r : "center",
                        text: t,
                        textFont: s.getFont(),
                        textFill: s.getTextColor()
                    }
                })), e.add(a)
            }
        }, _getViewData: function () {
            var e = this.visualMapModel, t = i.map(e.getPieceList(), (function (e, t) {
                return {piece: e, indexInModelPieceList: t}
            })), n = e.get("text"), r = e.get("orient"), o = e.get("inverse");
            return ("horizontal" === r ? o : !o) ? t.reverse() : n && (n = n.slice().reverse()), {
                viewPieceList: t,
                endsText: n
            }
        }, _createItemSymbol: function (e, t, n) {
            e.add(a(this.getControllerVisual(t, "symbol"), n[0], n[1], n[2], n[3], this.getControllerVisual(t, "color")))
        }, _onItemClick: function (e) {
            var t = this.visualMapModel, n = t.option, r = i.clone(n.selected), o = t.getSelectedMapKey(e);
            "single" === n.selectedMode ? (r[o] = !0, i.each(r, (function (e, t) {
                r[t] = t === o
            }))) : r[o] = !r[o], this.api.dispatchAction({
                type: "selectDataRange",
                from: this.uid,
                visualMapId: this.visualMapModel.id,
                selected: r
            })
        }
    });
    e.exports = c
}, function (e, t, n) {
    n(552), (0, n(80).registerPainter)("vml", n(553))
}, function (e, t, n) {
    var i = n(12), r = n(9).applyTransform, o = n(10), a = n(25), s = n(17), l = n(84), c = n(152), u = n(62),
        h = n(46), d = n(39), f = n(11), g = n(48), p = n(85), m = n(228), v = g.CMD, y = Math.round, b = Math.sqrt,
        C = Math.abs, w = Math.cos, I = Math.sin, x = Math.max;
    if (!i.canvasSupported) {
        var A = 21600, _ = A / 2, S = function (e) {
            e.style.cssText = "position:absolute;left:0;top:0;width:1px;height:1px;", e.coordsize = A + "," + A, e.coordorigin = "0,0"
        }, k = function (e, t, n) {
            return "rgb(" + [e, t, n].join(",") + ")"
        }, L = function (e, t) {
            t && e && t.parentNode !== e && e.appendChild(t)
        }, T = function (e, t) {
            t && e && t.parentNode === e && e.removeChild(t)
        }, O = function (e, t, n) {
            return 1e5 * (parseFloat(e) || 0) + 1e3 * (parseFloat(t) || 0) + n
        }, R = l.parsePercent, E = function (e, t, n) {
            var i = a.parse(t);
            n = +n, isNaN(n) && (n = 1), i && (e.color = k(i[0], i[1], i[2]), e.opacity = n * i[3])
        }, P = function (e, t, n, i) {
            var o = "fill" === t, s = e.getElementsByTagName(t)[0];
            null != n[t] && "none" !== n[t] && (o || !o && n.lineWidth) ? (e[o ? "filled" : "stroked"] = "true", n[t] instanceof p && T(e, s), s || (s = m.createNode(t)), o ? function (e, t, n) {
                var i, o, s = t.fill;
                if (null != s) if (s instanceof p) {
                    var l, c = 0, u = [0, 0], h = 0, d = 1, f = n.getBoundingRect(), g = f.width, m = f.height;
                    if ("linear" === s.type) {
                        l = "gradient";
                        var v = n.transform, y = [s.x * g, s.y * m], b = [s.x2 * g, s.y2 * m];
                        v && (r(y, y, v), r(b, b, v));
                        var C = b[0] - y[0], w = b[1] - y[1];
                        (c = 180 * Math.atan2(C, w) / Math.PI) < 0 && (c += 360), c < 1e-6 && (c = 0)
                    } else {
                        l = "gradientradial";
                        y = [s.x * g, s.y * m], v = n.transform;
                        var I = n.scale, _ = g, S = m;
                        u = [(y[0] - f.x) / _, (y[1] - f.y) / S], v && r(y, y, v), _ /= I[0] * A, S /= I[1] * A;
                        var L = x(_, S);
                        h = 0 / L, d = 2 * s.r / L - h
                    }
                    var T = s.colorStops.slice();
                    T.sort((function (e, t) {
                        return e.offset - t.offset
                    }));
                    for (var O = T.length, R = [], P = [], M = 0; M < O; M++) {
                        var N = T[M], D = (i = N.color, o = void 0, o = a.parse(i), [k(o[0], o[1], o[2]), o[3]]);
                        P.push(N.offset * d + h + " " + D[0]), 0 !== M && M !== O - 1 || R.push(D)
                    }
                    if (O >= 2) {
                        var B = R[0][0], j = R[1][0], F = R[0][1] * t.opacity, H = R[1][1] * t.opacity;
                        e.type = l, e.method = "none", e.focus = "100%", e.angle = c, e.color = B, e.color2 = j, e.colors = P.join(","), e.opacity = H, e.opacity2 = F
                    }
                    "radial" === l && (e.focusposition = u.join(","))
                } else E(e, s, t.opacity)
            }(s, n, i) : function (e, t) {
                t.lineDash && (e.dashstyle = t.lineDash.join(" ")), null == t.stroke || t.stroke instanceof p || E(e, t.stroke, t.opacity)
            }(s, n), L(e, s)) : (e[o ? "filled" : "stroked"] = "false", T(e, s))
        }, M = [[], [], []];
        f.prototype.brushVML = function (e) {
            var t = this.style, n = this._vmlEl;
            n || (n = m.createNode("shape"), S(n), this._vmlEl = n), P(n, "fill", t, this), P(n, "stroke", t, this);
            var i = this.transform, o = null != i, a = n.getElementsByTagName("stroke")[0];
            if (a) {
                var s = t.lineWidth;
                if (o && !t.strokeNoScale) {
                    var l = i[0] * i[3] - i[1] * i[2];
                    s *= b(C(l))
                }
                a.weight = s + "px"
            }
            var c = this.path || (this.path = new g);
            this.__dirtyPath && (c.beginPath(), c.subPixelOptimize = !1, this.buildPath(c, this.shape), c.toStatic(), this.__dirtyPath = !1), n.path = function (e, t) {
                var n, i, o, a, s, l, c = v.M, u = v.C, h = v.L, d = v.A, f = v.Q, g = [], p = e.data, m = e.len();
                for (a = 0; a < m;) {
                    switch (i = "", n = 0, o = p[a++]) {
                        case c:
                            i = " m ", n = 1, s = p[a++], l = p[a++], M[0][0] = s, M[0][1] = l;
                            break;
                        case h:
                            i = " l ", n = 1, s = p[a++], l = p[a++], M[0][0] = s, M[0][1] = l;
                            break;
                        case f:
                        case u:
                            i = " c ", n = 3;
                            var C, x, S = p[a++], k = p[a++], L = p[a++], T = p[a++];
                            o === f ? (C = L, x = T, L = (L + 2 * S) / 3, T = (T + 2 * k) / 3, S = (s + 2 * S) / 3, k = (l + 2 * k) / 3) : (C = p[a++], x = p[a++]), M[0][0] = S, M[0][1] = k, M[1][0] = L, M[1][1] = T, M[2][0] = C, M[2][1] = x, s = C, l = x;
                            break;
                        case d:
                            var O = 0, R = 0, E = 1, P = 1, N = 0;
                            t && (O = t[4], R = t[5], E = b(t[0] * t[0] + t[1] * t[1]), P = b(t[2] * t[2] + t[3] * t[3]), N = Math.atan2(-t[1] / P, t[0] / E));
                            var D = p[a++], B = p[a++], j = p[a++], F = p[a++], H = p[a++] + N, W = p[a++] + H + N;
                            a++;
                            var V = p[a++], G = D + w(H) * j, z = B + I(H) * F,
                                Z = (S = D + w(W) * j, k = B + I(W) * F, V ? " wa " : " at ");
                            Math.abs(G - S) < 1e-4 && (Math.abs(W - H) > .01 ? V && (G += .0125) : Math.abs(z - B) < 1e-4 ? V && G < D || !V && G > D ? k -= .0125 : k += .0125 : V && z < B || !V && z > B ? S += .0125 : S -= .0125), g.push(Z, y(((D - j) * E + O) * A - _), ",", y(((B - F) * P + R) * A - _), ",", y(((D + j) * E + O) * A - _), ",", y(((B + F) * P + R) * A - _), ",", y((G * E + O) * A - _), ",", y((z * P + R) * A - _), ",", y((S * E + O) * A - _), ",", y((k * P + R) * A - _)), s = S, l = k;
                            break;
                        case v.R:
                            var $ = M[0], K = M[1];
                            $[0] = p[a++], $[1] = p[a++], K[0] = $[0] + p[a++], K[1] = $[1] + p[a++], t && (r($, $, t), r(K, K, t)), $[0] = y($[0] * A - _), K[0] = y(K[0] * A - _), $[1] = y($[1] * A - _), K[1] = y(K[1] * A - _), g.push(" m ", $[0], ",", $[1], " l ", K[0], ",", $[1], " l ", K[0], ",", K[1], " l ", $[0], ",", K[1]);
                            break;
                        case v.Z:
                            g.push(" x ")
                    }
                    if (n > 0) {
                        g.push(i);
                        for (var X = 0; X < n; X++) {
                            var Y = M[X];
                            t && r(Y, Y, t), g.push(y(Y[0] * A - _), ",", y(Y[1] * A - _), X < n - 1 ? "," : "")
                        }
                    }
                }
                return g.join("")
            }(c, this.transform), n.style.zIndex = O(this.zlevel, this.z, this.z2), L(e, n), null != t.text ? this.drawRectText(e, this.getBoundingRect()) : this.removeRectText(e)
        }, f.prototype.onRemove = function (e) {
            T(e, this._vmlEl), this.removeRectText(e)
        }, f.prototype.onAdd = function (e) {
            L(e, this._vmlEl), this.appendRectText(e)
        };
        h.prototype.brushVML = function (e) {
            var t, n, i, o = this.style, a = o.image;
            if ("object" == typeof (i = a) && i.tagName && "IMG" === i.tagName.toUpperCase()) {
                var s = a.src;
                if (s === this._imageSrc) t = this._imageWidth, n = this._imageHeight; else {
                    var l = a.runtimeStyle, c = l.width, u = l.height;
                    l.width = "auto", l.height = "auto", t = a.width, n = a.height, l.width = c, l.height = u, this._imageSrc = s, this._imageWidth = t, this._imageHeight = n
                }
                a = s
            } else a === this._imageSrc && (t = this._imageWidth, n = this._imageHeight);
            if (a) {
                var h = o.x || 0, d = o.y || 0, f = o.width, g = o.height, p = o.sWidth, v = o.sHeight, C = o.sx || 0,
                    w = o.sy || 0, I = p && v, A = this._vmlEl;
                A || (A = m.doc.createElement("div"), S(A), this._vmlEl = A);
                var _, k = A.style, T = !1, R = 1, E = 1;
                if (this.transform && (_ = this.transform, R = b(_[0] * _[0] + _[1] * _[1]), E = b(_[2] * _[2] + _[3] * _[3]), T = _[1] || _[2]), T) {
                    var P = [h, d], M = [h + f, d], N = [h, d + g], D = [h + f, d + g];
                    r(P, P, _), r(M, M, _), r(N, N, _), r(D, D, _);
                    var B = x(P[0], M[0], N[0], D[0]), j = x(P[1], M[1], N[1], D[1]), F = [];
                    F.push("M11=", _[0] / R, ",", "M12=", _[2] / E, ",", "M21=", _[1] / R, ",", "M22=", _[3] / E, ",", "Dx=", y(h * R + _[4]), ",", "Dy=", y(d * E + _[5])), k.padding = "0 " + y(B) + "px " + y(j) + "px 0", k.filter = "progid:DXImageTransform.Microsoft.Matrix(" + F.join("") + ", SizingMethod=clip)"
                } else _ && (h = h * R + _[4], d = d * E + _[5]), k.filter = "", k.left = y(h) + "px", k.top = y(d) + "px";
                var H = this._imageEl, W = this._cropEl;
                H || (H = m.doc.createElement("div"), this._imageEl = H);
                var V = H.style;
                if (I) {
                    if (t && n) V.width = y(R * t * f / p) + "px", V.height = y(E * n * g / v) + "px"; else {
                        var G = new Image, z = this;
                        G.onload = function () {
                            G.onload = null, t = G.width, n = G.height, V.width = y(R * t * f / p) + "px", V.height = y(E * n * g / v) + "px", z._imageWidth = t, z._imageHeight = n, z._imageSrc = a
                        }, G.src = a
                    }
                    W || ((W = m.doc.createElement("div")).style.overflow = "hidden", this._cropEl = W);
                    var Z = W.style;
                    Z.width = y((f + C * f / p) * R), Z.height = y((g + w * g / v) * E), Z.filter = "progid:DXImageTransform.Microsoft.Matrix(Dx=" + -C * f / p * R + ",Dy=" + -w * g / v * E + ")", W.parentNode || A.appendChild(W), H.parentNode !== W && W.appendChild(H)
                } else V.width = y(R * f) + "px", V.height = y(E * g) + "px", A.appendChild(H), W && W.parentNode && (A.removeChild(W), this._cropEl = null);
                var $ = "", K = o.opacity;
                K < 1 && ($ += ".Alpha(opacity=" + y(100 * K) + ") "), $ += "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + a + ", SizingMethod=scale)", V.filter = $, A.style.zIndex = O(this.zlevel, this.z, this.z2), L(e, A), null != o.text && this.drawRectText(e, this.getBoundingRect())
            }
        }, h.prototype.onRemove = function (e) {
            T(e, this._vmlEl), this._vmlEl = null, this._cropEl = null, this._imageEl = null, this.removeRectText(e)
        }, h.prototype.onAdd = function (e) {
            L(e, this._vmlEl), this.appendRectText(e)
        };
        var N, D = {}, B = 0, j = document.createElement("div");
        s.$override("measureText", (function (e, t) {
            var n = m.doc;
            N || ((N = n.createElement("div")).style.cssText = "position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;", m.doc.body.appendChild(N));
            try {
                N.style.font = t
            } catch (e) {
            }
            return N.innerHTML = "", N.appendChild(n.createTextNode(e)), {width: N.offsetWidth}
        }));
        for (var F = new o, H = function (e, t, n, i) {
            var o = this.style;
            this.__dirty && l.normalizeTextStyle(o, !0);
            var a = o.text;
            if (null != a && (a += ""), a) {
                if (o.rich) {
                    var c = s.parseRichText(a, o);
                    a = [];
                    for (var u = 0; u < c.lines.length; u++) {
                        for (var h = c.lines[u].tokens, d = [], f = 0; f < h.length; f++) d.push(h[f].text);
                        a.push(d.join(""))
                    }
                    a = a.join("\n")
                }
                var g, p, v = o.textAlign, b = o.textVerticalAlign, C = function (e) {
                    var t = D[e];
                    if (!t) {
                        B > 100 && (B = 0, D = {});
                        var n, i = j.style;
                        try {
                            i.font = e, n = i.fontFamily.split(",")[0]
                        } catch (e) {
                        }
                        t = {
                            style: i.fontStyle || "normal",
                            variant: i.fontVariant || "normal",
                            weight: i.fontWeight || "normal",
                            size: 0 | parseFloat(i.fontSize || 12),
                            family: n || "Microsoft YaHei"
                        }, D[e] = t, B++
                    }
                    return t
                }(o.font), w = C.style + " " + C.variant + " " + C.weight + " " + C.size + 'px "' + C.family + '"';
                n = n || s.getBoundingRect(a, w, v, b, o.textPadding, o.textLineHeight);
                var I = this.transform;
                if (I && !i && (F.copy(t), F.applyTransform(I), t = F), i) g = t.x, p = t.y; else {
                    var x = o.textPosition;
                    if (x instanceof Array) g = t.x + R(x[0], t.width), p = t.y + R(x[1], t.height), v = v || "left"; else {
                        var A = this.calculateTextPosition ? this.calculateTextPosition({}, o, t) : s.calculateTextPosition({}, o, t);
                        g = A.x, p = A.y, v = v || A.textAlign, b = b || A.textVerticalAlign
                    }
                }
                g = s.adjustTextX(g, n.width, v), p = s.adjustTextY(p, n.height, b), p += n.height / 2;
                var _, k, T, E = m.createNode, M = this._textVmlEl;
                M ? k = (_ = (T = M.firstChild).nextSibling).nextSibling : (M = E("line"), _ = E("path"), k = E("textpath"), T = E("skew"), k.style["v-text-align"] = "left", S(M), _.textpathok = !0, k.on = !0, M.from = "0 0", M.to = "1000 0.05", L(M, T), L(M, _), L(M, k), this._textVmlEl = M);
                var N = [g, p], H = M.style;
                I && i ? (r(N, N, I), T.on = !0, T.matrix = I[0].toFixed(3) + "," + I[2].toFixed(3) + "," + I[1].toFixed(3) + "," + I[3].toFixed(3) + ",0,0", T.offset = (y(N[0]) || 0) + "," + (y(N[1]) || 0), T.origin = "0 0", H.left = "0px", H.top = "0px") : (T.on = !1, H.left = y(g) + "px", H.top = y(p) + "px"), k.string = String(a).replace(/&/g, "&amp;").replace(/"/g, "&quot;");
                try {
                    k.style.font = w
                } catch (e) {
                }
                P(M, "fill", {fill: o.textFill, opacity: o.opacity}, this), P(M, "stroke", {
                    stroke: o.textStroke,
                    opacity: o.opacity,
                    lineDash: o.lineDash || null
                }, this), M.style.zIndex = O(this.zlevel, this.z, this.z2), L(e, M)
            }
        }, W = function (e) {
            T(e, this._textVmlEl), this._textVmlEl = null
        }, V = function (e) {
            L(e, this._textVmlEl)
        }, G = [c, u, h, f, d], z = 0; z < G.length; z++) {
            var Z = G[z].prototype;
            Z.drawRectText = H, Z.removeRectText = W, Z.appendRectText = V
        }
        d.prototype.brushVML = function (e) {
            var t = this.style;
            null != t.text ? this.drawRectText(e, {
                x: t.x || 0,
                y: t.y || 0,
                width: 0,
                height: 0
            }, this.getBoundingRect(), !0) : this.removeRectText(e)
        }, d.prototype.onRemove = function (e) {
            this.removeRectText(e)
        }, d.prototype.onAdd = function (e) {
            this.appendRectText(e)
        }
    }
}, function (e, t, n) {
    var i = n(61), r = n(228), o = n(1).each;

    function a(e) {
        return parseInt(e, 10)
    }

    function s(e, t) {
        r.initVML(), this.root = e, this.storage = t;
        var n = document.createElement("div"), i = document.createElement("div");
        n.style.cssText = "display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;", i.style.cssText = "position:absolute;left:0;top:0;", e.appendChild(n), this._vmlRoot = i, this._vmlViewport = n, this.resize();
        var o = t.delFromStorage, a = t.addToStorage;
        t.delFromStorage = function (e) {
            o.call(t, e), e && e.onRemove && e.onRemove(i)
        }, t.addToStorage = function (e) {
            e.onAdd && e.onAdd(i), a.call(t, e)
        }, this._firstPaint = !0
    }

    s.prototype = {
        constructor: s, getType: function () {
            return "vml"
        }, getViewportRoot: function () {
            return this._vmlViewport
        }, getViewportRootOffset: function () {
            var e = this.getViewportRoot();
            if (e) return {offsetLeft: e.offsetLeft || 0, offsetTop: e.offsetTop || 0}
        }, refresh: function () {
            var e = this.storage.getDisplayList(!0, !0);
            this._paintList(e)
        }, _paintList: function (e) {
            for (var t = this._vmlRoot, n = 0; n < e.length; n++) {
                var i = e[n];
                i.invisible || i.ignore ? (i.__alreadyNotVisible || i.onRemove(t), i.__alreadyNotVisible = !0) : (i.__alreadyNotVisible && i.onAdd(t), i.__alreadyNotVisible = !1, i.__dirty && (i.beforeBrush && i.beforeBrush(), (i.brushVML || i.brush).call(i, t), i.afterBrush && i.afterBrush())), i.__dirty = !1
            }
            this._firstPaint && (this._vmlViewport.appendChild(t), this._firstPaint = !1)
        }, resize: function (e, t) {
            e = null == e ? this._getWidth() : e, t = null == t ? this._getHeight() : t;
            if (this._width !== e || this._height !== t) {
                this._width = e, this._height = t;
                var n = this._vmlViewport.style;
                n.width = e + "px", n.height = t + "px"
            }
        }, dispose: function () {
            this.root.innerHTML = "", this._vmlRoot = this._vmlViewport = this.storage = null
        }, getWidth: function () {
            return this._width
        }, getHeight: function () {
            return this._height
        }, clear: function () {
            this._vmlViewport && this.root.removeChild(this._vmlViewport)
        }, _getWidth: function () {
            var e = this.root, t = e.currentStyle;
            return (e.clientWidth || a(t.width)) - a(t.paddingLeft) - a(t.paddingRight) | 0
        }, _getHeight: function () {
            var e = this.root, t = e.currentStyle;
            return (e.clientHeight || a(t.height)) - a(t.paddingTop) - a(t.paddingBottom) | 0
        }
    }, o(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "toDataURL", "pathToImage"], (function (e) {
        var t;
        s.prototype[e] = (t = e, function () {
            i('In IE8.0 VML mode painter not support method "' + t + '"')
        })
    }));
    var l = s;
    e.exports = l
}, function (e, t, n) {
    n(133), (0, n(80).registerPainter)("svg", n(555))
}, function (e, t, n) {
    var i = n(134).createElement, r = n(1), o = n(61), a = n(11), s = n(46), l = n(39), c = n(556), u = n(557),
        h = n(558), d = n(559), f = n(133), g = f.path, p = f.image, m = f.text;

    function v(e) {
        return parseInt(e, 10)
    }

    function y(e, t) {
        return t && e && t.parentNode !== e
    }

    function b(e, t, n) {
        if (y(e, t) && n) {
            var i = n.nextSibling;
            i ? e.insertBefore(t, i) : e.appendChild(t)
        }
    }

    function C(e, t) {
        if (y(e, t)) {
            var n = e.firstChild;
            n ? e.insertBefore(t, n) : e.appendChild(t)
        }
    }

    function w(e, t) {
        t && e && t.parentNode === e && e.removeChild(t)
    }

    function I(e) {
        return e.__textSvgEl
    }

    function x(e) {
        return e.__svgEl
    }

    var A = function (e, t, n, o) {
        this.root = e, this.storage = t, this._opts = n = r.extend({}, n || {});
        var a = i("svg");
        a.setAttribute("xmlns", "http://www.w3.org/2000/svg"), a.setAttribute("version", "1.1"), a.setAttribute("baseProfile", "full"), a.style.cssText = "user-select:none;position:absolute;left:0;top:0;";
        var s = i("g");
        a.appendChild(s);
        var l = i("g");
        a.appendChild(l), this.gradientManager = new u(o, l), this.clipPathManager = new h(o, l), this.shadowManager = new d(o, l);
        var c = document.createElement("div");
        c.style.cssText = "overflow:hidden;position:relative", this._svgDom = a, this._svgRoot = l, this._backgroundRoot = s, this._viewport = c, e.appendChild(c), c.appendChild(a), this.resize(n.width, n.height), this._visibleList = []
    };
    A.prototype = {
        constructor: A, getType: function () {
            return "svg"
        }, getViewportRoot: function () {
            return this._viewport
        }, getSvgDom: function () {
            return this._svgDom
        }, getSvgRoot: function () {
            return this._svgRoot
        }, getViewportRootOffset: function () {
            var e = this.getViewportRoot();
            if (e) return {offsetLeft: e.offsetLeft || 0, offsetTop: e.offsetTop || 0}
        }, refresh: function () {
            var e = this.storage.getDisplayList(!0);
            this._paintList(e)
        }, setBackgroundColor: function (e) {
            this._backgroundRoot && this._backgroundNode && this._backgroundRoot.removeChild(this._backgroundNode);
            var t = i("rect");
            t.setAttribute("width", this.getWidth()), t.setAttribute("height", this.getHeight()), t.setAttribute("x", 0), t.setAttribute("y", 0), t.setAttribute("id", 0), t.style.fill = e, this._backgroundRoot.appendChild(t), this._backgroundNode = t
        }, _paintList: function (e) {
            this.gradientManager.markAllUnused(), this.clipPathManager.markAllUnused(), this.shadowManager.markAllUnused();
            var t, n, i = this._svgRoot, r = this._visibleList, o = e.length, u = [];
            for (t = 0; t < o; t++) {
                var h = e[t], d = (n = h) instanceof a ? g : n instanceof s ? p : n instanceof l ? m : g,
                    f = x(h) || I(h);
                h.invisible || (h.__dirty && (d && d.brush(h), this.clipPathManager.update(h), h.style && (this.gradientManager.update(h.style.fill), this.gradientManager.update(h.style.stroke), this.shadowManager.update(f, h)), h.__dirty = !1), u.push(h))
            }
            var v, y = c(r, u);
            for (t = 0; t < y.length; t++) {
                if ((S = y[t]).removed) for (var A = 0; A < S.count; A++) {
                    f = x(h = r[S.indices[A]]);
                    var _ = I(h);
                    w(i, f), w(i, _)
                }
            }
            for (t = 0; t < y.length; t++) {
                var S;
                if ((S = y[t]).added) for (A = 0; A < S.count; A++) {
                    f = x(h = u[S.indices[A]]), _ = I(h);
                    v ? b(i, f, v) : C(i, f), f ? b(i, _, f) : v ? b(i, _, v) : C(i, _), b(i, _, f), v = _ || f || v, this.gradientManager.addWithoutUpdate(f || _, h), this.shadowManager.addWithoutUpdate(f || _, h), this.clipPathManager.markUsed(h)
                } else if (!S.removed) for (A = 0; A < S.count; A++) {
                    f = x(h = u[S.indices[A]]), _ = I(h), f = x(h), _ = I(h);
                    this.gradientManager.markUsed(h), this.gradientManager.addWithoutUpdate(f || _, h), this.shadowManager.markUsed(h), this.shadowManager.addWithoutUpdate(f || _, h), this.clipPathManager.markUsed(h), _ && b(i, _, f), v = f || _ || v
                }
            }
            this.gradientManager.removeUnused(), this.clipPathManager.removeUnused(), this.shadowManager.removeUnused(), this._visibleList = u
        }, _getDefs: function (e) {
            var t, n = this._svgDom;
            return 0 === (t = n.getElementsByTagName("defs")).length ? e ? ((t = n.insertBefore(i("defs"), n.firstChild)).contains || (t.contains = function (e) {
                var n = t.children;
                if (!n) return !1;
                for (var i = n.length - 1; i >= 0; --i) if (n[i] === e) return !0;
                return !1
            }), t) : null : t[0]
        }, resize: function (e, t) {
            var n = this._viewport;
            n.style.display = "none";
            var i = this._opts;
            if (null != e && (i.width = e), null != t && (i.height = t), e = this._getSize(0), t = this._getSize(1), n.style.display = "", this._width !== e || this._height !== t) {
                this._width = e, this._height = t;
                var r = n.style;
                r.width = e + "px", r.height = t + "px";
                var o = this._svgDom;
                o.setAttribute("width", e), o.setAttribute("height", t)
            }
            this._backgroundNode && (this._backgroundNode.setAttribute("width", e), this._backgroundNode.setAttribute("height", t))
        }, getWidth: function () {
            return this._width
        }, getHeight: function () {
            return this._height
        }, _getSize: function (e) {
            var t = this._opts, n = ["width", "height"][e], i = ["clientWidth", "clientHeight"][e],
                r = ["paddingLeft", "paddingTop"][e], o = ["paddingRight", "paddingBottom"][e];
            if (null != t[n] && "auto" !== t[n]) return parseFloat(t[n]);
            var a = this.root, s = document.defaultView.getComputedStyle(a);
            return (a[i] || v(s[n]) || v(a.style[n])) - (v(s[r]) || 0) - (v(s[o]) || 0) | 0
        }, dispose: function () {
            this.root.innerHTML = "", this._svgRoot = this._backgroundRoot = this._svgDom = this._backgroundNode = this._viewport = this.storage = null
        }, clear: function () {
            this._viewport && this.root.removeChild(this._viewport)
        }, toDataURL: function () {
            return this.refresh(), "data:image/svg+xml;charset=UTF-8," + encodeURIComponent(this._svgDom.outerHTML.replace(/></g, ">\n\r<"))
        }
    }, r.each(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "pathToImage"], (function (e) {
        var t;
        A.prototype[e] = (t = e, function () {
            o('In SVG mode painter not support method "' + t + '"')
        })
    }));
    var _ = A;
    e.exports = _
}, function (e, t) {
    function n() {
    }

    function i(e, t, n, i) {
        for (var r = 0, o = t.length, a = 0, s = 0; r < o; r++) {
            var l = t[r];
            if (l.removed) {
                for (c = [], u = s; u < s + l.count; u++) c.push(u);
                l.indices = c, s += l.count
            } else {
                for (var c = [], u = a; u < a + l.count; u++) c.push(u);
                l.indices = c, a += l.count, l.added || (s += l.count)
            }
        }
        return t
    }

    n.prototype = {
        diff: function (e, t, n) {
            n || (n = function (e, t) {
                return e === t
            }), this.equals = n;
            var r = this;
            e = e.slice();
            var o = (t = t.slice()).length, a = e.length, s = 1, l = o + a, c = [{newPos: -1, components: []}],
                u = this.extractCommon(c[0], t, e, 0);
            if (c[0].newPos + 1 >= o && u + 1 >= a) {
                for (var h = [], d = 0; d < t.length; d++) h.push(d);
                return [{indices: h, count: t.length}]
            }

            function f() {
                for (var n = -1 * s; n <= s; n += 2) {
                    var l, u = c[n - 1], h = c[n + 1], d = (h ? h.newPos : 0) - n;
                    u && (c[n - 1] = void 0);
                    var f = u && u.newPos + 1 < o, g = h && 0 <= d && d < a;
                    if (f || g) {
                        if (!f || g && u.newPos < h.newPos ? (l = {
                            newPos: (p = h).newPos,
                            components: p.components.slice(0)
                        }, r.pushComponent(l.components, void 0, !0)) : ((l = u).newPos++, r.pushComponent(l.components, !0, void 0)), d = r.extractCommon(l, t, e, n), l.newPos + 1 >= o && d + 1 >= a) return i(r, l.components, t, e);
                        c[n] = l
                    } else c[n] = void 0
                }
                var p;
                s++
            }

            for (; s <= l;) {
                var g = f();
                if (g) return g
            }
        }, pushComponent: function (e, t, n) {
            var i = e[e.length - 1];
            i && i.added === t && i.removed === n ? e[e.length - 1] = {
                count: i.count + 1,
                added: t,
                removed: n
            } : e.push({count: 1, added: t, removed: n})
        }, extractCommon: function (e, t, n, i) {
            for (var r = t.length, o = n.length, a = e.newPos, s = a - i, l = 0; a + 1 < r && s + 1 < o && this.equals(t[a + 1], n[s + 1]);) a++, s++, l++;
            return l && e.components.push({count: l}), e.newPos = a, s
        }, tokenize: function (e) {
            return e.slice()
        }, join: function (e) {
            return e.slice()
        }
    };
    var r = new n;
    e.exports = function (e, t, n) {
        return r.diff(e, t, n)
    }
}, function (e, t, n) {
    var i = n(135), r = n(1), o = n(61), a = n(25);

    function s(e, t) {
        i.call(this, e, t, ["linearGradient", "radialGradient"], "__gradient_in_use__")
    }

    r.inherits(s, i), s.prototype.addWithoutUpdate = function (e, t) {
        if (t && t.style) {
            var n = this;
            r.each(["fill", "stroke"], (function (i) {
                if (t.style[i] && ("linear" === t.style[i].type || "radial" === t.style[i].type)) {
                    var r, o = t.style[i], a = n.getDefs(!0);
                    o._dom ? (r = o._dom, a.contains(o._dom) || n.addDom(r)) : r = n.add(o), n.markUsed(t);
                    var s = r.getAttribute("id");
                    e.setAttribute(i, "url(#" + s + ")")
                }
            }))
        }
    }, s.prototype.add = function (e) {
        var t;
        if ("linear" === e.type) t = this.createElement("linearGradient"); else {
            if ("radial" !== e.type) return o("Illegal gradient type."), null;
            t = this.createElement("radialGradient")
        }
        return e.id = e.id || this.nextId++, t.setAttribute("id", "zr" + this._zrId + "-gradient-" + e.id), this.updateDom(e, t), this.addDom(t), t
    }, s.prototype.update = function (e) {
        var t = this;
        i.prototype.update.call(this, e, (function () {
            var n = e.type, i = e._dom.tagName;
            "linear" === n && "linearGradient" === i || "radial" === n && "radialGradient" === i ? t.updateDom(e, e._dom) : (t.removeDom(e), t.add(e))
        }))
    }, s.prototype.updateDom = function (e, t) {
        if ("linear" === e.type) t.setAttribute("x1", e.x), t.setAttribute("y1", e.y), t.setAttribute("x2", e.x2), t.setAttribute("y2", e.y2); else {
            if ("radial" !== e.type) return void o("Illegal gradient type.");
            t.setAttribute("cx", e.x), t.setAttribute("cy", e.y), t.setAttribute("r", e.r)
        }
        e.global ? t.setAttribute("gradientUnits", "userSpaceOnUse") : t.setAttribute("gradientUnits", "objectBoundingBox"), t.innerHTML = "";
        for (var n = e.colorStops, i = 0, r = n.length; i < r; ++i) {
            var s = this.createElement("stop");
            s.setAttribute("offset", 100 * n[i].offset + "%");
            var l = n[i].color;
            if (l.indexOf(!1)) {
                var c = a.parse(l)[3], u = a.toHex(l);
                s.setAttribute("stop-color", "#" + u), s.setAttribute("stop-opacity", c)
            } else s.setAttribute("stop-color", n[i].color);
            t.appendChild(s)
        }
        e._dom = t
    }, s.prototype.markUsed = function (e) {
        if (e.style) {
            var t = e.style.fill;
            t && t._dom && i.prototype.markUsed.call(this, t._dom), (t = e.style.stroke) && t._dom && i.prototype.markUsed.call(this, t._dom)
        }
    };
    var l = s;
    e.exports = l
}, function (e, t, n) {
    var i = n(135), r = n(1), o = n(16);

    function a(e, t) {
        i.call(this, e, t, "clipPath", "__clippath_in_use__")
    }

    r.inherits(a, i), a.prototype.update = function (e) {
        var t = this.getSvgElement(e);
        t && this.updateDom(t, e.__clipPaths, !1);
        var n = this.getTextSvgElement(e);
        n && this.updateDom(n, e.__clipPaths, !0), this.markUsed(e)
    }, a.prototype.updateDom = function (e, t, n) {
        if (t && t.length > 0) {
            var i, r, a = this.getDefs(!0), s = t[0], l = n ? "_textDom" : "_dom";
            s[l] ? (r = s[l].getAttribute("id"), i = s[l], a.contains(i) || a.appendChild(i)) : (r = "zr" + this._zrId + "-clip-" + this.nextId, ++this.nextId, (i = this.createElement("clipPath")).setAttribute("id", r), a.appendChild(i), s[l] = i);
            var c = this.getSvgProxy(s);
            if (s.transform && s.parent.invTransform && !n) {
                var u = Array.prototype.slice.call(s.transform);
                o.mul(s.transform, s.parent.invTransform, s.transform), c.brush(s), s.transform = u
            } else c.brush(s);
            var h = this.getSvgElement(s);
            i.innerHTML = "", i.appendChild(h.cloneNode()), e.setAttribute("clip-path", "url(#" + r + ")"), t.length > 1 && this.updateDom(i, t.slice(1), n)
        } else e && e.setAttribute("clip-path", "none")
    }, a.prototype.markUsed = function (e) {
        var t = this;
        e.__clipPaths && r.each(e.__clipPaths, (function (e) {
            e._dom && i.prototype.markUsed.call(t, e._dom), e._textDom && i.prototype.markUsed.call(t, e._textDom)
        }))
    };
    var s = a;
    e.exports = s
}, function (e, t, n) {
    var i = n(135);

    function r(e, t) {
        i.call(this, e, t, ["filter"], "__filter_in_use__", "_shadowDom")
    }

    function o(e) {
        return e && (e.shadowBlur || e.shadowOffsetX || e.shadowOffsetY || e.textShadowBlur || e.textShadowOffsetX || e.textShadowOffsetY)
    }

    n(1).inherits(r, i), r.prototype.addWithoutUpdate = function (e, t) {
        if (t && o(t.style)) {
            var n;
            if (t._shadowDom) n = t._shadowDom, this.getDefs(!0).contains(t._shadowDom) || this.addDom(n); else n = this.add(t);
            this.markUsed(t);
            var i = n.getAttribute("id");
            e.style.filter = "url(#" + i + ")"
        }
    }, r.prototype.add = function (e) {
        var t = this.createElement("filter");
        return e._shadowDomId = e._shadowDomId || this.nextId++, t.setAttribute("id", "zr" + this._zrId + "-shadow-" + e._shadowDomId), this.updateDom(e, t), this.addDom(t), t
    }, r.prototype.update = function (e, t) {
        if (o(t.style)) {
            var n = this;
            i.prototype.update.call(this, t, (function () {
                n.updateDom(t, t._shadowDom)
            }))
        } else this.remove(e, t)
    }, r.prototype.remove = function (e, t) {
        null != t._shadowDomId && (this.removeDom(e), e.style.filter = "")
    }, r.prototype.updateDom = function (e, t) {
        var n = t.getElementsByTagName("feDropShadow");
        n = 0 === n.length ? this.createElement("feDropShadow") : n[0];
        var i, r, o, a, s = e.style, l = e.scale && e.scale[0] || 1, c = e.scale && e.scale[1] || 1;
        if (s.shadowBlur || s.shadowOffsetX || s.shadowOffsetY) i = s.shadowOffsetX || 0, r = s.shadowOffsetY || 0, o = s.shadowBlur, a = s.shadowColor; else {
            if (!s.textShadowBlur) return void this.removeDom(t, s);
            i = s.textShadowOffsetX || 0, r = s.textShadowOffsetY || 0, o = s.textShadowBlur, a = s.textShadowColor
        }
        n.setAttribute("dx", i / l), n.setAttribute("dy", r / c), n.setAttribute("flood-color", a);
        var u = o / 2 / l + " " + o / 2 / c;
        n.setAttribute("stdDeviation", u), t.setAttribute("x", "-100%"), t.setAttribute("y", "-100%"), t.setAttribute("width", Math.ceil(o / 2 * 200) + "%"), t.setAttribute("height", Math.ceil(o / 2 * 200) + "%"), t.appendChild(n), e._shadowDom = t
    }, r.prototype.markUsed = function (e) {
        e._shadowDom && i.prototype.markUsed.call(this, e._shadowDom)
    };
    var a = r;
    e.exports = a
}, function (e, t, n) {
    /*!
 * jsoneditor.js
 *
 * @brief
 * JSONEditor is a web-based tool to view, edit, format, and validate JSON.
 * It has various modes such as a tree editor, a code editor, and a plain text
 * editor.
 *
 * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+
 *
 * @license
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy
 * of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 * Copyright (c) 2011-2020 Jos de Jong, http://jsoneditoronline.org
 *
 * @author  Jos de Jong, <wjosdejong@gmail.com>
 * @version 8.6.8
 * @date    2020-05-13
 */
    var i;
    window, i = function () {
        return function (e) {
            var t = {};

            function n(i) {
                if (t[i]) return t[i].exports;
                var r = t[i] = {i: i, l: !1, exports: {}};
                return e[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports
            }

            return n.m = e, n.c = t, n.d = function (e, t, i) {
                n.o(e, t) || Object.defineProperty(e, t, {enumerable: !0, get: i})
            }, n.r = function (e) {
                "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})
            }, n.t = function (e, t) {
                if (1 & t && (e = n(e)), 8 & t) return e;
                if (4 & t && "object" == typeof e && e && e.__esModule) return e;
                var i = Object.create(null);
                if (n.r(i), Object.defineProperty(i, "default", {
                    enumerable: !0,
                    value: e
                }), 2 & t && "string" != typeof e) for (var r in e) n.d(i, r, function (t) {
                    return e[t]
                }.bind(null, r));
                return i
            }, n.n = function (e) {
                var t = e && e.__esModule ? function () {
                    return e.default
                } : function () {
                    return e
                };
                return n.d(t, "a", t), t
            }, n.o = function (e, t) {
                return Object.prototype.hasOwnProperty.call(e, t)
            }, n.p = "", n(n.s = 36)
        }([function (e, t, n) {
            "use strict";
            n.r(t), n.d(t, "parse", (function () {
                return h
            })), n.d(t, "repair", (function () {
                return d
            })), n.d(t, "escapeUnicodeChars", (function () {
                return f
            })), n.d(t, "validate", (function () {
                return g
            })), n.d(t, "extend", (function () {
                return p
            })), n.d(t, "clear", (function () {
                return m
            })), n.d(t, "getType", (function () {
                return v
            })), n.d(t, "isUrl", (function () {
                return b
            })), n.d(t, "isArray", (function () {
                return C
            })), n.d(t, "getAbsoluteLeft", (function () {
                return w
            })), n.d(t, "getAbsoluteTop", (function () {
                return I
            })), n.d(t, "addClassName", (function () {
                return x
            })), n.d(t, "removeAllClassNames", (function () {
                return A
            })), n.d(t, "removeClassName", (function () {
                return _
            })), n.d(t, "stripFormatting", (function () {
                return S
            })), n.d(t, "setEndOfContentEditable", (function () {
                return k
            })), n.d(t, "selectContentEditable", (function () {
                return L
            })), n.d(t, "getSelection", (function () {
                return T
            })), n.d(t, "setSelection", (function () {
                return O
            })), n.d(t, "getSelectionOffset", (function () {
                return R
            })), n.d(t, "setSelectionOffset", (function () {
                return E
            })), n.d(t, "getInnerText", (function () {
                return P
            })), n.d(t, "hasParentNode", (function () {
                return M
            })), n.d(t, "getInternetExplorerVersion", (function () {
                return N
            })), n.d(t, "isFirefox", (function () {
                return D
            })), n.d(t, "addEventListener", (function () {
                return j
            })), n.d(t, "removeEventListener", (function () {
                return F
            })), n.d(t, "isChildOf", (function () {
                return H
            })), n.d(t, "parsePath", (function () {
                return W
            })), n.d(t, "stringifyPath", (function () {
                return V
            })), n.d(t, "improveSchemaError", (function () {
                return G
            })), n.d(t, "isPromise", (function () {
                return z
            })), n.d(t, "isValidValidationError", (function () {
                return Z
            })), n.d(t, "insideRect", (function () {
                return $
            })), n.d(t, "debounce", (function () {
                return K
            })), n.d(t, "textDiff", (function () {
                return X
            })), n.d(t, "getInputSelection", (function () {
                return Y
            })), n.d(t, "getIndexForPosition", (function () {
                return U
            })), n.d(t, "getPositionForPath", (function () {
                return J
            })), n.d(t, "compileJSONPointer", (function () {
                return q
            })), n.d(t, "getColorCSS", (function () {
                return Q
            })), n.d(t, "isValidColor", (function () {
                return ee
            })), n.d(t, "makeFieldTooltip", (function () {
                return te
            })), n.d(t, "get", (function () {
                return ne
            })), n.d(t, "findUniqueName", (function () {
                return ie
            })), n.d(t, "getChildPaths", (function () {
                return re
            })), n.d(t, "sort", (function () {
                return oe
            })), n.d(t, "sortObjectKeys", (function () {
                return ae
            })), n.d(t, "parseString", (function () {
                return se
            })), n.d(t, "isTimestamp", (function () {
                return le
            })), n.d(t, "formatSize", (function () {
                return ce
            })), n.d(t, "limitCharacters", (function () {
                return ue
            })), n.d(t, "isObject", (function () {
                return he
            })), n.d(t, "contains", (function () {
                return de
            })), n.d(t, "isValidationErrorChanged", (function () {
                return fe
            })), n(24);
            var i = n(11), r = n.n(i), o = n(22), a = n.n(o), s = n(33), l = n.n(s), c = n(1);

            function u(e) {
                return (u = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
                    return typeof e
                } : function (e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                })(e)
            }

            function h(e) {
                try {
                    return JSON.parse(e)
                } catch (t) {
                    throw g(e), t
                }
            }

            function d(e) {
                var t = [], n = 0, i = 0, r = !1,
                    o = e.match(/^\s*(\/\*(.|[\r\n])*?\*\/)?\s*[\da-zA-Z_$]+\s*\(([\s\S]*)\)\s*;?\s*$/);
                o && (e = o[3]);
                var a = {"\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", "\t": "\\t"},
                    s = {None: "null", True: "true", False: "false"};

                function l() {
                    return e.charAt(n)
                }

                function c() {
                    return e.charAt(n + 1)
                }

                function u(e) {
                    return " " === e || "\n" === e || "\r" === e || "\t" === e
                }

                function h() {
                    for (var e = t.length - 1; e >= 0;) {
                        var n = t[e];
                        if (!u(n)) return n;
                        e--
                    }
                    return ""
                }

                function d() {
                    for (var t = n + 1; t < e.length && u(e[t]);) t++;
                    return e[t]
                }

                function f() {
                    for (var t = n; t < e.length && u(e[t]);) t++;
                    return e[t]
                }

                function g() {
                    if ("/" === l() && "*" === c()) {
                        for (n += 2; n < e.length && ("*" !== l() || "/" !== c());) n++;
                        n += 2, "\n" === l() && n++
                    }
                }

                function p() {
                    if ("/" === l() && "/" === c()) for (n += 2; n < e.length && "\n" !== l();) n++
                }

                function m() {
                    for (var t = ""; n < e.length && u(l());) t += l(), n++;
                    return t
                }

                function v(t) {
                    var i = "";
                    i += '"', n++;
                    for (var r = l(); n < e.length && r !== t;) '"' === r && "\\" !== e.charAt(n - 1) ? i += '\\"' : r in a ? i += a[r] : "\\" === r ? (n++, "'" !== (r = l()) && (i += "\\"), i += r) : i += r, n++, r = l();
                    return r === t && (i += '"', n++), i
                }

                function y() {
                    for (var e = "", t = l(), i = /[a-zA-Z_$\d]/; i.test(t);) e += t, n++, t = l();
                    return e in s ? s[e] : -1 === ["null", "true", "false"].indexOf(e) ? '"' + e + '"' : e
                }

                function b() {
                    for (var e = l(), t = ""; /\w/.test(e);) t += e, n++, e = l();
                    if (t.length > 0 && "(" === e) {
                        var i;
                        if (n++, '"' === (e = l())) i = v(e), e = l(); else for (i = ""; ")" !== e && "" !== e;) i += e, n++, e = l();
                        return ")" === e ? (n++, i) : t + "(" + i + e
                    }
                    return "string" == typeof s[t] ? s[t] : t
                }

                function C(e) {
                    return " " === e || e >= " " && e <= " " || " " === e || " " === e || "　" === e
                }

                for (; n < e.length;) {
                    g(), p();
                    var w = l();
                    if ("{" === w && i++, "}" === w && i--, C(w)) t.push(" "), n++; else if ("'" === w) t.push(v(w)); else if ('"' === w) t.push(v('"')); else if ("`" === w) t.push(v("´")); else if ("‘" === w) t.push(v("’")); else if ("“" === w) t.push(v("”")); else if ("}" === w) {
                        t.push(w), n++;
                        var I = m();
                        g(), "{" === f() && (t.push(","), 0 === i && (r = !0)), t.push(I)
                    } else "," === w && -1 !== ["]", "}"].indexOf(d()) ? n++ : /[a-zA-Z_$]/.test(w) && -1 !== ["{", ","].indexOf(h()) ? t.push(y()) : /\w/.test(w) ? t.push(b()) : (t.push(w), n++)
                }
                return r && (t.unshift("[\n"), t.push("\n]")), t.join("")
            }

            function f(e) {
                return e.replace(/[\u007F-\uFFFF]/g, (function (e) {
                    return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
                }))
            }

            function g(e) {
                void 0 !== a.a ? a.a.parse(e) : JSON.parse(e)
            }

            function p(e, t) {
                for (var n in t) ge(t, n) && (e[n] = t[n]);
                return e
            }

            function m(e) {
                for (var t in e) ge(e, t) && delete e[t];
                return e
            }

            function v(e) {
                return null === e ? "null" : void 0 === e ? "undefined" : e instanceof Number || "number" == typeof e ? "number" : e instanceof String || "string" == typeof e ? "string" : e instanceof Boolean || "boolean" == typeof e ? "boolean" : e instanceof RegExp ? "regexp" : C(e) ? "array" : "object"
            }

            var y = /^https?:\/\/\S+$/;

            function b(e) {
                return ("string" == typeof e || e instanceof String) && y.test(e)
            }

            function C(e) {
                return "[object Array]" === Object.prototype.toString.call(e)
            }

            function w(e) {
                return e.getBoundingClientRect().left + window.pageXOffset || document.scrollLeft || 0
            }

            function I(e) {
                return e.getBoundingClientRect().top + window.pageYOffset || document.scrollTop || 0
            }

            function x(e, t) {
                var n = e.className.split(" ");
                -1 === n.indexOf(t) && (n.push(t), e.className = n.join(" "))
            }

            function A(e) {
                e.className = ""
            }

            function _(e, t) {
                var n = e.className.split(" "), i = n.indexOf(t);
                -1 !== i && (n.splice(i, 1), e.className = n.join(" "))
            }

            function S(e) {
                for (var t = e.childNodes, n = 0, i = t.length; n < i; n++) {
                    var r = t[n];
                    r.style && r.removeAttribute("style");
                    var o = r.attributes;
                    if (o) for (var a = o.length - 1; a >= 0; a--) {
                        var s = o[a];
                        !0 === s.specified && r.removeAttribute(s.name)
                    }
                    S(r)
                }
            }

            function k(e) {
                var t, n;
                document.createRange && ((t = document.createRange()).selectNodeContents(e), t.collapse(!1), (n = window.getSelection()).removeAllRanges(), n.addRange(t))
            }

            function L(e) {
                var t, n;
                e && "DIV" === e.nodeName && window.getSelection && document.createRange && ((n = document.createRange()).selectNodeContents(e), (t = window.getSelection()).removeAllRanges(), t.addRange(n))
            }

            function T() {
                if (window.getSelection) {
                    var e = window.getSelection();
                    if (e.getRangeAt && e.rangeCount) return e.getRangeAt(0)
                }
                return null
            }

            function O(e) {
                if (e && window.getSelection) {
                    var t = window.getSelection();
                    t.removeAllRanges(), t.addRange(e)
                }
            }

            function R() {
                var e = T();
                return e && "startOffset" in e && "endOffset" in e && e.startContainer && e.startContainer === e.endContainer ? {
                    startOffset: e.startOffset,
                    endOffset: e.endOffset,
                    container: e.startContainer.parentNode
                } : null
            }

            function E(e) {
                if (document.createRange && window.getSelection && window.getSelection()) {
                    var t = document.createRange();
                    e.container.firstChild || e.container.appendChild(document.createTextNode("")), t.setStart(e.container.firstChild, e.startOffset), t.setEnd(e.container.firstChild, e.endOffset), O(t)
                }
            }

            function P(e, t) {
                if (void 0 === t && (t = {
                    _text: "", flush: function () {
                        var e = this._text;
                        return this._text = "", e
                    }, set: function (e) {
                        this._text = e
                    }
                }), e.nodeValue) {
                    var n = e.nodeValue.replace(/\s*\n\s*/g, "");
                    return "" !== n ? t.flush() + n : ""
                }
                if (e.hasChildNodes()) {
                    for (var i = e.childNodes, r = "", o = 0, a = i.length; o < a; o++) {
                        var s = i[o];
                        if ("DIV" === s.nodeName || "P" === s.nodeName) {
                            var l = i[o - 1], c = l ? l.nodeName : void 0;
                            c && "DIV" !== c && "P" !== c && "BR" !== c && ("" !== r && (r += "\n"), t.flush()), r += P(s, t), t.set("\n")
                        } else "BR" === s.nodeName ? (r += t.flush(), t.set("\n")) : r += P(s, t)
                    }
                    return r
                }
                return ""
            }

            function M(e, t) {
                for (var n = e ? e.parentNode : void 0; n;) {
                    if (n === t) return !0;
                    n = n.parentNode
                }
                return !1
            }

            function N() {
                if (-1 === B) {
                    var e = -1;
                    if ("undefined" != typeof navigator && "Microsoft Internet Explorer" === navigator.appName) {
                        var t = navigator.userAgent;
                        null != new RegExp("MSIE ([0-9]+[.0-9]+)").exec(t) && (e = parseFloat(RegExp.$1))
                    }
                    B = e
                }
                return B
            }

            function D() {
                return "undefined" != typeof navigator && -1 !== navigator.userAgent.indexOf("Firefox")
            }

            var B = -1;

            function j(e, t, n, i) {
                if (e.addEventListener) return void 0 === i && (i = !1), "mousewheel" === t && D() && (t = "DOMMouseScroll"), e.addEventListener(t, n, i), n;
                if (e.attachEvent) {
                    var r = function () {
                        return n.call(e, window.event)
                    };
                    return e.attachEvent("on" + t, r), r
                }
            }

            function F(e, t, n, i) {
                e.removeEventListener ? (void 0 === i && (i = !1), "mousewheel" === t && D() && (t = "DOMMouseScroll"), e.removeEventListener(t, n, i)) : e.detachEvent && e.detachEvent("on" + t, n)
            }

            function H(e, t) {
                for (var n = e.parentNode; n;) {
                    if (n === t) return !0;
                    n = n.parentNode
                }
                return !1
            }

            function W(e) {
                var t = [], n = 0;

                function i() {
                    for (var t = ""; void 0 !== e[n] && /[\w$]/.test(e[n]);) t += e[n], n++;
                    if ("" === t) throw new Error("Invalid JSON path: property name expected at index " + n);
                    return t
                }

                function r(t) {
                    for (var i = ""; void 0 !== e[n] && e[n] !== t;) i += e[n], n++;
                    if (e[n] !== t) throw new Error("Invalid JSON path: unexpected end, character " + t + " expected");
                    return i
                }

                for (; void 0 !== e[n];) if ("." === e[n]) n++, t.push(i()); else {
                    if ("[" !== e[n]) throw new Error('Invalid JSON path: unexpected character "' + e[n] + '" at index ' + n);
                    if (n++, "'" === e[n] || '"' === e[n]) {
                        var o = e[n];
                        if (n++, t.push(r(o)), e[n] !== o) throw new Error("Invalid JSON path: closing quote ' expected at index " + n);
                        n++
                    } else {
                        var a = r("]").trim();
                        if (0 === a.length) throw new Error("Invalid JSON path: array value expected at index " + n);
                        a = "*" === a ? a : JSON.parse(a), t.push(a)
                    }
                    if ("]" !== e[n]) throw new Error("Invalid JSON path: closing bracket ] expected at index " + n);
                    n++
                }
                return t
            }

            function V(e) {
                return e.map((function (e) {
                    return "number" == typeof e ? "[" + e + "]" : "string" == typeof e && e.match(/^[A-Za-z0-9_$]+$/) ? "." + e : '["' + e + '"]'
                })).join("")
            }

            function G(e) {
                if ("enum" === e.keyword && Array.isArray(e.schema)) {
                    var t = e.schema;
                    if (t) {
                        if ((t = t.map((function (e) {
                            return JSON.stringify(e)
                        }))).length > 5) {
                            var n = ["(" + (t.length - 5) + " more...)"];
                            (t = t.slice(0, 5)).push(n)
                        }
                        e.message = "should be equal to one of: " + t.join(", ")
                    }
                }
                return "additionalProperties" === e.keyword && (e.message = "should NOT have additional property: " + e.params.additionalProperty), e
            }

            function z(e) {
                return e && "function" == typeof e.then && "function" == typeof e.catch
            }

            function Z(e) {
                return "object" === u(e) && Array.isArray(e.path) && "string" == typeof e.message
            }

            function $(e, t, n) {
                var i = void 0 !== n ? n : 0;
                return t.left - i >= e.left && t.right + i <= e.right && t.top - i >= e.top && t.bottom + i <= e.bottom
            }

            function K(e, t, n) {
                var i;
                return function () {
                    var r = this, o = arguments, a = function () {
                        i = null, n || e.apply(r, o)
                    }, s = n && !i;
                    clearTimeout(i), i = setTimeout(a, t), s && e.apply(r, o)
                }
            }

            function X(e, t) {
                for (var n = t.length, i = 0, r = e.length, o = t.length; t.charAt(i) === e.charAt(i) && i < n;) i++;
                for (; t.charAt(o - 1) === e.charAt(r - 1) && o > i && r > 0;) o--, r--;
                return {start: i, end: o}
            }

            function Y(e) {
                var t, n, i, r, o, a = 0, s = 0;
                return "number" == typeof e.selectionStart && "number" == typeof e.selectionEnd ? (a = e.selectionStart, s = e.selectionEnd) : (n = document.selection.createRange()) && n.parentElement() === e && (r = e.value.length, t = e.value.replace(/\r\n/g, "\n"), (i = e.createTextRange()).moveToBookmark(n.getBookmark()), (o = e.createTextRange()).collapse(!1), i.compareEndPoints("StartToEnd", o) > -1 ? a = s = r : (a = -i.moveStart("character", -r), a += t.slice(0, a).split("\n").length - 1, i.compareEndPoints("EndToEnd", o) > -1 ? s = r : (s = -i.moveEnd("character", -r), s += t.slice(0, s).split("\n").length - 1))), {
                    startIndex: a,
                    endIndex: s,
                    start: l(a),
                    end: l(s)
                };

                function l(t) {
                    var n = e.value.substring(0, t);
                    return {row: (n.match(/\n/g) || []).length + 1, column: n.length - n.lastIndexOf("\n")}
                }
            }

            function U(e, t, n) {
                var i = e.value || "";
                if (t > 0 && n > 0) {
                    var r = i.split("\n", t);
                    t = Math.min(r.length, t), n = Math.min(r[t - 1].length, n - 1);
                    var o = 1 === t ? n : n + 1;
                    return r.slice(0, t - 1).join("\n").length + o
                }
                return -1
            }

            function J(e, t) {
                var n, i = [];
                if (!t || !t.length) return i;
                try {
                    n = l.a.parse(e)
                } catch (e) {
                    return i
                }
                return t.forEach((function (e) {
                    var t = q(W(e)), r = n.pointers[t];
                    r && i.push({
                        path: e,
                        line: r.key ? r.key.line : r.value ? r.value.line : 0,
                        column: r.key ? r.key.column : r.value ? r.value.column : 0
                    })
                })), i
            }

            function q(e) {
                return e.map((function (e) {
                    return "/" + String(e).replace(/~/g, "~0").replace(/\//g, "~1")
                })).join("")
            }

            function Q(e) {
                var t = document.createElement("div");
                return t.style.color = e, t.style.color.split(/\s+/).join("").toLowerCase() || null
            }

            function ee(e) {
                return !!Q(e)
            }

            function te(e, t) {
                if (!e) return "";
                var n = "";
                return e.title && (n += e.title), e.description && (n.length > 0 && (n += "\n"), n += e.description), e.default && (n.length > 0 && (n += "\n\n"), n += Object(c.c)("default", void 0, t) + "\n", n += JSON.stringify(e.default, null, 2)), Array.isArray(e.examples) && e.examples.length > 0 && (n.length > 0 && (n += "\n\n"), n += Object(c.c)("examples", void 0, t) + "\n", e.examples.forEach((function (t, i) {
                    n += JSON.stringify(t, null, 2), i !== e.examples.length - 1 && (n += "\n")
                }))), n
            }

            function ne(e, t) {
                for (var n = e, i = 0; i < t.length && null != n; i++) n = n[t[i]];
                return n
            }

            function ie(e, t) {
                for (var n = e.replace(/ \(copy( \d+)?\)$/, ""), i = n, r = 1; -1 !== t.indexOf(i);) i = n + " (copy" + (r > 1 ? " " + r : "") + ")", r++;
                return i
            }

            function re(e, t) {
                var n = {};

                function i(e, t, n, r) {
                    (!Array.isArray(e) && !he(e) || r) && (t[n || ""] = !0), he(e) && Object.keys(e).forEach((function (o) {
                        i(e[o], t, n + "." + o, r)
                    }))
                }

                if (Array.isArray(e)) for (var r = Math.min(e.length, 1e4), o = 0; o < r; o++) i(e[o], n, "", t); else n[""] = !0;
                return Object.keys(n).sort()
            }

            function oe(e, t, n) {
                var i = t && "." !== t ? W(t) : [], r = "desc" === n ? -1 : 1, o = e.slice();
                return o.sort((function (e, t) {
                    var n = ne(e, i), o = ne(t, i);
                    return r * (n > o ? 1 : n < o ? -1 : 0)
                })), o
            }

            function ae(e, t) {
                var n = "desc" === t ? -1 : 1, i = Object.keys(e).sort((function (e, t) {
                    return n * r()(e, t)
                })), o = {};
                return i.forEach((function (t) {
                    o[t] = e[t]
                })), o
            }

            function se(e) {
                if ("" === e) return "";
                var t = e.toLowerCase();
                if ("null" === t) return null;
                if ("true" === t) return !0;
                if ("false" === t) return !1;
                var n = Number(e), i = parseFloat(e);
                return isNaN(n) || isNaN(i) ? e : n
            }

            function le(e, t) {
                return "number" == typeof t && t > 9466848e5 && isFinite(t) && Math.floor(t) === t && !isNaN(new Date(t).valueOf())
            }

            function ce(e) {
                if (e < 900) return e.toFixed() + " B";
                var t = e / 1e3;
                if (t < 900) return t.toFixed(1) + " KB";
                var n = t / 1e3;
                if (n < 900) return n.toFixed(1) + " MB";
                var i = n / 1e3;
                return i < 900 ? i.toFixed(1) + " GB" : (i / 1e3).toFixed(1) + " TB"
            }

            function ue(e, t) {
                return e.length <= t ? e : e.slice(0, t) + "..."
            }

            function he(e) {
                return "object" === u(e) && null !== e && !Array.isArray(e)
            }

            function de(e, t) {
                return -1 !== e.indexOf(t)
            }

            function fe(e, t) {
                if (!t && !e) return !1;
                if (t && !e || !t && e) return !0;
                if (t.length !== e.length) return !0;
                for (var n = function (n) {
                    if (!("error" === e[n].type ? t.find((function (t) {
                        return t.line === e[n].line
                    })) : t.find((function (t) {
                        return t.dataPath === e[n].dataPath && t.schemaPath === e[n].schemaPath
                    })))) return {v: !0}
                }, i = 0; i < e.length; ++i) {
                    var r = n(i);
                    if ("object" === u(r)) return r.v
                }
                return !1
            }

            function ge(e, t) {
                return Object.prototype.hasOwnProperty.call(e, t)
            }
        }, function (e, t, n) {
            "use strict";
            n.d(t, "a", (function () {
                return s
            })), n.d(t, "b", (function () {
                return l
            })), n.d(t, "c", (function () {
                return c
            })), n(24);
            var i = ["en", "pt-BR", "zh-CN", "tr", "ja", "fr-FR"], r = {
                    en: {
                        array: "Array",
                        auto: "Auto",
                        appendText: "Append",
                        appendTitle: "Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",
                        appendSubmenuTitle: "Select the type of the field to be appended",
                        appendTitleAuto: "Append a new field with type 'auto' (Ctrl+Shift+Ins)",
                        ascending: "Ascending",
                        ascendingTitle: "Sort the childs of this ${type} in ascending order",
                        actionsMenu: "Click to open the actions menu (Ctrl+M)",
                        cannotParseFieldError: "Cannot parse field into JSON",
                        cannotParseValueError: "Cannot parse value into JSON",
                        collapseAll: "Collapse all fields",
                        compactTitle: "Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)",
                        descending: "Descending",
                        descendingTitle: "Sort the childs of this ${type} in descending order",
                        drag: "Drag to move this field (Alt+Shift+Arrows)",
                        duplicateKey: "duplicate key",
                        duplicateText: "Duplicate",
                        duplicateTitle: "Duplicate selected fields (Ctrl+D)",
                        duplicateField: "Duplicate this field (Ctrl+D)",
                        duplicateFieldError: "Duplicate field name",
                        empty: "empty",
                        expandAll: "Expand all fields",
                        expandTitle: "Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs.",
                        formatTitle: "Format JSON data, with proper indentation and line feeds (Ctrl+\\)",
                        insert: "Insert",
                        insertTitle: "Insert a new field with type 'auto' before this field (Ctrl+Ins)",
                        insertSub: "Select the type of the field to be inserted",
                        object: "Object",
                        ok: "Ok",
                        redo: "Redo (Ctrl+Shift+Z)",
                        removeText: "Remove",
                        removeTitle: "Remove selected fields (Ctrl+Del)",
                        removeField: "Remove this field (Ctrl+Del)",
                        repairTitle: "Repair JSON: fix quotes and escape characters, remove comments and JSONP notation, turn JavaScript objects into JSON.",
                        searchTitle: "Search fields and values",
                        searchNextResultTitle: "Next result (Enter)",
                        searchPreviousResultTitle: "Previous result (Shift + Enter)",
                        selectNode: "Select a node...",
                        showAll: "show all",
                        showMore: "show more",
                        showMoreStatus: "displaying ${visibleChilds} of ${totalChilds} items.",
                        sort: "Sort",
                        sortTitle: "Sort the childs of this ${type}",
                        sortTitleShort: "Sort contents",
                        sortFieldLabel: "Field:",
                        sortDirectionLabel: "Direction:",
                        sortFieldTitle: "Select the nested field by which to sort the array or object",
                        sortAscending: "Ascending",
                        sortAscendingTitle: "Sort the selected field in ascending order",
                        sortDescending: "Descending",
                        sortDescendingTitle: "Sort the selected field in descending order",
                        string: "String",
                        transform: "Transform",
                        transformTitle: "Filter, sort, or transform the childs of this ${type}",
                        transformTitleShort: "Filter, sort, or transform contents",
                        extract: "Extract",
                        extractTitle: "Extract this ${type}",
                        transformQueryTitle: "Enter a JMESPath query",
                        transformWizardLabel: "Wizard",
                        transformWizardFilter: "Filter",
                        transformWizardSortBy: "Sort by",
                        transformWizardSelectFields: "Select fields",
                        transformQueryLabel: "Query",
                        transformPreviewLabel: "Preview",
                        type: "Type",
                        typeTitle: "Change the type of this field",
                        openUrl: "Ctrl+Click or Ctrl+Enter to open url in new window",
                        undo: "Undo last action (Ctrl+Z)",
                        validationCannotMove: "Cannot move a field into a child of itself",
                        autoType: 'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',
                        objectType: 'Field type "object". An object contains an unordered set of key/value pairs.',
                        arrayType: 'Field type "array". An array contains an ordered collection of values.',
                        stringType: 'Field type "string". Field type is not determined from the value, but always returned as string.',
                        modeEditorTitle: "Switch Editor Mode",
                        modeCodeText: "Code",
                        modeCodeTitle: "Switch to code highlighter",
                        modeFormText: "Form",
                        modeFormTitle: "Switch to form editor",
                        modeTextText: "Text",
                        modeTextTitle: "Switch to plain text editor",
                        modeTreeText: "Tree",
                        modeTreeTitle: "Switch to tree editor",
                        modeViewText: "View",
                        modeViewTitle: "Switch to tree view",
                        modePreviewText: "Preview",
                        modePreviewTitle: "Switch to preview mode",
                        examples: "Examples",
                        default: "Default"
                    }, "zh-CN": {
                        array: "数组",
                        auto: "自动",
                        appendText: "追加",
                        appendTitle: "在此字段后追加一个类型为“auto”的新字段 (Ctrl+Shift+Ins)",
                        appendSubmenuTitle: "选择要追加的字段类型",
                        appendTitleAuto: "追加类型为“auto”的新字段 (Ctrl+Shift+Ins)",
                        ascending: "升序",
                        ascendingTitle: "升序排列${type}的子节点",
                        actionsMenu: "点击打开动作菜单(Ctrl+M)",
                        cannotParseFieldError: "无法将字段解析为JSON",
                        cannotParseValueError: "无法将值解析为JSON",
                        collapseAll: "缩进所有字段",
                        compactTitle: "压缩JSON数据，删除所有空格 (Ctrl+Shift+\\)",
                        descending: "降序",
                        descendingTitle: "降序排列${type}的子节点",
                        drag: "拖拽移动该节点(Alt+Shift+Arrows)",
                        duplicateKey: "重复键",
                        duplicateText: "复制",
                        duplicateTitle: "复制选中字段(Ctrl+D)",
                        duplicateField: "复制该字段(Ctrl+D)",
                        duplicateFieldError: "重复的字段名称",
                        empty: "清空",
                        expandAll: "展开所有字段",
                        expandTitle: "点击 展开/收缩 该字段(Ctrl+E). \nCtrl+Click 展开/收缩 包含所有子节点.",
                        formatTitle: "使用适当的缩进和换行符格式化JSON数据 (Ctrl+\\)",
                        insert: "插入",
                        insertTitle: "在此字段前插入类型为“auto”的新字段 (Ctrl+Ins)",
                        insertSub: "选择要插入的字段类型",
                        object: "对象",
                        ok: "Ok",
                        redo: "重做 (Ctrl+Shift+Z)",
                        removeText: "移除",
                        removeTitle: "移除选中字段 (Ctrl+Del)",
                        removeField: "移除该字段 (Ctrl+Del)",
                        repairTitle: "修复JSON：修复引号和转义符，删除注释和JSONP表示法，将JavaScript对象转换为JSON。",
                        selectNode: "选择一个节点...",
                        showAll: "展示全部",
                        showMore: "展示更多",
                        showMoreStatus: "显示${totalChilds}的${visibleChilds}项目.",
                        sort: "排序",
                        sortTitle: "排序${type}的子节点",
                        sortTitleShort: "内容排序",
                        sortFieldLabel: "字段：",
                        sortDirectionLabel: "方向：",
                        sortFieldTitle: "选择用于对数组或对象排序的嵌套字段",
                        sortAscending: "升序排序",
                        sortAscendingTitle: "按照该字段升序排序",
                        sortDescending: "降序排序",
                        sortDescendingTitle: "按照该字段降序排序",
                        string: "字符串",
                        transform: "变换",
                        transformTitle: "筛选，排序，或者转换${type}的子节点",
                        transformTitleShort: "筛选，排序，或者转换内容",
                        extract: "提取",
                        extractTitle: "提取这个 ${type}",
                        transformQueryTitle: "输入JMESPath查询",
                        transformWizardLabel: "向导",
                        transformWizardFilter: "筛选",
                        transformWizardSortBy: "排序",
                        transformWizardSelectFields: "选择字段",
                        transformQueryLabel: "查询",
                        transformPreviewLabel: "预览",
                        type: "类型",
                        typeTitle: "更改字段类型",
                        openUrl: "Ctrl+Click 或者 Ctrl+Enter 在新窗口打开链接",
                        undo: "撤销上次动作 (Ctrl+Z)",
                        validationCannotMove: "无法将字段移入其子节点",
                        autoType: '字段类型 "auto". 字段类型由值自动确定 可以为 string，number，boolean，或者 null.',
                        objectType: '字段类型 "object". 对象包含一组无序的键/值对.',
                        arrayType: '字段类型 "array". 数组包含值的有序集合.',
                        stringType: '字段类型 "string". 字段类型由值自动确定，但始终作为字符串返回.',
                        modeCodeText: "代码",
                        modeCodeTitle: "切换至代码高亮",
                        modeFormText: "表单",
                        modeFormTitle: "切换至表单编辑",
                        modeTextText: "文本",
                        modeTextTitle: "切换至文本编辑",
                        modeTreeText: "树",
                        modeTreeTitle: "切换至树编辑",
                        modeViewText: "视图",
                        modeViewTitle: "切换至树视图",
                        modePreviewText: "预览",
                        modePreviewTitle: "切换至预览模式",
                        examples: "例子",
                        default: "缺省"
                    }, "pt-BR": {
                        array: "Lista",
                        auto: "Automatico",
                        appendText: "Adicionar",
                        appendTitle: "Adicionar novo campo com tipo 'auto' depois deste campo (Ctrl+Shift+Ins)",
                        appendSubmenuTitle: "Selecione o tipo do campo a ser adicionado",
                        appendTitleAuto: "Adicionar novo campo com tipo 'auto' (Ctrl+Shift+Ins)",
                        ascending: "Ascendente",
                        ascendingTitle: "Organizar filhor do tipo ${type} em crescente",
                        actionsMenu: "Clique para abrir o menu de ações (Ctrl+M)",
                        cannotParseFieldError: "Não é possível analisar o campo no JSON",
                        cannotParseValueError: "Não é possível analisar o valor em JSON",
                        collapseAll: "Fechar todos campos",
                        compactTitle: "Dados JSON compactos, remova todos os espaços em branco (Ctrl+Shift+\\)",
                        descending: "Descendente",
                        descendingTitle: "Organizar o filhos do tipo ${type} em decrescente",
                        duplicateKey: "chave duplicada",
                        drag: "Arraste para mover este campo (Alt+Shift+Arrows)",
                        duplicateText: "Duplicar",
                        duplicateTitle: "Duplicar campos selecionados (Ctrl+D)",
                        duplicateField: "Duplicar este campo (Ctrl+D)",
                        duplicateFieldError: "Nome do campo duplicado",
                        empty: "vazio",
                        expandAll: "Expandir todos campos",
                        expandTitle: "Clique para expandir/encolher este campo (Ctrl+E). \nCtrl+Click para expandir/encolher incluindo todos os filhos.",
                        formatTitle: "Formate dados JSON, com recuo e feeds de linha adequados (Ctrl+\\)",
                        insert: "Inserir",
                        insertTitle: "Inserir um novo campo do tipo 'auto' antes deste campo (Ctrl+Ins)",
                        insertSub: "Selecionar o tipo de campo a ser inserido",
                        object: "Objeto",
                        ok: "Ok",
                        redo: "Refazer (Ctrl+Shift+Z)",
                        removeText: "Remover",
                        removeTitle: "Remover campos selecionados (Ctrl+Del)",
                        removeField: "Remover este campo (Ctrl+Del)",
                        repairTitle: "Repare JSON: corrija aspas e caracteres de escape, remova comentários e notação JSONP, transforme objetos JavaScript em JSON.",
                        selectNode: "Selecione um nódulo...",
                        showAll: "mostrar todos",
                        showMore: "mostrar mais",
                        showMoreStatus: "exibindo ${visibleChilds} de ${totalChilds} itens.",
                        sort: "Organizar",
                        sortTitle: "Organizar os filhos deste ${type}",
                        sortTitleShort: "Organizar os filhos",
                        sortFieldLabel: "Campo:",
                        sortDirectionLabel: "Direção:",
                        sortFieldTitle: "Selecione um campo filho pelo qual ordenar o array ou objeto",
                        sortAscending: "Ascendente",
                        sortAscendingTitle: "Ordenar o campo selecionado por ordem ascendente",
                        sortDescending: "Descendente",
                        sortDescendingTitle: "Ordenar o campo selecionado por ordem descendente",
                        string: "Texto",
                        transform: "Transformar",
                        transformTitle: "Filtrar, ordenar ou transformar os filhos deste ${type}",
                        transformTitleShort: "Filtrar, ordenar ou transformar conteúdos",
                        transformQueryTitle: "Insira uma expressão JMESPath",
                        transformWizardLabel: "Assistente",
                        transformWizardFilter: "Filtro",
                        transformWizardSortBy: "Ordenar por",
                        transformWizardSelectFields: "Selecionar campos",
                        transformQueryLabel: "Expressão",
                        transformPreviewLabel: "Visualizar",
                        type: "Tipo",
                        typeTitle: "Mudar o tipo deste campo",
                        openUrl: "Ctrl+Click ou Ctrl+Enter para abrir link em nova janela",
                        undo: "Desfazer último ação (Ctrl+Z)",
                        validationCannotMove: "Não pode mover um campo como filho dele mesmo",
                        autoType: 'Campo do tipo "auto". O tipo do campo é determinao automaticamente a partir do seu valor e pode ser texto, número, verdade/falso ou nulo.',
                        objectType: 'Campo do tipo "objeto". Um objeto contém uma lista de pares com chave e valor.',
                        arrayType: 'Campo do tipo "lista". Uma lista contem uma coleção de valores ordenados.',
                        stringType: 'Campo do tipo "string". Campo do tipo nao é determinado através do seu valor, mas sempre retornara um texto.',
                        examples: "Exemplos",
                        default: "Revelia"
                    }, tr: {
                        array: "Dizin",
                        auto: "Otomatik",
                        appendText: "Ekle",
                        appendTitle: "Bu alanın altına 'otomatik' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)",
                        appendSubmenuTitle: "Eklenecek alanın tipini seç",
                        appendTitleAuto: "'Otomatik' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)",
                        ascending: "Artan",
                        ascendingTitle: "${type}'ın alt tiplerini artan düzende sırala",
                        actionsMenu: "Aksiyon menüsünü açmak için tıklayın (Ctrl+M)",
                        collapseAll: "Tüm alanları kapat",
                        descending: "Azalan",
                        descendingTitle: "${type}'ın alt tiplerini azalan düzende sırala",
                        drag: "Bu alanı taşımak için sürükleyin (Alt+Shift+Arrows)",
                        duplicateKey: "Var olan anahtar",
                        duplicateText: "Aşağıya kopyala",
                        duplicateTitle: "Seçili alanlardan bir daha oluştur (Ctrl+D)",
                        duplicateField: "Bu alandan bir daha oluştur (Ctrl+D)",
                        duplicateFieldError: "Duplicate field name",
                        cannotParseFieldError: "Alan JSON'a ayrıştırılamıyor",
                        cannotParseValueError: "JSON'a değer ayrıştırılamıyor",
                        empty: "boş",
                        expandAll: "Tüm alanları aç",
                        expandTitle: "Bu alanı açmak/kapatmak için tıkla (Ctrl+E). \nAlt alanlarda dahil tüm alanları açmak için Ctrl+Click ",
                        insert: "Ekle",
                        insertTitle: "Bu alanın üstüne 'otomatik' tipinde yeni bir alan ekle (Ctrl+Ins)",
                        insertSub: "Araya eklenecek alanın tipini seç",
                        object: "Nesne",
                        ok: "Tamam",
                        redo: "Yeniden yap (Ctrl+Shift+Z)",
                        removeText: "Kaldır",
                        removeTitle: "Seçilen alanları kaldır (Ctrl+Del)",
                        removeField: "Bu alanı kaldır (Ctrl+Del)",
                        selectNode: "Bir nesne seç...",
                        showAll: "tümünü göster",
                        showMore: "daha fazla göster",
                        showMoreStatus: "${totalChilds} alanın ${visibleChilds} alt alanları gösteriliyor",
                        sort: "Sırala",
                        sortTitle: "${type}'ın alt alanlarını sırala",
                        sortTitleShort: "İçerikleri sırala",
                        sortFieldLabel: "Alan:",
                        sortDirectionLabel: "Yön:",
                        sortFieldTitle: "Diziyi veya nesneyi sıralamak için iç içe geçmiş alanı seçin",
                        sortAscending: "Artan",
                        sortAscendingTitle: "Seçili alanı artan düzende sırala",
                        sortDescending: "Azalan",
                        sortDescendingTitle: "Seçili alanı azalan düzende sırala",
                        string: "Karakter Dizisi",
                        transform: "Dönüştür",
                        transformTitle: "${type}'ın alt alanlarını filtrele, sırala veya dönüştür",
                        transformTitleShort: "İçerikleri filterele, sırala veya dönüştür",
                        transformQueryTitle: "JMESPath sorgusu gir",
                        transformWizardLabel: "Sihirbaz",
                        transformWizardFilter: "Filtre",
                        transformWizardSortBy: "Sırala",
                        transformWizardSelectFields: "Alanları seç",
                        transformQueryLabel: "Sorgu",
                        transformPreviewLabel: "Önizleme",
                        type: "Tip",
                        typeTitle: "Bu alanın tipini değiştir",
                        openUrl: "URL'i yeni bir pencerede açmak için Ctrl+Click veya Ctrl+Enter",
                        undo: "Son değişikliği geri al (Ctrl+Z)",
                        validationCannotMove: "Alt alan olarak taşınamıyor",
                        autoType: 'Alan tipi "otomatik". Alan türü otomatik olarak değerden belirlenirve bir dize, sayı, boolean veya null olabilir.',
                        objectType: 'Alan tipi "nesne". Bir nesne, sıralanmamış bir anahtar / değer çifti kümesi içerir.',
                        arrayType: 'Alan tipi "dizi". Bir dizi, düzenli değerler koleksiyonu içerir.',
                        stringType: 'Alan tipi "karakter dizisi". Alan türü değerden belirlenmez,ancak her zaman karakter dizisi olarak döndürülür.',
                        modeCodeText: "Kod",
                        modeCodeTitle: "Kod vurgulayıcıya geç",
                        modeFormText: "Form",
                        modeFormTitle: "Form düzenleyiciye geç",
                        modeTextText: "Metin",
                        modeTextTitle: "Düz metin düzenleyiciye geç",
                        modeTreeText: "Ağaç",
                        modeTreeTitle: "Ağaç düzenleyiciye geç",
                        modeViewText: "Görünüm",
                        modeViewTitle: "Ağaç görünümüne geç",
                        examples: "Örnekler",
                        default: "Varsayılan"
                    }, ja: {
                        array: "配列",
                        auto: "オート",
                        appendText: "追加",
                        appendTitle: '次のフィールドに"オート"のフィールドを追加 (Ctrl+Shift+Ins)',
                        appendSubmenuTitle: "追加するフィールドの型を選択してください",
                        appendTitleAuto: '"オート"のフィールドを追加 (Ctrl+Shift+Ins)',
                        ascending: "昇順",
                        ascendingTitle: "${type}の子要素を昇順に並べ替え",
                        actionsMenu: "クリックしてアクションメニューを開く (Ctrl+M)",
                        collapseAll: "すべてを折りたたむ",
                        descending: "降順",
                        descendingTitle: "${type}の子要素を降順に並べ替え",
                        drag: "ドラッグして選択中のフィールドを移動 (Alt+Shift+Arrows)",
                        duplicateKey: "複製キー",
                        duplicateText: "複製",
                        duplicateTitle: "選択中のフィールドを複製 (Ctrl+D)",
                        duplicateField: "選択中のフィールドを複製 (Ctrl+D)",
                        duplicateFieldError: "フィールド名が重複しています",
                        cannotParseFieldError: "JSONのフィールドを解析できません",
                        cannotParseValueError: "JSONの値を解析できません",
                        empty: "空",
                        expandAll: "すべてを展開",
                        expandTitle: "クリックしてフィールドを展開/折りたたむ (Ctrl+E). \nCtrl+Click ですべての子要素を展開/折りたたむ",
                        insert: "挿入",
                        insertTitle: "選択中のフィールドの前に新しいフィールドを挿入 (Ctrl+Ins)",
                        insertSub: "挿入するフィールドの型を選択",
                        object: "オブジェクト",
                        ok: "実行",
                        redo: "やり直す (Ctrl+Shift+Z)",
                        removeText: "削除",
                        removeTitle: "選択中のフィールドを削除 (Ctrl+Del)",
                        removeField: "選択中のフィールドを削除 (Ctrl+Del)",
                        selectNode: "ノードを選択...",
                        showAll: "すべてを表示",
                        showMore: "もっと見る",
                        showMoreStatus: "${totalChilds}個のアイテムのうち ${visibleChilds}個を表示しています。",
                        sort: "並べ替え",
                        sortTitle: "${type}の子要素を並べ替え",
                        sortTitleShort: "並べ替え",
                        sortFieldLabel: "フィールド:",
                        sortDirectionLabel: "順序:",
                        sortFieldTitle: "配列またはオブジェクトを並び替えるためのフィールドを選択",
                        sortAscending: "昇順",
                        sortAscendingTitle: "選択中のフィールドを昇順に並び替え",
                        sortDescending: "降順",
                        sortDescendingTitle: "選択中のフィールドを降順に並び替え",
                        string: "文字列",
                        transform: "変換",
                        transformTitle: "${type}の子要素をフィルター・並び替え・変換する",
                        transformTitleShort: "内容をフィルター・並び替え・変換する",
                        extract: "抽出",
                        extractTitle: "${type}を抽出",
                        transformQueryTitle: "JMESPathクエリを入力",
                        transformWizardLabel: "ウィザード",
                        transformWizardFilter: "フィルター",
                        transformWizardSortBy: "並び替え",
                        transformWizardSelectFields: "フィールドを選択",
                        transformQueryLabel: "クエリ",
                        transformPreviewLabel: "プレビュー",
                        type: "型",
                        typeTitle: "選択中のフィールドの型を変更",
                        openUrl: "Ctrl+Click または Ctrl+Enter で 新規ウィンドウでURLを開く",
                        undo: "元に戻す (Ctrl+Z)",
                        validationCannotMove: "子要素に移動できません ",
                        autoType: "オート： フィールドの型は値から自動的に決定されます。 (文字列・数値・ブール・null)",
                        objectType: "オブジェクト： オブジェクトは順序が決まっていないキーと値のペア組み合わせです。",
                        arrayType: "配列： 配列は順序が決まっている値の集合体です。",
                        stringType: "文字列： フィールド型は値から決定されませんが、常に文字列として返されます。",
                        modeCodeText: "コードモード",
                        modeCodeTitle: "ハイライトモードに切り替え",
                        modeFormText: "フォームモード",
                        modeFormTitle: "フォームモードに切り替え",
                        modeTextText: "テキストモード",
                        modeTextTitle: "テキストモードに切り替え",
                        modeTreeText: "ツリーモード",
                        modeTreeTitle: "ツリーモードに切り替え",
                        modeViewText: "ビューモード",
                        modeViewTitle: "ビューモードに切り替え",
                        modePreviewText: "プレビュー",
                        modePreviewTitle: "プレビューに切り替え",
                        examples: "例",
                        default: "デフォルト"
                    }, "fr-FR": {
                        array: "Liste",
                        auto: "Auto",
                        appendText: "Ajouter",
                        appendTitle: "Ajouter un champ de type 'auto' après ce champ (Ctrl+Shift+Ins)",
                        appendSubmenuTitle: "Sélectionner le type du champ à ajouter",
                        appendTitleAuto: "Ajouter un champ de type 'auto' (Ctrl+Shift+Ins)",
                        ascending: "Ascendant",
                        ascendingTitle: "Trier les enfants de ce ${type} par ordre ascendant",
                        actionsMenu: "Ouvrir le menu des actions (Ctrl+M)",
                        collapseAll: "Regrouper",
                        descending: "Descendant",
                        descendingTitle: "Trier les enfants de ce ${type} par ordre descendant",
                        drag: "Déplacer (Alt+Shift+Arrows)",
                        duplicateKey: "Dupliquer la clé",
                        duplicateText: "Dupliquer",
                        duplicateTitle: "Dupliquer les champs sélectionnés (Ctrl+D)",
                        duplicateField: "Dupliquer ce champ (Ctrl+D)",
                        duplicateFieldError: "Dupliquer le nom de champ",
                        cannotParseFieldError: "Champ impossible à parser en JSON",
                        cannotParseValueError: "Valeur impossible à parser en JSON",
                        empty: "vide",
                        expandAll: "Étendre",
                        expandTitle: "Étendre/regrouper ce champ (Ctrl+E). \nCtrl+Click pour étendre/regrouper avec tous les champs.",
                        insert: "Insérer",
                        insertTitle: "Insérer un champ de type 'auto' avant ce champ (Ctrl+Ins)",
                        insertSub: "Sélectionner le type de champ à insérer",
                        object: "Objet",
                        ok: "Ok",
                        redo: "Rejouer (Ctrl+Shift+Z)",
                        removeText: "Supprimer",
                        removeTitle: "Supprimer les champs sélectionnés (Ctrl+Del)",
                        removeField: "Supprimer ce champ (Ctrl+Del)",
                        searchTitle: "Rechercher champs et valeurs",
                        searchNextResultTitle: "Résultat suivant (Enter)",
                        searchPreviousResultTitle: "Résultat précédent (Shift + Enter)",
                        selectNode: "Sélectionner un nœud...",
                        showAll: "voir tout",
                        showMore: "voir plus",
                        showMoreStatus: "${visibleChilds} éléments affichés de ${totalChilds}.",
                        sort: "Trier",
                        sortTitle: "Trier les champs de ce ${type}",
                        sortTitleShort: "Trier",
                        sortFieldLabel: "Champ:",
                        sortDirectionLabel: "Direction:",
                        sortFieldTitle: "Sélectionner les champs permettant de trier les listes et objet",
                        sortAscending: "Ascendant",
                        sortAscendingTitle: "Trier les champs sélectionnés par ordre ascendant",
                        sortDescending: "Descendant",
                        sortDescendingTitle: "Trier les champs sélectionnés par ordre descendant",
                        string: "Chaîne",
                        transform: "Transformer",
                        transformTitle: "Filtrer, trier, or transformer les enfants de ce ${type}",
                        transformTitleShort: "Filtrer, trier ou transformer le contenu",
                        extract: "Extraire",
                        extractTitle: "Extraire ce ${type}",
                        transformQueryTitle: "Saisir une requête JMESPath",
                        transformWizardLabel: "Assistant",
                        transformWizardFilter: "Filtrer",
                        transformWizardSortBy: "Trier par",
                        transformWizardSelectFields: "Sélectionner les champs",
                        transformQueryLabel: "Requête",
                        transformPreviewLabel: "Prévisualisation",
                        type: "Type",
                        typeTitle: "Changer le type de ce champ",
                        openUrl: "Ctrl+Click ou Ctrl+Enter pour ouvrir l'url dans une autre fenêtre",
                        undo: "Annuler la dernière action (Ctrl+Z)",
                        validationCannotMove: "Cannot move a field into a child of itself",
                        autoType: 'Champe de type "auto". Ce type de champ est automatiquement déterminé en fonction de la valeur et peut être de type "chaîne", "nombre", "booléen" ou null.',
                        objectType: 'Champ de type "objet". Un objet contient un ensemble non ordonné de paires clé/valeur.',
                        arrayType: 'Champ de type "liste". Une liste contient une collection ordonnée de valeurs.',
                        stringType: 'Champ de type "chaîne". Ce type de champ n\'est pas déterminé en fonction de la valeur, mais retourne systématiquement une chaîne de caractères.',
                        modeEditorTitle: "Changer mode d'édition",
                        modeCodeText: "Code",
                        modeCodeTitle: "Activer surlignage code",
                        modeFormText: "Formulaire",
                        modeFormTitle: "Activer formulaire",
                        modeTextText: "Texte",
                        modeTextTitle: "Activer éditeur texte",
                        modeTreeText: "Arbre",
                        modeTreeTitle: "Activer éditeur arbre",
                        modeViewText: "Lecture seule",
                        modeViewTitle: "Activer vue arbre",
                        modePreviewText: "Prévisualisation",
                        modePreviewTitle: "Activer mode prévisualiser",
                        examples: "Exemples",
                        default: "Défaut"
                    }
                }, o = "undefined" != typeof navigator ? navigator.language || navigator.userLanguage : void 0,
                a = i.find((function (e) {
                    return e === o
                })) || "en";

            function s(e) {
                if (e) {
                    var t = i.find((function (t) {
                        return t === e
                    }));
                    t ? a = t : console.error("Language not found")
                }
            }

            function l(e) {
                if (e) {
                    var t = function (t) {
                        i.find((function (e) {
                            return e === t
                        })) || i.push(t), r[t] = Object.assign({}, r.en, r[t], e[t])
                    };
                    for (var n in e) t(n)
                }
            }

            function c(e, t, n) {
                n || (n = a);
                var i = r[n][e] || r.en[e] || e;
                if (t) for (var o in t) i = i.replace("${" + o + "}", t[o]);
                return i
            }
        }, function (e, t, n) {
            "use strict";
            n.d(t, "a", (function () {
                return i
            })), n.d(t, "d", (function () {
                return r
            })), n.d(t, "b", (function () {
                return o
            })), n.d(t, "c", (function () {
                return a
            }));
            var i = document.body, r = 10485760, o = 2e4, a = 2147483648
        }, function (e, t, n) {
            "use strict";
            n.d(t, "a", (function () {
                return s
            }));
            var i = n(12), r = n(0), o = n(1);

            function a(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var s = function () {
                function e(t, n) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.dom = {};
                    var i = this, r = this.dom;
                    this.anchor = void 0, this.items = t, this.eventListeners = {}, this.selection = void 0, this.onClose = n ? n.close : void 0;
                    var a = document.createElement("div");
                    a.className = "jsoneditor-contextmenu-root", r.root = a;
                    var s = document.createElement("div");
                    s.className = "jsoneditor-contextmenu", r.menu = s, a.appendChild(s);
                    var l = document.createElement("ul");
                    l.className = "jsoneditor-menu", s.appendChild(l), r.list = l, r.items = [];
                    var c = document.createElement("button");
                    c.type = "button", r.focusButton = c;
                    var u = document.createElement("li");
                    u.style.overflow = "hidden", u.style.height = "0", u.appendChild(c), l.appendChild(u), function e(t, n, r) {
                        r.forEach((function (r) {
                            if ("separator" === r.type) {
                                var a = document.createElement("div");
                                a.className = "jsoneditor-separator";
                                var s = document.createElement("li");
                                s.appendChild(a), t.appendChild(s)
                            } else {
                                var l = {}, c = document.createElement("li");
                                t.appendChild(c);
                                var u = document.createElement("button");
                                if (u.type = "button", u.className = r.className, l.button = u, r.title && (u.title = r.title), r.click && (u.onclick = function (e) {
                                    e.preventDefault(), i.hide(), r.click()
                                }), c.appendChild(u), r.submenu) {
                                    var h = document.createElement("div");
                                    h.className = "jsoneditor-icon", u.appendChild(h);
                                    var d, f = document.createElement("div");
                                    if (f.className = "jsoneditor-text" + (r.click ? "" : " jsoneditor-right-margin"), f.appendChild(document.createTextNode(r.text)), u.appendChild(f), r.click) {
                                        u.className += " jsoneditor-default";
                                        var g = document.createElement("button");
                                        g.type = "button", l.buttonExpand = g, g.className = "jsoneditor-expand", g.innerHTML = '<div class="jsoneditor-expand"></div>', c.appendChild(g), r.submenuTitle && (g.title = r.submenuTitle), d = g
                                    } else {
                                        var p = document.createElement("div");
                                        p.className = "jsoneditor-expand", u.appendChild(p), d = u
                                    }
                                    d.onclick = function (e) {
                                        e.preventDefault(), i._onExpandItem(l), d.focus()
                                    };
                                    var m = [];
                                    l.subItems = m;
                                    var v = document.createElement("ul");
                                    l.ul = v, v.className = "jsoneditor-menu", v.style.height = "0", c.appendChild(v), e(v, m, r.submenu)
                                } else u.innerHTML = '<div class="jsoneditor-icon"></div><div class="jsoneditor-text">' + Object(o.c)(r.text) + "</div>";
                                n.push(l)
                            }
                        }))
                    }(l, this.dom.items, t), this.maxHeight = 0, t.forEach((function (e) {
                        var n = 24 * (t.length + (e.submenu ? e.submenu.length : 0));
                        i.maxHeight = Math.max(i.maxHeight, n)
                    }))
                }

                var t, n, s;
                return t = e, (n = [{
                    key: "_getVisibleButtons", value: function () {
                        var e = [], t = this;
                        return this.dom.items.forEach((function (n) {
                            e.push(n.button), n.buttonExpand && e.push(n.buttonExpand), n.subItems && n === t.expandedItem && n.subItems.forEach((function (t) {
                                e.push(t.button), t.buttonExpand && e.push(t.buttonExpand)
                            }))
                        })), e
                    }
                }, {
                    key: "show", value: function (t, n, o) {
                        this.hide();
                        var a = !0, s = t.parentNode, l = t.getBoundingClientRect(), c = s.getBoundingClientRect(),
                            u = n.getBoundingClientRect(), h = this;
                        this.dom.absoluteAnchor = Object(i.a)(t, n, (function () {
                            h.hide()
                        })), l.bottom + this.maxHeight < u.bottom || l.top - this.maxHeight > u.top && (a = !1);
                        var d = o ? 0 : l.top - c.top;
                        if (a) {
                            var f = t.offsetHeight;
                            this.dom.menu.style.left = "0", this.dom.menu.style.top = d + f + "px", this.dom.menu.style.bottom = ""
                        } else this.dom.menu.style.left = "0", this.dom.menu.style.top = "", this.dom.menu.style.bottom = "0px";
                        this.dom.absoluteAnchor.appendChild(this.dom.root), this.selection = Object(r.getSelection)(), this.anchor = t, setTimeout((function () {
                            h.dom.focusButton.focus()
                        }), 0), e.visibleMenu && e.visibleMenu.hide(), e.visibleMenu = this
                    }
                }, {
                    key: "hide", value: function () {
                        this.dom.absoluteAnchor && (this.dom.absoluteAnchor.destroy(), delete this.dom.absoluteAnchor), this.dom.root.parentNode && (this.dom.root.parentNode.removeChild(this.dom.root), this.onClose && this.onClose()), e.visibleMenu === this && (e.visibleMenu = void 0)
                    }
                }, {
                    key: "_onExpandItem", value: function (e) {
                        var t = this, n = e === this.expandedItem, i = this.expandedItem;
                        if (i && (i.ul.style.height = "0", i.ul.style.padding = "", setTimeout((function () {
                            t.expandedItem !== i && (i.ul.style.display = "", Object(r.removeClassName)(i.ul.parentNode, "jsoneditor-selected"))
                        }), 300), this.expandedItem = void 0), !n) {
                            var o = e.ul;
                            o.style.display = "block", o.clientHeight, setTimeout((function () {
                                if (t.expandedItem === e) {
                                    for (var n = 0, i = 0; i < o.childNodes.length; i++) n += o.childNodes[i].clientHeight;
                                    o.style.height = n + "px", o.style.padding = "5px 10px"
                                }
                            }), 0), Object(r.addClassName)(o.parentNode, "jsoneditor-selected"), this.expandedItem = e
                        }
                    }
                }, {
                    key: "_onKeyDown", value: function (e) {
                        var t, n, i, o, a = e.target, s = e.which, l = !1;
                        27 === s ? (this.selection && Object(r.setSelection)(this.selection), this.anchor && this.anchor.focus(), this.hide(), l = !0) : 9 === s ? e.shiftKey ? 0 === (n = (t = this._getVisibleButtons()).indexOf(a)) && (t[t.length - 1].focus(), l = !0) : (n = (t = this._getVisibleButtons()).indexOf(a)) === t.length - 1 && (t[0].focus(), l = !0) : 37 === s ? ("jsoneditor-expand" === a.className && (n = (t = this._getVisibleButtons()).indexOf(a), (i = t[n - 1]) && i.focus()), l = !0) : 38 === s ? (n = (t = this._getVisibleButtons()).indexOf(a), (i = t[n - 1]) && "jsoneditor-expand" === i.className && (i = t[n - 2]), i || (i = t[t.length - 1]), i && i.focus(), l = !0) : 39 === s ? (n = (t = this._getVisibleButtons()).indexOf(a), (o = t[n + 1]) && "jsoneditor-expand" === o.className && o.focus(), l = !0) : 40 === s && (n = (t = this._getVisibleButtons()).indexOf(a), (o = t[n + 1]) && "jsoneditor-expand" === o.className && (o = t[n + 2]), o || (o = t[0]), o && (o.focus(), l = !0), l = !0), l && (e.stopPropagation(), e.preventDefault())
                    }
                }]) && a(t.prototype, n), s && a(t, s), e
            }();
            s.visibleMenu = void 0
        }, function (e, t, n) {
            "use strict";
            n.d(t, "a", (function () {
                return a
            })), n.d(t, "b", (function () {
                return s
            }));
            var i = n(34), r = n.n(i), o = n(0);

            function a(e, t) {
                var n = t.sort, i = t.filter, r = t.projection, a = "";
                if (i) {
                    var s = "@" !== i.field ? ["0"].concat(Object(o.parsePath)("." + i.field)) : ["0"],
                        l = "string" == typeof Object(o.get)(e, s) ? i.value : Object(o.parseString)(i.value);
                    a += "[? " + i.field + " " + i.relation + " `" + JSON.stringify(l) + "`]"
                } else a += Array.isArray(e) ? "[*]" : "@";
                return n && ("desc" === n.direction ? a += " | reverse(sort_by(@, &" + n.field + "))" : a += " | sort_by(@, &" + n.field + ")"), r && ("]" !== a[a.length - 1] && (a += " | [*]"), 1 === r.fields.length ? a += "." + r.fields[0] : r.fields.length > 1 && (a += ".{" + r.fields.map((function (e) {
                    var t = e.split(".");
                    return t[t.length - 1] + ": " + e
                })).join(", ") + "}")), a
            }

            function s(e, t) {
                return r.a.search(e, t)
            }
        }, function (e, t, n) {
            "use strict";
            n.r(t), n.d(t, "showSortModal", (function () {
                return s
            }));
            var i = n(14), r = n.n(i), o = n(1), a = n(0);

            function s(e, t, n, i) {
                var s = Array.isArray(t) ? Object(a.getChildPaths)(t) : [""],
                    l = i && i.path && Object(a.contains)(s, i.path) ? i.path : s[0], c = i && i.direction || "asc",
                    u = '<div class="pico-modal-contents"><div class="pico-modal-header">' + Object(o.c)("sort") + "</div><form><table><tbody><tr>  <td>" + Object(o.c)("sortFieldLabel") + ' </td>  <td class="jsoneditor-modal-input">  <div class="jsoneditor-select-wrapper">    <select id="field" title="' + Object(o.c)("sortFieldTitle") + '">    </select>  </div>  </td></tr><tr>  <td>' + Object(o.c)("sortDirectionLabel") + ' </td>  <td class="jsoneditor-modal-input">  <div id="direction" class="jsoneditor-button-group"><input type="button" value="' + Object(o.c)("sortAscending") + '" title="' + Object(o.c)("sortAscendingTitle") + '" data-value="asc" class="jsoneditor-button-first jsoneditor-button-asc"/><input type="button" value="' + Object(o.c)("sortDescending") + '" title="' + Object(o.c)("sortDescendingTitle") + '" data-value="desc" class="jsoneditor-button-last jsoneditor-button-desc"/>  </div>  </td></tr><tr><td colspan="2" class="jsoneditor-modal-input jsoneditor-modal-actions">  <input type="submit" id="ok" value="' + Object(o.c)("ok") + '" /></td></tr></tbody></table></form></div>';
                r()({
                    parent: e,
                    content: u,
                    overlayClass: "jsoneditor-modal-overlay",
                    overlayStyles: {backgroundColor: "rgb(1,1,1)", opacity: .3},
                    modalClass: "jsoneditor-modal jsoneditor-modal-sort"
                }).afterCreate((function (e) {
                    var t = e.modalElem().querySelector("form"), i = e.modalElem().querySelector("#ok"),
                        r = e.modalElem().querySelector("#field"), o = e.modalElem().querySelector("#direction");

                    function a(e) {
                        o.value = e, o.className = "jsoneditor-button-group jsoneditor-button-group-value-" + o.value
                    }

                    s.forEach((function (e) {
                        var t = document.createElement("option");
                        t.text = function (e) {
                            return "" === e ? "@" : "." === e[0] ? e.slice(1) : e
                        }(e), t.value = e, r.appendChild(t)
                    })), r.value = l || s[0], a(c || "asc"), o.onclick = function (e) {
                        a(e.target.getAttribute("data-value"))
                    }, i.onclick = function (t) {
                        t.preventDefault(), t.stopPropagation(), e.close(), n({path: r.value, direction: o.value})
                    }, t && (t.onsubmit = i.onclick)
                })).afterClose((function (e) {
                    e.destroy()
                })).show()
            }
        }, function (e, t, n) {
            "use strict";
            n.r(t), n.d(t, "showTransformModal", (function () {
                return g
            }));
            var i = n(14), r = n.n(i), o = n(10), a = n.n(o), s = n(1);

            function l(e) {
                return (l = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
                    return typeof e
                } : function (e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                })(e)
            }

            function c(e, t, n, i) {
                return "boolean" == typeof e || e instanceof Boolean || null === e || "number" == typeof e || e instanceof Number || "string" == typeof e || e instanceof String || e instanceof Date ? JSON.stringify(e) : Array.isArray(e) ? function (e, t, n, i) {
                    for (var r = t ? n + t : void 0, o = t ? "[\n" : "[", a = 0; a < e.length; a++) {
                        var s = e[a];
                        if (t && (o += r), o += void 0 !== s && "function" != typeof s ? c(s, t, r, i) : "null", a < e.length - 1 && (o += t ? ",\n" : ","), o.length > i) return o + "..."
                    }
                    return o += t ? "\n" + n + "]" : "]"
                }(e, t, n, i) : e && "object" === l(e) ? function (e, t, n, i) {
                    var r = t ? n + t : void 0, o = !0, a = t ? "{\n" : "{";
                    if ("function" == typeof e.toJSON) return c(e.toJSON(), t, n, i);
                    for (var s in e) if (h(e, s)) {
                        var l = e[s];
                        if (o ? o = !1 : a += t ? ",\n" : ",", a += t ? r + '"' + s + '": ' : '"' + s + '":', (a += c(l, t, r, i)).length > i) return a + "..."
                    }
                    return a += t ? "\n" + n + "}" : "}"
                }(e, t, n, i) : void 0
            }

            function u(e, t) {
                for (var n = ""; t-- > 0;) n += e;
                return n
            }

            function h(e, t) {
                return Object.prototype.hasOwnProperty.call(e, t)
            }

            var d = n(0), f = n(2);

            function g(e) {
                var t = e.container, n = e.json, i = e.queryDescription,
                    o = void 0 === i ? 'Enter a <a href="http://jmespath.org" target="_blank">JMESPath</a> query to filter, sort, or transform the JSON data.<br/>To learn JMESPath, go to <a href="http://jmespath.org/tutorial.html" target="_blank">the interactive tutorial</a>.' : i,
                    l = e.createQuery, h = e.executeQuery, g = e.onTransform, p = n,
                    m = '<label class="pico-modal-contents"><div class="pico-modal-header">' + Object(s.c)("transform") + "</div><p>" + o + '</p><div class="jsoneditor-jmespath-label">' + Object(s.c)("transformWizardLabel") + ' </div><div id="wizard" class="jsoneditor-jmespath-block jsoneditor-jmespath-wizard">  <table class="jsoneditor-jmespath-wizard-table">    <tbody>      <tr>        <th>' + Object(s.c)("transformWizardFilter") + '</th>        <td class="jsoneditor-jmespath-filter">          <div class="jsoneditor-inline jsoneditor-jmespath-filter-field" >            <select id="filterField">            </select>          </div>          <div class="jsoneditor-inline jsoneditor-jmespath-filter-relation" >            <select id="filterRelation">              <option value="==">==</option>              <option value="!=">!=</option>              <option value="<">&lt;</option>              <option value="<=">&lt;=</option>              <option value=">">&gt;</option>              <option value=">=">&gt;=</option>            </select>          </div>          <div class="jsoneditor-inline jsoneditor-jmespath-filter-value" >            <input type="text" class="value" placeholder="value..." id="filterValue" />          </div>        </td>      </tr>      <tr>        <th>' + Object(s.c)("transformWizardSortBy") + '</th>        <td class="jsoneditor-jmespath-filter">          <div class="jsoneditor-inline jsoneditor-jmespath-sort-field">            <select id="sortField">            </select>          </div>          <div class="jsoneditor-inline jsoneditor-jmespath-sort-order" >            <select id="sortOrder">              <option value="asc">Ascending</option>              <option value="desc">Descending</option>            </select>          </div>        </td>      </tr>      <tr id="selectFieldsPart">        <th>' + Object(s.c)("transformWizardSelectFields") + '</th>        <td class="jsoneditor-jmespath-filter">          <select class="jsoneditor-jmespath-select-fields" id="selectFields" multiple></select>        </td>      </tr>    </tbody>  </table></div><div class="jsoneditor-jmespath-label">' + Object(s.c)("transformQueryLabel") + ' </div><div class="jsoneditor-jmespath-block">  <textarea id="query"             rows="4"             autocomplete="off"             autocorrect="off"             autocapitalize="off"             spellcheck="false"            title="' + Object(s.c)("transformQueryTitle") + '">[*]</textarea></div><div class="jsoneditor-jmespath-label">' + Object(s.c)("transformPreviewLabel") + ' </div><div class="jsoneditor-jmespath-block">  <textarea id="preview"       class="jsoneditor-transform-preview"      readonly> </textarea></div><div class="jsoneditor-jmespath-block jsoneditor-modal-actions">  <input type="submit" id="ok" value="' + Object(s.c)("ok") + '" autofocus /></div></div>';
                r()({
                    parent: t,
                    content: m,
                    overlayClass: "jsoneditor-modal-overlay",
                    overlayStyles: {backgroundColor: "rgb(1,1,1)", opacity: .3},
                    modalClass: "jsoneditor-modal jsoneditor-modal-transform",
                    focus: !1
                }).afterCreate((function (e) {
                    var t = e.modalElem(), i = t.querySelector("#wizard"), r = t.querySelector("#ok"),
                        o = t.querySelector("#filterField"), s = t.querySelector("#filterRelation"),
                        m = t.querySelector("#filterValue"), v = t.querySelector("#sortField"),
                        y = t.querySelector("#sortOrder"), b = t.querySelector("#selectFields"),
                        C = t.querySelector("#query"), w = t.querySelector("#preview");
                    Array.isArray(p) || (i.style.fontStyle = "italic", i.innerHTML = "(wizard not available for objects, only for arrays)"), Object(d.getChildPaths)(n).forEach((function (e) {
                        var t = T(e), n = document.createElement("option");
                        n.text = t, n.value = t, o.appendChild(n);
                        var i = document.createElement("option");
                        i.text = t, i.value = t, v.appendChild(i)
                    }));
                    var I = Object(d.getChildPaths)(n, !0).filter((function (e) {
                        return "" !== e
                    }));
                    if (I.length > 0) I.forEach((function (e) {
                        var t = T(e), n = document.createElement("option");
                        n.text = t, n.value = t, b.appendChild(n)
                    })); else {
                        var x = t.querySelector("#selectFieldsPart");
                        x && (x.style.display = "none")
                    }
                    var A = new a.a(o, {
                        defaultSelected: !1,
                        clearable: !0,
                        allowDeselect: !0,
                        placeholder: "field..."
                    }), _ = new a.a(s, {
                        defaultSelected: !1,
                        clearable: !0,
                        allowDeselect: !0,
                        placeholder: "compare..."
                    }), S = new a.a(v, {
                        defaultSelected: !1,
                        clearable: !0,
                        allowDeselect: !0,
                        placeholder: "field..."
                    }), k = new a.a(y, {
                        defaultSelected: !1,
                        clearable: !0,
                        allowDeselect: !0,
                        placeholder: "order..."
                    }), L = new a.a(b, {
                        multiple: !0,
                        clearable: !0,
                        defaultSelected: !1,
                        placeholder: "select fields..."
                    });

                    function T(e) {
                        return "" === e ? "@" : "." === e[0] ? e.slice(1) : e
                    }

                    A.on("selectr.change", E), _.on("selectr.change", E), m.oninput = E, S.on("selectr.change", E), k.on("selectr.change", E), L.on("selectr.change", E), t.querySelector(".pico-modal-contents").onclick = function (e) {
                        "A" !== e.target.nodeName && e.preventDefault()
                    };
                    var O = Object(d.debounce)((function () {
                        try {
                            var e = h(p, C.value);
                            w.className = "jsoneditor-transform-preview", w.value = function (e, t, n) {
                                var i;
                                "number" == typeof t ? t > 10 ? i = u(" ", 10) : t >= 1 && (i = u(" ", t)) : "string" == typeof t && "" !== t && (i = t);
                                var r = c(e, i, "", n);
                                return r.length > n ? function (e, t) {
                                    return "number" == typeof t ? e.slice(0, t) : e
                                }(r, n) + "..." : r
                            }(e, 2, f.b), r.disabled = !1
                        } catch (e) {
                            w.className = "jsoneditor-transform-preview jsoneditor-error", w.value = e.toString(), r.disabled = !0
                        }
                    }), 300);

                    function R(e, t) {
                        try {
                            C.value = l(e, t), r.disabled = !1, O()
                        } catch (e) {
                            var n = 'Error: an error happened when executing "createQuery": ' + (e.message || e.toString());
                            C.value = "", r.disabled = !0, w.className = "jsoneditor-transform-preview jsoneditor-error", w.value = n
                        }
                    }

                    function E() {
                        var e = {};
                        if (o.value && s.value && m.value && (e.filter = {
                            field: o.value,
                            relation: s.value,
                            value: m.value
                        }), v.value && y.value && (e.sort = {field: v.value, direction: y.value}), b.value) {
                            for (var t = [], i = 0; i < b.options.length; i++) if (b.options[i].selected) {
                                var r = b.options[i].value;
                                t.push(r)
                            }
                            e.projection = {fields: t}
                        }
                        R(n, e)
                    }

                    C.oninput = O, r.onclick = function (t) {
                        t.preventDefault(), t.stopPropagation(), e.close(), g(C.value)
                    }, R(n, {}), setTimeout((function () {
                        C.select(), C.focus(), C.selectionStart = 3, C.selectionEnd = 3
                    }))
                })).afterClose((function (e) {
                    e.destroy()
                })).show()
            }
        }, function (e, t, n) {
            "use strict";

            function i(e, t, n) {
                var i = n ? " !== " : " === ", r = n ? " || " : " && ", o = n ? "!" : "", a = n ? "" : "!";
                switch (e) {
                    case"null":
                        return t + i + "null";
                    case"array":
                        return o + "Array.isArray(" + t + ")";
                    case"object":
                        return "(" + o + t + r + "typeof " + t + i + '"object"' + r + a + "Array.isArray(" + t + "))";
                    case"integer":
                        return "(typeof " + t + i + '"number"' + r + a + "(" + t + " % 1)" + r + t + i + t + ")";
                    default:
                        return "typeof " + t + i + '"' + e + '"'
                }
            }

            e.exports = {
                copy: function (e, t) {
                    for (var n in t = t || {}, e) t[n] = e[n];
                    return t
                },
                checkDataType: i,
                checkDataTypes: function (e, t) {
                    switch (e.length) {
                        case 1:
                            return i(e[0], t, !0);
                        default:
                            var n = "", r = o(e);
                            for (var a in r.array && r.object && (n = r.null ? "(" : "(!" + t + " || ", n += "typeof " + t + ' !== "object")', delete r.null, delete r.array, delete r.object), r.number && delete r.integer, r) n += (n ? " && " : "") + i(a, t, !0);
                            return n
                    }
                },
                coerceToTypes: function (e, t) {
                    if (Array.isArray(t)) {
                        for (var n = [], i = 0; i < t.length; i++) {
                            var o = t[i];
                            (r[o] || "array" === e && "array" === o) && (n[n.length] = o)
                        }
                        if (n.length) return n
                    } else {
                        if (r[t]) return [t];
                        if ("array" === e && "array" === t) return ["array"]
                    }
                },
                toHash: o,
                getProperty: l,
                escapeQuotes: c,
                equal: n(18),
                ucs2length: n(47),
                varOccurences: function (e, t) {
                    t += "[^0-9]";
                    var n = e.match(new RegExp(t, "g"));
                    return n ? n.length : 0
                },
                varReplace: function (e, t, n) {
                    return t += "([^0-9])", n = n.replace(/\$/g, "$$$$"), e.replace(new RegExp(t, "g"), n + "$1")
                },
                cleanUpCode: function (e) {
                    return e.replace(u, "").replace(h, "").replace(d, "if (!($1))")
                },
                finalCleanUpCode: function (e, t) {
                    var n = e.match(f);
                    return n && 2 == n.length && (e = t ? e.replace(p, "").replace(m, "return data;") : e.replace(g, "").replace("return errors === 0;", "validate.errors = null; return true;")), (n = e.match(v)) && 3 === n.length ? e.replace(y, "") : e
                },
                schemaHasRules: function (e, t) {
                    if ("boolean" == typeof e) return !e;
                    for (var n in e) if (t[n]) return !0
                },
                schemaHasRulesExcept: function (e, t, n) {
                    if ("boolean" == typeof e) return !e && "not" != n;
                    for (var i in e) if (i != n && t[i]) return !0
                },
                schemaUnknownRules: function (e, t) {
                    if ("boolean" != typeof e) for (var n in e) if (!t[n]) return n
                },
                toQuotedString: b,
                getPathExpr: function (e, t, n, i) {
                    return I(e, n ? "'/' + " + t + (i ? "" : ".replace(/~/g, '~0').replace(/\\//g, '~1')") : i ? "'[' + " + t + " + ']'" : "'[\\'' + " + t + " + '\\']'")
                },
                getPath: function (e, t, n) {
                    var i = b(n ? "/" + x(t) : l(t));
                    return I(e, i)
                },
                getData: function (e, t, n) {
                    var i, r, o, a;
                    if ("" === e) return "rootData";
                    if ("/" == e[0]) {
                        if (!C.test(e)) throw new Error("Invalid JSON-pointer: " + e);
                        r = e, o = "rootData"
                    } else {
                        if (!(a = e.match(w))) throw new Error("Invalid JSON-pointer: " + e);
                        if (i = +a[1], "#" == (r = a[2])) {
                            if (i >= t) throw new Error("Cannot access property/index " + i + " levels up, current level is " + t);
                            return n[t - i]
                        }
                        if (i > t) throw new Error("Cannot access data " + i + " levels up, current level is " + t);
                        if (o = "data" + (t - i || ""), !r) return o
                    }
                    for (var s = o, c = r.split("/"), u = 0; u < c.length; u++) {
                        var h = c[u];
                        h && (o += l(A(h)), s += " && " + o)
                    }
                    return s
                },
                unescapeFragment: function (e) {
                    return A(decodeURIComponent(e))
                },
                unescapeJsonPointer: A,
                escapeFragment: function (e) {
                    return encodeURIComponent(x(e))
                },
                escapeJsonPointer: x
            };
            var r = o(["string", "number", "integer", "boolean", "null"]);

            function o(e) {
                for (var t = {}, n = 0; n < e.length; n++) t[e[n]] = !0;
                return t
            }

            var a = /^[a-z$_][a-z$_0-9]*$/i, s = /'|\\/g;

            function l(e) {
                return "number" == typeof e ? "[" + e + "]" : a.test(e) ? "." + e : "['" + c(e) + "']"
            }

            function c(e) {
                return e.replace(s, "\\$&").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\f/g, "\\f").replace(/\t/g, "\\t")
            }

            var u = /else\s*{\s*}/g, h = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,
                d = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g, f = /[^v.]errors/g,
                g = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,
                p = /var errors = 0;|var vErrors = null;/g,
                m = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,
                v = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g, y = /if \(rootData === undefined\) rootData = data;/;

            function b(e) {
                return "'" + c(e) + "'"
            }

            var C = /^\/(?:[^~]|~0|~1)*$/, w = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;

            function I(e, t) {
                return '""' == e ? t : (e + " + " + t).replace(/' \+ '/g, "")
            }

            function x(e) {
                return e.replace(/~/g, "~0").replace(/\//g, "~1")
            }

            function A(e) {
                return e.replace(/~1/g, "/").replace(/~0/g, "~")
            }
        }, function (e, t, n) {
            "use strict";
            n.d(t, "a", (function () {
                return a
            }));
            var i = n(3), r = n(1);

            function o(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var a = function () {
                function e(t, n, o, a) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e);
                    for (var s = {
                        code: {
                            text: Object(r.c)("modeCodeText"),
                            title: Object(r.c)("modeCodeTitle"),
                            click: function () {
                                a("code")
                            }
                        },
                        form: {
                            text: Object(r.c)("modeFormText"),
                            title: Object(r.c)("modeFormTitle"),
                            click: function () {
                                a("form")
                            }
                        },
                        text: {
                            text: Object(r.c)("modeTextText"),
                            title: Object(r.c)("modeTextTitle"),
                            click: function () {
                                a("text")
                            }
                        },
                        tree: {
                            text: Object(r.c)("modeTreeText"),
                            title: Object(r.c)("modeTreeTitle"),
                            click: function () {
                                a("tree")
                            }
                        },
                        view: {
                            text: Object(r.c)("modeViewText"),
                            title: Object(r.c)("modeViewTitle"),
                            click: function () {
                                a("view")
                            }
                        },
                        preview: {
                            text: Object(r.c)("modePreviewText"),
                            title: Object(r.c)("modePreviewTitle"),
                            click: function () {
                                a("preview")
                            }
                        }
                    }, l = [], c = 0; c < n.length; c++) {
                        var u = n[c], h = s[u];
                        if (!h) throw new Error('Unknown mode "' + u + '"');
                        h.className = "jsoneditor-type-modes" + (o === u ? " jsoneditor-selected" : ""), l.push(h)
                    }
                    var d = s[o];
                    if (!d) throw new Error('Unknown mode "' + o + '"');
                    var f = d.text, g = document.createElement("button");
                    g.type = "button", g.className = "jsoneditor-modes jsoneditor-separator", g.innerHTML = f + " &#x25BE;", g.title = Object(r.c)("modeEditorTitle"), g.onclick = function () {
                        new i.a(l).show(g, t)
                    };
                    var p = document.createElement("div");
                    p.className = "jsoneditor-modes", p.style.position = "relative", p.appendChild(g), t.appendChild(p), this.dom = {
                        container: t,
                        box: g,
                        frame: p
                    }
                }

                var t, n, a;
                return t = e, (n = [{
                    key: "focus", value: function () {
                        this.dom.box.focus()
                    }
                }, {
                    key: "destroy", value: function () {
                        this.dom && this.dom.frame && this.dom.frame.parentNode && this.dom.frame.parentNode.removeChild(this.dom.frame), this.dom = null
                    }
                }]) && o(t.prototype, n), a && o(t, a), e
            }()
        }, function (e, t, n) {
            "use strict";

            function i(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            n.d(t, "a", (function () {
                return r
            }));
            var r = function () {
                function e(t) {
                    if (function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.target = t.target || null, !this.target) throw new Error('FocusTracker constructor called without a "target" to track.');
                    this.onFocus = "function" == typeof t.onFocus ? t.onFocus : null, this.onBlur = "function" == typeof t.onBlur ? t.onBlur : null, this._onClick = this._onEvent.bind(this), this._onKeyUp = function (e) {
                        9 !== e.which && 9 !== e.keyCode || this._onEvent(e)
                    }.bind(this), this.focusFlag = !1, this.firstEventFlag = !0, (this.onFocus || this.onBlur) && (document.addEventListener("click", this._onClick), document.addEventListener("keyup", this._onKeyUp))
                }

                var t, n, r;
                return t = e, (n = [{
                    key: "destroy", value: function () {
                        document.removeEventListener("click", this._onClick), document.removeEventListener("keyup", this._onKeyUp), this._onEvent({target: document.body})
                    }
                }, {
                    key: "_onEvent", value: function (e) {
                        var t = e.target;
                        t === this.target || this.target.contains(t) || this.target.contains(document.activeElement) ? this.focusFlag || (this.onFocus && this.onFocus({
                            type: "focus",
                            target: this.target
                        }), this.focusFlag = !0) : (this.focusFlag || this.firstEventFlag) && (this.onBlur && this.onBlur({
                            type: "blur",
                            target: this.target
                        }), this.focusFlag = !1, this.firstEventFlag && (this.firstEventFlag = !1))
                    }
                }]) && i(t.prototype, n), r && i(t, r), e
            }()
        }, function (e, t, n) {
            "use strict";
            /*!
 * Selectr 2.4.0
 * https://github.com/Mobius1/Selectr
 *
 * Released under the MIT license
 */
            var i = {
                defaultSelected: !0,
                width: "auto",
                disabled: !1,
                searchable: !0,
                clearable: !1,
                sortSelected: !1,
                allowDeselect: !1,
                closeOnScroll: !1,
                nativeDropdown: !1,
                placeholder: "Select an option...",
                taggable: !1,
                tagPlaceholder: "Enter a tag..."
            }, r = function () {
            };
            r.prototype = {
                on: function (e, t) {
                    this._events = this._events || {}, this._events[e] = this._events[e] || [], this._events[e].push(t)
                }, off: function (e, t) {
                    this._events = this._events || {}, e in this._events != 0 && this._events[e].splice(this._events[e].indexOf(t), 1)
                }, emit: function (e) {
                    if (this._events = this._events || {}, e in this._events != 0) for (var t = 0; t < this._events[e].length; t++) this._events[e][t].apply(this, Array.prototype.slice.call(arguments, 1))
                }
            }, r.mixin = function (e) {
                for (var t = ["on", "off", "emit"], n = 0; n < t.length; n++) "function" == typeof e ? e.prototype[t[n]] = r.prototype[t[n]] : e[t[n]] = r.prototype[t[n]];
                return e
            };
            var o = {
                extend: function (e, t) {
                    var n;
                    for (n in t = t || {}, e) e.hasOwnProperty(n) && (t.hasOwnProperty(n) || (t[n] = e[n]));
                    return t
                }, each: function (e, t, n) {
                    if ("[object Object]" === Object.prototype.toString.call(e)) for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && t.call(n, i, e[i], e); else for (var r = 0, o = e.length; r < o; r++) t.call(n, r, e[r], e)
                }, createElement: function (e, t) {
                    var n, i = document, r = i.createElement(e);
                    if (t && "[object Object]" === Object.prototype.toString.call(t)) for (n in t) if (n in r) r[n] = t[n]; else if ("html" === n) r.innerHTML = t[n]; else if ("text" === n) {
                        var o = i.createTextNode(t[n]);
                        r.appendChild(o)
                    } else r.setAttribute(n, t[n]);
                    return r
                }, hasClass: function (e, t) {
                    if (e) return e.classList ? e.classList.contains(t) : !!e.className && !!e.className.match(new RegExp("(\\s|^)" + t + "(\\s|$)"))
                }, addClass: function (e, t) {
                    o.hasClass(e, t) || (e.classList ? e.classList.add(t) : e.className = e.className.trim() + " " + t)
                }, removeClass: function (e, t) {
                    o.hasClass(e, t) && (e.classList ? e.classList.remove(t) : e.className = e.className.replace(new RegExp("(^|\\s)" + t.split(" ").join("|") + "(\\s|$)", "gi"), " "))
                }, closest: function (e, t) {
                    return e && e !== document.body && (t(e) ? e : o.closest(e.parentNode, t))
                }, isInt: function (e) {
                    return "number" == typeof e && isFinite(e) && Math.floor(e) === e
                }, debounce: function (e, t, n) {
                    var i;
                    return function () {
                        var r = this, o = arguments, a = function () {
                            i = null, n || e.apply(r, o)
                        }, s = n && !i;
                        clearTimeout(i), i = setTimeout(a, t), s && e.apply(r, o)
                    }
                }, rect: function (e, t) {
                    var n = window, i = e.getBoundingClientRect(), r = t ? n.pageXOffset : 0, o = t ? n.pageYOffset : 0;
                    return {
                        bottom: i.bottom + o,
                        height: i.height,
                        left: i.left + r,
                        right: i.right + r,
                        top: i.top + o,
                        width: i.width
                    }
                }, includes: function (e, t) {
                    return e.indexOf(t) > -1
                }, truncate: function (e) {
                    for (; e.firstChild;) e.removeChild(e.firstChild)
                }
            };

            function a(e, t) {
                return e.hasOwnProperty(t) && (!0 === e[t] || e[t].length)
            }

            function s(e, t, n) {
                e.parentNode ? e.parentNode.parentNode || t.appendChild(e.parentNode) : t.appendChild(e), o.removeClass(e, "excluded"), n || (e.innerHTML = e.textContent)
            }

            var l = function () {
                if (this.items.length) {
                    var e = document.createDocumentFragment();
                    if (this.config.pagination) {
                        var t = this.pages.slice(0, this.pageIndex);
                        o.each(t, (function (t, n) {
                            o.each(n, (function (t, n) {
                                s(n, e, this.customOption)
                            }), this)
                        }), this)
                    } else o.each(this.items, (function (t, n) {
                        s(n, e, this.customOption)
                    }), this);
                    e.childElementCount && (o.removeClass(this.items[this.navIndex], "active"), this.navIndex = e.querySelector(".selectr-option").idx, o.addClass(this.items[this.navIndex], "active")), this.tree.appendChild(e)
                }
            }, c = function (e) {
                var t = e.target;
                this.container.contains(t) || !this.opened && !o.hasClass(this.container, "notice") || this.close()
            }, u = function (e, t) {
                t = t || e;
                var n = this.customOption ? this.config.renderOption(t) : e.textContent, i = o.createElement("li", {
                    class: "selectr-option",
                    html: n,
                    role: "treeitem",
                    "aria-selected": !1
                });
                return i.idx = e.idx, this.items.push(i), e.defaultSelected && this.defaultSelected.push(e.idx), e.disabled && (i.disabled = !0, o.addClass(i, "disabled")), i
            }, h = function () {
                this.requiresPagination = this.config.pagination && this.config.pagination > 0, a(this.config, "width") && (o.isInt(this.config.width) ? this.width = this.config.width + "px" : "auto" === this.config.width ? this.width = "100%" : o.includes(this.config.width, "%") && (this.width = this.config.width)), this.container = o.createElement("div", {class: "selectr-container"}), this.config.customClass && o.addClass(this.container, this.config.customClass), this.mobileDevice ? o.addClass(this.container, "selectr-mobile") : o.addClass(this.container, "selectr-desktop"), this.el.tabIndex = -1, this.config.nativeDropdown || this.mobileDevice ? o.addClass(this.el, "selectr-visible") : o.addClass(this.el, "selectr-hidden"), this.selected = o.createElement("div", {
                    class: "selectr-selected",
                    disabled: this.disabled,
                    tabIndex: 1,
                    "aria-expanded": !1
                }), this.label = o.createElement(this.el.multiple ? "ul" : "span", {class: "selectr-label"});
                var e = o.createElement("div", {class: "selectr-options-container"});
                if (this.tree = o.createElement("ul", {
                    class: "selectr-options",
                    role: "tree",
                    "aria-hidden": !0,
                    "aria-expanded": !1
                }), this.notice = o.createElement("div", {class: "selectr-notice"}), this.el.setAttribute("aria-hidden", !0), this.disabled && (this.el.disabled = !0), this.el.multiple && (o.addClass(this.label, "selectr-tags"), o.addClass(this.container, "multiple"), this.tags = [], this.selectedValues = this.getSelectedProperties("value"), this.selectedIndexes = this.getSelectedProperties("idx")), this.selected.appendChild(this.label), this.config.clearable && (this.selectClear = o.createElement("button", {
                    class: "selectr-clear",
                    type: "button"
                }), this.container.appendChild(this.selectClear), o.addClass(this.container, "clearable")), this.config.taggable) {
                    var t = o.createElement("li", {class: "input-tag"});
                    this.input = o.createElement("input", {
                        class: "selectr-tag-input",
                        placeholder: this.config.tagPlaceholder,
                        tagIndex: 0,
                        autocomplete: "off",
                        autocorrect: "off",
                        autocapitalize: "off",
                        spellcheck: "false",
                        role: "textbox",
                        type: "search"
                    }), t.appendChild(this.input), this.label.appendChild(t), o.addClass(this.container, "taggable"), this.tagSeperators = [","], this.config.tagSeperators && (this.tagSeperators = this.tagSeperators.concat(this.config.tagSeperators))
                }
                this.config.searchable && (this.input = o.createElement("input", {
                    class: "selectr-input",
                    tagIndex: -1,
                    autocomplete: "off",
                    autocorrect: "off",
                    autocapitalize: "off",
                    spellcheck: "false",
                    role: "textbox",
                    type: "search"
                }), this.inputClear = o.createElement("button", {
                    class: "selectr-input-clear",
                    type: "button"
                }), this.inputContainer = o.createElement("div", {class: "selectr-input-container"}), this.inputContainer.appendChild(this.input), this.inputContainer.appendChild(this.inputClear), e.appendChild(this.inputContainer)), e.appendChild(this.notice), e.appendChild(this.tree), this.items = [], this.options = [], this.el.options.length && (this.options = [].slice.call(this.el.options));
                var n, i = !1, r = 0;
                if (this.el.children.length && o.each(this.el.children, (function (e, t) {
                    "OPTGROUP" === t.nodeName ? (i = o.createElement("ul", {
                        class: "selectr-optgroup",
                        role: "group",
                        html: "<li class='selectr-optgroup--label'>" + t.label + "</li>"
                    }), o.each(t.children, (function (e, t) {
                        t.idx = r, i.appendChild(u.call(this, t, i)), r++
                    }), this)) : (t.idx = r, u.call(this, t), r++)
                }), this), this.config.data && Array.isArray(this.config.data)) {
                    this.data = [];
                    var s, l = !1;
                    i = !1, r = 0, o.each(this.config.data, (function (e, t) {
                        a(t, "children") ? (l = o.createElement("optgroup", {label: t.text}), i = o.createElement("ul", {
                            class: "selectr-optgroup",
                            role: "group",
                            html: "<li class='selectr-optgroup--label'>" + t.text + "</li>"
                        }), o.each(t.children, (function (e, t) {
                            (s = new Option(t.text, t.value, !1, t.hasOwnProperty("selected") && !0 === t.selected)).disabled = a(t, "disabled"), this.options.push(s), l.appendChild(s), s.idx = r, i.appendChild(u.call(this, s, t)), this.data[r] = t, r++
                        }), this)) : ((s = new Option(t.text, t.value, !1, t.hasOwnProperty("selected") && !0 === t.selected)).disabled = a(t, "disabled"), this.options.push(s), s.idx = r, u.call(this, s, t), this.data[r] = t, r++)
                    }), this)
                }
                this.setSelected(!0), this.navIndex = 0;
                for (var c = 0; c < this.items.length; c++) if (n = this.items[c], !o.hasClass(n, "disabled")) {
                    o.addClass(n, "active"), this.navIndex = c;
                    break
                }
                this.requiresPagination && (this.pageIndex = 1, this.paginate()), this.container.appendChild(this.selected), this.container.appendChild(e), this.placeEl = o.createElement("div", {class: "selectr-placeholder"}), this.setPlaceholder(), this.selected.appendChild(this.placeEl), this.disabled && this.disable(), this.el.parentNode.insertBefore(this.container, this.el), this.container.appendChild(this.el)
            }, d = function (e) {
                if (e = e || window.event, this.items.length && this.opened && o.includes([13, 38, 40], e.which)) {
                    if (e.preventDefault(), 13 === e.which) return !(this.config.taggable && this.input.value.length > 0) && this.change(this.navIndex);
                    var t, n = this.items[this.navIndex];
                    switch (e.which) {
                        case 38:
                            t = 0, this.navIndex > 0 && this.navIndex--;
                            break;
                        case 40:
                            t = 1, this.navIndex < this.items.length - 1 && this.navIndex++
                    }
                    for (this.navigating = !0; o.hasClass(this.items[this.navIndex], "disabled") || o.hasClass(this.items[this.navIndex], "excluded");) if (t ? this.navIndex++ : this.navIndex--, this.searching) {
                        if (this.navIndex > this.tree.lastElementChild.idx) {
                            this.navIndex = this.tree.lastElementChild.idx;
                            break
                        }
                        if (this.navIndex < this.tree.firstElementChild.idx) {
                            this.navIndex = this.tree.firstElementChild.idx;
                            break
                        }
                    }
                    var i = o.rect(this.items[this.navIndex]);
                    t ? (0 === this.navIndex ? this.tree.scrollTop = 0 : i.top + i.height > this.optsRect.top + this.optsRect.height && (this.tree.scrollTop = this.tree.scrollTop + (i.top + i.height - (this.optsRect.top + this.optsRect.height))), this.navIndex === this.tree.childElementCount - 1 && this.requiresPagination && p.call(this)) : 0 === this.navIndex ? this.tree.scrollTop = 0 : i.top - this.optsRect.top < 0 && (this.tree.scrollTop = this.tree.scrollTop + (i.top - this.optsRect.top)), n && o.removeClass(n, "active"), o.addClass(this.items[this.navIndex], "active")
                } else this.navigating = !1
            }, f = function (e) {
                var t, n = this, i = document.createDocumentFragment(), r = this.options[e.idx],
                    a = this.data ? this.data[e.idx] : r,
                    s = this.customSelected ? this.config.renderSelection(a) : r.textContent,
                    l = o.createElement("li", {class: "selectr-tag", html: s}),
                    c = o.createElement("button", {class: "selectr-tag-remove", type: "button"});
                if (l.appendChild(c), l.idx = e.idx, l.tag = r.value, this.tags.push(l), this.config.sortSelected) {
                    var u = this.tags.slice();
                    t = function (e, t) {
                        e.replace(/(\d+)|(\D+)/g, (function (e, n, i) {
                            t.push([n || 1 / 0, i || ""])
                        }))
                    }, u.sort((function (e, i) {
                        var r, o, a = [], s = [];
                        for (!0 === n.config.sortSelected ? (r = e.tag, o = i.tag) : "text" === n.config.sortSelected && (r = e.textContent, o = i.textContent), t(r, a), t(o, s); a.length && s.length;) {
                            var l = a.shift(), c = s.shift(), u = l[0] - c[0] || l[1].localeCompare(c[1]);
                            if (u) return u
                        }
                        return a.length - s.length
                    })), o.each(u, (function (e, t) {
                        i.appendChild(t)
                    })), this.label.innerHTML = ""
                } else i.appendChild(l);
                this.config.taggable ? this.label.insertBefore(i, this.input.parentNode) : this.label.appendChild(i)
            }, g = function (e) {
                var t = !1;
                o.each(this.tags, (function (n, i) {
                    i.idx === e.idx && (t = i)
                }), this), t && (this.label.removeChild(t), this.tags.splice(this.tags.indexOf(t), 1))
            }, p = function () {
                var e = this.tree;
                if (e.scrollTop >= e.scrollHeight - e.offsetHeight && this.pageIndex < this.pages.length) {
                    var t = document.createDocumentFragment();
                    o.each(this.pages[this.pageIndex], (function (e, n) {
                        s(n, t, this.customOption)
                    }), this), e.appendChild(t), this.pageIndex++, this.emit("selectr.paginate", {
                        items: this.items.length,
                        total: this.data.length,
                        page: this.pageIndex,
                        pages: this.pages.length
                    })
                }
            }, m = function () {
                (this.config.searchable || this.config.taggable) && (this.input.value = null, this.searching = !1, this.config.searchable && o.removeClass(this.inputContainer, "active"), o.hasClass(this.container, "notice") && (o.removeClass(this.container, "notice"), o.addClass(this.container, "open"), this.input.focus()), o.each(this.items, (function (e, t) {
                    o.removeClass(t, "excluded"), this.customOption || (t.innerHTML = t.textContent)
                }), this))
            }, v = function (e, t) {
                if (t = t || {}, !e) throw new Error("You must supply either a HTMLSelectElement or a CSS3 selector string.");
                if (this.el = e, "string" == typeof e && (this.el = document.querySelector(e)), null === this.el) throw new Error("The element you passed to Selectr can not be found.");
                if ("select" !== this.el.nodeName.toLowerCase()) throw new Error("The element you passed to Selectr is not a HTMLSelectElement.");
                this.render(t)
            };
            v.prototype.render = function (e) {
                if (!this.rendered) {
                    this.config = o.extend(i, e), this.originalType = this.el.type, this.originalIndex = this.el.tabIndex, this.defaultSelected = [], this.originalOptionCount = this.el.options.length, (this.config.multiple || this.config.taggable) && (this.el.multiple = !0), this.disabled = a(this.config, "disabled"), this.opened = !1, this.config.taggable && (this.config.searchable = !1), this.navigating = !1, this.mobileDevice = !1, /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test(navigator.userAgent) && (this.mobileDevice = !0), this.customOption = this.config.hasOwnProperty("renderOption") && "function" == typeof this.config.renderOption, this.customSelected = this.config.hasOwnProperty("renderSelection") && "function" == typeof this.config.renderSelection, r.mixin(this), h.call(this), this.bindEvents(), this.update(), this.optsRect = o.rect(this.tree), this.rendered = !0, this.el.multiple || (this.el.selectedIndex = this.selectedIndex);
                    var t = this;
                    setTimeout((function () {
                        t.emit("selectr.init")
                    }), 20)
                }
            }, v.prototype.getSelected = function () {
                return this.el.querySelectorAll("option:checked")
            }, v.prototype.getSelectedProperties = function (e) {
                var t = this.getSelected();
                return [].slice.call(t).map((function (t) {
                    return t[e]
                })).filter((function (e) {
                    return null != e
                }))
            }, v.prototype.bindEvents = function () {
                var e = this;
                this.events = {}, this.events.dismiss = c.bind(this), this.events.navigate = d.bind(this), this.events.reset = this.reset.bind(this), (this.config.nativeDropdown || this.mobileDevice) && (this.container.addEventListener("touchstart", (function (t) {
                    t.changedTouches[0].target === e.el && e.toggle()
                })), (this.config.nativeDropdown || this.mobileDevice) && this.container.addEventListener("click", (function (t) {
                    t.preventDefault(), t.stopPropagation(), t.target === e.el && e.toggle()
                })), this.el.addEventListener("change", (function (t) {
                    if (e.el.multiple) {
                        var n = e.getSelectedProperties("idx"), i = function (e, t) {
                            for (var n, i = [], r = e.slice(0), o = 0; o < t.length; o++) (n = r.indexOf(t[o])) > -1 ? r.splice(n, 1) : i.push(t[o]);
                            return [i, r]
                        }(e.selectedIndexes, n);
                        o.each(i[0], (function (t, n) {
                            e.select(n)
                        }), e), o.each(i[1], (function (t, n) {
                            e.deselect(n)
                        }), e)
                    } else e.el.selectedIndex > -1 && e.select(e.el.selectedIndex)
                }))), this.config.nativeDropdown && this.container.addEventListener("keydown", (function (t) {
                    "Enter" === t.key && e.selected === document.activeElement && (e.toggle(), setTimeout((function () {
                        e.el.focus()
                    }), 200))
                })), this.selected.addEventListener("click", (function (t) {
                    e.disabled || e.toggle(), t.preventDefault(), t.stopPropagation()
                })), this.label.addEventListener("click", (function (t) {
                    o.hasClass(t.target, "selectr-tag-remove") && e.deselect(t.target.parentNode.idx)
                })), this.selectClear && this.selectClear.addEventListener("click", this.clear.bind(this)), this.tree.addEventListener("mousedown", (function (e) {
                    e.preventDefault()
                })), this.tree.addEventListener("click", (function (t) {
                    t.preventDefault(), t.stopPropagation();
                    var n = o.closest(t.target, (function (e) {
                        return e && o.hasClass(e, "selectr-option")
                    }));
                    n && (o.hasClass(n, "disabled") || (o.hasClass(n, "selected") ? (e.el.multiple || !e.el.multiple && e.config.allowDeselect) && e.deselect(n.idx) : e.select(n.idx), e.opened && !e.el.multiple && e.close()))
                })), this.tree.addEventListener("mouseover", (function (t) {
                    o.hasClass(t.target, "selectr-option") && (o.hasClass(t.target, "disabled") || (o.removeClass(e.items[e.navIndex], "active"), o.addClass(t.target, "active"), e.navIndex = [].slice.call(e.items).indexOf(t.target)))
                })), this.config.searchable && (this.input.addEventListener("focus", (function (t) {
                    e.searching = !0
                })), this.input.addEventListener("blur", (function (t) {
                    e.searching = !1
                })), this.input.addEventListener("keyup", (function (t) {
                    e.search(), e.config.taggable || (this.value.length ? o.addClass(this.parentNode, "active") : o.removeClass(this.parentNode, "active"))
                })), this.inputClear.addEventListener("click", (function (t) {
                    e.input.value = null, m.call(e), e.tree.childElementCount || l.call(e)
                }))), this.config.taggable && this.input.addEventListener("keyup", (function (t) {
                    if (e.search(), e.config.taggable && this.value.length) {
                        var n = this.value.trim();
                        (13 === t.which || o.includes(e.tagSeperators, t.key)) && (o.each(e.tagSeperators, (function (e, t) {
                            n = n.replace(t, "")
                        })), e.add({
                            value: n,
                            text: n,
                            selected: !0
                        }, !0) ? (e.close(), m.call(e)) : (this.value = "", e.setMessage("That tag is already in use.")))
                    }
                })), this.update = o.debounce((function () {
                    e.opened && e.config.closeOnScroll && e.close(), e.width && (e.container.style.width = e.width), e.invert()
                }), 50), this.requiresPagination && (this.paginateItems = o.debounce((function () {
                    p.call(this)
                }), 50), this.tree.addEventListener("scroll", this.paginateItems.bind(this))), document.addEventListener("click", this.events.dismiss), window.addEventListener("keydown", this.events.navigate), window.addEventListener("resize", this.update), window.addEventListener("scroll", this.update), this.el.form && this.el.form.addEventListener("reset", this.events.reset)
            }, v.prototype.setSelected = function (e) {
                if (this.config.data || this.el.multiple || !this.el.options.length || (0 === this.el.selectedIndex && (this.el.options[0].defaultSelected || this.config.defaultSelected || (this.el.selectedIndex = -1)), this.selectedIndex = this.el.selectedIndex, this.selectedIndex > -1 && this.select(this.selectedIndex)), this.config.multiple && "select-one" === this.originalType && !this.config.data && this.el.options[0].selected && !this.el.options[0].defaultSelected && (this.el.options[0].selected = !1), o.each(this.options, (function (e, t) {
                    t.selected && t.defaultSelected && this.select(t.idx)
                }), this), this.config.selectedValue && this.setValue(this.config.selectedValue), this.config.data) {
                    !this.el.multiple && this.config.defaultSelected && this.el.selectedIndex < 0 && this.select(0);
                    var t = 0;
                    o.each(this.config.data, (function (e, n) {
                        a(n, "children") ? o.each(n.children, (function (e, n) {
                            n.hasOwnProperty("selected") && !0 === n.selected && this.select(t), t++
                        }), this) : (n.hasOwnProperty("selected") && !0 === n.selected && this.select(t), t++)
                    }), this)
                }
            }, v.prototype.destroy = function () {
                this.rendered && (this.emit("selectr.destroy"), "select-one" === this.originalType && (this.el.multiple = !1), this.config.data && (this.el.innerHTML = ""), o.removeClass(this.el, "selectr-hidden"), this.el.form && o.off(this.el.form, "reset", this.events.reset), o.off(document, "click", this.events.dismiss), o.off(document, "keydown", this.events.navigate), o.off(window, "resize", this.update), o.off(window, "scroll", this.update), this.container.parentNode.replaceChild(this.el, this.container), this.rendered = !1)
            }, v.prototype.change = function (e) {
                var t = this.items[e], n = this.options[e];
                n.disabled || (n.selected && o.hasClass(t, "selected") ? this.deselect(e) : this.select(e), this.opened && !this.el.multiple && this.close())
            }, v.prototype.select = function (e) {
                var t = this.items[e], n = [].slice.call(this.el.options), i = this.options[e];
                if (this.el.multiple) {
                    if (o.includes(this.selectedIndexes, e)) return !1;
                    if (this.config.maxSelections && this.tags.length === this.config.maxSelections) return this.setMessage("A maximum of " + this.config.maxSelections + " items can be selected.", !0), !1;
                    this.selectedValues.push(i.value), this.selectedIndexes.push(e), f.call(this, t)
                } else {
                    var r = this.data ? this.data[e] : i;
                    this.label.innerHTML = this.customSelected ? this.config.renderSelection(r) : i.textContent, this.selectedValue = i.value, this.selectedIndex = e, o.each(this.options, (function (t, n) {
                        var i = this.items[t];
                        t !== e && (i && o.removeClass(i, "selected"), n.selected = !1, n.removeAttribute("selected"))
                    }), this)
                }
                o.includes(n, i) || this.el.add(i), t.setAttribute("aria-selected", !0), o.addClass(t, "selected"), o.addClass(this.container, "has-selected"), i.selected = !0, i.setAttribute("selected", ""), this.emit("selectr.change", i), this.emit("selectr.select", i)
            }, v.prototype.deselect = function (e, t) {
                var n = this.items[e], i = this.options[e];
                if (this.el.multiple) {
                    var r = this.selectedIndexes.indexOf(e);
                    this.selectedIndexes.splice(r, 1);
                    var a = this.selectedValues.indexOf(i.value);
                    this.selectedValues.splice(a, 1), g.call(this, n), this.tags.length || o.removeClass(this.container, "has-selected")
                } else {
                    if (!t && !this.config.clearable && !this.config.allowDeselect) return !1;
                    this.label.innerHTML = "", this.selectedValue = null, this.el.selectedIndex = this.selectedIndex = -1, o.removeClass(this.container, "has-selected")
                }
                this.items[e].setAttribute("aria-selected", !1), o.removeClass(this.items[e], "selected"), i.selected = !1, i.removeAttribute("selected"), this.emit("selectr.change", null), this.emit("selectr.deselect", i)
            }, v.prototype.setValue = function (e) {
                var t = Array.isArray(e);
                if (t || (e = e.toString().trim()), !this.el.multiple && t) return !1;
                o.each(this.options, (function (n, i) {
                    (t && o.includes(e.toString(), i.value) || i.value === e) && this.change(i.idx)
                }), this)
            }, v.prototype.getValue = function (e, t) {
                var n;
                if (this.el.multiple) e ? this.selectedIndexes.length && ((n = {}).values = [], o.each(this.selectedIndexes, (function (e, t) {
                    var i = this.options[t];
                    n.values[e] = {value: i.value, text: i.textContent}
                }), this)) : n = this.selectedValues.slice(); else if (e) {
                    var i = this.options[this.selectedIndex];
                    n = {value: i.value, text: i.textContent}
                } else n = this.selectedValue;
                return e && t && (n = JSON.stringify(n)), n
            }, v.prototype.add = function (e, t) {
                if (e) {
                    if (this.data = this.data || [], this.items = this.items || [], this.options = this.options || [], Array.isArray(e)) o.each(e, (function (e, n) {
                        this.add(n, t)
                    }), this); else if ("[object Object]" === Object.prototype.toString.call(e)) {
                        if (t) {
                            var n = !1;
                            if (o.each(this.options, (function (t, i) {
                                i.value.toLowerCase() === e.value.toLowerCase() && (n = !0)
                            })), n) return !1
                        }
                        var i = o.createElement("option", e);
                        return this.data.push(e), this.options.push(i), i.idx = this.options.length > 0 ? this.options.length - 1 : 0, u.call(this, i), e.selected && this.select(i.idx), i
                    }
                    return this.setPlaceholder(), this.config.pagination && this.paginate(), !0
                }
            }, v.prototype.remove = function (e) {
                var t, n = [];
                Array.isArray(e) ? o.each(e, (function (t, i) {
                    o.isInt(i) ? n.push(this.getOptionByIndex(i)) : "string" == typeof e && n.push(this.getOptionByValue(i))
                }), this) : o.isInt(e) ? n.push(this.getOptionByIndex(e)) : "string" == typeof e && n.push(this.getOptionByValue(e)), n.length && (o.each(n, (function (e, n) {
                    t = n.idx, this.el.remove(n), this.options.splice(t, 1);
                    var i = this.items[t].parentNode;
                    i && i.removeChild(this.items[t]), this.items.splice(t, 1), o.each(this.options, (function (e, t) {
                        t.idx = e, this.items[e].idx = e
                    }), this)
                }), this), this.setPlaceholder(), this.config.pagination && this.paginate())
            }, v.prototype.removeAll = function () {
                this.clear(!0), o.each(this.el.options, (function (e, t) {
                    this.el.remove(t)
                }), this), o.truncate(this.tree), this.items = [], this.options = [], this.data = [], this.navIndex = 0, this.requiresPagination && (this.requiresPagination = !1, this.pageIndex = 1, this.pages = []), this.setPlaceholder()
            }, v.prototype.search = function (e) {
                if (!this.navigating) {
                    e = e || this.input.value;
                    var t = document.createDocumentFragment();
                    if (this.removeMessage(), o.truncate(this.tree), e.length > 1) if (o.each(this.options, (function (n, i) {
                        var r = this.items[i.idx];
                        o.includes(i.textContent.toLowerCase(), e.toLowerCase()) && !i.disabled ? (s(r, t, this.customOption), o.removeClass(r, "excluded"), this.customOption || (r.innerHTML = function (e, t) {
                            var n = new RegExp(e, "i").exec(t.textContent);
                            return !!n && t.textContent.replace(n[0], "<span class='selectr-match'>" + n[0] + "</span>")
                        }(e, i))) : o.addClass(r, "excluded")
                    }), this), t.childElementCount) {
                        var n = this.items[this.navIndex], i = t.firstElementChild;
                        o.removeClass(n, "active"), this.navIndex = i.idx, o.addClass(i, "active")
                    } else this.config.taggable || this.setMessage("no results."); else l.call(this);
                    this.tree.appendChild(t)
                }
            }, v.prototype.toggle = function () {
                this.disabled || (this.opened ? this.close() : this.open())
            }, v.prototype.open = function () {
                var e = this;
                return !!this.options.length && (this.opened || this.emit("selectr.open"), this.opened = !0, this.mobileDevice || this.config.nativeDropdown ? (o.addClass(this.container, "native-open"), void (this.config.data && o.each(this.options, (function (e, t) {
                    this.el.add(t)
                }), this))) : (o.addClass(this.container, "open"), l.call(this), this.invert(), this.tree.scrollTop = 0, o.removeClass(this.container, "notice"), this.selected.setAttribute("aria-expanded", !0), this.tree.setAttribute("aria-hidden", !1), this.tree.setAttribute("aria-expanded", !0), void (this.config.searchable && !this.config.taggable && setTimeout((function () {
                    e.input.focus(), e.input.tabIndex = 0
                }), 10))))
            }, v.prototype.close = function () {
                if (this.opened && this.emit("selectr.close"), this.opened = !1, this.mobileDevice || this.config.nativeDropdown) o.removeClass(this.container, "native-open"); else {
                    var e = o.hasClass(this.container, "notice");
                    this.config.searchable && !e && (this.input.blur(), this.input.tabIndex = -1, this.searching = !1), e && (o.removeClass(this.container, "notice"), this.notice.textContent = ""), o.removeClass(this.container, "open"), o.removeClass(this.container, "native-open"), this.selected.setAttribute("aria-expanded", !1), this.tree.setAttribute("aria-hidden", !0), this.tree.setAttribute("aria-expanded", !1), o.truncate(this.tree), m.call(this)
                }
            }, v.prototype.enable = function () {
                this.disabled = !1, this.el.disabled = !1, this.selected.tabIndex = this.originalIndex, this.el.multiple && o.each(this.tags, (function (e, t) {
                    t.lastElementChild.tabIndex = 0
                })), o.removeClass(this.container, "selectr-disabled")
            }, v.prototype.disable = function (e) {
                e || (this.el.disabled = !0), this.selected.tabIndex = -1, this.el.multiple && o.each(this.tags, (function (e, t) {
                    t.lastElementChild.tabIndex = -1
                })), this.disabled = !0, o.addClass(this.container, "selectr-disabled")
            }, v.prototype.reset = function () {
                this.disabled || (this.clear(), this.setSelected(!0), o.each(this.defaultSelected, (function (e, t) {
                    this.select(t)
                }), this), this.emit("selectr.reset"))
            }, v.prototype.clear = function (e) {
                if (this.el.multiple) {
                    if (this.selectedIndexes.length) {
                        var t = this.selectedIndexes.slice();
                        o.each(t, (function (e, t) {
                            this.deselect(t)
                        }), this)
                    }
                } else this.selectedIndex > -1 && this.deselect(this.selectedIndex, e);
                this.emit("selectr.clear")
            }, v.prototype.serialise = function (e) {
                var t = [];
                return o.each(this.options, (function (e, n) {
                    var i = {value: n.value, text: n.textContent};
                    n.selected && (i.selected = !0), n.disabled && (i.disabled = !0), t[e] = i
                })), e ? JSON.stringify(t) : t
            }, v.prototype.serialize = function (e) {
                return this.serialise(e)
            }, v.prototype.setPlaceholder = function (e) {
                e = e || this.config.placeholder || this.el.getAttribute("placeholder"), this.options.length || (e = "No options available"), this.placeEl.innerHTML = e
            }, v.prototype.paginate = function () {
                if (this.items.length) {
                    var e = this;
                    return this.pages = this.items.map((function (t, n) {
                        return n % e.config.pagination == 0 ? e.items.slice(n, n + e.config.pagination) : null
                    })).filter((function (e) {
                        return e
                    })), this.pages
                }
            }, v.prototype.setMessage = function (e, t) {
                t && this.close(), o.addClass(this.container, "notice"), this.notice.textContent = e
            }, v.prototype.removeMessage = function () {
                o.removeClass(this.container, "notice"), this.notice.innerHTML = ""
            }, v.prototype.invert = function () {
                var e = o.rect(this.selected), t = this.tree.parentNode.offsetHeight, n = window.innerHeight;
                e.top + e.height + t > n ? (o.addClass(this.container, "inverted"), this.isInverted = !0) : (o.removeClass(this.container, "inverted"), this.isInverted = !1), this.optsRect = o.rect(this.tree)
            }, v.prototype.getOptionByIndex = function (e) {
                return this.options[e]
            }, v.prototype.getOptionByValue = function (e) {
                for (var t = !1, n = 0, i = this.options.length; n < i; n++) if (this.options[n].value.trim() === e.toString().trim()) {
                    t = this.options[n];
                    break
                }
                return t
            }, e.exports = v
        }, function (e, t) {
            e.exports = function e(t, n) {
                "use strict";
                var i, r, o = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,
                    a = /(^[ ]*|[ ]*$)/g,
                    s = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
                    l = /^0x[0-9a-f]+$/i, c = /^0/, u = function (t) {
                        return e.insensitive && ("" + t).toLowerCase() || "" + t
                    }, h = u(t).replace(a, "") || "", d = u(n).replace(a, "") || "",
                    f = h.replace(o, "\0$1\0").replace(/\0$/, "").replace(/^\0/, "").split("\0"),
                    g = d.replace(o, "\0$1\0").replace(/\0$/, "").replace(/^\0/, "").split("\0"),
                    p = parseInt(h.match(l), 16) || 1 !== f.length && h.match(s) && Date.parse(h),
                    m = parseInt(d.match(l), 16) || p && d.match(s) && Date.parse(d) || null;
                if (m) {
                    if (p < m) return -1;
                    if (p > m) return 1
                }
                for (var v = 0, y = Math.max(f.length, g.length); v < y; v++) {
                    if (i = !(f[v] || "").match(c) && parseFloat(f[v]) || f[v] || 0, r = !(g[v] || "").match(c) && parseFloat(g[v]) || g[v] || 0, isNaN(i) !== isNaN(r)) return isNaN(i) ? 1 : -1;
                    if (typeof i != typeof r && (i += "", r += ""), i < r) return -1;
                    if (i > r) return 1
                }
                return 0
            }
        }, function (e, t, n) {
            "use strict";
            n.d(t, "a", (function () {
                return r
            }));
            var i = n(0);

            function r(e, t, n) {
                var r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], s = o(e), l = {},
                    c = e.getBoundingClientRect(), u = t.getBoundingClientRect(), h = document.createElement("div");

                function d() {
                    if (h && h.parentNode) {
                        for (var t in h.parentNode.removeChild(h), l) if (a(l, t)) {
                            var r = l[t];
                            r && Object(i.removeEventListener)(s, t, r), delete l[t]
                        }
                        "function" == typeof n && n(e)
                    }
                }

                function f(e) {
                    return e !== h && !Object(i.isChildOf)(e, h)
                }

                function g(e) {
                    f(e.target) && d()
                }

                if (h.className = "jsoneditor-anchor", h.style.position = "absolute", h.style.left = c.left - u.left + "px", h.style.top = c.top - u.top + "px", h.style.width = c.width - 2 + "px", h.style.height = c.height - 2 + "px", h.style.boxSizing = "border-box", t.appendChild(h), l.mousedown = Object(i.addEventListener)(s, "mousedown", g), l.mousewheel = Object(i.addEventListener)(s, "mousewheel", g), r) {
                    var p = null;
                    h.onmouseover = function () {
                        clearTimeout(p), p = null
                    }, h.onmouseout = function () {
                        p || (p = setTimeout(d, 200))
                    }
                }
                return h.destroy = d, h
            }

            function o(e) {
                return "function" == typeof e.getRootNode ? e.getRootNode() : window
            }

            function a(e, t) {
                return Object.prototype.hasOwnProperty.call(e, t)
            }
        }, function (e, t, n) {
            var i;
            if (window.Picker) i = window.Picker; else try {
                i = n(41)
            } catch (e) {
            }
            e.exports = i
        }, function (e, t, n) {
            var i, r, o;
            !function (n, a) {
                "use strict";
                r = [], void 0 === (o = "function" == typeof (i = function () {
                    function e(e) {
                        return "object" == typeof Node ? e instanceof Node : e && "object" == typeof e && "number" == typeof e.nodeType
                    }

                    function t() {
                        var e = [];
                        return {
                            watch: e.push.bind(e), trigger: function (t, n) {
                                for (var i = !0, r = {
                                    detail: n, preventDefault: function () {
                                        i = !1
                                    }
                                }, o = 0; o < e.length; o++) e[o](t, r);
                                return i
                            }
                        }
                    }

                    function n(e) {
                        return "none" === window.getComputedStyle(e).display
                    }

                    function i(e) {
                        this.elem = e
                    }

                    function r(e, t) {
                        return i.make(e("parent")).clazz("pico-overlay").clazz(e("overlayClass", "")).stylize({
                            display: "none",
                            position: "fixed",
                            top: "0px",
                            left: "0px",
                            height: "100%",
                            width: "100%",
                            zIndex: 1e4
                        }).stylize(e("overlayStyles", {opacity: .5, background: "#000"})).onClick((function () {
                            e("overlayClose", !0) && t()
                        }))
                    }

                    i.make = function (e, t) {
                        "string" == typeof e && (e = document.querySelector(e));
                        var n = document.createElement(t || "div");
                        return (e || document.body).appendChild(n), new i(n)
                    }, i.prototype = {
                        child: function (e) {
                            return i.make(this.elem, e)
                        }, stylize: function (e) {
                            for (var t in void 0 !== (e = e || {}).opacity && (e.filter = "alpha(opacity=" + 100 * e.opacity + ")"), e) e.hasOwnProperty(t) && (this.elem.style[t] = e[t]);
                            return this
                        }, clazz: function (e) {
                            return this.elem.className += " " + e, this
                        }, html: function (t) {
                            return e(t) ? this.elem.appendChild(t) : this.elem.innerHTML = t, this
                        }, onClick: function (e) {
                            return this.elem.addEventListener("click", e), this
                        }, destroy: function () {
                            this.elem.parentNode.removeChild(this.elem)
                        }, hide: function () {
                            this.elem.style.display = "none"
                        }, show: function () {
                            this.elem.style.display = "block"
                        }, attr: function (e, t) {
                            return void 0 !== t && this.elem.setAttribute(e, t), this
                        }, anyAncestor: function (e) {
                            for (var t = this.elem; t;) {
                                if (e(new i(t))) return !0;
                                t = t.parentNode
                            }
                            return !1
                        }, isVisible: function () {
                            return !n(this.elem)
                        }
                    };
                    var o = 1;

                    function a(e, t) {
                        if (t("closeButton", !0)) return e.child("button").html(t("closeHtml", "&#xD7;")).clazz("pico-close").clazz(t("closeClass", "")).stylize(t("closeStyles", {
                            borderRadius: "2px",
                            border: 0,
                            padding: 0,
                            cursor: "pointer",
                            height: "15px",
                            width: "15px",
                            position: "absolute",
                            top: "5px",
                            right: "5px",
                            fontSize: "16px",
                            textAlign: "center",
                            lineHeight: "15px",
                            background: "#CCC"
                        })).attr("aria-label", t("close-label", "Close"))
                    }

                    function s(e) {
                        return function () {
                            return e().elem
                        }
                    }

                    var l = t(), c = t();
                    return document.documentElement.addEventListener("keydown", (function (e) {
                        var t = e.which || e.keyCode;
                        27 === t ? l.trigger() : 9 === t && c.trigger(e)
                    })), function (u) {
                        ("string" == typeof u || e(u)) && (u = {content: u});
                        var h = t(), d = t(), f = t(), g = t(), p = t();

                        function m(e, t) {
                            var n = u[e];
                            return "function" == typeof n && (n = n(t)), void 0 === n ? t : n
                        }

                        var v, y, b = _.bind(window, "modal"), C = _.bind(window, "overlay"),
                            w = _.bind(window, "close");

                        function I(e) {
                            C().hide(), b().hide(), p.trigger(v, e)
                        }

                        function x(e) {
                            g.trigger(v, e) && I(e)
                        }

                        function A(e) {
                            return function () {
                                return e.apply(this, arguments), v
                            }
                        }

                        function _(e, t) {
                            if (!y) {
                                var n = function (e, t) {
                                    var n = e("width", "auto");
                                    "number" == typeof n && (n += "px");
                                    var r = e("modalId", "pico-" + o++);
                                    return i.make(e("parent")).clazz("pico-content").clazz(e("modalClass", "")).stylize({
                                        display: "none",
                                        position: "fixed",
                                        zIndex: 10001,
                                        left: "50%",
                                        top: "38.1966%",
                                        maxHeight: "90%",
                                        boxSizing: "border-box",
                                        width: n,
                                        "-ms-transform": "translate(-50%,-38.1966%)",
                                        "-moz-transform": "translate(-50%,-38.1966%)",
                                        "-webkit-transform": "translate(-50%,-38.1966%)",
                                        "-o-transform": "translate(-50%,-38.1966%)",
                                        transform: "translate(-50%,-38.1966%)"
                                    }).stylize(e("modalStyles", {
                                        overflow: "auto",
                                        backgroundColor: "white",
                                        padding: "20px",
                                        borderRadius: "5px"
                                    })).html(e("content")).attr("id", r).attr("role", "dialog").attr("aria-labelledby", e("ariaLabelledBy")).attr("aria-describedby", e("ariaDescribedBy", r)).onClick((function (e) {
                                        new i(e.target).anyAncestor((function (e) {
                                            return /\bpico-close\b/.test(e.elem.className)
                                        })) && t()
                                    }))
                                }(m, x);
                                y = {modal: n, overlay: r(m, x), close: a(n, m)}, h.trigger(v, t)
                            }
                            return y[e]
                        }

                        return function (e, t) {
                            function i(e, t) {
                                return (e.msMatchesSelector || e.webkitMatchesSelector || e.matches).call(e, t)
                            }

                            function r(e) {
                                return !(n(e) || i(e, ":disabled") || e.hasAttribute("contenteditable")) && (e.hasAttribute("tabindex") || i(e, "input,select,textarea,button,a[href],area[href],iframe"))
                            }

                            function o(e) {
                                for (var t = e.getElementsByTagName("*"), n = 0; n < t.length; n++) if (r(t[n])) return t[n]
                            }

                            var a;
                            e.beforeShow((function () {
                                a = document.activeElement
                            })), e.afterShow((function () {
                                if (t()) {
                                    var n = o(e.modalElem());
                                    n && n.focus()
                                }
                            })), e.afterClose((function () {
                                t() && a && a.focus(), a = null
                            })), c.watch((function (n) {
                                if (t() && e.isVisible()) {
                                    var i = o(e.modalElem()), a = function (e) {
                                        for (var t = e.getElementsByTagName("*"), n = t.length; n--;) if (r(t[n])) return t[n]
                                    }(e.modalElem());
                                    (n.shiftKey ? i : a) === document.activeElement && ((n.shiftKey ? a : i).focus(), n.preventDefault())
                                }
                            }))
                        }(v = {
                            modalElem: s(b),
                            closeElem: s(w),
                            overlayElem: s(C),
                            buildDom: A(_.bind(null, null)),
                            isVisible: function () {
                                return !!(y && b && b().isVisible())
                            },
                            show: function (e) {
                                return d.trigger(v, e) && (C().show(), w(), b().show(), f.trigger(v, e)), this
                            },
                            close: A(x),
                            forceClose: A(I),
                            destroy: function () {
                                b().destroy(), C().destroy(), C = b = w = void 0
                            },
                            options: function (e) {
                                Object.keys(e).map((function (t) {
                                    u[t] = e[t]
                                }))
                            },
                            afterCreate: A(h.watch),
                            beforeShow: A(d.watch),
                            afterShow: A(f.watch),
                            beforeClose: A(g.watch),
                            afterClose: A(p.watch)
                        }, m.bind(null, "focus", !0)), function (e, t) {
                            var n, r = new i(document.body);
                            e.beforeShow((function () {
                                n = r.elem.style.overflow, t() && r.stylize({overflow: "hidden"})
                            })), e.afterClose((function () {
                                r.stylize({overflow: n})
                            }))
                        }(v, m.bind(null, "bodyOverflow", !0)), l.watch((function () {
                            m("escCloses", !0) && v.isVisible() && v.close()
                        })), v
                    }
                }) ? i.apply(t, r) : i) || (e.exports = o)
            }()
        }, function (e, t, n) {
            "use strict";

            function i(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            n.d(t, "a", (function () {
                return r
            }));
            var r = function () {
                function e(t) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.errorTableVisible = t.errorTableVisible, this.onToggleVisibility = t.onToggleVisibility, this.onFocusLine = t.onFocusLine || function () {
                    }, this.onChangeHeight = t.onChangeHeight, this.dom = {};
                    var n = document.createElement("div");
                    n.className = "jsoneditor-validation-errors-container", this.dom.validationErrorsContainer = n;
                    var i = document.createElement("div");
                    i.style.display = "none", i.className = "jsoneditor-additional-errors fadein", i.innerHTML = "Scroll for more &#9663;", this.dom.additionalErrorsIndication = i, n.appendChild(i);
                    var r = document.createElement("span");
                    r.className = "jsoneditor-validation-error-icon", r.style.display = "none", this.dom.validationErrorIcon = r;
                    var o = document.createElement("span");
                    o.className = "jsoneditor-validation-error-count", o.style.display = "none", this.dom.validationErrorCount = o, this.dom.parseErrorIndication = document.createElement("span"), this.dom.parseErrorIndication.className = "jsoneditor-parse-error-icon", this.dom.parseErrorIndication.style.display = "none"
                }

                var t, n, r;
                return t = e, (n = [{
                    key: "getErrorTable", value: function () {
                        return this.dom.validationErrorsContainer
                    }
                }, {
                    key: "getErrorCounter", value: function () {
                        return this.dom.validationErrorCount
                    }
                }, {
                    key: "getWarningIcon", value: function () {
                        return this.dom.validationErrorIcon
                    }
                }, {
                    key: "getErrorIcon", value: function () {
                        return this.dom.parseErrorIndication
                    }
                }, {
                    key: "toggleTableVisibility", value: function () {
                        this.errorTableVisible = !this.errorTableVisible, this.onToggleVisibility(this.errorTableVisible)
                    }
                }, {
                    key: "setErrors", value: function (e, t) {
                        var n = this;
                        if (this.dom.validationErrors && (this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors), this.dom.validationErrors = null, this.dom.additionalErrorsIndication.style.display = "none"), this.errorTableVisible && e.length > 0) {
                            var i = document.createElement("div");
                            i.className = "jsoneditor-validation-errors", i.innerHTML = '<table class="jsoneditor-text-errors"><tbody></tbody></table>';
                            var r = i.getElementsByTagName("tbody")[0];
                            e.forEach((function (e) {
                                var i, o;
                                if (i = "string" == typeof e ? '<td colspan="2"><pre>' + e + "</pre></td>" : "<td>" + (e.dataPath || "") + "</td><td><pre>" + e.message + "</pre></td>", isNaN(e.line)) {
                                    if (e.dataPath) {
                                        var a = t.find((function (t) {
                                            return t.path === e.dataPath
                                        }));
                                        a && (o = a.line + 1)
                                    }
                                } else o = e.line;
                                var s = document.createElement("tr");
                                s.className = isNaN(o) ? "" : "jump-to-line", "error" === e.type ? s.className += " parse-error" : s.className += " validation-error", s.innerHTML = '<td><button class="jsoneditor-schema-error"></button></td><td style="white-space:nowrap;">' + (isNaN(o) ? "" : "Ln " + o) + "</td>" + i, s.onclick = function () {
                                    n.onFocusLine(o)
                                }, r.appendChild(s)
                            })), this.dom.validationErrors = i, this.dom.validationErrorsContainer.appendChild(i), this.dom.additionalErrorsIndication.title = e.length + " errors total", this.dom.validationErrorsContainer.clientHeight < this.dom.validationErrorsContainer.scrollHeight ? (this.dom.additionalErrorsIndication.style.display = "block", this.dom.validationErrorsContainer.onscroll = function () {
                                n.dom.additionalErrorsIndication.style.display = n.dom.validationErrorsContainer.clientHeight > 0 && 0 === n.dom.validationErrorsContainer.scrollTop ? "block" : "none"
                            }) : this.dom.validationErrorsContainer.onscroll = void 0;
                            var o = this.dom.validationErrorsContainer.clientHeight + (this.dom.statusBar ? this.dom.statusBar.clientHeight : 0);
                            this.onChangeHeight(o)
                        } else this.onChangeHeight(0);
                        var a = e.filter((function (e) {
                            return "error" !== e.type
                        })).length;
                        if (a > 0 ? (this.dom.validationErrorCount.style.display = "inline", this.dom.validationErrorCount.innerText = a, this.dom.validationErrorCount.onclick = this.toggleTableVisibility.bind(this), this.dom.validationErrorIcon.style.display = "inline", this.dom.validationErrorIcon.title = a + " schema validation error(s) found", this.dom.validationErrorIcon.onclick = this.toggleTableVisibility.bind(this)) : (this.dom.validationErrorCount.style.display = "none", this.dom.validationErrorIcon.style.display = "none"), e.some((function (e) {
                            return "error" === e.type
                        }))) {
                            var s = e[0].line;
                            this.dom.parseErrorIndication.style.display = "block", this.dom.parseErrorIndication.title = isNaN(s) ? "parse error - check that the json is valid" : "parse error on line " + s, this.dom.parseErrorIndication.onclick = this.toggleTableVisibility.bind(this)
                        } else this.dom.parseErrorIndication.style.display = "none"
                    }
                }]) && i(t.prototype, n), r && i(t, r), e
            }()
        }, function (e, t) {
            e.exports = function (e) {
                return e.webpackPolyfill || (e.deprecate = function () {
                }, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, "loaded", {
                    enumerable: !0,
                    get: function () {
                        return e.l
                    }
                }), Object.defineProperty(e, "id", {
                    enumerable: !0, get: function () {
                        return e.i
                    }
                }), e.webpackPolyfill = 1), e
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(46), r = n(18), o = n(7), a = n(25), s = n(48);

            function l(e, t, n) {
                var i = this._refs[n];
                if ("string" == typeof i) {
                    if (!this._refs[i]) return l.call(this, e, t, i);
                    i = this._refs[i]
                }
                if ((i = i || this._schemas[n]) instanceof a) return g(i.schema, this._opts.inlineRefs) ? i.schema : i.validate || this._compile(i);
                var r, o, s, u = c.call(this, t, n);
                return u && (r = u.schema, t = u.root, s = u.baseId), r instanceof a ? o = r.validate || e.call(this, r.schema, t, void 0, s) : void 0 !== r && (o = g(r, this._opts.inlineRefs) ? r : e.call(this, r, t, void 0, s)), o
            }

            function c(e, t) {
                var n = i.parse(t), r = m(n), o = p(this._getId(e.schema));
                if (0 === Object.keys(e.schema).length || r !== o) {
                    var s = y(r), l = this._refs[s];
                    if ("string" == typeof l) return u.call(this, e, l, n);
                    if (l instanceof a) l.validate || this._compile(l), e = l; else {
                        if (!((l = this._schemas[s]) instanceof a)) return;
                        if (l.validate || this._compile(l), s == y(t)) return {schema: l, root: e, baseId: o};
                        e = l
                    }
                    if (!e.schema) return;
                    o = p(this._getId(e.schema))
                }
                return d.call(this, n, o, e.schema, e)
            }

            function u(e, t, n) {
                var i = c.call(this, e, t);
                if (i) {
                    var r = i.schema, o = i.baseId;
                    e = i.root;
                    var a = this._getId(r);
                    return a && (o = b(o, a)), d.call(this, n, o, r, e)
                }
            }

            e.exports = l, l.normalizeId = y, l.fullPath = p, l.url = b, l.ids = function (e) {
                var t = y(this._getId(e)), n = {"": t}, a = {"": p(t, !1)}, l = {}, c = this;
                return s(e, {allKeys: !0}, (function (e, t, s, u, h, d, f) {
                    if ("" !== t) {
                        var g = c._getId(e), p = n[u], m = a[u] + "/" + h;
                        if (void 0 !== f && (m += "/" + ("number" == typeof f ? f : o.escapeFragment(f))), "string" == typeof g) {
                            g = p = y(p ? i.resolve(p, g) : g);
                            var v = c._refs[g];
                            if ("string" == typeof v && (v = c._refs[v]), v && v.schema) {
                                if (!r(e, v.schema)) throw new Error('id "' + g + '" resolves to more than one schema')
                            } else if (g != y(m)) if ("#" == g[0]) {
                                if (l[g] && !r(e, l[g])) throw new Error('id "' + g + '" resolves to more than one schema');
                                l[g] = e
                            } else c._refs[g] = m
                        }
                        n[t] = p, a[t] = m
                    }
                })), l
            }, l.inlineRef = g, l.schema = c;
            var h = o.toHash(["properties", "patternProperties", "enum", "dependencies", "definitions"]);

            function d(e, t, n, i) {
                if (e.fragment = e.fragment || "", "/" == e.fragment.slice(0, 1)) {
                    for (var r = e.fragment.split("/"), a = 1; a < r.length; a++) {
                        var s = r[a];
                        if (s) {
                            if (void 0 === (n = n[s = o.unescapeFragment(s)])) break;
                            var l;
                            if (!h[s] && ((l = this._getId(n)) && (t = b(t, l)), n.$ref)) {
                                var u = b(t, n.$ref), d = c.call(this, i, u);
                                d && (n = d.schema, i = d.root, t = d.baseId)
                            }
                        }
                    }
                    return void 0 !== n && n !== i.schema ? {schema: n, root: i, baseId: t} : void 0
                }
            }

            var f = o.toHash(["type", "format", "pattern", "maxLength", "minLength", "maxProperties", "minProperties", "maxItems", "minItems", "maximum", "minimum", "uniqueItems", "multipleOf", "required", "enum"]);

            function g(e, t) {
                return !1 !== t && (void 0 === t || !0 === t ? function e(t) {
                    var n;
                    if (Array.isArray(t)) {
                        for (var i = 0; i < t.length; i++) if ("object" == typeof (n = t[i]) && !e(n)) return !1
                    } else for (var r in t) {
                        if ("$ref" == r) return !1;
                        if ("object" == typeof (n = t[r]) && !e(n)) return !1
                    }
                    return !0
                }(e) : t ? function e(t) {
                    var n, i = 0;
                    if (Array.isArray(t)) {
                        for (var r = 0; r < t.length; r++) if ("object" == typeof (n = t[r]) && (i += e(n)), i == 1 / 0) return 1 / 0
                    } else for (var o in t) {
                        if ("$ref" == o) return 1 / 0;
                        if (f[o]) i++; else if ("object" == typeof (n = t[o]) && (i += e(n) + 1), i == 1 / 0) return 1 / 0
                    }
                    return i
                }(e) <= t : void 0)
            }

            function p(e, t) {
                return !1 !== t && (e = y(e)), m(i.parse(e))
            }

            function m(e) {
                return i.serialize(e).split("#")[0] + "#"
            }

            var v = /#\/?$/;

            function y(e) {
                return e ? e.replace(v, "") : ""
            }

            function b(e, t) {
                return t = y(t), i.resolve(e, t)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function e(t, n) {
                if (t === n) return !0;
                if (t && n && "object" == typeof t && "object" == typeof n) {
                    if (t.constructor !== n.constructor) return !1;
                    var i, r, o;
                    if (Array.isArray(t)) {
                        if ((i = t.length) != n.length) return !1;
                        for (r = i; 0 != r--;) if (!e(t[r], n[r])) return !1;
                        return !0
                    }
                    if (t.constructor === RegExp) return t.source === n.source && t.flags === n.flags;
                    if (t.valueOf !== Object.prototype.valueOf) return t.valueOf() === n.valueOf();
                    if (t.toString !== Object.prototype.toString) return t.toString() === n.toString();
                    if ((i = (o = Object.keys(t)).length) !== Object.keys(n).length) return !1;
                    for (r = i; 0 != r--;) if (!Object.prototype.hasOwnProperty.call(n, o[r])) return !1;
                    for (r = i; 0 != r--;) {
                        var a = o[r];
                        if (!e(t[a], n[a])) return !1
                    }
                    return !0
                }
                return t != t && n != n
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(17);

            function r(e, t, n) {
                this.message = n || r.message(e, t), this.missingRef = i.url(e, t), this.missingSchema = i.normalizeId(i.fullPath(this.missingRef))
            }

            function o(e) {
                return e.prototype = Object.create(Error.prototype), e.prototype.constructor = e, e
            }

            e.exports = {
                Validation: o((function (e) {
                    this.message = "validation failed", this.errors = e, this.ajv = this.validation = !0
                })), MissingRef: o(r)
            }, r.message = function (e, t) {
                return "can't resolve reference " + t + " from id " + e
            }
        }, function (e, t, n) {
            var i;
            if (window.ace) i = window.ace; else try {
                i = n(37), n(38), n(39);
                var r = n(40);
                i.config.setModuleUrl("ace/mode/json_worker", r)
            } catch (e) {
            }
            e.exports = i
        }, function (e, t, n) {
            "use strict";
            n.r(t), n.d(t, "textModeMixins", (function () {
                return y
            }));
            var i = n(20), r = n.n(i), o = n(1), a = n(8), s = n(15), l = n(0), c = n(5), u = n(6), h = n(9), d = n(2),
                f = n(35), g = n(4);

            function p(e) {
                return (p = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
                    return typeof e
                } : function (e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                })(e)
            }

            var m = {};

            function v() {
                try {
                    this.format()
                } catch (e) {
                }
            }

            m.create = function (e) {
                var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                void 0 === n.statusBar && (n.statusBar = !0), n.mainMenuBar = !1 !== n.mainMenuBar, n.enableSort = !1 !== n.enableSort, n.enableTransform = !1 !== n.enableTransform, n.createQuery = n.createQuery || g.a, n.executeQuery = n.executeQuery || g.b, this.options = n, "number" == typeof n.indentation ? this.indentation = Number(n.indentation) : this.indentation = 2, Object(o.b)(this.options.languages), Object(o.a)(this.options.language);
                var i = n.ace ? n.ace : r.a;
                this.mode = "code" === n.mode ? "code" : "text", "code" === this.mode && void 0 === i && (this.mode = "text", console.warn("Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.")), this.theme = n.theme || "ace/theme/jsoneditor", "ace/theme/jsoneditor" === this.theme && i && Object(f.tryRequireThemeJsonEditor)(), n.onTextSelectionChange && this.onTextSelectionChange(n.onTextSelectionChange);
                var c = this;
                this.container = e, this.dom = {}, this.aceEditor = void 0, this.textarea = void 0, this.validateSchema = null, this.annotations = [], this.lastSchemaErrors = void 0, this._debouncedValidate = Object(l.debounce)(this.validate.bind(this), this.DEBOUNCE_INTERVAL), this.width = e.clientWidth, this.height = e.clientHeight, this.frame = document.createElement("div"), this.frame.className = "jsoneditor jsoneditor-mode-" + this.options.mode, this.frame.onclick = function (e) {
                    e.preventDefault()
                }, this.frame.onkeydown = function (e) {
                    c._onKeyDown(e)
                };
                var u = {
                    target: this.frame,
                    onFocus: this.options.onFocus || null,
                    onBlur: this.options.onBlur || null
                };
                if (this.frameFocusTracker = new h.a(u), this.content = document.createElement("div"), this.content.className = "jsoneditor-outer", this.options.mainMenuBar) {
                    Object(l.addClassName)(this.content, "has-main-menu-bar"), this.menu = document.createElement("div"), this.menu.className = "jsoneditor-menu", this.frame.appendChild(this.menu);
                    var d = document.createElement("button");
                    d.type = "button", d.className = "jsoneditor-format", d.title = Object(o.c)("formatTitle"), this.menu.appendChild(d), d.onclick = function () {
                        try {
                            c.format(), c._onChange()
                        } catch (e) {
                            c._onError(e)
                        }
                    };
                    var m = document.createElement("button");
                    if (m.type = "button", m.className = "jsoneditor-compact", m.title = Object(o.c)("compactTitle"), this.menu.appendChild(m), m.onclick = function () {
                        try {
                            c.compact(), c._onChange()
                        } catch (e) {
                            c._onError(e)
                        }
                    }, this.options.enableSort) {
                        var v = document.createElement("button");
                        v.type = "button", v.className = "jsoneditor-sort", v.title = Object(o.c)("sortTitleShort"), v.onclick = function () {
                            c._showSortModal()
                        }, this.menu.appendChild(v)
                    }
                    if (this.options.enableTransform) {
                        var y = document.createElement("button");
                        y.type = "button", y.title = Object(o.c)("transformTitleShort"), y.className = "jsoneditor-transform", y.onclick = function () {
                            c._showTransformModal()
                        }, this.menu.appendChild(y)
                    }
                    var b = document.createElement("button");
                    if (b.type = "button", b.className = "jsoneditor-repair", b.title = Object(o.c)("repairTitle"), this.menu.appendChild(b), b.onclick = function () {
                        try {
                            c.repair(), c._onChange()
                        } catch (e) {
                            c._onError(e)
                        }
                    }, "code" === this.mode) {
                        var C = document.createElement("button");
                        C.type = "button", C.className = "jsoneditor-undo jsoneditor-separator", C.title = Object(o.c)("undo"), C.onclick = function () {
                            t.aceEditor.getSession().getUndoManager().undo()
                        }, this.menu.appendChild(C), this.dom.undo = C;
                        var w = document.createElement("button");
                        w.type = "button", w.className = "jsoneditor-redo", w.title = Object(o.c)("redo"), w.onclick = function () {
                            t.aceEditor.getSession().getUndoManager().redo()
                        }, this.menu.appendChild(w), this.dom.redo = w
                    }
                    if (this.options && this.options.modes && this.options.modes.length && (this.modeSwitcher = new a.a(this.menu, this.options.modes, this.options.mode, (function (e) {
                        c.setMode(e), c.modeSwitcher.focus()
                    }))), "code" === this.mode) {
                        var I = document.createElement("a");
                        I.appendChild(document.createTextNode("powered by ace")), I.href = "http://ace.ajax.org", I.target = "_blank", I.className = "jsoneditor-poweredBy", I.onclick = function () {
                            window.open(I.href, I.target)
                        }, this.menu.appendChild(I)
                    }
                }
                var x = {},
                    A = this.options.onEditable && p("function" === this.options.onEditable) && !this.options.onEditable(x);
                if (this.frame.appendChild(this.content), this.container.appendChild(this.frame), "code" === this.mode) {
                    this.editorDom = document.createElement("div"), this.editorDom.style.height = "100%", this.editorDom.style.width = "100%", this.content.appendChild(this.editorDom);
                    var _ = i.edit(this.editorDom), S = _.getSession();
                    _.$blockScrolling = 1 / 0, _.setTheme(this.theme), _.setOptions({readOnly: A}), _.setShowPrintMargin(!1), _.setFontSize("13px"), S.setMode("ace/mode/json"), S.setTabSize(this.indentation), S.setUseSoftTabs(!0), S.setUseWrapMode(!0);
                    var k = S.setAnnotations;
                    S.setAnnotations = function (e) {
                        k.call(this, e && e.length ? e : c.annotations)
                    }, _.commands.bindKey("Ctrl-L", null), _.commands.bindKey("Command-L", null), this.aceEditor = _, _.on("change", this._onChange.bind(this)), _.on("changeSelection", this._onSelect.bind(this))
                } else {
                    var L = document.createElement("textarea");
                    L.className = "jsoneditor-text", L.spellcheck = !1, this.content.appendChild(L), this.textarea = L, this.textarea.readOnly = A, null === this.textarea.oninput ? this.textarea.oninput = this._onChange.bind(this) : this.textarea.onchange = this._onChange.bind(this), L.onselect = this._onSelect.bind(this), L.onmousedown = this._onMouseDown.bind(this), L.onblur = this._onBlur.bind(this)
                }
                if (this._updateHistoryButtons(), this.errorTable = new s.a({
                    errorTableVisible: "text" === this.mode,
                    onToggleVisibility: function () {
                        c.validate()
                    },
                    onFocusLine: function (e) {
                        c.isFocused = !0, isNaN(e) || c.setTextSelection({row: e, column: 1}, {row: e, column: 1e3})
                    },
                    onChangeHeight: function (e) {
                        var t = e + (c.dom.statusBar ? c.dom.statusBar.clientHeight : 0) + 1;
                        c.content.style.marginBottom = -t + "px", c.content.style.paddingBottom = t + "px"
                    }
                }), this.frame.appendChild(this.errorTable.getErrorTable()), n.statusBar) {
                    Object(l.addClassName)(this.content, "has-status-bar"), this.curserInfoElements = {};
                    var T = document.createElement("div");
                    this.dom.statusBar = T, T.className = "jsoneditor-statusbar", this.frame.appendChild(T);
                    var O = document.createElement("span");
                    O.className = "jsoneditor-curserinfo-label", O.innerText = "Ln:";
                    var R = document.createElement("span");
                    R.className = "jsoneditor-curserinfo-val", R.innerText = "1", T.appendChild(O), T.appendChild(R);
                    var E = document.createElement("span");
                    E.className = "jsoneditor-curserinfo-label", E.innerText = "Col:";
                    var P = document.createElement("span");
                    P.className = "jsoneditor-curserinfo-val", P.innerText = "1", T.appendChild(E), T.appendChild(P), this.curserInfoElements.colVal = P, this.curserInfoElements.lnVal = R;
                    var M = document.createElement("span");
                    M.className = "jsoneditor-curserinfo-label", M.innerText = "characters selected", M.style.display = "none";
                    var N = document.createElement("span");
                    N.className = "jsoneditor-curserinfo-count", N.innerText = "0", N.style.display = "none", this.curserInfoElements.countLabel = M, this.curserInfoElements.countVal = N, T.appendChild(N), T.appendChild(M), T.appendChild(this.errorTable.getErrorCounter()), T.appendChild(this.errorTable.getWarningIcon()), T.appendChild(this.errorTable.getErrorIcon())
                }
                this.setSchema(this.options.schema, this.options.schemaRefs)
            }, m._onChange = function () {
                var e = this;
                if (!this.onChangeDisabled) {
                    if (setTimeout((function () {
                        return e._updateHistoryButtons()
                    })), this._debouncedValidate(), this.options.onChange) try {
                        this.options.onChange()
                    } catch (e) {
                        console.error("Error in onChange callback: ", e)
                    }
                    if (this.options.onChangeText) try {
                        this.options.onChangeText(this.getText())
                    } catch (e) {
                        console.error("Error in onChangeText callback: ", e)
                    }
                }
            }, m._updateHistoryButtons = function () {
                if (this.aceEditor && this.dom.undo && this.dom.redo) {
                    var e = this.aceEditor.getSession().getUndoManager();
                    e && e.hasUndo && e.hasRedo && (this.dom.undo.disabled = !e.hasUndo(), this.dom.redo.disabled = !e.hasRedo())
                }
            }, m._showSortModal = function () {
                var e = this, t = this.options.modalAnchor || d.a, n = this.get();
                Object(c.showSortModal)(t, n, (function (t) {
                    if (Array.isArray(n)) {
                        var i = Object(l.sort)(n, t.path, t.direction);
                        e.sortedBy = t, e.update(i)
                    }
                    if (Object(l.isObject)(n)) {
                        var r = Object(l.sortObjectKeys)(n, t.direction);
                        e.sortedBy = t, e.update(r)
                    }
                }), e.sortedBy)
            }, m._showTransformModal = function () {
                var e = this, t = this.options, n = t.modalAnchor, i = t.createQuery, r = t.executeQuery,
                    o = t.queryDescription, a = this.get();
                Object(u.showTransformModal)({
                    anchor: n || d.a,
                    json: a,
                    queryDescription: o,
                    createQuery: i,
                    executeQuery: r,
                    onTransform: function (t) {
                        var n = r(a, t);
                        e.update(n)
                    }
                })
            }, m._onSelect = function () {
                this._updateCursorInfo(), this._emitSelectionChange()
            }, m._onKeyDown = function (e) {
                var t = !1;
                220 === (e.which || e.keyCode) && e.ctrlKey && (e.shiftKey ? (this.compact(), this._onChange()) : (this.format(), this._onChange()), t = !0), t && (e.preventDefault(), e.stopPropagation()), this._updateCursorInfo(), this._emitSelectionChange()
            }, m._onMouseDown = function () {
                this._updateCursorInfo(), this._emitSelectionChange()
            }, m._onBlur = function () {
                var e = this;
                setTimeout((function () {
                    e.isFocused || (e._updateCursorInfo(), e._emitSelectionChange()), e.isFocused = !1
                }))
            }, m._updateCursorInfo = function () {
                var e, t, n, i = this;
                if (this.textarea) setTimeout((function () {
                    var r = Object(l.getInputSelection)(i.textarea);
                    r.startIndex !== r.endIndex && (n = r.endIndex - r.startIndex), n && i.cursorInfo && i.cursorInfo.line === r.end.row && i.cursorInfo.column === r.end.column ? (e = r.start.row, t = r.start.column) : (e = r.end.row, t = r.end.column), i.cursorInfo = {
                        line: e,
                        column: t,
                        count: n
                    }, i.options.statusBar && a()
                }), 0); else if (this.aceEditor && this.curserInfoElements) {
                    var r = this.aceEditor.getCursorPosition(), o = this.aceEditor.getSelectedText();
                    e = r.row + 1, t = r.column + 1, n = o.length, i.cursorInfo = {
                        line: e,
                        column: t,
                        count: n
                    }, this.options.statusBar && a()
                }

                function a() {
                    i.curserInfoElements.countVal.innerText !== n && (i.curserInfoElements.countVal.innerText = n, i.curserInfoElements.countVal.style.display = n ? "inline" : "none", i.curserInfoElements.countLabel.style.display = n ? "inline" : "none"), i.curserInfoElements.lnVal.innerText = e, i.curserInfoElements.colVal.innerText = t
                }
            }, m._emitSelectionChange = function () {
                if (this._selectionChangedHandler) {
                    var e = this.getTextSelection();
                    this._selectionChangedHandler(e.start, e.end, e.text)
                }
            }, m._refreshAnnotations = function () {
                var e = this.aceEditor && this.aceEditor.getSession();
                if (e) {
                    var t = e.getAnnotations().filter((function (e) {
                        return "error" === e.type
                    }));
                    e.setAnnotations(t)
                }
            }, m.destroy = function () {
                this.aceEditor && (this.aceEditor.destroy(), this.aceEditor = null), this.frame && this.container && this.frame.parentNode === this.container && this.container.removeChild(this.frame), this.modeSwitcher && (this.modeSwitcher.destroy(), this.modeSwitcher = null), this.textarea = null, this._debouncedValidate = null, this.frameFocusTracker.destroy()
            }, m.compact = function () {
                var e = this.get(), t = JSON.stringify(e);
                this.updateText(t)
            }, m.format = function () {
                var e = this.get(), t = JSON.stringify(e, null, this.indentation);
                this.updateText(t)
            }, m.repair = function () {
                var e = this.getText(), t = Object(l.repair)(e);
                this.updateText(t)
            }, m.focus = function () {
                this.textarea && this.textarea.focus(), this.aceEditor && this.aceEditor.focus()
            }, m.resize = function () {
                this.aceEditor && this.aceEditor.resize(!1)
            }, m.set = function (e) {
                this.setText(JSON.stringify(e, null, this.indentation))
            }, m.update = function (e) {
                this.updateText(JSON.stringify(e, null, this.indentation))
            }, m.get = function () {
                var e = this.getText();
                return Object(l.parse)(e)
            }, m.getText = function () {
                return this.textarea ? this.textarea.value : this.aceEditor ? this.aceEditor.getValue() : ""
            }, m._setText = function (e, t) {
                var n = this, i = !0 === this.options.escapeUnicode ? Object(l.escapeUnicodeChars)(e) : e;
                if (this.textarea && (this.textarea.value = i), this.aceEditor) {
                    if (this.onChangeDisabled = !0, this.aceEditor.setValue(i, -1), this.onChangeDisabled = !1, t) {
                        var r = this;
                        setTimeout((function () {
                            r.aceEditor && r.aceEditor.session.getUndoManager().reset()
                        }))
                    }
                    setTimeout((function () {
                        return n._updateHistoryButtons()
                    }))
                }
                this._debouncedValidate()
            }, m.setText = function (e) {
                this._setText(e, !0)
            }, m.updateText = function (e) {
                this.getText() !== e && this._setText(e, !1)
            }, m.validate = function () {
                var e, t = this, n = [], i = [];
                try {
                    e = this.get(), this.validateSchema && (this.validateSchema(e) || (n = this.validateSchema.errors.map((function (e) {
                        return e.type = "validation", Object(l.improveSchemaError)(e)
                    })))), this.validationSequence = (this.validationSequence || 0) + 1;
                    var r = this, o = this.validationSequence;
                    (function (e, t) {
                        if (!t) return Promise.resolve([]);
                        try {
                            var n = t(e);
                            return (Object(l.isPromise)(n) ? n : Promise.resolve(n)).then((function (e) {
                                return Array.isArray(e) ? e.filter((function (e) {
                                    var t = Object(l.isValidValidationError)(e);
                                    return t || console.warn('Ignoring a custom validation error with invalid structure. Expected structure: {path: [...], message: "..."}. Actual error:', e), t
                                })).map((function (e) {
                                    return {
                                        dataPath: Object(l.stringifyPath)(e.path),
                                        message: e.message,
                                        type: "customValidation"
                                    }
                                })) : []
                            }))
                        } catch (e) {
                            return Promise.reject(e)
                        }
                    })(e, this.options.onValidate).then((function (e) {
                        if (o === r.validationSequence) {
                            var a = n.concat(i).concat(e);
                            r._renderErrors(a), "function" == typeof t.options.onValidationError && (Object(l.isValidationErrorChanged)(a, t.lastSchemaErrors) && t.options.onValidationError.call(t, a), t.lastSchemaErrors = a)
                        }
                    })).catch((function (e) {
                        console.error("Custom validation function did throw an error", e)
                    }))
                } catch (e) {
                    if (this.getText()) {
                        var a, s = /\w*line\s*(\d+)\w*/g.exec(e.message);
                        s && (a = +s[1]), i = [{type: "error", message: e.message.replace(/\n/g, "<br>"), line: a}]
                    }
                    this._renderErrors(i), "function" == typeof this.options.onValidationError && (Object(l.isValidationErrorChanged)(i, this.lastSchemaErrors) && this.options.onValidationError.call(this, i), this.lastSchemaErrors = i)
                }
            }, m._renderErrors = function (e) {
                var t = this.getText(), n = [];
                e.reduce((function (e, t) {
                    return "string" == typeof t.dataPath && -1 === e.indexOf(t.dataPath) && e.push(t.dataPath), e
                }), n);
                var i = Object(l.getPositionForPath)(t, n);
                this.aceEditor && (this.annotations = i.map((function (t) {
                    var n = e.filter((function (e) {
                        return e.dataPath === t.path
                    })), i = n.map((function (e) {
                        return e.message
                    })).join("\n");
                    return i ? {
                        row: t.line,
                        column: t.column,
                        text: "Schema validation error" + (1 !== n.length ? "s" : "") + ": \n" + i,
                        type: "warning",
                        source: "jsoneditor"
                    } : {}
                })), this._refreshAnnotations()), this.errorTable.setErrors(e, i), this.aceEditor && this.aceEditor.resize(!1)
            }, m.getTextSelection = function () {
                var e = {};
                if (this.textarea) {
                    var t = Object(l.getInputSelection)(this.textarea);
                    return this.cursorInfo && this.cursorInfo.line === t.end.row && this.cursorInfo.column === t.end.column ? (e.start = t.end, e.end = t.start) : e = t, {
                        start: e.start,
                        end: e.end,
                        text: this.textarea.value.substring(t.startIndex, t.endIndex)
                    }
                }
                if (this.aceEditor) {
                    var n = this.aceEditor.getSelection(), i = this.aceEditor.getSelectedText(), r = n.getRange(),
                        o = n.getSelectionLead();
                    return o.row === r.end.row && o.column === r.end.column ? e = r : (e.start = r.end, e.end = r.start), {
                        start: {
                            row: e.start.row + 1,
                            column: e.start.column + 1
                        }, end: {row: e.end.row + 1, column: e.end.column + 1}, text: i
                    }
                }
            }, m.onTextSelectionChange = function (e) {
                "function" == typeof e && (this._selectionChangedHandler = Object(l.debounce)(e, this.DEBOUNCE_INTERVAL))
            }, m.setTextSelection = function (e, t) {
                if (e && t) if (this.textarea) {
                    var n = Object(l.getIndexForPosition)(this.textarea, e.row, e.column),
                        i = Object(l.getIndexForPosition)(this.textarea, t.row, t.column);
                    if (n > -1 && i > -1) {
                        if (this.textarea.setSelectionRange) this.textarea.focus(), this.textarea.setSelectionRange(n, i); else if (this.textarea.createTextRange) {
                            var r = this.textarea.createTextRange();
                            r.collapse(!0), r.moveEnd("character", i), r.moveStart("character", n), r.select()
                        }
                        var o = (this.textarea.value.match(/\n/g) || []).length + 1, a = this.textarea.scrollHeight / o,
                            s = e.row * a;
                        this.textarea.scrollTop = s > this.textarea.clientHeight ? s - this.textarea.clientHeight / 2 : 0
                    }
                } else if (this.aceEditor) {
                    var c = {
                        start: {row: e.row - 1, column: e.column - 1},
                        end: {row: t.row - 1, column: t.column - 1}
                    };
                    this.aceEditor.selection.setRange(c), this.aceEditor.scrollToLine(e.row - 1, !0)
                }
            };
            var y = [{mode: "text", mixin: m, data: "text", load: v}, {mode: "code", mixin: m, data: "text", load: v}]
        }, function (e, t, n) {
            var i, r, o = (i = {
                trace: function () {
                },
                yy: {},
                symbols_: {
                    error: 2,
                    JSONString: 3,
                    STRING: 4,
                    JSONNumber: 5,
                    NUMBER: 6,
                    JSONNullLiteral: 7,
                    NULL: 8,
                    JSONBooleanLiteral: 9,
                    TRUE: 10,
                    FALSE: 11,
                    JSONText: 12,
                    JSONValue: 13,
                    EOF: 14,
                    JSONObject: 15,
                    JSONArray: 16,
                    "{": 17,
                    "}": 18,
                    JSONMemberList: 19,
                    JSONMember: 20,
                    ":": 21,
                    ",": 22,
                    "[": 23,
                    "]": 24,
                    JSONElementList: 25,
                    $accept: 0,
                    $end: 1
                },
                terminals_: {
                    2: "error",
                    4: "STRING",
                    6: "NUMBER",
                    8: "NULL",
                    10: "TRUE",
                    11: "FALSE",
                    14: "EOF",
                    17: "{",
                    18: "}",
                    21: ":",
                    22: ",",
                    23: "[",
                    24: "]"
                },
                productions_: [0, [3, 1], [5, 1], [7, 1], [9, 1], [9, 1], [12, 2], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [15, 2], [15, 3], [20, 3], [19, 1], [19, 3], [16, 2], [16, 3], [25, 1], [25, 3]],
                performAction: function (e, t, n, i, r, o, a) {
                    var s = o.length - 1;
                    switch (r) {
                        case 1:
                            this.$ = e.replace(/\\(\\|")/g, "$1").replace(/\\n/g, "\n").replace(/\\r/g, "\r").replace(/\\t/g, "\t").replace(/\\v/g, "\v").replace(/\\f/g, "\f").replace(/\\b/g, "\b");
                            break;
                        case 2:
                            this.$ = Number(e);
                            break;
                        case 3:
                            this.$ = null;
                            break;
                        case 4:
                            this.$ = !0;
                            break;
                        case 5:
                            this.$ = !1;
                            break;
                        case 6:
                            return this.$ = o[s - 1];
                        case 13:
                            this.$ = {};
                            break;
                        case 14:
                            this.$ = o[s - 1];
                            break;
                        case 15:
                            this.$ = [o[s - 2], o[s]];
                            break;
                        case 16:
                            this.$ = {}, this.$[o[s][0]] = o[s][1];
                            break;
                        case 17:
                            this.$ = o[s - 2], o[s - 2][o[s][0]] = o[s][1];
                            break;
                        case 18:
                            this.$ = [];
                            break;
                        case 19:
                            this.$ = o[s - 1];
                            break;
                        case 20:
                            this.$ = [o[s]];
                            break;
                        case 21:
                            this.$ = o[s - 2], o[s - 2].push(o[s])
                    }
                },
                table: [{
                    3: 5,
                    4: [1, 12],
                    5: 6,
                    6: [1, 13],
                    7: 3,
                    8: [1, 9],
                    9: 4,
                    10: [1, 10],
                    11: [1, 11],
                    12: 1,
                    13: 2,
                    15: 7,
                    16: 8,
                    17: [1, 14],
                    23: [1, 15]
                }, {1: [3]}, {14: [1, 16]}, {14: [2, 7], 18: [2, 7], 22: [2, 7], 24: [2, 7]}, {
                    14: [2, 8],
                    18: [2, 8],
                    22: [2, 8],
                    24: [2, 8]
                }, {14: [2, 9], 18: [2, 9], 22: [2, 9], 24: [2, 9]}, {
                    14: [2, 10],
                    18: [2, 10],
                    22: [2, 10],
                    24: [2, 10]
                }, {14: [2, 11], 18: [2, 11], 22: [2, 11], 24: [2, 11]}, {
                    14: [2, 12],
                    18: [2, 12],
                    22: [2, 12],
                    24: [2, 12]
                }, {14: [2, 3], 18: [2, 3], 22: [2, 3], 24: [2, 3]}, {
                    14: [2, 4],
                    18: [2, 4],
                    22: [2, 4],
                    24: [2, 4]
                }, {14: [2, 5], 18: [2, 5], 22: [2, 5], 24: [2, 5]}, {
                    14: [2, 1],
                    18: [2, 1],
                    21: [2, 1],
                    22: [2, 1],
                    24: [2, 1]
                }, {14: [2, 2], 18: [2, 2], 22: [2, 2], 24: [2, 2]}, {
                    3: 20,
                    4: [1, 12],
                    18: [1, 17],
                    19: 18,
                    20: 19
                }, {
                    3: 5,
                    4: [1, 12],
                    5: 6,
                    6: [1, 13],
                    7: 3,
                    8: [1, 9],
                    9: 4,
                    10: [1, 10],
                    11: [1, 11],
                    13: 23,
                    15: 7,
                    16: 8,
                    17: [1, 14],
                    23: [1, 15],
                    24: [1, 21],
                    25: 22
                }, {1: [2, 6]}, {14: [2, 13], 18: [2, 13], 22: [2, 13], 24: [2, 13]}, {
                    18: [1, 24],
                    22: [1, 25]
                }, {18: [2, 16], 22: [2, 16]}, {21: [1, 26]}, {
                    14: [2, 18],
                    18: [2, 18],
                    22: [2, 18],
                    24: [2, 18]
                }, {22: [1, 28], 24: [1, 27]}, {22: [2, 20], 24: [2, 20]}, {
                    14: [2, 14],
                    18: [2, 14],
                    22: [2, 14],
                    24: [2, 14]
                }, {3: 20, 4: [1, 12], 20: 29}, {
                    3: 5,
                    4: [1, 12],
                    5: 6,
                    6: [1, 13],
                    7: 3,
                    8: [1, 9],
                    9: 4,
                    10: [1, 10],
                    11: [1, 11],
                    13: 30,
                    15: 7,
                    16: 8,
                    17: [1, 14],
                    23: [1, 15]
                }, {14: [2, 19], 18: [2, 19], 22: [2, 19], 24: [2, 19]}, {
                    3: 5,
                    4: [1, 12],
                    5: 6,
                    6: [1, 13],
                    7: 3,
                    8: [1, 9],
                    9: 4,
                    10: [1, 10],
                    11: [1, 11],
                    13: 31,
                    15: 7,
                    16: 8,
                    17: [1, 14],
                    23: [1, 15]
                }, {18: [2, 17], 22: [2, 17]}, {18: [2, 15], 22: [2, 15]}, {22: [2, 21], 24: [2, 21]}],
                defaultActions: {16: [2, 6]},
                parseError: function (e, t) {
                    throw new Error(e)
                },
                parse: function (e) {
                    var t = this, n = [0], i = [null], r = [], o = this.table, a = "", s = 0, l = 0, c = 0;
                    this.lexer.setInput(e), this.lexer.yy = this.yy, this.yy.lexer = this.lexer, void 0 === this.lexer.yylloc && (this.lexer.yylloc = {});
                    var u = this.lexer.yylloc;

                    function h() {
                        var e;
                        return "number" != typeof (e = t.lexer.lex() || 1) && (e = t.symbols_[e] || e), e
                    }

                    r.push(u), "function" == typeof this.yy.parseError && (this.parseError = this.yy.parseError);
                    for (var d, f, g, p, m, v, y, b, C, w, I = {}; ;) {
                        if (g = n[n.length - 1], this.defaultActions[g] ? p = this.defaultActions[g] : (null == d && (d = h()), p = o[g] && o[g][d]), void 0 === p || !p.length || !p[0]) {
                            if (!c) {
                                for (v in C = [], o[g]) this.terminals_[v] && v > 2 && C.push("'" + this.terminals_[v] + "'");
                                var x = "";
                                x = this.lexer.showPosition ? "Parse error on line " + (s + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + C.join(", ") + ", got '" + this.terminals_[d] + "'" : "Parse error on line " + (s + 1) + ": Unexpected " + (1 == d ? "end of input" : "'" + (this.terminals_[d] || d) + "'"), this.parseError(x, {
                                    text: this.lexer.match,
                                    token: this.terminals_[d] || d,
                                    line: this.lexer.yylineno,
                                    loc: u,
                                    expected: C
                                })
                            }
                            if (3 == c) {
                                if (1 == d) throw new Error(x || "Parsing halted.");
                                l = this.lexer.yyleng, a = this.lexer.yytext, s = this.lexer.yylineno, u = this.lexer.yylloc, d = h()
                            }
                            for (; !(2..toString() in o[g]);) {
                                if (0 == g) throw new Error(x || "Parsing halted.");
                                w = 1, n.length = n.length - 2 * w, i.length = i.length - w, r.length = r.length - w, g = n[n.length - 1]
                            }
                            f = d, d = 2, p = o[g = n[n.length - 1]] && o[g][2], c = 3
                        }
                        if (p[0] instanceof Array && p.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + g + ", token: " + d);
                        switch (p[0]) {
                            case 1:
                                n.push(d), i.push(this.lexer.yytext), r.push(this.lexer.yylloc), n.push(p[1]), d = null, f ? (d = f, f = null) : (l = this.lexer.yyleng, a = this.lexer.yytext, s = this.lexer.yylineno, u = this.lexer.yylloc, c > 0 && c--);
                                break;
                            case 2:
                                if (y = this.productions_[p[1]][1], I.$ = i[i.length - y], I._$ = {
                                    first_line: r[r.length - (y || 1)].first_line,
                                    last_line: r[r.length - 1].last_line,
                                    first_column: r[r.length - (y || 1)].first_column,
                                    last_column: r[r.length - 1].last_column
                                }, void 0 !== (m = this.performAction.call(I, a, l, s, this.yy, p[1], i, r))) return m;
                                y && (n = n.slice(0, -1 * y * 2), i = i.slice(0, -1 * y), r = r.slice(0, -1 * y)), n.push(this.productions_[p[1]][0]), i.push(I.$), r.push(I._$), b = o[n[n.length - 2]][n[n.length - 1]], n.push(b);
                                break;
                            case 3:
                                return !0
                        }
                    }
                    return !0
                }
            }, r = function () {
                var e = {
                    EOF: 1,
                    parseError: function (e, t) {
                        if (!this.yy.parseError) throw new Error(e);
                        this.yy.parseError(e, t)
                    },
                    setInput: function (e) {
                        return this._input = e, this._more = this._less = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
                            first_line: 1,
                            first_column: 0,
                            last_line: 1,
                            last_column: 0
                        }, this
                    },
                    input: function () {
                        var e = this._input[0];
                        return this.yytext += e, this.yyleng++, this.match += e, this.matched += e, e.match(/\n/) && this.yylineno++, this._input = this._input.slice(1), e
                    },
                    unput: function (e) {
                        return this._input = e + this._input, this
                    },
                    more: function () {
                        return this._more = !0, this
                    },
                    less: function (e) {
                        this._input = this.match.slice(e) + this._input
                    },
                    pastInput: function () {
                        var e = this.matched.substr(0, this.matched.length - this.match.length);
                        return (e.length > 20 ? "..." : "") + e.substr(-20).replace(/\n/g, "")
                    },
                    upcomingInput: function () {
                        var e = this.match;
                        return e.length < 20 && (e += this._input.substr(0, 20 - e.length)), (e.substr(0, 20) + (e.length > 20 ? "..." : "")).replace(/\n/g, "")
                    },
                    showPosition: function () {
                        var e = this.pastInput(), t = new Array(e.length + 1).join("-");
                        return e + this.upcomingInput() + "\n" + t + "^"
                    },
                    next: function () {
                        if (this.done) return this.EOF;
                        var e, t, n, i, r;
                        this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
                        for (var o = this._currentRules(), a = 0; a < o.length && (!(n = this._input.match(this.rules[o[a]])) || t && !(n[0].length > t[0].length) || (t = n, i = a, this.options.flex)); a++) ;
                        return t ? ((r = t[0].match(/\n.*/g)) && (this.yylineno += r.length), this.yylloc = {
                            first_line: this.yylloc.last_line,
                            last_line: this.yylineno + 1,
                            first_column: this.yylloc.last_column,
                            last_column: r ? r[r.length - 1].length - 1 : this.yylloc.last_column + t[0].length
                        }, this.yytext += t[0], this.match += t[0], this.yyleng = this.yytext.length, this._more = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], e = this.performAction.call(this, this.yy, this, o[i], this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), e || void 0) : "" === this._input ? this.EOF : void this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                            text: "",
                            token: null,
                            line: this.yylineno
                        })
                    },
                    lex: function () {
                        var e = this.next();
                        return void 0 !== e ? e : this.lex()
                    },
                    begin: function (e) {
                        this.conditionStack.push(e)
                    },
                    popState: function () {
                        return this.conditionStack.pop()
                    },
                    _currentRules: function () {
                        return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                    },
                    topState: function () {
                        return this.conditionStack[this.conditionStack.length - 2]
                    },
                    pushState: function (e) {
                        this.begin(e)
                    },
                    options: {},
                    performAction: function (e, t, n, i) {
                        switch (n) {
                            case 0:
                                break;
                            case 1:
                                return 6;
                            case 2:
                                return t.yytext = t.yytext.substr(1, t.yyleng - 2), 4;
                            case 3:
                                return 17;
                            case 4:
                                return 18;
                            case 5:
                                return 23;
                            case 6:
                                return 24;
                            case 7:
                                return 22;
                            case 8:
                                return 21;
                            case 9:
                                return 10;
                            case 10:
                                return 11;
                            case 11:
                                return 8;
                            case 12:
                                return 14;
                            case 13:
                                return "INVALID"
                        }
                    },
                    rules: [/^(?:\s+)/, /^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/, /^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/, /^(?:\{)/, /^(?:\})/, /^(?:\[)/, /^(?:\])/, /^(?:,)/, /^(?::)/, /^(?:true\b)/, /^(?:false\b)/, /^(?:null\b)/, /^(?:$)/, /^(?:.)/],
                    conditions: {INITIAL: {rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], inclusive: !0}}
                };
                return e
            }(), i.lexer = r, i);
            t.parser = o, t.parse = o.parse.bind(o)
        }, function (e, t) {
            e.exports = function () {
                throw new Error("define cannot be used indirect")
            }
        }, function (e, t) {
            "undefined" != typeof Element && function () {
                function e(e) {
                    "remove" in e || Object.defineProperty(e, "remove", {
                        configurable: !0,
                        enumerable: !0,
                        writable: !0,
                        value: function () {
                            void 0 !== this.parentNode && this.parentNode.removeChild(this)
                        }
                    })
                }

                void 0 !== window.Element && e(window.Element.prototype), void 0 !== window.CharacterData && e(window.CharacterData.prototype), void 0 !== window.DocumentType && e(window.DocumentType.prototype)
            }(), Array.prototype.findIndex || (Array.prototype.findIndex = function (e) {
                for (var t = 0; t < this.length; t++) {
                    var n = this[t];
                    if (e.call(this, n, t, this)) return t
                }
                return -1
            }), Array.prototype.find || (Array.prototype.find = function (e) {
                return this[this.findIndex(e)]
            }), String.prototype.trim || (String.prototype.trim = function () {
                return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
            })
        }, function (e, t, n) {
            "use strict";
            var i = n(7);
            e.exports = function (e) {
                i.copy(e, this)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t) {
                t || (t = {}), "function" == typeof t && (t = {cmp: t});
                var n, i = "boolean" == typeof t.cycles && t.cycles, r = t.cmp && (n = t.cmp, function (e) {
                    return function (t, i) {
                        var r = {key: t, value: e[t]}, o = {key: i, value: e[i]};
                        return n(r, o)
                    }
                }), o = [];
                return function e(t) {
                    if (t && t.toJSON && "function" == typeof t.toJSON && (t = t.toJSON()), void 0 !== t) {
                        if ("number" == typeof t) return isFinite(t) ? "" + t : "null";
                        if ("object" != typeof t) return JSON.stringify(t);
                        var n, a;
                        if (Array.isArray(t)) {
                            for (a = "[", n = 0; n < t.length; n++) n && (a += ","), a += e(t[n]) || "null";
                            return a + "]"
                        }
                        if (null === t) return "null";
                        if (-1 !== o.indexOf(t)) {
                            if (i) return JSON.stringify("__cycle__");
                            throw new TypeError("Converting circular structure to JSON")
                        }
                        var s = o.push(t) - 1, l = Object.keys(t).sort(r && r(t));
                        for (a = "", n = 0; n < l.length; n++) {
                            var c = l[n], u = e(t[c]);
                            u && (a && (a += ","), a += JSON.stringify(c) + ":" + u)
                        }
                        return o.splice(s, 1), "{" + a + "}"
                    }
                }(e)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = "", r = !0 === e.schema.$async, o = e.util.schemaHasRulesExcept(e.schema, e.RULES.all, "$ref"),
                    a = e.self._getId(e.schema);
                if (e.opts.strictKeywords) {
                    var s = e.util.schemaUnknownRules(e.schema, e.RULES.keywords);
                    if (s) {
                        var l = "unknown keyword: " + s;
                        if ("log" !== e.opts.strictKeywords) throw new Error(l);
                        e.logger.warn(l)
                    }
                }
                if (e.isTop && (i += " var validate = ", r && (e.async = !0, i += "async "), i += "function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ", a && (e.opts.sourceCode || e.opts.processCode) && (i += " /*# sourceURL=" + a + " */ ")), "boolean" == typeof e.schema || !o && !e.schema.$ref) {
                    var c = e.level, u = e.dataLevel, h = e.schema["false schema"],
                        d = e.schemaPath + e.util.getProperty("false schema"), f = e.errSchemaPath + "/false schema",
                        g = !e.opts.allErrors, p = "data" + (u || ""), m = "valid" + c;
                    if (!1 === e.schema) {
                        e.isTop ? g = !0 : i += " var " + m + " = false; ", ($ = $ || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'false schema' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(f) + " , params: {} ", !1 !== e.opts.messages && (i += " , message: 'boolean schema is false' "), e.opts.verbose && (i += " , schema: false , parentSchema: validate.schema" + e.schemaPath + " , data: " + p + " "), i += " } ") : i += " {} ";
                        var v = i;
                        i = $.pop(), !e.compositeRule && g ? e.async ? i += " throw new ValidationError([" + v + "]); " : i += " validate.errors = [" + v + "]; return false; " : i += " var err = " + v + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "
                    } else e.isTop ? i += r ? " return data; " : " validate.errors = null; return true; " : i += " var " + m + " = true; ";
                    return e.isTop && (i += " }; return validate; "), i
                }
                if (e.isTop) {
                    var y = e.isTop;
                    if (c = e.level = 0, u = e.dataLevel = 0, p = "data", e.rootId = e.resolve.fullPath(e.self._getId(e.root.schema)), e.baseId = e.baseId || e.rootId, delete e.isTop, e.dataPathArr = [void 0], void 0 !== e.schema.default && e.opts.useDefaults && e.opts.strictDefaults) {
                        var b = "default is ignored in the schema root";
                        if ("log" !== e.opts.strictDefaults) throw new Error(b);
                        e.logger.warn(b)
                    }
                    i += " var vErrors = null; ", i += " var errors = 0;     ", i += " if (rootData === undefined) rootData = data; "
                } else {
                    if (c = e.level, p = "data" + ((u = e.dataLevel) || ""), a && (e.baseId = e.resolve.url(e.baseId, a)), r && !e.async) throw new Error("async schema in sync schema");
                    i += " var errs_" + c + " = errors;"
                }
                m = "valid" + c, g = !e.opts.allErrors;
                var C = "", w = "", I = e.schema.type, x = Array.isArray(I);
                if (I && e.opts.nullable && !0 === e.schema.nullable && (x ? -1 == I.indexOf("null") && (I = I.concat("null")) : "null" != I && (I = [I, "null"], x = !0)), x && 1 == I.length && (I = I[0], x = !1), e.schema.$ref && o) {
                    if ("fail" == e.opts.extendRefs) throw new Error('$ref: validation keywords used in schema at path "' + e.errSchemaPath + '" (see option extendRefs)');
                    !0 !== e.opts.extendRefs && (o = !1, e.logger.warn('$ref: keywords ignored in schema at path "' + e.errSchemaPath + '"'))
                }
                if (e.schema.$comment && e.opts.$comment && (i += " " + e.RULES.all.$comment.code(e, "$comment")), I) {
                    if (e.opts.coerceTypes) var A = e.util.coerceToTypes(e.opts.coerceTypes, I);
                    var _ = e.RULES.types[I];
                    if (A || x || !0 === _ || _ && !q(_)) {
                        d = e.schemaPath + ".type", f = e.errSchemaPath + "/type", d = e.schemaPath + ".type", f = e.errSchemaPath + "/type";
                        var S = x ? "checkDataTypes" : "checkDataType";
                        if (i += " if (" + e.util[S](I, p, !0) + ") { ", A) {
                            var k = "dataType" + c, L = "coerced" + c;
                            i += " var " + k + " = typeof " + p + "; ", "array" == e.opts.coerceTypes && (i += " if (" + k + " == 'object' && Array.isArray(" + p + ")) " + k + " = 'array'; "), i += " var " + L + " = undefined; ";
                            var T = "", O = A;
                            if (O) for (var R, E = -1, P = O.length - 1; E < P;) R = O[E += 1], E && (i += " if (" + L + " === undefined) { ", T += "}"), "array" == e.opts.coerceTypes && "array" != R && (i += " if (" + k + " == 'array' && " + p + ".length == 1) { " + L + " = " + p + " = " + p + "[0]; " + k + " = typeof " + p + ";  } "), "string" == R ? i += " if (" + k + " == 'number' || " + k + " == 'boolean') " + L + " = '' + " + p + "; else if (" + p + " === null) " + L + " = ''; " : "number" == R || "integer" == R ? (i += " if (" + k + " == 'boolean' || " + p + " === null || (" + k + " == 'string' && " + p + " && " + p + " == +" + p + " ", "integer" == R && (i += " && !(" + p + " % 1)"), i += ")) " + L + " = +" + p + "; ") : "boolean" == R ? i += " if (" + p + " === 'false' || " + p + " === 0 || " + p + " === null) " + L + " = false; else if (" + p + " === 'true' || " + p + " === 1) " + L + " = true; " : "null" == R ? i += " if (" + p + " === '' || " + p + " === 0 || " + p + " === false) " + L + " = null; " : "array" == e.opts.coerceTypes && "array" == R && (i += " if (" + k + " == 'string' || " + k + " == 'number' || " + k + " == 'boolean' || " + p + " == null) " + L + " = [" + p + "]; ");
                            i += " " + T + " if (" + L + " === undefined) {   ", ($ = $ || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'type' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(f) + " , params: { type: '", i += x ? "" + I.join(",") : "" + I, i += "' } ", !1 !== e.opts.messages && (i += " , message: 'should be ", i += x ? "" + I.join(",") : "" + I, i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + d + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + p + " "), i += " } ") : i += " {} ", v = i, i = $.pop(), !e.compositeRule && g ? e.async ? i += " throw new ValidationError([" + v + "]); " : i += " validate.errors = [" + v + "]; return false; " : i += " var err = " + v + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } else {  ";
                            var M = u ? "data" + (u - 1 || "") : "parentData";
                            i += " " + p + " = " + L + "; ", u || (i += "if (" + M + " !== undefined)"), i += " " + M + "[" + (u ? e.dataPathArr[u] : "parentDataProperty") + "] = " + L + "; } "
                        } else ($ = $ || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'type' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(f) + " , params: { type: '", i += x ? "" + I.join(",") : "" + I, i += "' } ", !1 !== e.opts.messages && (i += " , message: 'should be ", i += x ? "" + I.join(",") : "" + I, i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + d + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + p + " "), i += " } ") : i += " {} ", v = i, i = $.pop(), !e.compositeRule && g ? e.async ? i += " throw new ValidationError([" + v + "]); " : i += " validate.errors = [" + v + "]; return false; " : i += " var err = " + v + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";
                        i += " } "
                    }
                }
                if (e.schema.$ref && !o) i += " " + e.RULES.all.$ref.code(e, "$ref") + " ", g && (i += " } if (errors === ", i += y ? "0" : "errs_" + c, i += ") { ", w += "}"); else {
                    var N = e.RULES;
                    if (N) for (var D = -1, B = N.length - 1; D < B;) if (q(_ = N[D += 1])) {
                        if (_.type && (i += " if (" + e.util.checkDataType(_.type, p) + ") { "), e.opts.useDefaults) if ("object" == _.type && e.schema.properties) {
                            h = e.schema.properties;
                            var j = Object.keys(h);
                            if (j) for (var F, H = -1, W = j.length - 1; H < W;) if (void 0 !== (z = h[F = j[H += 1]]).default) {
                                var V = p + e.util.getProperty(F);
                                if (e.compositeRule) {
                                    if (e.opts.strictDefaults) {
                                        if (b = "default is ignored for: " + V, "log" !== e.opts.strictDefaults) throw new Error(b);
                                        e.logger.warn(b)
                                    }
                                } else i += " if (" + V + " === undefined ", "empty" == e.opts.useDefaults && (i += " || " + V + " === null || " + V + " === '' "), i += " ) " + V + " = ", "shared" == e.opts.useDefaults ? i += " " + e.useDefault(z.default) + " " : i += " " + JSON.stringify(z.default) + " ", i += "; "
                            }
                        } else if ("array" == _.type && Array.isArray(e.schema.items)) {
                            var G = e.schema.items;
                            if (G) {
                                E = -1;
                                for (var z, Z = G.length - 1; E < Z;) if (void 0 !== (z = G[E += 1]).default) if (V = p + "[" + E + "]", e.compositeRule) {
                                    if (e.opts.strictDefaults) {
                                        if (b = "default is ignored for: " + V, "log" !== e.opts.strictDefaults) throw new Error(b);
                                        e.logger.warn(b)
                                    }
                                } else i += " if (" + V + " === undefined ", "empty" == e.opts.useDefaults && (i += " || " + V + " === null || " + V + " === '' "), i += " ) " + V + " = ", "shared" == e.opts.useDefaults ? i += " " + e.useDefault(z.default) + " " : i += " " + JSON.stringify(z.default) + " ", i += "; "
                            }
                        }
                        var $, K = _.rules;
                        if (K) for (var X, Y = -1, U = K.length - 1; Y < U;) if (Q(X = K[Y += 1])) {
                            var J = X.code(e, X.keyword, _.type);
                            J && (i += " " + J + " ", g && (C += "}"))
                        }
                        if (g && (i += " " + C + " ", C = ""), _.type && (i += " } ", I && I === _.type && !A)) i += " else { ", d = e.schemaPath + ".type", f = e.errSchemaPath + "/type", ($ = $ || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'type' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(f) + " , params: { type: '", i += x ? "" + I.join(",") : "" + I, i += "' } ", !1 !== e.opts.messages && (i += " , message: 'should be ", i += x ? "" + I.join(",") : "" + I, i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + d + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + p + " "), i += " } ") : i += " {} ", v = i, i = $.pop(), !e.compositeRule && g ? e.async ? i += " throw new ValidationError([" + v + "]); " : i += " validate.errors = [" + v + "]; return false; " : i += " var err = " + v + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } ";
                        g && (i += " if (errors === ", i += y ? "0" : "errs_" + c, i += ") { ", w += "}")
                    }
                }

                function q(e) {
                    for (var t = e.rules, n = 0; n < t.length; n++) if (Q(t[n])) return !0
                }

                function Q(t) {
                    return void 0 !== e.schema[t.keyword] || t.implements && function (t) {
                        for (var n = t.implements, i = 0; i < n.length; i++) if (void 0 !== e.schema[n[i]]) return !0
                    }(t)
                }

                return g && (i += " " + w + " "), y ? (r ? (i += " if (errors === 0) return data;           ", i += " else throw new ValidationError(vErrors); ") : (i += " validate.errors = vErrors; ", i += " return errors === 0;       "), i += " }; return validate;") : i += " var " + m + " = errors === errs_" + c + ";", i = e.util.cleanUpCode(i), y && (i = e.util.finalCleanUpCode(i, r)), i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""),
                    d = e.opts.$data && s && s.$data;
                d ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s;
                var f = "maximum" == t, g = f ? "exclusiveMaximum" : "exclusiveMinimum", p = e.schema[g],
                    m = e.opts.$data && p && p.$data, v = f ? "<" : ">", y = f ? ">" : "<", b = void 0;
                if (m) {
                    var C, w = e.util.getData(p.$data, a, e.dataPathArr), I = "exclusive" + o, x = "exclType" + o,
                        A = "exclIsNumber" + o, _ = "' + " + (k = "op" + o) + " + '";
                    r += " var schemaExcl" + o + " = " + w + "; ", r += " var " + I + "; var " + x + " = typeof " + (w = "schemaExcl" + o) + "; if (" + x + " != 'boolean' && " + x + " != 'undefined' && " + x + " != 'number') { ", b = g, (C = C || []).push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: '" + (b || "_exclusiveLimit") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: {} ", !1 !== e.opts.messages && (r += " , message: '" + g + " should be boolean' "), e.opts.verbose && (r += " , schema: validate.schema" + l + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                    var S = r;
                    r = C.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + S + "]); " : r += " validate.errors = [" + S + "]; return false; " : r += " var err = " + S + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += " } else if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'number') || "), r += " " + x + " == 'number' ? ( (" + I + " = " + i + " === undefined || " + w + " " + v + "= " + i + ") ? " + h + " " + y + "= " + w + " : " + h + " " + y + " " + i + " ) : ( (" + I + " = " + w + " === true) ? " + h + " " + y + "= " + i + " : " + h + " " + y + " " + i + " ) || " + h + " !== " + h + ") { var op" + o + " = " + I + " ? '" + v + "' : '" + v + "='; ", void 0 === s && (b = g, c = e.errSchemaPath + "/" + g, i = w, d = m)
                } else if (_ = v, (A = "number" == typeof p) && d) {
                    var k = "'" + _ + "'";
                    r += " if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'number') || "), r += " ( " + i + " === undefined || " + p + " " + v + "= " + i + " ? " + h + " " + y + "= " + p + " : " + h + " " + y + " " + i + " ) || " + h + " !== " + h + ") { "
                } else A && void 0 === s ? (I = !0, b = g, c = e.errSchemaPath + "/" + g, i = p, y += "=") : (A && (i = Math[f ? "min" : "max"](p, s)), p === (!A || i) ? (I = !0, b = g, c = e.errSchemaPath + "/" + g, y += "=") : (I = !1, _ += "=")), k = "'" + _ + "'", r += " if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'number') || "), r += " " + h + " " + y + " " + i + " || " + h + " !== " + h + ") { ";
                return b = b || t, (C = C || []).push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: '" + (b || "_limit") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { comparison: " + k + ", limit: " + i + ", exclusive: " + I + " } ", !1 !== e.opts.messages && (r += " , message: 'should be " + _ + " ", r += d ? "' + " + i : i + "'"), e.opts.verbose && (r += " , schema:  ", r += d ? "validate.schema" + l : "" + s, r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ", S = r, r = C.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + S + "]); " : r += " validate.errors = [" + S + "]; return false; " : r += " var err = " + S + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += " } ", u && (r += " else { "), r
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""),
                    d = e.opts.$data && s && s.$data;
                d ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s, r += "if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'number') || "), r += " " + h + ".length " + ("maxItems" == t ? ">" : "<") + " " + i + ") { ";
                var f = t, g = g || [];
                g.push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: '" + (f || "_limitItems") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { limit: " + i + " } ", !1 !== e.opts.messages && (r += " , message: 'should NOT have ", r += "maxItems" == t ? "more" : "fewer", r += " than ", r += d ? "' + " + i + " + '" : "" + s, r += " items' "), e.opts.verbose && (r += " , schema:  ", r += d ? "validate.schema" + l : "" + s, r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                var p = r;
                return r = g.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + p + "]); " : r += " validate.errors = [" + p + "]; return false; " : r += " var err = " + p + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += "} ", u && (r += " else { "), r
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""),
                    d = e.opts.$data && s && s.$data;
                d ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s;
                var f = "maxLength" == t ? ">" : "<";
                r += "if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'number') || "), !1 === e.opts.unicode ? r += " " + h + ".length " : r += " ucs2length(" + h + ") ", r += " " + f + " " + i + ") { ";
                var g = t, p = p || [];
                p.push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: '" + (g || "_limitLength") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { limit: " + i + " } ", !1 !== e.opts.messages && (r += " , message: 'should NOT be ", r += "maxLength" == t ? "longer" : "shorter", r += " than ", r += d ? "' + " + i + " + '" : "" + s, r += " characters' "), e.opts.verbose && (r += " , schema:  ", r += d ? "validate.schema" + l : "" + s, r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                var m = r;
                return r = p.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + m + "]); " : r += " validate.errors = [" + m + "]; return false; " : r += " var err = " + m + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += "} ", u && (r += " else { "), r
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""),
                    d = e.opts.$data && s && s.$data;
                d ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s, r += "if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'number') || "), r += " Object.keys(" + h + ").length " + ("maxProperties" == t ? ">" : "<") + " " + i + ") { ";
                var f = t, g = g || [];
                g.push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: '" + (f || "_limitProperties") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { limit: " + i + " } ", !1 !== e.opts.messages && (r += " , message: 'should NOT have ", r += "maxProperties" == t ? "more" : "fewer", r += " than ", r += d ? "' + " + i + " + '" : "" + s, r += " properties' "), e.opts.verbose && (r += " , schema:  ", r += d ? "validate.schema" + l : "" + s, r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                var p = r;
                return r = g.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + p + "]); " : r += " validate.errors = [" + p + "]; return false; " : r += " var err = " + p + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += "} ", u && (r += " else { "), r
            }
        }, function (e) {
            e.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')
        }, function (e, t, n) {
            "use strict";
            var i = {b: "\b", f: "\f", n: "\n", r: "\r", t: "\t", '"': '"', "/": "/", "\\": "\\"}, r = "a".charCodeAt();
            t.parse = function (e, t, n) {
                var o = {}, a = 0, s = 0, l = 0, c = n && n.bigint && "undefined" != typeof BigInt;
                return {data: u("", !0), pointers: o};

                function u(t, n) {
                    var i;
                    h(), b(t, "value");
                    var r = g();
                    switch (r) {
                        case"t":
                            f("rue"), i = !0;
                            break;
                        case"f":
                            f("alse"), i = !1;
                            break;
                        case"n":
                            f("ull"), i = null;
                            break;
                        case'"':
                            i = d();
                            break;
                        case"[":
                            i = function (e) {
                                h();
                                var t = [], n = 0;
                                if ("]" == g()) return t;
                                for (p(); ;) {
                                    var i = e + "/" + n;
                                    t.push(u(i)), h();
                                    var r = g();
                                    if ("]" == r) break;
                                    "," != r && x(), h(), n++
                                }
                                return t
                            }(t);
                            break;
                        case"{":
                            i = function (e) {
                                h();
                                var t = {};
                                if ("}" == g()) return t;
                                for (p(); ;) {
                                    var n = w();
                                    '"' != g() && x();
                                    var i = d(), r = e + "/" + m(i);
                                    C(r, "key", n), b(r, "keyEnd"), h(), ":" != g() && x(), h(), t[i] = u(r), h();
                                    var o = g();
                                    if ("}" == o) break;
                                    "," != o && x(), h()
                                }
                                return t
                            }(t);
                            break;
                        default:
                            p(), "-0123456789".indexOf(r) >= 0 ? i = function () {
                                var t = "", n = !0;
                                "-" == e[l] && (t += g()), t += "0" == e[l] ? g() : y(), "." == e[l] && (t += g() + y(), n = !1), "e" != e[l] && "E" != e[l] || (t += g(), "+" != e[l] && "-" != e[l] || (t += g()), t += y(), n = !1);
                                var i = +t;
                                return c && n && (i > Number.MAX_SAFE_INTEGER || i < Number.MIN_SAFE_INTEGER) ? BigInt(t) : i
                            }() : I()
                    }
                    return b(t, "valueEnd"), h(), n && l < e.length && I(), i
                }

                function h() {
                    e:for (; l < e.length;) {
                        switch (e[l]) {
                            case" ":
                                s++;
                                break;
                            case"\t":
                                s += 4;
                                break;
                            case"\r":
                                s = 0;
                                break;
                            case"\n":
                                s = 0, a++;
                                break;
                            default:
                                break e
                        }
                        l++
                    }
                }

                function d() {
                    for (var e, t = ""; '"' != (e = g());) "\\" == e ? (e = g()) in i ? t += i[e] : "u" == e ? t += v() : x() : t += e;
                    return t
                }

                function f(e) {
                    for (var t = 0; t < e.length; t++) g() !== e[t] && x()
                }

                function g() {
                    A();
                    var t = e[l];
                    return l++, s++, t
                }

                function p() {
                    l--, s--
                }

                function v() {
                    for (var e = 4, t = 0; e--;) {
                        t <<= 4;
                        var n = g().toLowerCase();
                        n >= "a" && n <= "f" ? t += n.charCodeAt() - r + 10 : n >= "0" && n <= "9" ? t += +n : x()
                    }
                    return String.fromCharCode(t)
                }

                function y() {
                    for (var t = ""; e[l] >= "0" && e[l] <= "9";) t += g();
                    if (t.length) return t;
                    A(), I()
                }

                function b(e, t) {
                    C(e, t, w())
                }

                function C(e, t, n) {
                    o[e] = o[e] || {}, o[e][t] = n
                }

                function w() {
                    return {line: a, column: s, pos: l}
                }

                function I() {
                    throw new SyntaxError("Unexpected token " + e[l] + " in JSON at position " + l)
                }

                function x() {
                    p(), I()
                }

                function A() {
                    if (l >= e.length) throw new SyntaxError("Unexpected end of JSON input")
                }
            }, t.stringify = function (e, t, n) {
                if (a(e)) {
                    var i, r, o = 0, s = "object" == typeof n ? n.space : n;
                    switch (typeof s) {
                        case"number":
                            var l = s > 10 ? 10 : s < 0 ? 0 : Math.floor(s);
                            s = l && w(l, " "), i = l, r = l;
                            break;
                        case"string":
                            s = s.slice(0, 10), i = 0, r = 0;
                            for (var c = 0; c < s.length; c++) {
                                switch (s[c]) {
                                    case" ":
                                        r++;
                                        break;
                                    case"\t":
                                        r += 4;
                                        break;
                                    case"\r":
                                        r = 0;
                                        break;
                                    case"\n":
                                        r = 0, o++;
                                        break;
                                    default:
                                        throw new Error("whitespace characters not allowed in JSON")
                                }
                                i++
                            }
                            break;
                        default:
                            s = void 0
                    }
                    var u = "", h = {}, d = 0, g = 0, p = 0, v = n && n.es6 && "function" == typeof Map;
                    return function e(t, n, i) {
                        switch (C(i, "value"), typeof t) {
                            case"number":
                            case"bigint":
                            case"boolean":
                                y("" + t);
                                break;
                            case"string":
                                y(f(t));
                                break;
                            case"object":
                                null === t ? y("null") : "function" == typeof t.toJSON ? y(f(t.toJSON())) : Array.isArray(t) ? r() : v ? t.constructor.BYTES_PER_ELEMENT ? r() : t instanceof Map ? l() : t instanceof Set ? l(!0) : o() : o()
                        }

                        function r() {
                            if (t.length) {
                                y("[");
                                for (var r = n + 1, o = 0; o < t.length; o++) {
                                    o && y(","), b(r);
                                    var s = a(t[o]) ? t[o] : null;
                                    e(s, r, i + "/" + o)
                                }
                                b(n), y("]")
                            } else y("[]")
                        }

                        function o() {
                            var r = Object.keys(t);
                            if (r.length) {
                                y("{");
                                for (var o = n + 1, l = 0; l < r.length; l++) {
                                    var c = r[l], u = t[c];
                                    if (a(u)) {
                                        l && y(",");
                                        var h = i + "/" + m(c);
                                        b(o), C(h, "key"), y(f(c)), C(h, "keyEnd"), y(":"), s && y(" "), e(u, o, h)
                                    }
                                }
                                b(n), y("}")
                            } else y("{}")
                        }

                        function l(r) {
                            if (t.size) {
                                y("{");
                                for (var o = n + 1, l = !0, c = t.entries(), u = c.next(); !u.done;) {
                                    var h = u.value, d = h[0], g = !!r || h[1];
                                    if (a(g)) {
                                        l || y(","), l = !1;
                                        var p = i + "/" + m(d);
                                        b(o), C(p, "key"), y(f(d)), C(p, "keyEnd"), y(":"), s && y(" "), e(g, o, p)
                                    }
                                    u = c.next()
                                }
                                b(n), y("}")
                            } else y("{}")
                        }

                        C(i, "valueEnd")
                    }(e, 0, ""), {json: u, pointers: h}
                }

                function y(e) {
                    g += e.length, p += e.length, u += e
                }

                function b(e) {
                    if (s) {
                        for (u += "\n" + w(e, s), d++, g = 0; e--;) o ? (d += o, g = r) : g += r, p += i;
                        p += 1
                    }
                }

                function C(e, t) {
                    h[e] = h[e] || {}, h[e][t] = {line: d, column: g, pos: p}
                }

                function w(e, t) {
                    return Array(e + 1).join(t)
                }
            };
            var o = ["number", "bigint", "boolean", "string", "object"];

            function a(e) {
                return o.indexOf(typeof e) >= 0
            }

            var s = /"|\\/g, l = /[\b]/g, c = /\f/g, u = /\n/g, h = /\r/g, d = /\t/g;

            function f(e) {
                return '"' + (e = e.replace(s, "\\$&").replace(c, "\\f").replace(l, "\\b").replace(u, "\\n").replace(h, "\\r").replace(d, "\\t")) + '"'
            }

            var g = /~/g, p = /\//g;

            function m(e) {
                return e.replace(g, "~0").replace(p, "~1")
            }
        }, function (e, t, n) {
            !function (e) {
                "use strict";

                function t(e) {
                    return null !== e && "[object Array]" === Object.prototype.toString.call(e)
                }

                function n(e) {
                    return null !== e && "[object Object]" === Object.prototype.toString.call(e)
                }

                function i(e, r) {
                    if (e === r) return !0;
                    if (Object.prototype.toString.call(e) !== Object.prototype.toString.call(r)) return !1;
                    if (!0 === t(e)) {
                        if (e.length !== r.length) return !1;
                        for (var o = 0; o < e.length; o++) if (!1 === i(e[o], r[o])) return !1;
                        return !0
                    }
                    if (!0 === n(e)) {
                        var a = {};
                        for (var s in e) if (hasOwnProperty.call(e, s)) {
                            if (!1 === i(e[s], r[s])) return !1;
                            a[s] = !0
                        }
                        for (var l in r) if (hasOwnProperty.call(r, l) && !0 !== a[l]) return !1;
                        return !0
                    }
                    return !1
                }

                function r(e) {
                    if ("" === e || !1 === e || null === e) return !0;
                    if (t(e) && 0 === e.length) return !0;
                    if (n(e)) {
                        for (var i in e) if (e.hasOwnProperty(i)) return !1;
                        return !0
                    }
                    return !1
                }

                var o;
                o = "function" == typeof String.prototype.trimLeft ? function (e) {
                    return e.trimLeft()
                } : function (e) {
                    return e.match(/^\s*(.*)/)[1]
                };
                var a = 0, s = 2, l = {
                    ".": "Dot",
                    "*": "Star",
                    ",": "Comma",
                    ":": "Colon",
                    "{": "Lbrace",
                    "}": "Rbrace",
                    "]": "Rbracket",
                    "(": "Lparen",
                    ")": "Rparen",
                    "@": "Current"
                }, c = {"<": !0, ">": !0, "=": !0, "!": !0}, u = {" ": !0, "\t": !0, "\n": !0};

                function h(e) {
                    return e >= "0" && e <= "9" || "-" === e
                }

                function d() {
                }

                d.prototype = {
                    tokenize: function (e) {
                        var t, n, i, r, o = [];
                        for (this._current = 0; this._current < e.length;) if ((r = e[this._current]) >= "a" && r <= "z" || r >= "A" && r <= "Z" || "_" === r) t = this._current, n = this._consumeUnquotedIdentifier(e), o.push({
                            type: "UnquotedIdentifier",
                            value: n,
                            start: t
                        }); else if (void 0 !== l[e[this._current]]) o.push({
                            type: l[e[this._current]],
                            value: e[this._current],
                            start: this._current
                        }), this._current++; else if (h(e[this._current])) i = this._consumeNumber(e), o.push(i); else if ("[" === e[this._current]) i = this._consumeLBracket(e), o.push(i); else if ('"' === e[this._current]) t = this._current, n = this._consumeQuotedIdentifier(e), o.push({
                            type: "QuotedIdentifier",
                            value: n,
                            start: t
                        }); else if ("'" === e[this._current]) t = this._current, n = this._consumeRawStringLiteral(e), o.push({
                            type: "Literal",
                            value: n,
                            start: t
                        }); else if ("`" === e[this._current]) {
                            t = this._current;
                            var a = this._consumeLiteral(e);
                            o.push({type: "Literal", value: a, start: t})
                        } else if (void 0 !== c[e[this._current]]) o.push(this._consumeOperator(e)); else if (void 0 !== u[e[this._current]]) this._current++; else if ("&" === e[this._current]) t = this._current, this._current++, "&" === e[this._current] ? (this._current++, o.push({
                            type: "And",
                            value: "&&",
                            start: t
                        })) : o.push({type: "Expref", value: "&", start: t}); else {
                            if ("|" !== e[this._current]) {
                                var s = new Error("Unknown character:" + e[this._current]);
                                throw s.name = "LexerError", s
                            }
                            t = this._current, this._current++, "|" === e[this._current] ? (this._current++, o.push({
                                type: "Or",
                                value: "||",
                                start: t
                            })) : o.push({type: "Pipe", value: "|", start: t})
                        }
                        return o
                    }, _consumeUnquotedIdentifier: function (e) {
                        var t, n = this._current;
                        for (this._current++; this._current < e.length && ((t = e[this._current]) >= "a" && t <= "z" || t >= "A" && t <= "Z" || t >= "0" && t <= "9" || "_" === t);) this._current++;
                        return e.slice(n, this._current)
                    }, _consumeQuotedIdentifier: function (e) {
                        var t = this._current;
                        this._current++;
                        for (var n = e.length; '"' !== e[this._current] && this._current < n;) {
                            var i = this._current;
                            "\\" !== e[i] || "\\" !== e[i + 1] && '"' !== e[i + 1] ? i++ : i += 2, this._current = i
                        }
                        return this._current++, JSON.parse(e.slice(t, this._current))
                    }, _consumeRawStringLiteral: function (e) {
                        var t = this._current;
                        this._current++;
                        for (var n = e.length; "'" !== e[this._current] && this._current < n;) {
                            var i = this._current;
                            "\\" !== e[i] || "\\" !== e[i + 1] && "'" !== e[i + 1] ? i++ : i += 2, this._current = i
                        }
                        return this._current++, e.slice(t + 1, this._current - 1).replace("\\'", "'")
                    }, _consumeNumber: function (e) {
                        var t = this._current;
                        this._current++;
                        for (var n = e.length; h(e[this._current]) && this._current < n;) this._current++;
                        return {type: "Number", value: parseInt(e.slice(t, this._current)), start: t}
                    }, _consumeLBracket: function (e) {
                        var t = this._current;
                        return this._current++, "?" === e[this._current] ? (this._current++, {
                            type: "Filter",
                            value: "[?",
                            start: t
                        }) : "]" === e[this._current] ? (this._current++, {
                            type: "Flatten",
                            value: "[]",
                            start: t
                        }) : {type: "Lbracket", value: "[", start: t}
                    }, _consumeOperator: function (e) {
                        var t = this._current, n = e[t];
                        return this._current++, "!" === n ? "=" === e[this._current] ? (this._current++, {
                            type: "NE",
                            value: "!=",
                            start: t
                        }) : {
                            type: "Not",
                            value: "!",
                            start: t
                        } : "<" === n ? "=" === e[this._current] ? (this._current++, {
                            type: "LTE",
                            value: "<=",
                            start: t
                        }) : {
                            type: "LT",
                            value: "<",
                            start: t
                        } : ">" === n ? "=" === e[this._current] ? (this._current++, {
                            type: "GTE",
                            value: ">=",
                            start: t
                        }) : {
                            type: "GT",
                            value: ">",
                            start: t
                        } : "=" === n && "=" === e[this._current] ? (this._current++, {
                            type: "EQ",
                            value: "==",
                            start: t
                        }) : void 0
                    }, _consumeLiteral: function (e) {
                        this._current++;
                        for (var t, n = this._current, i = e.length; "`" !== e[this._current] && this._current < i;) {
                            var r = this._current;
                            "\\" !== e[r] || "\\" !== e[r + 1] && "`" !== e[r + 1] ? r++ : r += 2, this._current = r
                        }
                        var a = o(e.slice(n, this._current));
                        return a = a.replace("\\`", "`"), t = this._looksLikeJSON(a) ? JSON.parse(a) : JSON.parse('"' + a + '"'), this._current++, t
                    }, _looksLikeJSON: function (e) {
                        if ("" === e) return !1;
                        if ('[{"'.indexOf(e[0]) >= 0) return !0;
                        if (["true", "false", "null"].indexOf(e) >= 0) return !0;
                        if (!("-0123456789".indexOf(e[0]) >= 0)) return !1;
                        try {
                            return JSON.parse(e), !0
                        } catch (e) {
                            return !1
                        }
                    }
                };
                var f = {};

                function g() {
                }

                function p(e) {
                    this.runtime = e
                }

                function m(e) {
                    this._interpreter = e, this.functionTable = {
                        abs: {_func: this._functionAbs, _signature: [{types: [a]}]},
                        avg: {_func: this._functionAvg, _signature: [{types: [8]}]},
                        ceil: {_func: this._functionCeil, _signature: [{types: [a]}]},
                        contains: {_func: this._functionContains, _signature: [{types: [s, 3]}, {types: [1]}]},
                        ends_with: {_func: this._functionEndsWith, _signature: [{types: [s]}, {types: [s]}]},
                        floor: {_func: this._functionFloor, _signature: [{types: [a]}]},
                        length: {_func: this._functionLength, _signature: [{types: [s, 3, 4]}]},
                        map: {_func: this._functionMap, _signature: [{types: [6]}, {types: [3]}]},
                        max: {_func: this._functionMax, _signature: [{types: [8, 9]}]},
                        merge: {_func: this._functionMerge, _signature: [{types: [4], variadic: !0}]},
                        max_by: {_func: this._functionMaxBy, _signature: [{types: [3]}, {types: [6]}]},
                        sum: {_func: this._functionSum, _signature: [{types: [8]}]},
                        starts_with: {_func: this._functionStartsWith, _signature: [{types: [s]}, {types: [s]}]},
                        min: {_func: this._functionMin, _signature: [{types: [8, 9]}]},
                        min_by: {_func: this._functionMinBy, _signature: [{types: [3]}, {types: [6]}]},
                        type: {_func: this._functionType, _signature: [{types: [1]}]},
                        keys: {_func: this._functionKeys, _signature: [{types: [4]}]},
                        values: {_func: this._functionValues, _signature: [{types: [4]}]},
                        sort: {_func: this._functionSort, _signature: [{types: [9, 8]}]},
                        sort_by: {_func: this._functionSortBy, _signature: [{types: [3]}, {types: [6]}]},
                        join: {_func: this._functionJoin, _signature: [{types: [s]}, {types: [9]}]},
                        reverse: {_func: this._functionReverse, _signature: [{types: [s, 3]}]},
                        to_array: {_func: this._functionToArray, _signature: [{types: [1]}]},
                        to_string: {_func: this._functionToString, _signature: [{types: [1]}]},
                        to_number: {_func: this._functionToNumber, _signature: [{types: [1]}]},
                        not_null: {_func: this._functionNotNull, _signature: [{types: [1], variadic: !0}]}
                    }
                }

                f.EOF = 0, f.UnquotedIdentifier = 0, f.QuotedIdentifier = 0, f.Rbracket = 0, f.Rparen = 0, f.Comma = 0, f.Rbrace = 0, f.Number = 0, f.Current = 0, f.Expref = 0, f.Pipe = 1, f.Or = 2, f.And = 3, f.EQ = 5, f.GT = 5, f.LT = 5, f.GTE = 5, f.LTE = 5, f.NE = 5, f.Flatten = 9, f.Star = 20, f.Filter = 21, f.Dot = 40, f.Not = 45, f.Lbrace = 50, f.Lbracket = 55, f.Lparen = 60, g.prototype = {
                    parse: function (e) {
                        this._loadTokens(e), this.index = 0;
                        var t = this.expression(0);
                        if ("EOF" !== this._lookahead(0)) {
                            var n = this._lookaheadToken(0),
                                i = new Error("Unexpected token type: " + n.type + ", value: " + n.value);
                            throw i.name = "ParserError", i
                        }
                        return t
                    }, _loadTokens: function (e) {
                        var t = (new d).tokenize(e);
                        t.push({type: "EOF", value: "", start: e.length}), this.tokens = t
                    }, expression: function (e) {
                        var t = this._lookaheadToken(0);
                        this._advance();
                        for (var n = this.nud(t), i = this._lookahead(0); e < f[i];) this._advance(), n = this.led(i, n), i = this._lookahead(0);
                        return n
                    }, _lookahead: function (e) {
                        return this.tokens[this.index + e].type
                    }, _lookaheadToken: function (e) {
                        return this.tokens[this.index + e]
                    }, _advance: function () {
                        this.index++
                    }, nud: function (e) {
                        var t, n;
                        switch (e.type) {
                            case"Literal":
                                return {type: "Literal", value: e.value};
                            case"UnquotedIdentifier":
                                return {type: "Field", name: e.value};
                            case"QuotedIdentifier":
                                var i = {type: "Field", name: e.value};
                                if ("Lparen" === this._lookahead(0)) throw new Error("Quoted identifier not allowed for function names.");
                                return i;
                            case"Not":
                                return {type: "NotExpression", children: [t = this.expression(f.Not)]};
                            case"Star":
                                return t = null, {
                                    type: "ValueProjection",
                                    children: [{type: "Identity"}, t = "Rbracket" === this._lookahead(0) ? {type: "Identity"} : this._parseProjectionRHS(f.Star)]
                                };
                            case"Filter":
                                return this.led(e.type, {type: "Identity"});
                            case"Lbrace":
                                return this._parseMultiselectHash();
                            case"Flatten":
                                return {
                                    type: "Projection",
                                    children: [{
                                        type: "Flatten",
                                        children: [{type: "Identity"}]
                                    }, t = this._parseProjectionRHS(f.Flatten)]
                                };
                            case"Lbracket":
                                return "Number" === this._lookahead(0) || "Colon" === this._lookahead(0) ? (t = this._parseIndexExpression(), this._projectIfSlice({type: "Identity"}, t)) : "Star" === this._lookahead(0) && "Rbracket" === this._lookahead(1) ? (this._advance(), this._advance(), {
                                    type: "Projection",
                                    children: [{type: "Identity"}, t = this._parseProjectionRHS(f.Star)]
                                }) : this._parseMultiselectList();
                            case"Current":
                                return {type: "Current"};
                            case"Expref":
                                return {type: "ExpressionReference", children: [n = this.expression(f.Expref)]};
                            case"Lparen":
                                for (var r = []; "Rparen" !== this._lookahead(0);) "Current" === this._lookahead(0) ? (n = {type: "Current"}, this._advance()) : n = this.expression(0), r.push(n);
                                return this._match("Rparen"), r[0];
                            default:
                                this._errorToken(e)
                        }
                    }, led: function (e, t) {
                        var n;
                        switch (e) {
                            case"Dot":
                                var i = f.Dot;
                                return "Star" !== this._lookahead(0) ? {
                                    type: "Subexpression",
                                    children: [t, n = this._parseDotRHS(i)]
                                } : (this._advance(), {
                                    type: "ValueProjection",
                                    children: [t, n = this._parseProjectionRHS(i)]
                                });
                            case"Pipe":
                                return {type: "Pipe", children: [t, n = this.expression(f.Pipe)]};
                            case"Or":
                                return {type: "OrExpression", children: [t, n = this.expression(f.Or)]};
                            case"And":
                                return {type: "AndExpression", children: [t, n = this.expression(f.And)]};
                            case"Lparen":
                                for (var r, o = t.name, a = []; "Rparen" !== this._lookahead(0);) "Current" === this._lookahead(0) ? (r = {type: "Current"}, this._advance()) : r = this.expression(0), "Comma" === this._lookahead(0) && this._match("Comma"), a.push(r);
                                return this._match("Rparen"), {type: "Function", name: o, children: a};
                            case"Filter":
                                var s = this.expression(0);
                                return this._match("Rbracket"), {
                                    type: "FilterProjection",
                                    children: [t, n = "Flatten" === this._lookahead(0) ? {type: "Identity"} : this._parseProjectionRHS(f.Filter), s]
                                };
                            case"Flatten":
                                return {
                                    type: "Projection",
                                    children: [{type: "Flatten", children: [t]}, this._parseProjectionRHS(f.Flatten)]
                                };
                            case"EQ":
                            case"NE":
                            case"GT":
                            case"GTE":
                            case"LT":
                            case"LTE":
                                return this._parseComparator(t, e);
                            case"Lbracket":
                                var l = this._lookaheadToken(0);
                                return "Number" === l.type || "Colon" === l.type ? (n = this._parseIndexExpression(), this._projectIfSlice(t, n)) : (this._match("Star"), this._match("Rbracket"), {
                                    type: "Projection",
                                    children: [t, n = this._parseProjectionRHS(f.Star)]
                                });
                            default:
                                this._errorToken(this._lookaheadToken(0))
                        }
                    }, _match: function (e) {
                        if (this._lookahead(0) !== e) {
                            var t = this._lookaheadToken(0), n = new Error("Expected " + e + ", got: " + t.type);
                            throw n.name = "ParserError", n
                        }
                        this._advance()
                    }, _errorToken: function (e) {
                        var t = new Error("Invalid token (" + e.type + '): "' + e.value + '"');
                        throw t.name = "ParserError", t
                    }, _parseIndexExpression: function () {
                        if ("Colon" === this._lookahead(0) || "Colon" === this._lookahead(1)) return this._parseSliceExpression();
                        var e = {type: "Index", value: this._lookaheadToken(0).value};
                        return this._advance(), this._match("Rbracket"), e
                    }, _projectIfSlice: function (e, t) {
                        var n = {type: "IndexExpression", children: [e, t]};
                        return "Slice" === t.type ? {
                            type: "Projection",
                            children: [n, this._parseProjectionRHS(f.Star)]
                        } : n
                    }, _parseSliceExpression: function () {
                        for (var e = [null, null, null], t = 0, n = this._lookahead(0); "Rbracket" !== n && t < 3;) {
                            if ("Colon" === n) t++, this._advance(); else {
                                if ("Number" !== n) {
                                    var i = this._lookahead(0),
                                        r = new Error("Syntax error, unexpected token: " + i.value + "(" + i.type + ")");
                                    throw r.name = "Parsererror", r
                                }
                                e[t] = this._lookaheadToken(0).value, this._advance()
                            }
                            n = this._lookahead(0)
                        }
                        return this._match("Rbracket"), {type: "Slice", children: e}
                    }, _parseComparator: function (e, t) {
                        return {type: "Comparator", name: t, children: [e, this.expression(f[t])]}
                    }, _parseDotRHS: function (e) {
                        var t = this._lookahead(0);
                        return ["UnquotedIdentifier", "QuotedIdentifier", "Star"].indexOf(t) >= 0 ? this.expression(e) : "Lbracket" === t ? (this._match("Lbracket"), this._parseMultiselectList()) : "Lbrace" === t ? (this._match("Lbrace"), this._parseMultiselectHash()) : void 0
                    }, _parseProjectionRHS: function (e) {
                        var t;
                        if (f[this._lookahead(0)] < 10) t = {type: "Identity"}; else if ("Lbracket" === this._lookahead(0)) t = this.expression(e); else if ("Filter" === this._lookahead(0)) t = this.expression(e); else {
                            if ("Dot" !== this._lookahead(0)) {
                                var n = this._lookaheadToken(0),
                                    i = new Error("Sytanx error, unexpected token: " + n.value + "(" + n.type + ")");
                                throw i.name = "ParserError", i
                            }
                            this._match("Dot"), t = this._parseDotRHS(e)
                        }
                        return t
                    }, _parseMultiselectList: function () {
                        for (var e = []; "Rbracket" !== this._lookahead(0);) {
                            var t = this.expression(0);
                            if (e.push(t), "Comma" === this._lookahead(0) && (this._match("Comma"), "Rbracket" === this._lookahead(0))) throw new Error("Unexpected token Rbracket")
                        }
                        return this._match("Rbracket"), {type: "MultiSelectList", children: e}
                    }, _parseMultiselectHash: function () {
                        for (var e, t, n, i = [], r = ["UnquotedIdentifier", "QuotedIdentifier"]; ;) {
                            if (e = this._lookaheadToken(0), r.indexOf(e.type) < 0) throw new Error("Expecting an identifier token, got: " + e.type);
                            if (t = e.value, this._advance(), this._match("Colon"), n = {
                                type: "KeyValuePair",
                                name: t,
                                value: this.expression(0)
                            }, i.push(n), "Comma" === this._lookahead(0)) this._match("Comma"); else if ("Rbrace" === this._lookahead(0)) {
                                this._match("Rbrace");
                                break
                            }
                        }
                        return {type: "MultiSelectHash", children: i}
                    }
                }, p.prototype = {
                    search: function (e, t) {
                        return this.visit(e, t)
                    }, visit: function (e, o) {
                        var a, s, l, c, u, h, d, f, g;
                        switch (e.type) {
                            case"Field":
                                return null === o ? null : n(o) ? void 0 === (h = o[e.name]) ? null : h : null;
                            case"Subexpression":
                                for (l = this.visit(e.children[0], o), g = 1; g < e.children.length; g++) if (null === (l = this.visit(e.children[1], l))) return null;
                                return l;
                            case"IndexExpression":
                                return d = this.visit(e.children[0], o), this.visit(e.children[1], d);
                            case"Index":
                                if (!t(o)) return null;
                                var p = e.value;
                                return p < 0 && (p = o.length + p), void 0 === (l = o[p]) && (l = null), l;
                            case"Slice":
                                if (!t(o)) return null;
                                var m = e.children.slice(0), v = this.computeSliceParams(o.length, m), y = v[0],
                                    b = v[1], C = v[2];
                                if (l = [], C > 0) for (g = y; g < b; g += C) l.push(o[g]); else for (g = y; g > b; g += C) l.push(o[g]);
                                return l;
                            case"Projection":
                                var w = this.visit(e.children[0], o);
                                if (!t(w)) return null;
                                for (f = [], g = 0; g < w.length; g++) null !== (s = this.visit(e.children[1], w[g])) && f.push(s);
                                return f;
                            case"ValueProjection":
                                if (!n(w = this.visit(e.children[0], o))) return null;
                                f = [];
                                var I = function (e) {
                                    for (var t = Object.keys(e), n = [], i = 0; i < t.length; i++) n.push(e[t[i]]);
                                    return n
                                }(w);
                                for (g = 0; g < I.length; g++) null !== (s = this.visit(e.children[1], I[g])) && f.push(s);
                                return f;
                            case"FilterProjection":
                                if (!t(w = this.visit(e.children[0], o))) return null;
                                var x = [], A = [];
                                for (g = 0; g < w.length; g++) r(a = this.visit(e.children[2], w[g])) || x.push(w[g]);
                                for (var _ = 0; _ < x.length; _++) null !== (s = this.visit(e.children[1], x[_])) && A.push(s);
                                return A;
                            case"Comparator":
                                switch (c = this.visit(e.children[0], o), u = this.visit(e.children[1], o), e.name) {
                                    case"EQ":
                                        l = i(c, u);
                                        break;
                                    case"NE":
                                        l = !i(c, u);
                                        break;
                                    case"GT":
                                        l = c > u;
                                        break;
                                    case"GTE":
                                        l = c >= u;
                                        break;
                                    case"LT":
                                        l = c < u;
                                        break;
                                    case"LTE":
                                        l = c <= u;
                                        break;
                                    default:
                                        throw new Error("Unknown comparator: " + e.name)
                                }
                                return l;
                            case"Flatten":
                                var S = this.visit(e.children[0], o);
                                if (!t(S)) return null;
                                var k = [];
                                for (g = 0; g < S.length; g++) t(s = S[g]) ? k.push.apply(k, s) : k.push(s);
                                return k;
                            case"Identity":
                                return o;
                            case"MultiSelectList":
                                if (null === o) return null;
                                for (f = [], g = 0; g < e.children.length; g++) f.push(this.visit(e.children[g], o));
                                return f;
                            case"MultiSelectHash":
                                if (null === o) return null;
                                var L;
                                for (f = {}, g = 0; g < e.children.length; g++) f[(L = e.children[g]).name] = this.visit(L.value, o);
                                return f;
                            case"OrExpression":
                                return r(a = this.visit(e.children[0], o)) && (a = this.visit(e.children[1], o)), a;
                            case"AndExpression":
                                return !0 === r(c = this.visit(e.children[0], o)) ? c : this.visit(e.children[1], o);
                            case"NotExpression":
                                return r(c = this.visit(e.children[0], o));
                            case"Literal":
                                return e.value;
                            case"Pipe":
                                return d = this.visit(e.children[0], o), this.visit(e.children[1], d);
                            case"Current":
                                return o;
                            case"Function":
                                var T = [];
                                for (g = 0; g < e.children.length; g++) T.push(this.visit(e.children[g], o));
                                return this.runtime.callFunction(e.name, T);
                            case"ExpressionReference":
                                var O = e.children[0];
                                return O.jmespathType = "Expref", O;
                            default:
                                throw new Error("Unknown node type: " + e.type)
                        }
                    }, computeSliceParams: function (e, t) {
                        var n = t[0], i = t[1], r = t[2], o = [null, null, null];
                        if (null === r) r = 1; else if (0 === r) {
                            var a = new Error("Invalid slice, step cannot be 0");
                            throw a.name = "RuntimeError", a
                        }
                        var s = r < 0;
                        return n = null === n ? s ? e - 1 : 0 : this.capSliceRange(e, n, r), i = null === i ? s ? -1 : e : this.capSliceRange(e, i, r), o[0] = n, o[1] = i, o[2] = r, o
                    }, capSliceRange: function (e, t, n) {
                        return t < 0 ? (t += e) < 0 && (t = n < 0 ? -1 : 0) : t >= e && (t = n < 0 ? e - 1 : e), t
                    }
                }, m.prototype = {
                    callFunction: function (e, t) {
                        var n = this.functionTable[e];
                        if (void 0 === n) throw new Error("Unknown function: " + e + "()");
                        return this._validateArgs(e, t, n._signature), n._func.call(this, t)
                    }, _validateArgs: function (e, t, n) {
                        var i, r, o, a;
                        if (n[n.length - 1].variadic) {
                            if (t.length < n.length) throw i = 1 === n.length ? " argument" : " arguments", new Error("ArgumentError: " + e + "() takes at least" + n.length + i + " but received " + t.length)
                        } else if (t.length !== n.length) throw i = 1 === n.length ? " argument" : " arguments", new Error("ArgumentError: " + e + "() takes " + n.length + i + " but received " + t.length);
                        for (var s = 0; s < n.length; s++) {
                            a = !1, r = n[s].types, o = this._getTypeName(t[s]);
                            for (var l = 0; l < r.length; l++) if (this._typeMatches(o, r[l], t[s])) {
                                a = !0;
                                break
                            }
                            if (!a) throw new Error("TypeError: " + e + "() expected argument " + (s + 1) + " to be type " + r + " but received type " + o + " instead.")
                        }
                    }, _typeMatches: function (e, t, n) {
                        if (1 === t) return !0;
                        if (9 !== t && 8 !== t && 3 !== t) return e === t;
                        if (3 === t) return 3 === e;
                        if (3 === e) {
                            var i;
                            8 === t ? i = a : 9 === t && (i = s);
                            for (var r = 0; r < n.length; r++) if (!this._typeMatches(this._getTypeName(n[r]), i, n[r])) return !1;
                            return !0
                        }
                    }, _getTypeName: function (e) {
                        switch (Object.prototype.toString.call(e)) {
                            case"[object String]":
                                return s;
                            case"[object Number]":
                                return a;
                            case"[object Array]":
                                return 3;
                            case"[object Boolean]":
                                return 5;
                            case"[object Null]":
                                return 7;
                            case"[object Object]":
                                return "Expref" === e.jmespathType ? 6 : 4
                        }
                    }, _functionStartsWith: function (e) {
                        return 0 === e[0].lastIndexOf(e[1])
                    }, _functionEndsWith: function (e) {
                        var t = e[0], n = e[1];
                        return -1 !== t.indexOf(n, t.length - n.length)
                    }, _functionReverse: function (e) {
                        if (this._getTypeName(e[0]) === s) {
                            for (var t = e[0], n = "", i = t.length - 1; i >= 0; i--) n += t[i];
                            return n
                        }
                        var r = e[0].slice(0);
                        return r.reverse(), r
                    }, _functionAbs: function (e) {
                        return Math.abs(e[0])
                    }, _functionCeil: function (e) {
                        return Math.ceil(e[0])
                    }, _functionAvg: function (e) {
                        for (var t = 0, n = e[0], i = 0; i < n.length; i++) t += n[i];
                        return t / n.length
                    }, _functionContains: function (e) {
                        return e[0].indexOf(e[1]) >= 0
                    }, _functionFloor: function (e) {
                        return Math.floor(e[0])
                    }, _functionLength: function (e) {
                        return n(e[0]) ? Object.keys(e[0]).length : e[0].length
                    }, _functionMap: function (e) {
                        for (var t = [], n = this._interpreter, i = e[0], r = e[1], o = 0; o < r.length; o++) t.push(n.visit(i, r[o]));
                        return t
                    }, _functionMerge: function (e) {
                        for (var t = {}, n = 0; n < e.length; n++) {
                            var i = e[n];
                            for (var r in i) t[r] = i[r]
                        }
                        return t
                    }, _functionMax: function (e) {
                        if (e[0].length > 0) {
                            if (this._getTypeName(e[0][0]) === a) return Math.max.apply(Math, e[0]);
                            for (var t = e[0], n = t[0], i = 1; i < t.length; i++) n.localeCompare(t[i]) < 0 && (n = t[i]);
                            return n
                        }
                        return null
                    }, _functionMin: function (e) {
                        if (e[0].length > 0) {
                            if (this._getTypeName(e[0][0]) === a) return Math.min.apply(Math, e[0]);
                            for (var t = e[0], n = t[0], i = 1; i < t.length; i++) t[i].localeCompare(n) < 0 && (n = t[i]);
                            return n
                        }
                        return null
                    }, _functionSum: function (e) {
                        for (var t = 0, n = e[0], i = 0; i < n.length; i++) t += n[i];
                        return t
                    }, _functionType: function (e) {
                        switch (this._getTypeName(e[0])) {
                            case a:
                                return "number";
                            case s:
                                return "string";
                            case 3:
                                return "array";
                            case 4:
                                return "object";
                            case 5:
                                return "boolean";
                            case 6:
                                return "expref";
                            case 7:
                                return "null"
                        }
                    }, _functionKeys: function (e) {
                        return Object.keys(e[0])
                    }, _functionValues: function (e) {
                        for (var t = e[0], n = Object.keys(t), i = [], r = 0; r < n.length; r++) i.push(t[n[r]]);
                        return i
                    }, _functionJoin: function (e) {
                        var t = e[0];
                        return e[1].join(t)
                    }, _functionToArray: function (e) {
                        return 3 === this._getTypeName(e[0]) ? e[0] : [e[0]]
                    }, _functionToString: function (e) {
                        return this._getTypeName(e[0]) === s ? e[0] : JSON.stringify(e[0])
                    }, _functionToNumber: function (e) {
                        var t, n = this._getTypeName(e[0]);
                        return n === a ? e[0] : n !== s || (t = +e[0], isNaN(t)) ? null : t
                    }, _functionNotNull: function (e) {
                        for (var t = 0; t < e.length; t++) if (7 !== this._getTypeName(e[t])) return e[t];
                        return null
                    }, _functionSort: function (e) {
                        var t = e[0].slice(0);
                        return t.sort(), t
                    }, _functionSortBy: function (e) {
                        var t = e[0].slice(0);
                        if (0 === t.length) return t;
                        var n = this._interpreter, i = e[1], r = this._getTypeName(n.visit(i, t[0]));
                        if ([a, s].indexOf(r) < 0) throw new Error("TypeError");
                        for (var o = this, l = [], c = 0; c < t.length; c++) l.push([c, t[c]]);
                        l.sort((function (e, t) {
                            var a = n.visit(i, e[1]), s = n.visit(i, t[1]);
                            if (o._getTypeName(a) !== r) throw new Error("TypeError: expected " + r + ", received " + o._getTypeName(a));
                            if (o._getTypeName(s) !== r) throw new Error("TypeError: expected " + r + ", received " + o._getTypeName(s));
                            return a > s ? 1 : a < s ? -1 : e[0] - t[0]
                        }));
                        for (var u = 0; u < l.length; u++) t[u] = l[u][1];
                        return t
                    }, _functionMaxBy: function (e) {
                        for (var t, n, i = e[1], r = e[0], o = this.createKeyFunction(i, [a, s]), l = -1 / 0, c = 0; c < r.length; c++) (n = o(r[c])) > l && (l = n, t = r[c]);
                        return t
                    }, _functionMinBy: function (e) {
                        for (var t, n, i = e[1], r = e[0], o = this.createKeyFunction(i, [a, s]), l = 1 / 0, c = 0; c < r.length; c++) (n = o(r[c])) < l && (l = n, t = r[c]);
                        return t
                    }, createKeyFunction: function (e, t) {
                        var n = this, i = this._interpreter;
                        return function (r) {
                            var o = i.visit(e, r);
                            if (t.indexOf(n._getTypeName(o)) < 0) {
                                var a = "TypeError: expected one of " + t + ", received " + n._getTypeName(o);
                                throw new Error(a)
                            }
                            return o
                        }
                    }
                }, e.tokenize = function (e) {
                    return (new d).tokenize(e)
                }, e.compile = function (e) {
                    return (new g).parse(e)
                }, e.search = function (e, t) {
                    var n = new g, i = new m, r = new p(i);
                    i._interpreter = r;
                    var o = n.parse(t);
                    return r.search(o, e)
                }, e.strictDeepEqual = i
            }(t)
        }, function (e, t, n) {
            t.tryRequireThemeJsonEditor = function () {
                try {
                    n(42)
                } catch (e) {
                    console.error(e)
                }
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(20), r = n(13), o = n(80).treeModeMixins, a = n(21).textModeMixins, s = n(81).previewModeMixins,
                l = n(0), c = l.clear, u = l.extend, h = l.getInnerText, d = l.getInternetExplorerVersion, f = l.parse,
                g = n(43).tryRequireAjv, p = n(6).showTransformModal, m = n(5).showSortModal, v = g();

            function y(e, t, n) {
                if (!(this instanceof y)) throw new Error('JSONEditor constructor called without "new".');
                var i = d();
                if (-1 !== i && i < 9) throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");
                t && (t.error && (console.warn('Option "error" has been renamed to "onError"'), t.onError = t.error, delete t.error), t.change && (console.warn('Option "change" has been renamed to "onChange"'), t.onChange = t.change, delete t.change), t.editable && (console.warn('Option "editable" has been renamed to "onEditable"'), t.onEditable = t.editable, delete t.editable), t.onChangeJSON && ("text" === t.mode || "code" === t.mode || t.modes && (-1 !== t.modes.indexOf("text") || -1 !== t.modes.indexOf("code"))) && console.warn('Option "onChangeJSON" is not applicable to modes "text" and "code". Use "onChangeText" or "onChange" instead.'), t && Object.keys(t).forEach((function (e) {
                    -1 === y.VALID_OPTIONS.indexOf(e) && console.warn('Unknown option "' + e + '". This option will be ignored')
                }))), arguments.length && this._create(e, t, n)
            }

            "undefined" == typeof Promise && console.error("Promise undefined. Please load a Promise polyfill in the browser in order to use JSONEditor"), y.modes = {}, y.prototype.DEBOUNCE_INTERVAL = 150, y.VALID_OPTIONS = ["ajv", "schema", "schemaRefs", "templates", "ace", "theme", "autocomplete", "onChange", "onChangeJSON", "onChangeText", "onEditable", "onError", "onEvent", "onModeChange", "onNodeName", "onValidate", "onCreateMenu", "onSelectionChange", "onTextSelectionChange", "onClassName", "onFocus", "onBlur", "colorPicker", "onColorPicker", "timestampTag", "timestampFormat", "escapeUnicode", "history", "search", "mode", "modes", "name", "indentation", "sortObjectKeys", "navigationBar", "statusBar", "mainMenuBar", "languages", "language", "enableSort", "enableTransform", "maxVisibleChilds", "onValidationError", "modalAnchor", "popupAnchor", "createQuery", "executeQuery", "queryDescription"], y.prototype._create = function (e, t, n) {
                this.container = e, this.options = t || {}, this.json = n || {};
                var i = this.options.mode || this.options.modes && this.options.modes[0] || "tree";
                this.setMode(i)
            }, y.prototype.destroy = function () {
            }, y.prototype.set = function (e) {
                this.json = e
            }, y.prototype.get = function () {
                return this.json
            }, y.prototype.setText = function (e) {
                this.json = f(e)
            }, y.prototype.getText = function () {
                return JSON.stringify(this.json)
            }, y.prototype.setName = function (e) {
                this.options || (this.options = {}), this.options.name = e
            }, y.prototype.getName = function () {
                return this.options && this.options.name
            }, y.prototype.setMode = function (e) {
                if (e !== this.options.mode || !this.create) {
                    var t, n, i = this.container, r = u({}, this.options), o = r.mode;
                    r.mode = e;
                    var a = y.modes[e];
                    if (!a) throw new Error('Unknown mode "' + r.mode + '"');
                    try {
                        var s = "text" === a.data;
                        if (n = this.getName(), t = this[s ? "getText" : "get"](), this.destroy(), c(this), u(this, a.mixin), this.create(i, r), this.setName(n), this[s ? "setText" : "set"](t), "function" == typeof a.load) try {
                            a.load.call(this)
                        } catch (e) {
                            console.error(e)
                        }
                        if ("function" == typeof r.onModeChange && e !== o) try {
                            r.onModeChange(e, o)
                        } catch (e) {
                            console.error(e)
                        }
                    } catch (e) {
                        this._onError(e)
                    }
                }
            }, y.prototype.getMode = function () {
                return this.options.mode
            }, y.prototype._onError = function (e) {
                if (!this.options || "function" != typeof this.options.onError) throw e;
                this.options.onError(e)
            }, y.prototype.setSchema = function (e, t) {
                if (e) {
                    var i;
                    try {
                        this.options.ajv ? i = this.options.ajv : ((i = v({
                            allErrors: !0,
                            verbose: !0,
                            schemaId: "auto",
                            $data: !0
                        })).addMetaSchema(n(78)), i.addMetaSchema(n(79)))
                    } catch (e) {
                        console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")
                    }
                    if (i) {
                        if (t) {
                            for (var r in t) i.removeSchema(r), t[r] && i.addSchema(t[r], r);
                            this.options.schemaRefs = t
                        }
                        this.validateSchema = i.compile(e), this.options.schema = e, this.validate()
                    }
                    this.refresh()
                } else this.validateSchema = null, this.options.schema = null, this.options.schemaRefs = null, this.validate(), this.refresh()
            }, y.prototype.validate = function () {
            }, y.prototype.refresh = function () {
            }, y.registerMode = function (e) {
                var t, n;
                if (Array.isArray(e)) for (t = 0; t < e.length; t++) y.registerMode(e[t]); else {
                    if (!("mode" in e)) throw new Error('Property "mode" missing');
                    if (!("mixin" in e)) throw new Error('Property "mixin" missing');
                    if (!("data" in e)) throw new Error('Property "data" missing');
                    var i = e.mode;
                    if (i in y.modes) throw new Error('Mode "' + i + '" already registered');
                    if ("function" != typeof e.mixin.create) throw new Error('Required function "create" missing on mixin');
                    var r = ["setMode", "registerMode", "modes"];
                    for (t = 0; t < r.length; t++) if ((n = r[t]) in e.mixin) throw new Error('Reserved property "' + n + '" not allowed in mixin');
                    y.modes[i] = e
                }
            }, y.registerMode(o), y.registerMode(a), y.registerMode(s), y.ace = i, y.Ajv = v, y.VanillaPicker = r, y.showTransformModal = p, y.showSortModal = m, y.getInnerText = h, y.default = y, e.exports = y
        }, function (e, t, n) {
            (function (e) {
                !function () {
                    var e = function () {
                        return this
                    }();
                    e || "undefined" == typeof window || (e = window);
                    var t = function (e, n, i) {
                        "string" == typeof e ? (2 == arguments.length && (i = n), t.modules[e] || (t.payloads[e] = i, t.modules[e] = null)) : t.original ? t.original.apply(this, arguments) : (console.error("dropping module because define wasn't a string."), console.trace())
                    };
                    t.modules = {}, t.payloads = {};
                    var n, i, r = function (e, t, n) {
                        if ("string" == typeof t) {
                            var i = s(e, t);
                            if (null != i) return n && n(), i
                        } else if ("[object Array]" === Object.prototype.toString.call(t)) {
                            for (var r = [], a = 0, l = t.length; a < l; ++a) {
                                var c = s(e, t[a]);
                                if (null == c && o.original) return;
                                r.push(c)
                            }
                            return n && n.apply(null, r) || !0
                        }
                    }, o = function (e, t) {
                        var n = r("", e, t);
                        return null == n && o.original ? o.original.apply(this, arguments) : n
                    }, a = function (e, t) {
                        if (-1 !== t.indexOf("!")) {
                            var n = t.split("!");
                            return a(e, n[0]) + "!" + a(e, n[1])
                        }
                        if ("." == t.charAt(0)) for (t = e.split("/").slice(0, -1).join("/") + "/" + t; -1 !== t.indexOf(".") && i != t;) {
                            var i = t;
                            t = t.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "")
                        }
                        return t
                    }, s = function (e, n) {
                        n = a(e, n);
                        var i = t.modules[n];
                        if (!i) {
                            if ("function" == typeof (i = t.payloads[n])) {
                                var o = {}, s = {id: n, uri: "", exports: o, packaged: !0};
                                o = i((function (e, t) {
                                    return r(n, e, t)
                                }), o, s) || s.exports, t.modules[n] = o, delete t.payloads[n]
                            }
                            i = t.modules[n] = o || i
                        }
                        return i
                    };
                    i = e, (n = "ace") && (e[n] || (e[n] = {}), i = e[n]), i.define && i.define.packaged || (t.original = i.define, i.define = t, i.define.packaged = !0), i.require && i.require.packaged || (o.original = i.require, i.require = o, i.require.packaged = !0)
                }(), ace.define("ace/lib/regexp", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    var i = {
                        exec: RegExp.prototype.exec,
                        test: RegExp.prototype.test,
                        match: String.prototype.match,
                        replace: String.prototype.replace,
                        split: String.prototype.split
                    }, r = void 0 === i.exec.call(/()??/, "")[1], o = function () {
                        var e = /^/g;
                        return i.test.call(e, ""), !e.lastIndex
                    }();

                    function a(e) {
                        return (e.global ? "g" : "") + (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.extended ? "x" : "") + (e.sticky ? "y" : "")
                    }

                    function s(e, t, n) {
                        if (Array.prototype.indexOf) return e.indexOf(t, n);
                        for (var i = n || 0; i < e.length; i++) if (e[i] === t) return i;
                        return -1
                    }

                    o && r || (RegExp.prototype.exec = function (e) {
                        var t, n, l = i.exec.apply(this, arguments);
                        if ("string" == typeof e && l) {
                            if (!r && l.length > 1 && s(l, "") > -1 && (n = RegExp(this.source, i.replace.call(a(this), "g", "")), i.replace.call(e.slice(l.index), n, (function () {
                                for (var e = 1; e < arguments.length - 2; e++) void 0 === arguments[e] && (l[e] = void 0)
                            }))), this._xregexp && this._xregexp.captureNames) for (var c = 1; c < l.length; c++) (t = this._xregexp.captureNames[c - 1]) && (l[t] = l[c]);
                            !o && this.global && !l[0].length && this.lastIndex > l.index && this.lastIndex--
                        }
                        return l
                    }, o || (RegExp.prototype.test = function (e) {
                        var t = i.exec.call(this, e);
                        return t && this.global && !t[0].length && this.lastIndex > t.index && this.lastIndex--, !!t
                    }))
                })), ace.define("ace/lib/es5-shim", ["require", "exports", "module"], (function (e, t, n) {
                    function i() {
                    }

                    Function.prototype.bind || (Function.prototype.bind = function (e) {
                        var t = this;
                        if ("function" != typeof t) throw new TypeError("Function.prototype.bind called on incompatible " + t);
                        var n = d.call(arguments, 1), r = function () {
                            if (this instanceof r) {
                                var i = t.apply(this, n.concat(d.call(arguments)));
                                return Object(i) === i ? i : this
                            }
                            return t.apply(e, n.concat(d.call(arguments)))
                        };
                        return t.prototype && (i.prototype = t.prototype, r.prototype = new i, i.prototype = null), r
                    });
                    var r, o, a, s, l, c = Function.prototype.call, u = Array.prototype, h = Object.prototype,
                        d = u.slice, f = c.bind(h.toString), g = c.bind(h.hasOwnProperty);
                    if ((l = g(h, "__defineGetter__")) && (r = c.bind(h.__defineGetter__), o = c.bind(h.__defineSetter__), a = c.bind(h.__lookupGetter__), s = c.bind(h.__lookupSetter__)), 2 != [1, 2].splice(0).length) if (function () {
                        function e(e) {
                            var t = new Array(e + 2);
                            return t[0] = t[1] = 0, t
                        }

                        var t, n = [];
                        if (n.splice.apply(n, e(20)), n.splice.apply(n, e(26)), t = n.length, n.splice(5, 0, "XXX"), n.length, t + 1 == n.length) return !0
                    }()) {
                        var p = Array.prototype.splice;
                        Array.prototype.splice = function (e, t) {
                            return arguments.length ? p.apply(this, [void 0 === e ? 0 : e, void 0 === t ? this.length - e : t].concat(d.call(arguments, 2))) : []
                        }
                    } else Array.prototype.splice = function (e, t) {
                        var n = this.length;
                        e > 0 ? e > n && (e = n) : null == e ? e = 0 : e < 0 && (e = Math.max(n + e, 0)), e + t < n || (t = n - e);
                        var i = this.slice(e, e + t), r = d.call(arguments, 2), o = r.length;
                        if (e === n) o && this.push.apply(this, r); else {
                            var a = Math.min(t, n - e), s = e + a, l = s + o - a, c = n - s, u = n - a;
                            if (l < s) for (var h = 0; h < c; ++h) this[l + h] = this[s + h]; else if (l > s) for (h = c; h--;) this[l + h] = this[s + h];
                            if (o && e === u) this.length = u, this.push.apply(this, r); else for (this.length = u + o, h = 0; h < o; ++h) this[e + h] = r[h]
                        }
                        return i
                    };
                    Array.isArray || (Array.isArray = function (e) {
                        return "[object Array]" == f(e)
                    });
                    var m, v, y = Object("a"), b = "a" != y[0] || !(0 in y);

                    function C(e) {
                        try {
                            return Object.defineProperty(e, "sentinel", {}), "sentinel" in e
                        } catch (e) {
                        }
                    }

                    if (Array.prototype.forEach || (Array.prototype.forEach = function (e) {
                        var t = E(this), n = b && "[object String]" == f(this) ? this.split("") : t, i = arguments[1],
                            r = -1, o = n.length >>> 0;
                        if ("[object Function]" != f(e)) throw new TypeError;
                        for (; ++r < o;) r in n && e.call(i, n[r], r, t)
                    }), Array.prototype.map || (Array.prototype.map = function (e) {
                        var t = E(this), n = b && "[object String]" == f(this) ? this.split("") : t, i = n.length >>> 0,
                            r = Array(i), o = arguments[1];
                        if ("[object Function]" != f(e)) throw new TypeError(e + " is not a function");
                        for (var a = 0; a < i; a++) a in n && (r[a] = e.call(o, n[a], a, t));
                        return r
                    }), Array.prototype.filter || (Array.prototype.filter = function (e) {
                        var t, n = E(this), i = b && "[object String]" == f(this) ? this.split("") : n,
                            r = i.length >>> 0, o = [], a = arguments[1];
                        if ("[object Function]" != f(e)) throw new TypeError(e + " is not a function");
                        for (var s = 0; s < r; s++) s in i && (t = i[s], e.call(a, t, s, n) && o.push(t));
                        return o
                    }), Array.prototype.every || (Array.prototype.every = function (e) {
                        var t = E(this), n = b && "[object String]" == f(this) ? this.split("") : t, i = n.length >>> 0,
                            r = arguments[1];
                        if ("[object Function]" != f(e)) throw new TypeError(e + " is not a function");
                        for (var o = 0; o < i; o++) if (o in n && !e.call(r, n[o], o, t)) return !1;
                        return !0
                    }), Array.prototype.some || (Array.prototype.some = function (e) {
                        var t = E(this), n = b && "[object String]" == f(this) ? this.split("") : t, i = n.length >>> 0,
                            r = arguments[1];
                        if ("[object Function]" != f(e)) throw new TypeError(e + " is not a function");
                        for (var o = 0; o < i; o++) if (o in n && e.call(r, n[o], o, t)) return !0;
                        return !1
                    }), Array.prototype.reduce || (Array.prototype.reduce = function (e) {
                        var t = E(this), n = b && "[object String]" == f(this) ? this.split("") : t, i = n.length >>> 0;
                        if ("[object Function]" != f(e)) throw new TypeError(e + " is not a function");
                        if (!i && 1 == arguments.length) throw new TypeError("reduce of empty array with no initial value");
                        var r, o = 0;
                        if (arguments.length >= 2) r = arguments[1]; else for (; ;) {
                            if (o in n) {
                                r = n[o++];
                                break
                            }
                            if (++o >= i) throw new TypeError("reduce of empty array with no initial value")
                        }
                        for (; o < i; o++) o in n && (r = e.call(void 0, r, n[o], o, t));
                        return r
                    }), Array.prototype.reduceRight || (Array.prototype.reduceRight = function (e) {
                        var t = E(this), n = b && "[object String]" == f(this) ? this.split("") : t, i = n.length >>> 0;
                        if ("[object Function]" != f(e)) throw new TypeError(e + " is not a function");
                        if (!i && 1 == arguments.length) throw new TypeError("reduceRight of empty array with no initial value");
                        var r, o = i - 1;
                        if (arguments.length >= 2) r = arguments[1]; else for (; ;) {
                            if (o in n) {
                                r = n[o--];
                                break
                            }
                            if (--o < 0) throw new TypeError("reduceRight of empty array with no initial value")
                        }
                        do {
                            o in this && (r = e.call(void 0, r, n[o], o, t))
                        } while (o--);
                        return r
                    }), Array.prototype.indexOf && -1 == [0, 1].indexOf(1, 2) || (Array.prototype.indexOf = function (e) {
                        var t = b && "[object String]" == f(this) ? this.split("") : E(this), n = t.length >>> 0;
                        if (!n) return -1;
                        var i = 0;
                        for (arguments.length > 1 && (i = R(arguments[1])), i = i >= 0 ? i : Math.max(0, n + i); i < n; i++) if (i in t && t[i] === e) return i;
                        return -1
                    }), Array.prototype.lastIndexOf && -1 == [0, 1].lastIndexOf(0, -3) || (Array.prototype.lastIndexOf = function (e) {
                        var t = b && "[object String]" == f(this) ? this.split("") : E(this), n = t.length >>> 0;
                        if (!n) return -1;
                        var i = n - 1;
                        for (arguments.length > 1 && (i = Math.min(i, R(arguments[1]))), i = i >= 0 ? i : n - Math.abs(i); i >= 0; i--) if (i in t && e === t[i]) return i;
                        return -1
                    }), Object.getPrototypeOf || (Object.getPrototypeOf = function (e) {
                        return e.__proto__ || (e.constructor ? e.constructor.prototype : h)
                    }), Object.getOwnPropertyDescriptor || (Object.getOwnPropertyDescriptor = function (e, t) {
                        if ("object" != typeof e && "function" != typeof e || null === e) throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: " + e);
                        if (g(e, t)) {
                            var n;
                            if (n = {enumerable: !0, configurable: !0}, l) {
                                var i = e.__proto__;
                                e.__proto__ = h;
                                var r = a(e, t), o = s(e, t);
                                if (e.__proto__ = i, r || o) return r && (n.get = r), o && (n.set = o), n
                            }
                            return n.value = e[t], n
                        }
                    }), Object.getOwnPropertyNames || (Object.getOwnPropertyNames = function (e) {
                        return Object.keys(e)
                    }), Object.create || (m = null === Object.prototype.__proto__ ? function () {
                        return {__proto__: null}
                    } : function () {
                        var e = {};
                        for (var t in e) e[t] = null;
                        return e.constructor = e.hasOwnProperty = e.propertyIsEnumerable = e.isPrototypeOf = e.toLocaleString = e.toString = e.valueOf = e.__proto__ = null, e
                    }, Object.create = function (e, t) {
                        var n;
                        if (null === e) n = m(); else {
                            if ("object" != typeof e) throw new TypeError("typeof prototype[" + typeof e + "] != 'object'");
                            var i = function () {
                            };
                            i.prototype = e, (n = new i).__proto__ = e
                        }
                        return void 0 !== t && Object.defineProperties(n, t), n
                    }), Object.defineProperty) {
                        var w = C({}), I = "undefined" == typeof document || C(document.createElement("div"));
                        if (!w || !I) var x = Object.defineProperty
                    }
                    Object.defineProperty && !x || (Object.defineProperty = function (e, t, n) {
                        if ("object" != typeof e && "function" != typeof e || null === e) throw new TypeError("Object.defineProperty called on non-object: " + e);
                        if ("object" != typeof n && "function" != typeof n || null === n) throw new TypeError("Property description must be an object: " + n);
                        if (x) try {
                            return x.call(Object, e, t, n)
                        } catch (e) {
                        }
                        if (g(n, "value")) if (l && (a(e, t) || s(e, t))) {
                            var i = e.__proto__;
                            e.__proto__ = h, delete e[t], e[t] = n.value, e.__proto__ = i
                        } else e[t] = n.value; else {
                            if (!l) throw new TypeError("getters & setters can not be defined on this javascript engine");
                            g(n, "get") && r(e, t, n.get), g(n, "set") && o(e, t, n.set)
                        }
                        return e
                    }), Object.defineProperties || (Object.defineProperties = function (e, t) {
                        for (var n in t) g(t, n) && Object.defineProperty(e, n, t[n]);
                        return e
                    }), Object.seal || (Object.seal = function (e) {
                        return e
                    }), Object.freeze || (Object.freeze = function (e) {
                        return e
                    });
                    try {
                        Object.freeze((function () {
                        }))
                    } catch (e) {
                        Object.freeze = (v = Object.freeze, function (e) {
                            return "function" == typeof e ? e : v(e)
                        })
                    }
                    if (Object.preventExtensions || (Object.preventExtensions = function (e) {
                        return e
                    }), Object.isSealed || (Object.isSealed = function (e) {
                        return !1
                    }), Object.isFrozen || (Object.isFrozen = function (e) {
                        return !1
                    }), Object.isExtensible || (Object.isExtensible = function (e) {
                        if (Object(e) === e) throw new TypeError;
                        for (var t = ""; g(e, t);) t += "?";
                        e[t] = !0;
                        var n = g(e, t);
                        return delete e[t], n
                    }), !Object.keys) {
                        var A = !0,
                            _ = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"],
                            S = _.length;
                        for (var k in {toString: null}) A = !1;
                        Object.keys = function (e) {
                            if ("object" != typeof e && "function" != typeof e || null === e) throw new TypeError("Object.keys called on a non-object");
                            var t = [];
                            for (var n in e) g(e, n) && t.push(n);
                            if (A) for (var i = 0, r = S; i < r; i++) {
                                var o = _[i];
                                g(e, o) && t.push(o)
                            }
                            return t
                        }
                    }
                    Date.now || (Date.now = function () {
                        return (new Date).getTime()
                    });
                    var L = "\t\n\v\f\r                　\u2028\u2029\ufeff";
                    if (!String.prototype.trim) {
                        L = "[" + L + "]";
                        var T = new RegExp("^" + L + L + "*"), O = new RegExp(L + L + "*$");
                        String.prototype.trim = function () {
                            return String(this).replace(T, "").replace(O, "")
                        }
                    }

                    function R(e) {
                        return (e = +e) != e ? e = 0 : 0 !== e && e !== 1 / 0 && e !== -1 / 0 && (e = (e > 0 || -1) * Math.floor(Math.abs(e))), e
                    }

                    var E = function (e) {
                        if (null == e) throw new TypeError("can't convert " + e + " to object");
                        return Object(e)
                    }
                })), ace.define("ace/lib/fixoldbrowsers", ["require", "exports", "module", "ace/lib/regexp", "ace/lib/es5-shim"], (function (e, t, n) {
                    "use strict";
                    e("./regexp"), e("./es5-shim"), "undefined" == typeof Element || Element.prototype.remove || Object.defineProperty(Element.prototype, "remove", {
                        enumerable: !1,
                        writable: !0,
                        configurable: !0,
                        value: function () {
                            this.parentNode && this.parentNode.removeChild(this)
                        }
                    })
                })), ace.define("ace/lib/useragent", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    t.OS = {LINUX: "LINUX", MAC: "MAC", WINDOWS: "WINDOWS"}, t.getOS = function () {
                        return t.isMac ? t.OS.MAC : t.isLinux ? t.OS.LINUX : t.OS.WINDOWS
                    };
                    var i = "object" == typeof navigator ? navigator : {},
                        r = (/mac|win|linux/i.exec(i.platform) || ["other"])[0].toLowerCase(), o = i.userAgent || "",
                        a = i.appName || "";
                    t.isWin = "win" == r, t.isMac = "mac" == r, t.isLinux = "linux" == r, t.isIE = "Microsoft Internet Explorer" == a || a.indexOf("MSAppHost") >= 0 ? parseFloat((o.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) : parseFloat((o.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]), t.isOldIE = t.isIE && t.isIE < 9, t.isGecko = t.isMozilla = o.match(/ Gecko\/\d+/), t.isOpera = "object" == typeof opera && "[object Opera]" == Object.prototype.toString.call(window.opera), t.isWebKit = parseFloat(o.split("WebKit/")[1]) || void 0, t.isChrome = parseFloat(o.split(" Chrome/")[1]) || void 0, t.isEdge = parseFloat(o.split(" Edge/")[1]) || void 0, t.isAIR = o.indexOf("AdobeAIR") >= 0, t.isAndroid = o.indexOf("Android") >= 0, t.isChromeOS = o.indexOf(" CrOS ") >= 0, t.isIOS = /iPad|iPhone|iPod/.test(o) && !window.MSStream, t.isIOS && (t.isMac = !0), t.isMobile = t.isIOS || t.isAndroid
                })), ace.define("ace/lib/dom", ["require", "exports", "module", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i = e("./useragent");
                    if (t.buildDom = function e(t, n, i) {
                        if ("string" == typeof t && t) {
                            var r = document.createTextNode(t);
                            return n && n.appendChild(r), r
                        }
                        if (!Array.isArray(t)) return t && t.appendChild && n && n.appendChild(t), t;
                        if ("string" != typeof t[0] || !t[0]) {
                            for (var o = [], a = 0; a < t.length; a++) {
                                var s = e(t[a], n, i);
                                s && o.push(s)
                            }
                            return o
                        }
                        var l = document.createElement(t[0]), c = t[1], u = 1;
                        for (c && "object" == typeof c && !Array.isArray(c) && (u = 2), a = u; a < t.length; a++) e(t[a], l, i);
                        return 2 == u && Object.keys(c).forEach((function (e) {
                            var t = c[e];
                            "class" === e ? l.className = Array.isArray(t) ? t.join(" ") : t : "function" == typeof t || "value" == e || "$" == e[0] ? l[e] = t : "ref" === e ? i && (i[t] = l) : null != t && l.setAttribute(e, t)
                        })), n && n.appendChild(l), l
                    }, t.getDocumentHead = function (e) {
                        return e || (e = document), e.head || e.getElementsByTagName("head")[0] || e.documentElement
                    }, t.createElement = function (e, t) {
                        return document.createElementNS ? document.createElementNS(t || "http://www.w3.org/1999/xhtml", e) : document.createElement(e)
                    }, t.removeChildren = function (e) {
                        e.innerHTML = ""
                    }, t.createTextNode = function (e, t) {
                        return (t ? t.ownerDocument : document).createTextNode(e)
                    }, t.createFragment = function (e) {
                        return (e ? e.ownerDocument : document).createDocumentFragment()
                    }, t.hasCssClass = function (e, t) {
                        return -1 !== (e.className + "").split(/\s+/g).indexOf(t)
                    }, t.addCssClass = function (e, n) {
                        t.hasCssClass(e, n) || (e.className += " " + n)
                    }, t.removeCssClass = function (e, t) {
                        for (var n = e.className.split(/\s+/g); ;) {
                            var i = n.indexOf(t);
                            if (-1 == i) break;
                            n.splice(i, 1)
                        }
                        e.className = n.join(" ")
                    }, t.toggleCssClass = function (e, t) {
                        for (var n = e.className.split(/\s+/g), i = !0; ;) {
                            var r = n.indexOf(t);
                            if (-1 == r) break;
                            i = !1, n.splice(r, 1)
                        }
                        return i && n.push(t), e.className = n.join(" "), i
                    }, t.setCssClass = function (e, n, i) {
                        i ? t.addCssClass(e, n) : t.removeCssClass(e, n)
                    }, t.hasCssString = function (e, t) {
                        var n, i = 0;
                        if (n = (t = t || document).querySelectorAll("style")) for (; i < n.length;) if (n[i++].id === e) return !0
                    }, t.importCssString = function (e, n, i) {
                        var r = i;
                        i && i.getRootNode && (r = i.getRootNode()) && r != i || (r = document);
                        var o = r.ownerDocument || r;
                        if (n && t.hasCssString(n, r)) return null;
                        n && (e += "\n/*# sourceURL=ace/css/" + n + " */");
                        var a = t.createElement("style");
                        a.appendChild(o.createTextNode(e)), n && (a.id = n), r == o && (r = t.getDocumentHead(o)), r.insertBefore(a, r.firstChild)
                    }, t.importCssStylsheet = function (e, n) {
                        t.buildDom(["link", {rel: "stylesheet", href: e}], t.getDocumentHead(n))
                    }, t.scrollbarWidth = function (e) {
                        var n = t.createElement("ace_inner");
                        n.style.width = "100%", n.style.minWidth = "0px", n.style.height = "200px", n.style.display = "block";
                        var i = t.createElement("ace_outer"), r = i.style;
                        r.position = "absolute", r.left = "-10000px", r.overflow = "hidden", r.width = "200px", r.minWidth = "0px", r.height = "150px", r.display = "block", i.appendChild(n);
                        var o = e.documentElement;
                        o.appendChild(i);
                        var a = n.offsetWidth;
                        r.overflow = "scroll";
                        var s = n.offsetWidth;
                        return a == s && (s = i.clientWidth), o.removeChild(i), a - s
                    }, "undefined" == typeof document && (t.importCssString = function () {
                    }), t.computedStyle = function (e, t) {
                        return window.getComputedStyle(e, "") || {}
                    }, t.setStyle = function (e, t, n) {
                        e[t] !== n && (e[t] = n)
                    }, t.HAS_CSS_ANIMATION = !1, t.HAS_CSS_TRANSFORMS = !1, t.HI_DPI = !i.isWin || "undefined" != typeof window && window.devicePixelRatio >= 1.5, "undefined" != typeof document) {
                        var r = document.createElement("div");
                        t.HI_DPI && void 0 !== r.style.transform && (t.HAS_CSS_TRANSFORMS = !0), i.isEdge || void 0 === r.style.animationName || (t.HAS_CSS_ANIMATION = !0), r = null
                    }
                    t.HAS_CSS_TRANSFORMS ? t.translate = function (e, t, n) {
                        e.style.transform = "translate(" + Math.round(t) + "px, " + Math.round(n) + "px)"
                    } : t.translate = function (e, t, n) {
                        e.style.top = Math.round(n) + "px", e.style.left = Math.round(t) + "px"
                    }
                })), ace.define("ace/lib/oop", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    t.inherits = function (e, t) {
                        e.super_ = t, e.prototype = Object.create(t.prototype, {
                            constructor: {
                                value: e,
                                enumerable: !1,
                                writable: !0,
                                configurable: !0
                            }
                        })
                    }, t.mixin = function (e, t) {
                        for (var n in t) e[n] = t[n];
                        return e
                    }, t.implement = function (e, n) {
                        t.mixin(e, n)
                    }
                })), ace.define("ace/lib/keys", ["require", "exports", "module", "ace/lib/oop"], (function (e, t, n) {
                    "use strict";
                    var i = e("./oop"), r = function () {
                        var e, t, n = {
                            MODIFIER_KEYS: {
                                16: "Shift",
                                17: "Ctrl",
                                18: "Alt",
                                224: "Meta",
                                91: "MetaLeft",
                                92: "MetaRight",
                                93: "ContextMenu"
                            },
                            KEY_MODS: {
                                ctrl: 1,
                                alt: 2,
                                option: 2,
                                shift: 4,
                                super: 8,
                                meta: 8,
                                command: 8,
                                cmd: 8,
                                control: 1
                            },
                            FUNCTION_KEYS: {
                                8: "Backspace",
                                9: "Tab",
                                13: "Return",
                                19: "Pause",
                                27: "Esc",
                                32: "Space",
                                33: "PageUp",
                                34: "PageDown",
                                35: "End",
                                36: "Home",
                                37: "Left",
                                38: "Up",
                                39: "Right",
                                40: "Down",
                                44: "Print",
                                45: "Insert",
                                46: "Delete",
                                96: "Numpad0",
                                97: "Numpad1",
                                98: "Numpad2",
                                99: "Numpad3",
                                100: "Numpad4",
                                101: "Numpad5",
                                102: "Numpad6",
                                103: "Numpad7",
                                104: "Numpad8",
                                105: "Numpad9",
                                "-13": "NumpadEnter",
                                112: "F1",
                                113: "F2",
                                114: "F3",
                                115: "F4",
                                116: "F5",
                                117: "F6",
                                118: "F7",
                                119: "F8",
                                120: "F9",
                                121: "F10",
                                122: "F11",
                                123: "F12",
                                144: "Numlock",
                                145: "Scrolllock"
                            },
                            PRINTABLE_KEYS: {
                                32: " ",
                                48: "0",
                                49: "1",
                                50: "2",
                                51: "3",
                                52: "4",
                                53: "5",
                                54: "6",
                                55: "7",
                                56: "8",
                                57: "9",
                                59: ";",
                                61: "=",
                                65: "a",
                                66: "b",
                                67: "c",
                                68: "d",
                                69: "e",
                                70: "f",
                                71: "g",
                                72: "h",
                                73: "i",
                                74: "j",
                                75: "k",
                                76: "l",
                                77: "m",
                                78: "n",
                                79: "o",
                                80: "p",
                                81: "q",
                                82: "r",
                                83: "s",
                                84: "t",
                                85: "u",
                                86: "v",
                                87: "w",
                                88: "x",
                                89: "y",
                                90: "z",
                                107: "+",
                                109: "-",
                                110: ".",
                                186: ";",
                                187: "=",
                                188: ",",
                                189: "-",
                                190: ".",
                                191: "/",
                                192: "`",
                                219: "[",
                                220: "\\",
                                221: "]",
                                222: "'",
                                111: "/",
                                106: "*"
                            }
                        };
                        for (t in n.FUNCTION_KEYS) e = n.FUNCTION_KEYS[t].toLowerCase(), n[e] = parseInt(t, 10);
                        for (t in n.PRINTABLE_KEYS) e = n.PRINTABLE_KEYS[t].toLowerCase(), n[e] = parseInt(t, 10);
                        return i.mixin(n, n.MODIFIER_KEYS), i.mixin(n, n.PRINTABLE_KEYS), i.mixin(n, n.FUNCTION_KEYS), n.enter = n.return, n.escape = n.esc, n.del = n.delete, n[173] = "-", function () {
                            for (var e = ["cmd", "ctrl", "alt", "shift"], t = Math.pow(2, e.length); t--;) n.KEY_MODS[t] = e.filter((function (e) {
                                return t & n.KEY_MODS[e]
                            })).join("-") + "-"
                        }(), n.KEY_MODS[0] = "", n.KEY_MODS[-1] = "input-", n
                    }();
                    i.mixin(t, r), t.keyCodeToString = function (e) {
                        var t = r[e];
                        return "string" != typeof t && (t = String.fromCharCode(e)), t.toLowerCase()
                    }
                })), ace.define("ace/lib/event", ["require", "exports", "module", "ace/lib/keys", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i, r = e("./keys"), o = e("./useragent"), a = null, s = 0;

                    function l() {
                        return null == i && function () {
                            i = !1;
                            try {
                                document.createComment("").addEventListener("test", (function () {
                                }), {
                                    get passive() {
                                        i = {passive: !1}
                                    }
                                })
                            } catch (e) {
                            }
                        }(), i
                    }

                    function c(e, t, n) {
                        this.elem = e, this.type = t, this.callback = n
                    }

                    c.prototype.destroy = function () {
                        h(this.elem, this.type, this.callback), this.elem = this.type = this.callback = void 0
                    };
                    var u = t.addListener = function (e, t, n, i) {
                        e.addEventListener(t, n, l()), i && i.$toDestroy.push(new c(e, t, n))
                    }, h = t.removeListener = function (e, t, n) {
                        e.removeEventListener(t, n, l())
                    };
                    t.stopEvent = function (e) {
                        return t.stopPropagation(e), t.preventDefault(e), !1
                    }, t.stopPropagation = function (e) {
                        e.stopPropagation && e.stopPropagation()
                    }, t.preventDefault = function (e) {
                        e.preventDefault && e.preventDefault()
                    }, t.getButton = function (e) {
                        return "dblclick" == e.type ? 0 : "contextmenu" == e.type || o.isMac && e.ctrlKey && !e.altKey && !e.shiftKey ? 2 : e.button
                    }, t.capture = function (e, t, n) {
                        function i(e) {
                            t && t(e), n && n(e), h(document, "mousemove", t), h(document, "mouseup", i), h(document, "dragstart", i)
                        }

                        return u(document, "mousemove", t), u(document, "mouseup", i), u(document, "dragstart", i), i
                    }, t.addMouseWheelListener = function (e, t, n) {
                        "onmousewheel" in e ? u(e, "mousewheel", (function (e) {
                            void 0 !== e.wheelDeltaX ? (e.wheelX = -e.wheelDeltaX / 8, e.wheelY = -e.wheelDeltaY / 8) : (e.wheelX = 0, e.wheelY = -e.wheelDelta / 8), t(e)
                        }), n) : "onwheel" in e ? u(e, "wheel", (function (e) {
                            switch (e.deltaMode) {
                                case e.DOM_DELTA_PIXEL:
                                    e.wheelX = .35 * e.deltaX || 0, e.wheelY = .35 * e.deltaY || 0;
                                    break;
                                case e.DOM_DELTA_LINE:
                                case e.DOM_DELTA_PAGE:
                                    e.wheelX = 5 * (e.deltaX || 0), e.wheelY = 5 * (e.deltaY || 0)
                            }
                            t(e)
                        }), n) : u(e, "DOMMouseScroll", (function (e) {
                            e.axis && e.axis == e.HORIZONTAL_AXIS ? (e.wheelX = 5 * (e.detail || 0), e.wheelY = 0) : (e.wheelX = 0, e.wheelY = 5 * (e.detail || 0)), t(e)
                        }), n)
                    }, t.addMultiMouseDownListener = function (e, n, i, r, a) {
                        var s, l, c, h = 0, d = {2: "dblclick", 3: "tripleclick", 4: "quadclick"};

                        function f(e) {
                            if (0 !== t.getButton(e) ? h = 0 : e.detail > 1 ? ++h > 4 && (h = 1) : h = 1, o.isIE) {
                                var a = Math.abs(e.clientX - s) > 5 || Math.abs(e.clientY - l) > 5;
                                c && !a || (h = 1), c && clearTimeout(c), c = setTimeout((function () {
                                    c = null
                                }), n[h - 1] || 600), 1 == h && (s = e.clientX, l = e.clientY)
                            }
                            if (e._clicks = h, i[r]("mousedown", e), h > 4) h = 0; else if (h > 1) return i[r](d[h], e)
                        }

                        Array.isArray(e) || (e = [e]), e.forEach((function (e) {
                            u(e, "mousedown", f, a)
                        }))
                    };
                    var d = function (e) {
                        return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0)
                    };

                    function f(e, t, n) {
                        var i = d(t);
                        if (!o.isMac && a) {
                            if (t.getModifierState && (t.getModifierState("OS") || t.getModifierState("Win")) && (i |= 8), a.altGr) {
                                if (3 == (3 & i)) return;
                                a.altGr = 0
                            }
                            if (18 === n || 17 === n) {
                                var l = "location" in t ? t.location : t.keyLocation;
                                17 === n && 1 === l ? 1 == a[n] && (s = t.timeStamp) : 18 === n && 3 === i && 2 === l && t.timeStamp - s < 50 && (a.altGr = !0)
                            }
                        }
                        if (n in r.MODIFIER_KEYS && (n = -1), i || 13 !== n || 3 !== (l = "location" in t ? t.location : t.keyLocation) || (e(t, i, -n), !t.defaultPrevented)) {
                            if (o.isChromeOS && 8 & i) {
                                if (e(t, i, n), t.defaultPrevented) return;
                                i &= -9
                            }
                            return !!(i || n in r.FUNCTION_KEYS || n in r.PRINTABLE_KEYS) && e(t, i, n)
                        }
                    }

                    function g() {
                        a = Object.create(null)
                    }

                    if (t.getModifierString = function (e) {
                        return r.KEY_MODS[d(e)]
                    }, t.addCommandKeyListener = function (e, n, i) {
                        if (o.isOldGecko || o.isOpera && !("KeyboardEvent" in window)) {
                            var r = null;
                            u(e, "keydown", (function (e) {
                                r = e.keyCode
                            }), i), u(e, "keypress", (function (e) {
                                return f(n, e, r)
                            }), i)
                        } else {
                            var s = null;
                            u(e, "keydown", (function (e) {
                                a[e.keyCode] = (a[e.keyCode] || 0) + 1;
                                var t = f(n, e, e.keyCode);
                                return s = e.defaultPrevented, t
                            }), i), u(e, "keypress", (function (e) {
                                s && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && (t.stopEvent(e), s = null)
                            }), i), u(e, "keyup", (function (e) {
                                a[e.keyCode] = null
                            }), i), a || (g(), u(window, "focus", g))
                        }
                    }, "object" == typeof window && window.postMessage && !o.isOldIE) {
                        var p = 1;
                        t.nextTick = function (e, n) {
                            n = n || window;
                            var i = "zero-timeout-message-" + p++, r = function (o) {
                                o.data == i && (t.stopPropagation(o), h(n, "message", r), e())
                            };
                            u(n, "message", r), n.postMessage(i, "*")
                        }
                    }
                    t.$idleBlocked = !1, t.onIdle = function (e, n) {
                        return setTimeout((function n() {
                            t.$idleBlocked ? setTimeout(n, 100) : e()
                        }), n)
                    }, t.$idleBlockId = null, t.blockIdle = function (e) {
                        t.$idleBlockId && clearTimeout(t.$idleBlockId), t.$idleBlocked = !0, t.$idleBlockId = setTimeout((function () {
                            t.$idleBlocked = !1
                        }), e || 100)
                    }, t.nextFrame = "object" == typeof window && (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame), t.nextFrame ? t.nextFrame = t.nextFrame.bind(window) : t.nextFrame = function (e) {
                        setTimeout(e, 17)
                    }
                })), ace.define("ace/range", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    var i = function (e, t, n, i) {
                        this.start = {row: e, column: t}, this.end = {row: n, column: i}
                    };
                    (function () {
                        this.isEqual = function (e) {
                            return this.start.row === e.start.row && this.end.row === e.end.row && this.start.column === e.start.column && this.end.column === e.end.column
                        }, this.toString = function () {
                            return "Range: [" + this.start.row + "/" + this.start.column + "] -> [" + this.end.row + "/" + this.end.column + "]"
                        }, this.contains = function (e, t) {
                            return 0 == this.compare(e, t)
                        }, this.compareRange = function (e) {
                            var t, n = e.end, i = e.start;
                            return 1 == (t = this.compare(n.row, n.column)) ? 1 == (t = this.compare(i.row, i.column)) ? 2 : 0 == t ? 1 : 0 : -1 == t ? -2 : -1 == (t = this.compare(i.row, i.column)) ? -1 : 1 == t ? 42 : 0
                        }, this.comparePoint = function (e) {
                            return this.compare(e.row, e.column)
                        }, this.containsRange = function (e) {
                            return 0 == this.comparePoint(e.start) && 0 == this.comparePoint(e.end)
                        }, this.intersects = function (e) {
                            var t = this.compareRange(e);
                            return -1 == t || 0 == t || 1 == t
                        }, this.isEnd = function (e, t) {
                            return this.end.row == e && this.end.column == t
                        }, this.isStart = function (e, t) {
                            return this.start.row == e && this.start.column == t
                        }, this.setStart = function (e, t) {
                            "object" == typeof e ? (this.start.column = e.column, this.start.row = e.row) : (this.start.row = e, this.start.column = t)
                        }, this.setEnd = function (e, t) {
                            "object" == typeof e ? (this.end.column = e.column, this.end.row = e.row) : (this.end.row = e, this.end.column = t)
                        }, this.inside = function (e, t) {
                            return 0 == this.compare(e, t) && !this.isEnd(e, t) && !this.isStart(e, t)
                        }, this.insideStart = function (e, t) {
                            return 0 == this.compare(e, t) && !this.isEnd(e, t)
                        }, this.insideEnd = function (e, t) {
                            return 0 == this.compare(e, t) && !this.isStart(e, t)
                        }, this.compare = function (e, t) {
                            return this.isMultiLine() || e !== this.start.row ? e < this.start.row ? -1 : e > this.end.row ? 1 : this.start.row === e ? t >= this.start.column ? 0 : -1 : this.end.row === e ? t <= this.end.column ? 0 : 1 : 0 : t < this.start.column ? -1 : t > this.end.column ? 1 : 0
                        }, this.compareStart = function (e, t) {
                            return this.start.row == e && this.start.column == t ? -1 : this.compare(e, t)
                        }, this.compareEnd = function (e, t) {
                            return this.end.row == e && this.end.column == t ? 1 : this.compare(e, t)
                        }, this.compareInside = function (e, t) {
                            return this.end.row == e && this.end.column == t ? 1 : this.start.row == e && this.start.column == t ? -1 : this.compare(e, t)
                        }, this.clipRows = function (e, t) {
                            if (this.end.row > t) var n = {
                                row: t + 1,
                                column: 0
                            }; else this.end.row < e && (n = {row: e, column: 0});
                            if (this.start.row > t) var r = {
                                row: t + 1,
                                column: 0
                            }; else this.start.row < e && (r = {row: e, column: 0});
                            return i.fromPoints(r || this.start, n || this.end)
                        }, this.extend = function (e, t) {
                            var n = this.compare(e, t);
                            if (0 == n) return this;
                            if (-1 == n) var r = {row: e, column: t}; else var o = {row: e, column: t};
                            return i.fromPoints(r || this.start, o || this.end)
                        }, this.isEmpty = function () {
                            return this.start.row === this.end.row && this.start.column === this.end.column
                        }, this.isMultiLine = function () {
                            return this.start.row !== this.end.row
                        }, this.clone = function () {
                            return i.fromPoints(this.start, this.end)
                        }, this.collapseRows = function () {
                            return 0 == this.end.column ? new i(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0) : new i(this.start.row, 0, this.end.row, 0)
                        }, this.toScreenRange = function (e) {
                            var t = e.documentToScreenPosition(this.start), n = e.documentToScreenPosition(this.end);
                            return new i(t.row, t.column, n.row, n.column)
                        }, this.moveBy = function (e, t) {
                            this.start.row += e, this.start.column += t, this.end.row += e, this.end.column += t
                        }
                    }).call(i.prototype), i.fromPoints = function (e, t) {
                        return new i(e.row, e.column, t.row, t.column)
                    }, i.comparePoints = function (e, t) {
                        return e.row - t.row || e.column - t.column
                    }, i.comparePoints = function (e, t) {
                        return e.row - t.row || e.column - t.column
                    }, t.Range = i
                })), ace.define("ace/lib/lang", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    t.last = function (e) {
                        return e[e.length - 1]
                    }, t.stringReverse = function (e) {
                        return e.split("").reverse().join("")
                    }, t.stringRepeat = function (e, t) {
                        for (var n = ""; t > 0;) 1 & t && (n += e), (t >>= 1) && (e += e);
                        return n
                    };
                    var i = /^\s\s*/, r = /\s\s*$/;
                    t.stringTrimLeft = function (e) {
                        return e.replace(i, "")
                    }, t.stringTrimRight = function (e) {
                        return e.replace(r, "")
                    }, t.copyObject = function (e) {
                        var t = {};
                        for (var n in e) t[n] = e[n];
                        return t
                    }, t.copyArray = function (e) {
                        for (var t = [], n = 0, i = e.length; n < i; n++) e[n] && "object" == typeof e[n] ? t[n] = this.copyObject(e[n]) : t[n] = e[n];
                        return t
                    }, t.deepCopy = function e(t) {
                        if ("object" != typeof t || !t) return t;
                        var n;
                        if (Array.isArray(t)) {
                            n = [];
                            for (var i = 0; i < t.length; i++) n[i] = e(t[i]);
                            return n
                        }
                        if ("[object Object]" !== Object.prototype.toString.call(t)) return t;
                        for (var i in n = {}, t) n[i] = e(t[i]);
                        return n
                    }, t.arrayToMap = function (e) {
                        for (var t = {}, n = 0; n < e.length; n++) t[e[n]] = 1;
                        return t
                    }, t.createMap = function (e) {
                        var t = Object.create(null);
                        for (var n in e) t[n] = e[n];
                        return t
                    }, t.arrayRemove = function (e, t) {
                        for (var n = 0; n <= e.length; n++) t === e[n] && e.splice(n, 1)
                    }, t.escapeRegExp = function (e) {
                        return e.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1")
                    }, t.escapeHTML = function (e) {
                        return ("" + e).replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;")
                    }, t.getMatchOffsets = function (e, t) {
                        var n = [];
                        return e.replace(t, (function (e) {
                            n.push({offset: arguments[arguments.length - 2], length: e.length})
                        })), n
                    }, t.deferredCall = function (e) {
                        var t = null, n = function () {
                            t = null, e()
                        }, i = function (e) {
                            return i.cancel(), t = setTimeout(n, e || 0), i
                        };
                        return i.schedule = i, i.call = function () {
                            return this.cancel(), e(), i
                        }, i.cancel = function () {
                            return clearTimeout(t), t = null, i
                        }, i.isPending = function () {
                            return t
                        }, i
                    }, t.delayedCall = function (e, t) {
                        var n = null, i = function () {
                            n = null, e()
                        }, r = function (e) {
                            null == n && (n = setTimeout(i, e || t))
                        };
                        return r.delay = function (e) {
                            n && clearTimeout(n), n = setTimeout(i, e || t)
                        }, r.schedule = r, r.call = function () {
                            this.cancel(), e()
                        }, r.cancel = function () {
                            n && clearTimeout(n), n = null
                        }, r.isPending = function () {
                            return n
                        }, r
                    }
                })), ace.define("ace/clipboard", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    var i;
                    n.exports = {
                        lineMode: !1, pasteCancelled: function () {
                            return !!(i && i > Date.now() - 50) || (i = !1)
                        }, cancel: function () {
                            i = Date.now()
                        }
                    }
                })), ace.define("ace/keyboard/textinput", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent", "ace/lib/dom", "ace/lib/lang", "ace/clipboard", "ace/lib/keys"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/event"), r = e("../lib/useragent"), o = e("../lib/dom"), a = e("../lib/lang"),
                        s = e("../clipboard"), l = r.isChrome < 18, c = r.isIE, u = r.isChrome > 63,
                        h = e("../lib/keys"), d = h.KEY_MODS, f = r.isIOS, g = f ? /\s/ : /\n/, p = r.isMobile;
                    t.TextInput = function (e, t) {
                        var n = o.createElement("textarea");
                        n.className = "ace_text-input", n.setAttribute("wrap", "off"), n.setAttribute("autocorrect", "off"), n.setAttribute("autocapitalize", "off"), n.setAttribute("spellcheck", !1), n.style.opacity = "0", e.insertBefore(n, e.firstChild);
                        var m = !1, v = !1, y = !1, b = !1, C = "";
                        p || (n.style.fontSize = "1px");
                        var w = !1, I = !1, x = "", A = 0, _ = 0, S = 0;
                        try {
                            var k = document.activeElement === n
                        } catch (e) {
                        }
                        i.addListener(n, "blur", (function (e) {
                            I || (t.onBlur(e), k = !1)
                        }), t), i.addListener(n, "focus", (function (e) {
                            if (!I) {
                                if (k = !0, r.isEdge) try {
                                    if (!document.hasFocus()) return
                                } catch (e) {
                                }
                                t.onFocus(e), r.isEdge ? setTimeout(L) : L()
                            }
                        }), t), this.$focusScroll = !1, this.focus = function () {
                            if (C || u || "browser" == this.$focusScroll) return n.focus({preventScroll: !0});
                            var e = n.style.top;
                            n.style.position = "fixed", n.style.top = "0px";
                            try {
                                var t = 0 != n.getBoundingClientRect().top
                            } catch (e) {
                                return
                            }
                            var i = [];
                            if (t) for (var r = n.parentElement; r && 1 == r.nodeType;) i.push(r), r.setAttribute("ace_nocontext", !0), r = !r.parentElement && r.getRootNode ? r.getRootNode().host : r.parentElement;
                            n.focus({preventScroll: !0}), t && i.forEach((function (e) {
                                e.removeAttribute("ace_nocontext")
                            })), setTimeout((function () {
                                n.style.position = "", "0px" == n.style.top && (n.style.top = e)
                            }), 0)
                        }, this.blur = function () {
                            n.blur()
                        }, this.isFocused = function () {
                            return k
                        }, t.on("beforeEndOperation", (function () {
                            var e = t.curOp, i = e && e.command && e.command.name;
                            if ("insertstring" != i) {
                                var r = i && (e.docChanged || e.selectionChanged);
                                y && r && (x = n.value = "", F()), L()
                            }
                        }));
                        var L = f ? function (e) {
                            if (k && (!m || e) && !b) {
                                e || (e = "");
                                var i = "\n ab" + e + "cde fg\n";
                                i != n.value && (n.value = x = i);
                                var r = 4 + (e.length || (t.selection.isEmpty() ? 0 : 1));
                                4 == A && _ == r || n.setSelectionRange(4, r), A = 4, _ = r
                            }
                        } : function () {
                            if (!y && !b && (k || O)) {
                                y = !0;
                                var e = 0, i = 0, r = "";
                                if (t.session) {
                                    var o = t.selection, a = o.getRange(), s = o.cursor.row;
                                    if (e = a.start.column, i = a.end.column, r = t.session.getLine(s), a.start.row != s) {
                                        var l = t.session.getLine(s - 1);
                                        e = a.start.row < s - 1 ? 0 : e, i += l.length + 1, r = l + "\n" + r
                                    } else if (a.end.row != s) {
                                        var c = t.session.getLine(s + 1);
                                        i = a.end.row > s + 1 ? c.length : i, i += r.length + 1, r = r + "\n" + c
                                    } else p && s > 0 && (r = "\n" + r, i += 1, e += 1);
                                    r.length > 400 && (e < 400 && i < 400 ? r = r.slice(0, 400) : (r = "\n", e = 0, i = 1))
                                }
                                var u = r + "\n\n";
                                if (u != x && (n.value = x = u, A = _ = u.length), O && (A = n.selectionStart, _ = n.selectionEnd), _ != i || A != e || n.selectionEnd != _) try {
                                    n.setSelectionRange(e, i), A = e, _ = i
                                } catch (e) {
                                }
                                y = !1
                            }
                        };
                        this.resetSelection = L, k && t.onFocus();
                        var T = null;
                        this.setInputHandler = function (e) {
                            T = e
                        }, this.getInputHandler = function () {
                            return T
                        };
                        var O = !1, R = function (e, i) {
                            if (O && (O = !1), v) return L(), e && t.onPaste(e), v = !1, "";
                            for (var r = n.selectionStart, o = n.selectionEnd, a = A, s = x.length - _, l = e, c = e.length - r, u = e.length - o, h = 0; a > 0 && x[h] == e[h];) h++, a--;
                            for (l = l.slice(h), h = 1; s > 0 && x.length - h > A - 1 && x[x.length - h] == e[e.length - h];) h++, s--;
                            c -= h - 1, u -= h - 1;
                            var d = l.length - h + 1;
                            return d < 0 && (a = -d, d = 0), l = l.slice(0, d), i || l || c || a || s || u ? (b = !0, l && !a && !s && !c && !u || w ? t.onTextInput(l) : t.onTextInput(l, {
                                extendLeft: a,
                                extendRight: s,
                                restoreStart: c,
                                restoreEnd: u
                            }), b = !1, x = e, A = r, _ = o, S = u, l) : ""
                        }, E = function (e) {
                            if (y) return j();
                            if (e && e.inputType) {
                                if ("historyUndo" == e.inputType) return t.execCommand("undo");
                                if ("historyRedo" == e.inputType) return t.execCommand("redo")
                            }
                            var i = n.value, r = R(i, !0);
                            (i.length > 500 || g.test(r) || p && A < 1 && A == _) && L()
                        }, P = function (e, t, n) {
                            var i = e.clipboardData || window.clipboardData;
                            if (i && !l) {
                                var r = c || n ? "Text" : "text/plain";
                                try {
                                    return t ? !1 !== i.setData(r, t) : i.getData(r)
                                } catch (e) {
                                    if (!n) return P(e, t, !0)
                                }
                            }
                        }, M = function (e, r) {
                            var o = t.getCopyText();
                            if (!o) return i.preventDefault(e);
                            P(e, o) ? (f && (L(o), m = o, setTimeout((function () {
                                m = !1
                            }), 10)), r ? t.onCut() : t.onCopy(), i.preventDefault(e)) : (m = !0, n.value = o, n.select(), setTimeout((function () {
                                m = !1, L(), r ? t.onCut() : t.onCopy()
                            })))
                        }, N = function (e) {
                            M(e, !0)
                        }, D = function (e) {
                            M(e, !1)
                        }, B = function (e) {
                            var o = P(e);
                            s.pasteCancelled() || ("string" == typeof o ? (o && t.onPaste(o, e), r.isIE && setTimeout(L), i.preventDefault(e)) : (n.value = "", v = !0))
                        };
                        i.addCommandKeyListener(n, t.onCommandKey.bind(t), t), i.addListener(n, "select", (function (e) {
                            y || (m ? m = !1 : function (e) {
                                return 0 === e.selectionStart && e.selectionEnd >= x.length && e.value === x && x && e.selectionEnd !== _
                            }(n) ? (t.selectAll(), L()) : p && n.selectionStart != A && L())
                        }), t), i.addListener(n, "input", E, t), i.addListener(n, "cut", N, t), i.addListener(n, "copy", D, t), i.addListener(n, "paste", B, t), "oncut" in n && "oncopy" in n && "onpaste" in n || i.addListener(e, "keydown", (function (e) {
                            if ((!r.isMac || e.metaKey) && e.ctrlKey) switch (e.keyCode) {
                                case 67:
                                    D(e);
                                    break;
                                case 86:
                                    B(e);
                                    break;
                                case 88:
                                    N(e)
                            }
                        }), t);
                        var j = function () {
                            if (y && t.onCompositionUpdate && !t.$readOnly) {
                                if (w) return H();
                                if (y.useTextareaForIME) t.onCompositionUpdate(n.value); else {
                                    var e = n.value;
                                    R(e), y.markerRange && (y.context && (y.markerRange.start.column = y.selectionStart = y.context.compositionStartOffset), y.markerRange.end.column = y.markerRange.start.column + _ - y.selectionStart + S)
                                }
                            }
                        }, F = function (e) {
                            t.onCompositionEnd && !t.$readOnly && (y = !1, t.onCompositionEnd(), t.off("mousedown", H), e && E())
                        };

                        function H() {
                            I = !0, n.blur(), n.focus(), I = !1
                        }

                        var W, V = a.delayedCall(j, 50).schedule.bind(null, null);

                        function G() {
                            clearTimeout(W), W = setTimeout((function () {
                                C && (n.style.cssText = C, C = ""), t.renderer.$isMousePressed = !1, t.renderer.$keepTextAreaAtCursor && t.renderer.$moveTextAreaToCursor()
                            }), 0)
                        }

                        i.addListener(n, "compositionstart", (function (e) {
                            if (!y && t.onCompositionStart && !t.$readOnly && (y = {}, !w)) {
                                e.data && (y.useTextareaForIME = !1), setTimeout(j, 0), t._signal("compositionStart"), t.on("mousedown", H);
                                var i = t.getSelectionRange();
                                i.end.row = i.start.row, i.end.column = i.start.column, y.markerRange = i, y.selectionStart = A, t.onCompositionStart(y), y.useTextareaForIME ? (x = n.value = "", A = 0, _ = 0) : (n.msGetInputContext && (y.context = n.msGetInputContext()), n.getInputContext && (y.context = n.getInputContext()))
                            }
                        }), t), i.addListener(n, "compositionupdate", j, t), i.addListener(n, "keyup", (function (e) {
                            27 == e.keyCode && n.value.length < n.selectionStart && (y || (x = n.value), A = _ = -1, L()), V()
                        }), t), i.addListener(n, "keydown", V, t), i.addListener(n, "compositionend", F, t), this.getElement = function () {
                            return n
                        }, this.setCommandMode = function (e) {
                            w = e, n.readOnly = !1
                        }, this.setReadOnly = function (e) {
                            w || (n.readOnly = e)
                        }, this.setCopyWithEmptySelection = function (e) {
                        }, this.onContextMenu = function (e) {
                            O = !0, L(), t._emit("nativecontextmenu", {target: t, domEvent: e}), this.moveToMouse(e, !0)
                        }, this.moveToMouse = function (e, a) {
                            C || (C = n.style.cssText), n.style.cssText = (a ? "z-index:100000;" : "") + (r.isIE ? "opacity:0.1;" : "") + "text-indent: -" + (A + _) * t.renderer.characterWidth * .5 + "px;";
                            var s = t.container.getBoundingClientRect(), l = o.computedStyle(t.container),
                                c = s.top + (parseInt(l.borderTopWidth) || 0),
                                u = s.left + (parseInt(s.borderLeftWidth) || 0), h = s.bottom - c - n.clientHeight - 2,
                                d = function (e) {
                                    o.translate(n, e.clientX - u - 2, Math.min(e.clientY - c - 2, h))
                                };
                            d(e), "mousedown" == e.type && (t.renderer.$isMousePressed = !0, clearTimeout(W), r.isWin && i.capture(t.container, d, G))
                        }, this.onContextMenuClose = G;
                        var z = function (e) {
                            t.textInput.onContextMenu(e), G()
                        };
                        i.addListener(n, "mouseup", z, t), i.addListener(n, "mousedown", (function (e) {
                            e.preventDefault(), G()
                        }), t), i.addListener(t.renderer.scroller, "contextmenu", z, t), i.addListener(n, "contextmenu", z, t), f && function (e, t, n) {
                            var i = null, r = !1;
                            n.addEventListener("keydown", (function (e) {
                                i && clearTimeout(i), r = !0
                            }), !0), n.addEventListener("keyup", (function (e) {
                                i = setTimeout((function () {
                                    r = !1
                                }), 100)
                            }), !0);
                            var o = function (e) {
                                if (document.activeElement === n && !(r || y || t.$mouseHandler.isMousePressed || m)) {
                                    var i = n.selectionStart, o = n.selectionEnd, a = null, s = 0;
                                    if (0 == i ? a = h.up : 1 == i ? a = h.home : o > _ && "\n" == x[o] ? a = h.end : i < A && " " == x[i - 1] ? (a = h.left, s = d.option) : i < A || i == A && _ != A && i == o ? a = h.left : o > _ && x.slice(0, o).split("\n").length > 2 ? a = h.down : o > _ && " " == x[o - 1] ? (a = h.right, s = d.option) : (o > _ || o == _ && _ != A && i == o) && (a = h.right), i !== o && (s |= d.shift), a) {
                                        if (!t.onCommandKey({}, s, a) && t.commands) {
                                            a = h.keyCodeToString(a);
                                            var l = t.commands.findKeyCommand(s, a);
                                            l && t.execCommand(l)
                                        }
                                        A = i, _ = o, L("")
                                    }
                                }
                            };
                            document.addEventListener("selectionchange", o), t.on("destroy", (function () {
                                document.removeEventListener("selectionchange", o)
                            }))
                        }(0, t, n)
                    }, t.$setUserAgentForTests = function (e, t) {
                        p = e, f = t
                    }
                })), ace.define("ace/mouse/default_handlers", ["require", "exports", "module", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/useragent");

                    function r(e) {
                        e.$clickSelection = null;
                        var t = e.editor;
                        t.setDefaultHandler("mousedown", this.onMouseDown.bind(e)), t.setDefaultHandler("dblclick", this.onDoubleClick.bind(e)), t.setDefaultHandler("tripleclick", this.onTripleClick.bind(e)), t.setDefaultHandler("quadclick", this.onQuadClick.bind(e)), t.setDefaultHandler("mousewheel", this.onMouseWheel.bind(e)), ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"].forEach((function (t) {
                            e[t] = this[t]
                        }), this), e.selectByLines = this.extendSelectionBy.bind(e, "getLineRange"), e.selectByWords = this.extendSelectionBy.bind(e, "getWordRange")
                    }

                    function o(e, t) {
                        if (e.start.row == e.end.row) var n = 2 * t.column - e.start.column - e.end.column; else if (e.start.row != e.end.row - 1 || e.start.column || e.end.column) n = 2 * t.row - e.start.row - e.end.row; else var n = t.column - 4;
                        return n < 0 ? {cursor: e.start, anchor: e.end} : {cursor: e.end, anchor: e.start}
                    }

                    (function () {
                        this.onMouseDown = function (e) {
                            var t = e.inSelection(), n = e.getDocumentPosition();
                            this.mousedownEvent = e;
                            var r = this.editor, o = e.getButton();
                            return 0 !== o ? ((r.getSelectionRange().isEmpty() || 1 == o) && r.selection.moveToPosition(n), void (2 == o && (r.textInput.onContextMenu(e.domEvent), i.isMozilla || e.preventDefault()))) : (this.mousedownEvent.time = Date.now(), !t || r.isFocused() || (r.focus(), !this.$focusTimeout || this.$clickSelection || r.inMultiSelectMode) ? (this.captureMouse(e), this.startSelect(n, e.domEvent._clicks > 1), e.preventDefault()) : (this.setState("focusWait"), void this.captureMouse(e)))
                        }, this.startSelect = function (e, t) {
                            e = e || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
                            var n = this.editor;
                            this.mousedownEvent && (this.mousedownEvent.getShiftKey() ? n.selection.selectToPosition(e) : t || n.selection.moveToPosition(e), t || this.select(), n.renderer.scroller.setCapture && n.renderer.scroller.setCapture(), n.setStyle("ace_selecting"), this.setState("select"))
                        }, this.select = function () {
                            var e, t = this.editor, n = t.renderer.screenToTextCoordinates(this.x, this.y);
                            if (this.$clickSelection) {
                                var i = this.$clickSelection.comparePoint(n);
                                if (-1 == i) e = this.$clickSelection.end; else if (1 == i) e = this.$clickSelection.start; else {
                                    var r = o(this.$clickSelection, n);
                                    n = r.cursor, e = r.anchor
                                }
                                t.selection.setSelectionAnchor(e.row, e.column)
                            }
                            t.selection.selectToPosition(n), t.renderer.scrollCursorIntoView()
                        }, this.extendSelectionBy = function (e) {
                            var t, n = this.editor, i = n.renderer.screenToTextCoordinates(this.x, this.y),
                                r = n.selection[e](i.row, i.column);
                            if (this.$clickSelection) {
                                var a = this.$clickSelection.comparePoint(r.start),
                                    s = this.$clickSelection.comparePoint(r.end);
                                if (-1 == a && s <= 0) t = this.$clickSelection.end, r.end.row == i.row && r.end.column == i.column || (i = r.start); else if (1 == s && a >= 0) t = this.$clickSelection.start, r.start.row == i.row && r.start.column == i.column || (i = r.end); else if (-1 == a && 1 == s) i = r.end, t = r.start; else {
                                    var l = o(this.$clickSelection, i);
                                    i = l.cursor, t = l.anchor
                                }
                                n.selection.setSelectionAnchor(t.row, t.column)
                            }
                            n.selection.selectToPosition(i), n.renderer.scrollCursorIntoView()
                        }, this.selectEnd = this.selectAllEnd = this.selectByWordsEnd = this.selectByLinesEnd = function () {
                            this.$clickSelection = null, this.editor.unsetStyle("ace_selecting"), this.editor.renderer.scroller.releaseCapture && this.editor.renderer.scroller.releaseCapture()
                        }, this.focusWait = function () {
                            var e, t, n, i,
                                r = (e = this.mousedownEvent.x, t = this.mousedownEvent.y, n = this.x, i = this.y, Math.sqrt(Math.pow(n - e, 2) + Math.pow(i - t, 2))),
                                o = Date.now();
                            (r > 0 || o - this.mousedownEvent.time > this.$focusTimeout) && this.startSelect(this.mousedownEvent.getDocumentPosition())
                        }, this.onDoubleClick = function (e) {
                            var t = e.getDocumentPosition(), n = this.editor, i = n.session.getBracketRange(t);
                            i ? (i.isEmpty() && (i.start.column--, i.end.column++), this.setState("select")) : (i = n.selection.getWordRange(t.row, t.column), this.setState("selectByWords")), this.$clickSelection = i, this.select()
                        }, this.onTripleClick = function (e) {
                            var t = e.getDocumentPosition(), n = this.editor;
                            this.setState("selectByLines");
                            var i = n.getSelectionRange();
                            i.isMultiLine() && i.contains(t.row, t.column) ? (this.$clickSelection = n.selection.getLineRange(i.start.row), this.$clickSelection.end = n.selection.getLineRange(i.end.row).end) : this.$clickSelection = n.selection.getLineRange(t.row), this.select()
                        }, this.onQuadClick = function (e) {
                            var t = this.editor;
                            t.selectAll(), this.$clickSelection = t.getSelectionRange(), this.setState("selectAll")
                        }, this.onMouseWheel = function (e) {
                            if (!e.getAccelKey()) {
                                e.getShiftKey() && e.wheelY && !e.wheelX && (e.wheelX = e.wheelY, e.wheelY = 0);
                                var t = this.editor;
                                this.$lastScroll || (this.$lastScroll = {t: 0, vx: 0, vy: 0, allowed: 0});
                                var n = this.$lastScroll, i = e.domEvent.timeStamp, r = i - n.t,
                                    o = r ? e.wheelX / r : n.vx, a = r ? e.wheelY / r : n.vy;
                                r < 550 && (o = (o + n.vx) / 2, a = (a + n.vy) / 2);
                                var s = Math.abs(o / a), l = !1;
                                return s >= 1 && t.renderer.isScrollableBy(e.wheelX * e.speed, 0) && (l = !0), s <= 1 && t.renderer.isScrollableBy(0, e.wheelY * e.speed) && (l = !0), l ? n.allowed = i : i - n.allowed < 550 && (Math.abs(o) <= 1.5 * Math.abs(n.vx) && Math.abs(a) <= 1.5 * Math.abs(n.vy) ? (l = !0, n.allowed = i) : n.allowed = 0), n.t = i, n.vx = o, n.vy = a, l ? (t.renderer.scrollBy(e.wheelX * e.speed, e.wheelY * e.speed), e.stop()) : void 0
                            }
                        }
                    }).call(r.prototype), t.DefaultHandlers = r
                })), ace.define("ace/tooltip", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    e("./lib/oop");
                    var i = e("./lib/dom");

                    function r(e) {
                        this.isOpen = !1, this.$element = null, this.$parentNode = e
                    }

                    (function () {
                        this.$init = function () {
                            return this.$element = i.createElement("div"), this.$element.className = "ace_tooltip", this.$element.style.display = "none", this.$parentNode.appendChild(this.$element), this.$element
                        }, this.getElement = function () {
                            return this.$element || this.$init()
                        }, this.setText = function (e) {
                            this.getElement().textContent = e
                        }, this.setHtml = function (e) {
                            this.getElement().innerHTML = e
                        }, this.setPosition = function (e, t) {
                            this.getElement().style.left = e + "px", this.getElement().style.top = t + "px"
                        }, this.setClassName = function (e) {
                            i.addCssClass(this.getElement(), e)
                        }, this.show = function (e, t, n) {
                            null != e && this.setText(e), null != t && null != n && this.setPosition(t, n), this.isOpen || (this.getElement().style.display = "block", this.isOpen = !0)
                        }, this.hide = function () {
                            this.isOpen && (this.getElement().style.display = "none", this.isOpen = !1)
                        }, this.getHeight = function () {
                            return this.getElement().offsetHeight
                        }, this.getWidth = function () {
                            return this.getElement().offsetWidth
                        }, this.destroy = function () {
                            this.isOpen = !1, this.$element && this.$element.parentNode && this.$element.parentNode.removeChild(this.$element)
                        }
                    }).call(r.prototype), t.Tooltip = r
                })), ace.define("ace/mouse/default_gutter_handler", ["require", "exports", "module", "ace/lib/dom", "ace/lib/oop", "ace/lib/event", "ace/tooltip"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom"), r = e("../lib/oop"), o = e("../lib/event"), a = e("../tooltip").Tooltip;

                    function s(e) {
                        a.call(this, e)
                    }

                    r.inherits(s, a), function () {
                        this.setPosition = function (e, t) {
                            var n = window.innerWidth || document.documentElement.clientWidth,
                                i = window.innerHeight || document.documentElement.clientHeight, r = this.getWidth(),
                                o = this.getHeight();
                            (e += 15) + r > n && (e -= e + r - n), (t += 15) + o > i && (t -= 20 + o), a.prototype.setPosition.call(this, e, t)
                        }
                    }.call(s.prototype), t.GutterHandler = function (e) {
                        var t, n, r, a = e.editor, l = a.renderer.$gutterLayer, c = new s(a.container);

                        function u() {
                            t && (t = clearTimeout(t)), r && (c.hide(), r = null, a._signal("hideGutterTooltip", c), a.off("mousewheel", u))
                        }

                        function h(e) {
                            c.setPosition(e.x, e.y)
                        }

                        e.editor.setDefaultHandler("guttermousedown", (function (t) {
                            if (a.isFocused() && 0 == t.getButton() && "foldWidgets" != l.getRegion(t)) {
                                var n = t.getDocumentPosition().row, i = a.session.selection;
                                if (t.getShiftKey()) i.selectTo(n, 0); else {
                                    if (2 == t.domEvent.detail) return a.selectAll(), t.preventDefault();
                                    e.$clickSelection = a.selection.getLineRange(n)
                                }
                                return e.setState("selectByLines"), e.captureMouse(t), t.preventDefault()
                            }
                        })), e.editor.setDefaultHandler("guttermousemove", (function (o) {
                            var s = o.domEvent.target || o.domEvent.srcElement;
                            if (i.hasCssClass(s, "ace_fold-widget")) return u();
                            r && e.$tooltipFollowsMouse && h(o), n = o, t || (t = setTimeout((function () {
                                t = null, n && !e.isMousePressed ? function () {
                                    var t = n.getDocumentPosition().row, i = l.$annotations[t];
                                    if (!i) return u();
                                    if (t == a.session.getLength()) {
                                        var o = a.renderer.pixelToScreenCoordinates(0, n.y).row, s = n.$pos;
                                        if (o > a.session.documentToScreenRow(s.row, s.column)) return u()
                                    }
                                    if (r != i) if (r = i.text.join("<br/>"), c.setHtml(r), c.show(), a._signal("showGutterTooltip", c), a.on("mousewheel", u), e.$tooltipFollowsMouse) h(n); else {
                                        var d = n.domEvent.target.getBoundingClientRect(), f = c.getElement().style;
                                        f.left = d.right + "px", f.top = d.bottom + "px"
                                    }
                                }() : u()
                            }), 50))
                        })), o.addListener(a.renderer.$gutter, "mouseout", (function (e) {
                            n = null, r && !t && (t = setTimeout((function () {
                                t = null, u()
                            }), 50))
                        }), a), a.on("changeSession", u)
                    }
                })), ace.define("ace/mouse/mouse_event", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/event"), r = e("../lib/useragent"), o = t.MouseEvent = function (e, t) {
                        this.domEvent = e, this.editor = t, this.x = this.clientX = e.clientX, this.y = this.clientY = e.clientY, this.$pos = null, this.$inSelection = null, this.propagationStopped = !1, this.defaultPrevented = !1
                    };
                    (function () {
                        this.stopPropagation = function () {
                            i.stopPropagation(this.domEvent), this.propagationStopped = !0
                        }, this.preventDefault = function () {
                            i.preventDefault(this.domEvent), this.defaultPrevented = !0
                        }, this.stop = function () {
                            this.stopPropagation(), this.preventDefault()
                        }, this.getDocumentPosition = function () {
                            return this.$pos || (this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY)), this.$pos
                        }, this.inSelection = function () {
                            if (null !== this.$inSelection) return this.$inSelection;
                            var e = this.editor.getSelectionRange();
                            if (e.isEmpty()) this.$inSelection = !1; else {
                                var t = this.getDocumentPosition();
                                this.$inSelection = e.contains(t.row, t.column)
                            }
                            return this.$inSelection
                        }, this.getButton = function () {
                            return i.getButton(this.domEvent)
                        }, this.getShiftKey = function () {
                            return this.domEvent.shiftKey
                        }, this.getAccelKey = r.isMac ? function () {
                            return this.domEvent.metaKey
                        } : function () {
                            return this.domEvent.ctrlKey
                        }
                    }).call(o.prototype)
                })), ace.define("ace/mouse/dragdrop_handler", ["require", "exports", "module", "ace/lib/dom", "ace/lib/event", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom"), r = e("../lib/event"), o = e("../lib/useragent");

                    function a(e) {
                        var t = e.editor, n = i.createElement("img");
                        n.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", o.isOpera && (n.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"), ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"].forEach((function (t) {
                            e[t] = this[t]
                        }), this), t.on("mousedown", this.onMouseDown.bind(e));
                        var a, l, c, u, h, d, f, g, p, m, v, y = t.container, b = 0;

                        function C() {
                            var e = d;
                            (function (e, n) {
                                var i = Date.now(), r = !n || e.row != n.row, o = !n || e.column != n.column;
                                !m || r || o ? (t.moveCursorToPosition(e), m = i, v = {
                                    x: l,
                                    y: c
                                }) : s(v.x, v.y, l, c) > 5 ? m = null : i - m >= 200 && (t.renderer.scrollCursorIntoView(), m = null)
                            })(d = t.renderer.screenToTextCoordinates(l, c), e), function (e, n) {
                                var i = Date.now(), r = t.renderer.layerConfig.lineHeight,
                                    o = t.renderer.layerConfig.characterWidth,
                                    a = t.renderer.scroller.getBoundingClientRect(), s = {
                                        x: {left: l - a.left, right: a.right - l},
                                        y: {top: c - a.top, bottom: a.bottom - c}
                                    }, u = Math.min(s.x.left, s.x.right), h = Math.min(s.y.top, s.y.bottom),
                                    d = {row: e.row, column: e.column};
                                u / o <= 2 && (d.column += s.x.left < s.x.right ? -3 : 2), h / r <= 1 && (d.row += s.y.top < s.y.bottom ? -1 : 1);
                                var f = e.row != d.row, g = e.column != d.column, m = !n || e.row != n.row;
                                f || g && !m ? p ? i - p >= 200 && t.renderer.scrollCursorIntoView(d) : p = i : p = null
                            }(d, e)
                        }

                        function w() {
                            h = t.selection.toOrientedRange(), a = t.session.addMarker(h, "ace_selection", t.getSelectionStyle()), t.clearSelection(), t.isFocused() && t.renderer.$cursorLayer.setBlinking(!1), clearInterval(u), C(), u = setInterval(C, 20), b = 0, r.addListener(document, "mousemove", A)
                        }

                        function I() {
                            clearInterval(u), t.session.removeMarker(a), a = null, t.selection.fromOrientedRange(h), t.isFocused() && !g && t.$resetCursorStyle(), h = null, d = null, b = 0, p = null, m = null, r.removeListener(document, "mousemove", A)
                        }

                        this.onDragStart = function (e) {
                            if (this.cancelDrag || !y.draggable) {
                                var i = this;
                                return setTimeout((function () {
                                    i.startSelect(), i.captureMouse(e)
                                }), 0), e.preventDefault()
                            }
                            h = t.getSelectionRange();
                            var r = e.dataTransfer;
                            r.effectAllowed = t.getReadOnly() ? "copy" : "copyMove", o.isOpera && (t.container.appendChild(n), n.scrollTop = 0), r.setDragImage && r.setDragImage(n, 0, 0), o.isOpera && t.container.removeChild(n), r.clearData(), r.setData("Text", t.session.getTextRange()), g = !0, this.setState("drag")
                        }, this.onDragEnd = function (e) {
                            if (y.draggable = !1, g = !1, this.setState(null), !t.getReadOnly()) {
                                var n = e.dataTransfer.dropEffect;
                                f || "move" != n || t.session.remove(t.getSelectionRange()), t.$resetCursorStyle()
                            }
                            this.editor.unsetStyle("ace_dragging"), this.editor.renderer.setCursorStyle("")
                        }, this.onDragEnter = function (e) {
                            if (!t.getReadOnly() && _(e.dataTransfer)) return l = e.clientX, c = e.clientY, a || w(), b++, e.dataTransfer.dropEffect = f = S(e), r.preventDefault(e)
                        }, this.onDragOver = function (e) {
                            if (!t.getReadOnly() && _(e.dataTransfer)) return l = e.clientX, c = e.clientY, a || (w(), b++), null !== x && (x = null), e.dataTransfer.dropEffect = f = S(e), r.preventDefault(e)
                        }, this.onDragLeave = function (e) {
                            if (--b <= 0 && a) return I(), f = null, r.preventDefault(e)
                        }, this.onDrop = function (e) {
                            if (d) {
                                var n = e.dataTransfer;
                                if (g) switch (f) {
                                    case"move":
                                        h = h.contains(d.row, d.column) ? {start: d, end: d} : t.moveText(h, d);
                                        break;
                                    case"copy":
                                        h = t.moveText(h, d, !0)
                                } else {
                                    var i = n.getData("Text");
                                    h = {start: d, end: t.session.insert(d, i)}, t.focus(), f = null
                                }
                                return I(), r.preventDefault(e)
                            }
                        }, r.addListener(y, "dragstart", this.onDragStart.bind(e), t), r.addListener(y, "dragend", this.onDragEnd.bind(e), t), r.addListener(y, "dragenter", this.onDragEnter.bind(e), t), r.addListener(y, "dragover", this.onDragOver.bind(e), t), r.addListener(y, "dragleave", this.onDragLeave.bind(e), t), r.addListener(y, "drop", this.onDrop.bind(e), t);
                        var x = null;

                        function A() {
                            null == x && (x = setTimeout((function () {
                                null != x && a && I()
                            }), 20))
                        }

                        function _(e) {
                            var t = e.types;
                            return !t || Array.prototype.some.call(t, (function (e) {
                                return "text/plain" == e || "Text" == e
                            }))
                        }

                        function S(e) {
                            var t = ["copy", "copymove", "all", "uninitialized"], n = o.isMac ? e.altKey : e.ctrlKey,
                                i = "uninitialized";
                            try {
                                i = e.dataTransfer.effectAllowed.toLowerCase()
                            } catch (e) {
                            }
                            var r = "none";
                            return n && t.indexOf(i) >= 0 ? r = "copy" : ["move", "copymove", "linkmove", "all", "uninitialized"].indexOf(i) >= 0 ? r = "move" : t.indexOf(i) >= 0 && (r = "copy"), r
                        }
                    }

                    function s(e, t, n, i) {
                        return Math.sqrt(Math.pow(n - e, 2) + Math.pow(i - t, 2))
                    }

                    (function () {
                        this.dragWait = function () {
                            Date.now() - this.mousedownEvent.time > this.editor.getDragDelay() && this.startDrag()
                        }, this.dragWaitEnd = function () {
                            this.editor.container.draggable = !1, this.startSelect(this.mousedownEvent.getDocumentPosition()), this.selectEnd()
                        }, this.dragReadyEnd = function (e) {
                            this.editor.$resetCursorStyle(), this.editor.unsetStyle("ace_dragging"), this.editor.renderer.setCursorStyle(""), this.dragWaitEnd()
                        }, this.startDrag = function () {
                            this.cancelDrag = !1;
                            var e = this.editor;
                            e.container.draggable = !0, e.renderer.$cursorLayer.setBlinking(!1), e.setStyle("ace_dragging");
                            var t = o.isWin ? "default" : "move";
                            e.renderer.setCursorStyle(t), this.setState("dragReady")
                        }, this.onMouseDrag = function (e) {
                            var t = this.editor.container;
                            o.isIE && "dragReady" == this.state && s(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y) > 3 && t.dragDrop(), "dragWait" === this.state && s(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y) > 0 && (t.draggable = !1, this.startSelect(this.mousedownEvent.getDocumentPosition()))
                        }, this.onMouseDown = function (e) {
                            if (this.$dragEnabled) {
                                this.mousedownEvent = e;
                                var t = this.editor, n = e.inSelection(), i = e.getButton();
                                if (1 === (e.domEvent.detail || 1) && 0 === i && n) {
                                    if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey())) return;
                                    this.mousedownEvent.time = Date.now();
                                    var r = e.domEvent.target || e.domEvent.srcElement;
                                    "unselectable" in r && (r.unselectable = "on"), t.getDragDelay() ? (o.isWebKit && (this.cancelDrag = !0, t.container.draggable = !0), this.setState("dragWait")) : this.startDrag(), this.captureMouse(e, this.onMouseDrag.bind(this)), e.defaultPrevented = !0
                                }
                            }
                        }
                    }).call(a.prototype), t.DragdropHandler = a
                })), ace.define("ace/mouse/touch_handler", ["require", "exports", "module", "ace/mouse/mouse_event", "ace/lib/event", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("./mouse_event").MouseEvent, r = e("../lib/event"), o = e("../lib/dom");
                    t.addTouchListeners = function (e, t) {
                        var n, a, s, l, c, u, h, d, f, g = "scroll", p = 0, m = 0, v = 0, y = 0;

                        function b() {
                            var e = window.navigator && window.navigator.clipboard, n = !1, i = function (i) {
                                var r, a, s = i.target.getAttribute("action");
                                if ("more" == s || !n) return n = !n, r = t.getCopyText(), a = t.session.getUndoManager().hasUndo(), void f.replaceChild(o.buildDom(n ? ["span", !r && ["span", {
                                    class: "ace_mobile-button",
                                    action: "selectall"
                                }, "Select All"], r && ["span", {
                                    class: "ace_mobile-button",
                                    action: "copy"
                                }, "Copy"], r && ["span", {
                                    class: "ace_mobile-button",
                                    action: "cut"
                                }, "Cut"], e && ["span", {
                                    class: "ace_mobile-button",
                                    action: "paste"
                                }, "Paste"], a && ["span", {
                                    class: "ace_mobile-button",
                                    action: "undo"
                                }, "Undo"], ["span", {
                                    class: "ace_mobile-button",
                                    action: "find"
                                }, "Find"], ["span", {
                                    class: "ace_mobile-button",
                                    action: "openCommandPallete"
                                }, "Pallete"]] : ["span"]), f.firstChild);
                                "paste" == s ? e.readText().then((function (e) {
                                    t.execCommand(s, e)
                                })) : s && ("cut" != s && "copy" != s || (e ? e.writeText(t.getCopyText()) : document.execCommand("copy")), t.execCommand(s)), f.firstChild.style.display = "none", n = !1, "openCommandPallete" != s && t.focus()
                            };
                            f = o.buildDom(["div", {
                                class: "ace_mobile-menu", ontouchstart: function (e) {
                                    g = "menu", e.stopPropagation(), e.preventDefault(), t.textInput.focus()
                                }, ontouchend: function (e) {
                                    e.stopPropagation(), e.preventDefault(), i(e)
                                }, onclick: i
                            }, ["span"], ["span", {class: "ace_mobile-button", action: "more"}, "..."]], t.container)
                        }

                        function C() {
                            f || b();
                            var e = t.selection.cursor, n = t.renderer.textToScreenCoordinates(e.row, e.column),
                                i = t.container.getBoundingClientRect();
                            f.style.top = n.pageY - i.top - 3 + "px", f.style.right = "10px", f.style.display = "", f.firstChild.style.display = "none", t.on("input", w)
                        }

                        function w(e) {
                            f && (f.style.display = "none"), t.off("input", w)
                        }

                        function I() {
                            c = null, clearTimeout(c);
                            var e = t.selection.getRange(), n = e.contains(h.row, h.column);
                            !e.isEmpty() && n || (t.selection.moveToPosition(h), t.selection.selectWord()), g = "wait", C()
                        }

                        r.addListener(e, "contextmenu", (function (e) {
                            d && t.textInput.getElement().focus()
                        }), t), r.addListener(e, "touchstart", (function (e) {
                            var r = e.touches;
                            if (c || r.length > 1) return clearTimeout(c), c = null, s = -1, void (g = "zoom");
                            d = t.$mouseHandler.isMousePressed = !0;
                            var o = t.renderer.layerConfig.lineHeight, u = t.renderer.layerConfig.lineHeight,
                                f = e.timeStamp;
                            l = f;
                            var b = r[0], C = b.clientX, w = b.clientY;
                            Math.abs(n - C) + Math.abs(a - w) > o && (s = -1), n = e.clientX = C, a = e.clientY = w, v = y = 0;
                            var x = new i(e, t);
                            if (h = x.getDocumentPosition(), f - s < 500 && 1 == r.length && !p) m++, e.preventDefault(), e.button = 0, function () {
                                c = null, clearTimeout(c), t.selection.moveToPosition(h);
                                var e = m >= 2 ? t.selection.getLineRange(h.row) : t.session.getBracketRange(h);
                                e && !e.isEmpty() ? t.selection.setRange(e) : t.selection.selectWord(), g = "wait"
                            }(); else {
                                m = 0;
                                var A = t.selection.cursor, _ = t.selection.isEmpty() ? A : t.selection.anchor,
                                    S = t.renderer.$cursorLayer.getPixelPosition(A, !0),
                                    k = t.renderer.$cursorLayer.getPixelPosition(_, !0),
                                    L = t.renderer.scroller.getBoundingClientRect(), T = function (e, t) {
                                        return (e /= u) * e + (t = t / o - .75) * t
                                    };
                                if (e.clientX < L.left) return void (g = "zoom");
                                var O = T(e.clientX - L.left - S.left, e.clientY - L.top - S.top),
                                    R = T(e.clientX - L.left - k.left, e.clientY - L.top - k.top);
                                O < 3.5 && R < 3.5 && (g = O > R ? "cursor" : "anchor"), g = R < 3.5 ? "anchor" : O < 3.5 ? "cursor" : "scroll", c = setTimeout(I, 450)
                            }
                            s = f
                        }), t), r.addListener(e, "touchend", (function (e) {
                            d = t.$mouseHandler.isMousePressed = !1, u && clearInterval(u), "zoom" == g ? (g = "", p = 0) : c ? (t.selection.moveToPosition(h), p = 0, C()) : "scroll" == g ? (p += 60, u = setInterval((function () {
                                p-- <= 0 && (clearInterval(u), u = null), Math.abs(v) < .01 && (v = 0), Math.abs(y) < .01 && (y = 0), p < 20 && (v *= .9), p < 20 && (y *= .9);
                                var e = t.session.getScrollTop();
                                t.renderer.scrollBy(10 * v, 10 * y), e == t.session.getScrollTop() && (p = 0)
                            }), 10), w()) : C(), clearTimeout(c), c = null
                        }), t), r.addListener(e, "touchmove", (function (e) {
                            c && (clearTimeout(c), c = null);
                            var r = e.touches;
                            if (!(r.length > 1 || "zoom" == g)) {
                                var o = r[0], s = n - o.clientX, u = a - o.clientY;
                                if ("wait" == g) {
                                    if (!(s * s + u * u > 4)) return e.preventDefault();
                                    g = "cursor"
                                }
                                n = o.clientX, a = o.clientY, e.clientX = o.clientX, e.clientY = o.clientY;
                                var h = e.timeStamp, d = h - l;
                                if (l = h, "scroll" == g) {
                                    var f = new i(e, t);
                                    f.speed = 1, f.wheelX = s, f.wheelY = u, 10 * Math.abs(s) < Math.abs(u) && (s = 0), 10 * Math.abs(u) < Math.abs(s) && (u = 0), 0 != d && (v = s / d, y = u / d), t._emit("mousewheel", f), f.propagationStopped || (v = y = 0)
                                } else {
                                    var p = new i(e, t).getDocumentPosition();
                                    "cursor" == g ? t.selection.moveCursorToPosition(p) : "anchor" == g && t.selection.setSelectionAnchor(p.row, p.column), t.renderer.scrollCursorIntoView(p), e.preventDefault()
                                }
                            }
                        }), t)
                    }
                })), ace.define("ace/lib/net", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("./dom");
                    t.get = function (e, t) {
                        var n = new XMLHttpRequest;
                        n.open("GET", e, !0), n.onreadystatechange = function () {
                            4 === n.readyState && t(n.responseText)
                        }, n.send(null)
                    }, t.loadScript = function (e, t) {
                        var n = i.getDocumentHead(), r = document.createElement("script");
                        r.src = e, n.appendChild(r), r.onload = r.onreadystatechange = function (e, n) {
                            !n && r.readyState && "loaded" != r.readyState && "complete" != r.readyState || (r = r.onload = r.onreadystatechange = null, n || t())
                        }
                    }, t.qualifyURL = function (e) {
                        var t = document.createElement("a");
                        return t.href = e, t.href
                    }
                })), ace.define("ace/lib/event_emitter", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    var i = {}, r = function () {
                        this.propagationStopped = !0
                    }, o = function () {
                        this.defaultPrevented = !0
                    };
                    i._emit = i._dispatchEvent = function (e, t) {
                        this._eventRegistry || (this._eventRegistry = {}), this._defaultHandlers || (this._defaultHandlers = {});
                        var n = this._eventRegistry[e] || [], i = this._defaultHandlers[e];
                        if (n.length || i) {
                            "object" == typeof t && t || (t = {}), t.type || (t.type = e), t.stopPropagation || (t.stopPropagation = r), t.preventDefault || (t.preventDefault = o), n = n.slice();
                            for (var a = 0; a < n.length && (n[a](t, this), !t.propagationStopped); a++) ;
                            return i && !t.defaultPrevented ? i(t, this) : void 0
                        }
                    }, i._signal = function (e, t) {
                        var n = (this._eventRegistry || {})[e];
                        if (n) {
                            n = n.slice();
                            for (var i = 0; i < n.length; i++) n[i](t, this)
                        }
                    }, i.once = function (e, t) {
                        var n = this;
                        if (this.on(e, (function i() {
                            n.off(e, i), t.apply(null, arguments)
                        })), !t) return new Promise((function (e) {
                            t = e
                        }))
                    }, i.setDefaultHandler = function (e, t) {
                        var n = this._defaultHandlers;
                        if (n || (n = this._defaultHandlers = {_disabled_: {}}), n[e]) {
                            var i = n[e], r = n._disabled_[e];
                            r || (n._disabled_[e] = r = []), r.push(i);
                            var o = r.indexOf(t);
                            -1 != o && r.splice(o, 1)
                        }
                        n[e] = t
                    }, i.removeDefaultHandler = function (e, t) {
                        var n = this._defaultHandlers;
                        if (n) {
                            var i = n._disabled_[e];
                            if (n[e] == t) i && this.setDefaultHandler(e, i.pop()); else if (i) {
                                var r = i.indexOf(t);
                                -1 != r && i.splice(r, 1)
                            }
                        }
                    }, i.on = i.addEventListener = function (e, t, n) {
                        this._eventRegistry = this._eventRegistry || {};
                        var i = this._eventRegistry[e];
                        return i || (i = this._eventRegistry[e] = []), -1 == i.indexOf(t) && i[n ? "unshift" : "push"](t), t
                    }, i.off = i.removeListener = i.removeEventListener = function (e, t) {
                        this._eventRegistry = this._eventRegistry || {};
                        var n = this._eventRegistry[e];
                        if (n) {
                            var i = n.indexOf(t);
                            -1 !== i && n.splice(i, 1)
                        }
                    }, i.removeAllListeners = function (e) {
                        e || (this._eventRegistry = this._defaultHandlers = void 0), this._eventRegistry && (this._eventRegistry[e] = void 0), this._defaultHandlers && (this._defaultHandlers[e] = void 0)
                    }, t.EventEmitter = i
                })), ace.define("ace/lib/app_config", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], (function (e, t, n) {
                    var i = e("./oop"), r = e("./event_emitter").EventEmitter, o = {
                        setOptions: function (e) {
                            Object.keys(e).forEach((function (t) {
                                this.setOption(t, e[t])
                            }), this)
                        }, getOptions: function (e) {
                            var t = {};
                            if (e) Array.isArray(e) || (t = e, e = Object.keys(t)); else {
                                var n = this.$options;
                                e = Object.keys(n).filter((function (e) {
                                    return !n[e].hidden
                                }))
                            }
                            return e.forEach((function (e) {
                                t[e] = this.getOption(e)
                            }), this), t
                        }, setOption: function (e, t) {
                            if (this["$" + e] !== t) {
                                var n = this.$options[e];
                                if (!n) return a('misspelled option "' + e + '"');
                                if (n.forwardTo) return this[n.forwardTo] && this[n.forwardTo].setOption(e, t);
                                n.handlesSet || (this["$" + e] = t), n && n.set && n.set.call(this, t)
                            }
                        }, getOption: function (e) {
                            var t = this.$options[e];
                            return t ? t.forwardTo ? this[t.forwardTo] && this[t.forwardTo].getOption(e) : t && t.get ? t.get.call(this) : this["$" + e] : a('misspelled option "' + e + '"')
                        }
                    };

                    function a(e) {
                        "undefined" != typeof console && console.warn && console.warn.apply(console, arguments)
                    }

                    function s(e, t) {
                        var n = new Error(e);
                        n.data = t, "object" == typeof console && console.error && console.error(n), setTimeout((function () {
                            throw n
                        }))
                    }

                    var l = function () {
                        this.$defaultOptions = {}
                    };
                    (function () {
                        i.implement(this, r), this.defineOptions = function (e, t, n) {
                            return e.$options || (this.$defaultOptions[t] = e.$options = {}), Object.keys(n).forEach((function (t) {
                                var i = n[t];
                                "string" == typeof i && (i = {forwardTo: i}), i.name || (i.name = t), e.$options[i.name] = i, "initialValue" in i && (e["$" + i.name] = i.initialValue)
                            })), i.implement(e, o), this
                        }, this.resetOptions = function (e) {
                            Object.keys(e.$options).forEach((function (t) {
                                var n = e.$options[t];
                                "value" in n && e.setOption(t, n.value)
                            }))
                        }, this.setDefaultValue = function (e, t, n) {
                            if (!e) {
                                for (e in this.$defaultOptions) if (this.$defaultOptions[e][t]) break;
                                if (!this.$defaultOptions[e][t]) return !1
                            }
                            var i = this.$defaultOptions[e] || (this.$defaultOptions[e] = {});
                            i[t] && (i.forwardTo ? this.setDefaultValue(i.forwardTo, t, n) : i[t].value = n)
                        }, this.setDefaultValues = function (e, t) {
                            Object.keys(t).forEach((function (n) {
                                this.setDefaultValue(e, n, t[n])
                            }), this)
                        }, this.warn = a, this.reportError = s
                    }).call(l.prototype), t.AppConfig = l
                })), ace.define("ace/config", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/lib/net", "ace/lib/app_config"], (function (e, t, i) {
                    var r = e("./lib/lang"), o = (e("./lib/oop"), e("./lib/net")), a = e("./lib/app_config").AppConfig;
                    i.exports = t = new a;
                    var s = function () {
                        return this || "undefined" != typeof window && window
                    }(), l = {
                        packaged: !1,
                        workerPath: null,
                        modePath: null,
                        themePath: null,
                        basePath: "",
                        suffix: ".js",
                        $moduleUrls: {},
                        loadWorkerFromBlob: !0,
                        sharedPopups: !1
                    };
                    t.get = function (e) {
                        if (!l.hasOwnProperty(e)) throw new Error("Unknown config key: " + e);
                        return l[e]
                    }, t.set = function (e, t) {
                        if (l.hasOwnProperty(e)) l[e] = t; else if (0 == this.setDefaultValue("", e, t)) throw new Error("Unknown config key: " + e)
                    }, t.all = function () {
                        return r.copyObject(l)
                    }, t.$modes = {}, t.moduleUrl = function (e, t) {
                        if (l.$moduleUrls[e]) return l.$moduleUrls[e];
                        var n = e.split("/"), i = "snippets" == (t = t || n[n.length - 2] || "") ? "/" : "-",
                            r = n[n.length - 1];
                        if ("worker" == t && "-" == i) {
                            var o = new RegExp("^" + t + "[\\-_]|[\\-_]" + t + "$", "g");
                            r = r.replace(o, "")
                        }
                        (!r || r == t) && n.length > 1 && (r = n[n.length - 2]);
                        var a = l[t + "Path"];
                        return null == a ? a = l.basePath : "/" == i && (t = i = ""), a && "/" != a.slice(-1) && (a += "/"), a + t + i + r + this.get("suffix")
                    }, t.setModuleUrl = function (e, t) {
                        return l.$moduleUrls[e] = t
                    }, t.$loading = {}, t.loadModule = function (n, i) {
                        var r, a;
                        Array.isArray(n) && (a = n[0], n = n[1]);
                        try {
                            r = e(n)
                        } catch (e) {
                        }
                        if (r && !t.$loading[n]) return i && i(r);
                        if (t.$loading[n] || (t.$loading[n] = []), t.$loading[n].push(i), !(t.$loading[n].length > 1)) {
                            var s = function () {
                                e([n], (function (e) {
                                    t._emit("load.module", {name: n, module: e});
                                    var i = t.$loading[n];
                                    t.$loading[n] = null, i.forEach((function (t) {
                                        t && t(e)
                                    }))
                                }))
                            };
                            if (!t.get("packaged")) return s();
                            o.loadScript(t.moduleUrl(n, a), s), c()
                        }
                    };
                    var c = function () {
                        l.basePath || l.workerPath || l.modePath || l.themePath || Object.keys(l.$moduleUrls).length || (console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"), c = function () {
                        })
                    };

                    function u(r) {
                        if (s && s.document) {
                            l.packaged = r || e.packaged || i.packaged || s.define && n(23).packaged;
                            for (var o, a = {}, c = "", u = document.currentScript || document._currentScript, h = (u && u.ownerDocument || document).getElementsByTagName("script"), d = 0; d < h.length; d++) {
                                var f = h[d], g = f.src || f.getAttribute("src");
                                if (g) {
                                    for (var p = f.attributes, m = 0, v = p.length; m < v; m++) {
                                        var y = p[m];
                                        0 === y.name.indexOf("data-ace-") && (a[(o = y.name.replace(/^data-ace-/, ""), o.replace(/-(.)/g, (function (e, t) {
                                            return t.toUpperCase()
                                        })))] = y.value)
                                    }
                                    var b = g.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);
                                    b && (c = b[1])
                                }
                            }
                            for (var C in c && (a.base = a.base || c, a.packaged = !0), a.basePath = a.base, a.workerPath = a.workerPath || a.base, a.modePath = a.modePath || a.base, a.themePath = a.themePath || a.base, delete a.base, a) void 0 !== a[C] && t.set(C, a[C])
                        }
                    }

                    u(!0), t.init = u, t.version = "1.4.10"
                })), ace.define("ace/mouse/mouse_handler", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent", "ace/mouse/default_handlers", "ace/mouse/default_gutter_handler", "ace/mouse/mouse_event", "ace/mouse/dragdrop_handler", "ace/mouse/touch_handler", "ace/config"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/event"), r = e("../lib/useragent"), o = e("./default_handlers").DefaultHandlers,
                        a = e("./default_gutter_handler").GutterHandler, s = e("./mouse_event").MouseEvent,
                        l = e("./dragdrop_handler").DragdropHandler, c = e("./touch_handler").addTouchListeners,
                        u = e("../config"), h = function (e) {
                            var t = this;
                            this.editor = e, new o(this), new a(this), new l(this);
                            var n = function (t) {
                                (!document.hasFocus || !document.hasFocus() || !e.isFocused() && document.activeElement == (e.textInput && e.textInput.getElement())) && window.focus(), e.focus()
                            }, s = e.renderer.getMouseEventTarget();
                            i.addListener(s, "click", this.onMouseEvent.bind(this, "click"), e), i.addListener(s, "mousemove", this.onMouseMove.bind(this, "mousemove"), e), i.addMultiMouseDownListener([s, e.renderer.scrollBarV && e.renderer.scrollBarV.inner, e.renderer.scrollBarH && e.renderer.scrollBarH.inner, e.textInput && e.textInput.getElement()].filter(Boolean), [400, 300, 250], this, "onMouseEvent", e), i.addMouseWheelListener(e.container, this.onMouseWheel.bind(this, "mousewheel"), e), c(e.container, e);
                            var u = e.renderer.$gutter;
                            i.addListener(u, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), e), i.addListener(u, "click", this.onMouseEvent.bind(this, "gutterclick"), e), i.addListener(u, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), e), i.addListener(u, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), e), i.addListener(s, "mousedown", n, e), i.addListener(u, "mousedown", n, e), r.isIE && e.renderer.scrollBarV && (i.addListener(e.renderer.scrollBarV.element, "mousedown", n, e), i.addListener(e.renderer.scrollBarH.element, "mousedown", n, e)), e.on("mousemove", (function (n) {
                                if (!t.state && !t.$dragDelay && t.$dragEnabled) {
                                    var i = e.renderer.screenToTextCoordinates(n.x, n.y),
                                        r = e.session.selection.getRange(), o = e.renderer;
                                    !r.isEmpty() && r.insideStart(i.row, i.column) ? o.setCursorStyle("default") : o.setCursorStyle("")
                                }
                            }), e)
                        };
                    (function () {
                        this.onMouseEvent = function (e, t) {
                            this.editor._emit(e, new s(t, this.editor))
                        }, this.onMouseMove = function (e, t) {
                            var n = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
                            n && n.length && this.editor._emit(e, new s(t, this.editor))
                        }, this.onMouseWheel = function (e, t) {
                            var n = new s(t, this.editor);
                            n.speed = 2 * this.$scrollSpeed, n.wheelX = t.wheelX, n.wheelY = t.wheelY, this.editor._emit(e, n)
                        }, this.setState = function (e) {
                            this.state = e
                        }, this.captureMouse = function (e, t) {
                            this.x = e.x, this.y = e.y, this.isMousePressed = !0;
                            var n = this.editor, o = this.editor.renderer;
                            o.$isMousePressed = !0;
                            var a = this, l = function (e) {
                                if (e) {
                                    if (r.isWebKit && !e.which && a.releaseMouse) return a.releaseMouse();
                                    a.x = e.clientX, a.y = e.clientY, t && t(e), a.mouseEvent = new s(e, a.editor), a.$mouseMoved = !0
                                }
                            }, c = function (e) {
                                n.off("beforeEndOperation", h), clearInterval(d), u(), a[a.state + "End"] && a[a.state + "End"](e), a.state = "", a.isMousePressed = o.$isMousePressed = !1, o.$keepTextAreaAtCursor && o.$moveTextAreaToCursor(), a.$onCaptureMouseMove = a.releaseMouse = null, e && a.onMouseEvent("mouseup", e), n.endOperation()
                            }, u = function () {
                                a[a.state] && a[a.state](), a.$mouseMoved = !1
                            };
                            if (r.isOldIE && "dblclick" == e.domEvent.type) return setTimeout((function () {
                                c(e)
                            }));
                            var h = function (e) {
                                a.releaseMouse && n.curOp.command.name && n.curOp.selectionChanged && (a[a.state + "End"] && a[a.state + "End"](), a.state = "", a.releaseMouse())
                            };
                            n.on("beforeEndOperation", h), n.startOperation({command: {name: "mouse"}}), a.$onCaptureMouseMove = l, a.releaseMouse = i.capture(this.editor.container, l, c);
                            var d = setInterval(u, 20)
                        }, this.releaseMouse = null, this.cancelContextMenu = function () {
                            var e = function (t) {
                                t && t.domEvent && "contextmenu" != t.domEvent.type || (this.editor.off("nativecontextmenu", e), t && t.domEvent && i.stopEvent(t.domEvent))
                            }.bind(this);
                            setTimeout(e, 10), this.editor.on("nativecontextmenu", e)
                        }
                    }).call(h.prototype), u.defineOptions(h.prototype, "mouseHandler", {
                        scrollSpeed: {initialValue: 2},
                        dragDelay: {initialValue: r.isMac ? 150 : 0},
                        dragEnabled: {initialValue: !0},
                        focusTimeout: {initialValue: 0},
                        tooltipFollowsMouse: {initialValue: !0}
                    }), t.MouseHandler = h
                })), ace.define("ace/mouse/fold_handler", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom");
                    t.FoldHandler = function (e) {
                        e.on("click", (function (t) {
                            var n = t.getDocumentPosition(), r = e.session, o = r.getFoldAt(n.row, n.column, 1);
                            o && (t.getAccelKey() ? r.removeFold(o) : r.expandFold(o), t.stop());
                            var a = t.domEvent && t.domEvent.target;
                            a && i.hasCssClass(a, "ace_inline_button") && i.hasCssClass(a, "ace_toggle_wrap") && (r.setOption("wrap", !r.getUseWrapMode()), e.renderer.scrollCursorIntoView())
                        })), e.on("gutterclick", (function (t) {
                            if ("foldWidgets" == e.renderer.$gutterLayer.getRegion(t)) {
                                var n = t.getDocumentPosition().row, i = e.session;
                                i.foldWidgets && i.foldWidgets[n] && e.session.onFoldWidgetClick(n, t), e.isFocused() || e.focus(), t.stop()
                            }
                        })), e.on("gutterdblclick", (function (t) {
                            if ("foldWidgets" == e.renderer.$gutterLayer.getRegion(t)) {
                                var n = t.getDocumentPosition().row, i = e.session, r = i.getParentFoldRangeData(n, !0),
                                    o = r.range || r.firstRange;
                                if (o) {
                                    n = o.start.row;
                                    var a = i.getFoldAt(n, i.getLine(n).length, 1);
                                    a ? i.removeFold(a) : (i.addFold("...", o), e.renderer.scrollCursorIntoView({
                                        row: o.start.row,
                                        column: 0
                                    }))
                                }
                                t.stop()
                            }
                        }))
                    }
                })), ace.define("ace/keyboard/keybinding", ["require", "exports", "module", "ace/lib/keys", "ace/lib/event"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/keys"), r = e("../lib/event"), o = function (e) {
                        this.$editor = e, this.$data = {editor: e}, this.$handlers = [], this.setDefaultHandler(e.commands)
                    };
                    (function () {
                        this.setDefaultHandler = function (e) {
                            this.removeKeyboardHandler(this.$defaultHandler), this.$defaultHandler = e, this.addKeyboardHandler(e, 0)
                        }, this.setKeyboardHandler = function (e) {
                            var t = this.$handlers;
                            if (t[t.length - 1] != e) {
                                for (; t[t.length - 1] && t[t.length - 1] != this.$defaultHandler;) this.removeKeyboardHandler(t[t.length - 1]);
                                this.addKeyboardHandler(e, 1)
                            }
                        }, this.addKeyboardHandler = function (e, t) {
                            if (e) {
                                "function" != typeof e || e.handleKeyboard || (e.handleKeyboard = e);
                                var n = this.$handlers.indexOf(e);
                                -1 != n && this.$handlers.splice(n, 1), null == t ? this.$handlers.push(e) : this.$handlers.splice(t, 0, e), -1 == n && e.attach && e.attach(this.$editor)
                            }
                        }, this.removeKeyboardHandler = function (e) {
                            var t = this.$handlers.indexOf(e);
                            return -1 != t && (this.$handlers.splice(t, 1), e.detach && e.detach(this.$editor), !0)
                        }, this.getKeyboardHandler = function () {
                            return this.$handlers[this.$handlers.length - 1]
                        }, this.getStatusText = function () {
                            var e = this.$data, t = e.editor;
                            return this.$handlers.map((function (n) {
                                return n.getStatusText && n.getStatusText(t, e) || ""
                            })).filter(Boolean).join(" ")
                        }, this.$callKeyboardHandlers = function (e, t, n, i) {
                            for (var o, a = !1, s = this.$editor.commands, l = this.$handlers.length; l-- && !((o = this.$handlers[l].handleKeyboard(this.$data, e, t, n, i)) && o.command && ((a = "null" == o.command || s.exec(o.command, this.$editor, o.args, i)) && i && -1 != e && 1 != o.passEvent && 1 != o.command.passEvent && r.stopEvent(i), a));) ;
                            return a || -1 != e || (o = {command: "insertstring"}, a = s.exec("insertstring", this.$editor, t)), a && this.$editor._signal && this.$editor._signal("keyboardActivity", o), a
                        }, this.onCommandKey = function (e, t, n) {
                            var r = i.keyCodeToString(n);
                            return this.$callKeyboardHandlers(t, r, n, e)
                        }, this.onTextInput = function (e) {
                            return this.$callKeyboardHandlers(-1, e)
                        }
                    }).call(o.prototype), t.KeyBinding = o
                })), ace.define("ace/lib/bidiutil", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    var i = 0, r = 0, o = !1, a = !1, s = !1,
                        l = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]],
                        c = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]],
                        u = [18, 18, 18, 18, 18, 18, 18, 18, 18, 6, 5, 6, 8, 5, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 5, 5, 5, 6, 8, 4, 4, 11, 11, 11, 4, 4, 4, 4, 4, 10, 9, 10, 9, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 18, 18, 18, 18, 18, 18, 5, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 9, 4, 11, 11, 11, 11, 4, 4, 4, 4, 0, 4, 4, 18, 4, 4, 11, 11, 2, 2, 4, 0, 4, 4, 4, 2, 0, 4, 4, 4, 4, 4],
                        h = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 18, 18, 18, 0, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 5, 13, 14, 15, 16, 17, 9, 11, 11, 11, 11, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8];

                    function d(e, t, n) {
                        if (!(r < e)) if (1 != e || 1 != i || a) for (var o, s, l, c, u = n.length, h = 0; h < u;) {
                            if (t[h] >= e) {
                                for (o = h + 1; o < u && t[o] >= e;) o++;
                                for (s = h, l = o - 1; s < l; s++, l--) c = n[s], n[s] = n[l], n[l] = c;
                                h = o
                            }
                            h++
                        } else n.reverse()
                    }

                    function f(e, t, n, r) {
                        var l, c, u, h, d = t[r];
                        switch (d) {
                            case 0:
                            case 1:
                                o = !1;
                            case 4:
                            case 3:
                                return d;
                            case 2:
                                return o ? 3 : 2;
                            case 7:
                                return o = !0, 1;
                            case 8:
                                return 4;
                            case 9:
                                return r < 1 || r + 1 >= t.length || 2 != (l = n[r - 1]) && 3 != l || 2 != (c = t[r + 1]) && 3 != c ? 4 : (o && (c = 3), c == l ? c : 4);
                            case 10:
                                return 2 == (l = r > 0 ? n[r - 1] : 5) && r + 1 < t.length && 2 == t[r + 1] ? 2 : 4;
                            case 11:
                                if (r > 0 && 2 == n[r - 1]) return 2;
                                if (o) return 4;
                                for (h = r + 1, u = t.length; h < u && 11 == t[h];) h++;
                                return h < u && 2 == t[h] ? 2 : 4;
                            case 12:
                                for (u = t.length, h = r + 1; h < u && 12 == t[h];) h++;
                                if (h < u) {
                                    var f = e[r], g = f >= 1425 && f <= 2303 || 64286 == f;
                                    if (l = t[h], g && (1 == l || 7 == l)) return 1
                                }
                                return r < 1 || 5 == (l = t[r - 1]) ? 4 : n[r - 1];
                            case 5:
                                return o = !1, a = !0, i;
                            case 6:
                                return s = !0, 4;
                            case 13:
                            case 14:
                            case 16:
                            case 17:
                            case 15:
                                o = !1;
                            case 18:
                                return 4
                        }
                    }

                    function g(e) {
                        var t = e.charCodeAt(0), n = t >> 8;
                        return 0 == n ? t > 191 ? 0 : u[t] : 5 == n ? /[\u0591-\u05f4]/.test(e) ? 1 : 0 : 6 == n ? /[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e) ? 12 : /[\u0660-\u0669\u066b-\u066c]/.test(e) ? 3 : 1642 == t ? 11 : /[\u06f0-\u06f9]/.test(e) ? 2 : 7 : 32 == n && t <= 8287 ? h[255 & t] : 254 == n && t >= 65136 ? 7 : 4
                    }

                    t.L = 0, t.R = 1, t.EN = 2, t.ON_R = 3, t.AN = 4, t.R_H = 5, t.B = 6, t.RLE = 7, t.DOT = "·", t.doBidiReorder = function (e, n, u) {
                        if (e.length < 2) return {};
                        var h = e.split(""), p = new Array(h.length), m = new Array(h.length), v = [];
                        i = u ? 1 : 0, function (e, t, n, u) {
                            var h = i ? c : l, d = null, p = null, m = null, v = 0, y = null, b = -1, C = null,
                                w = null, I = [];
                            if (!u) for (C = 0, u = []; C < n; C++) u[C] = g(e[C]);
                            for (r = i, o = !1, a = !1, s = !1, w = 0; w < n; w++) {
                                if (d = v, I[w] = p = f(e, u, I, w), y = 240 & (v = h[d][p]), v &= 15, t[w] = m = h[v][5], y > 0) if (16 == y) {
                                    for (C = b; C < w; C++) t[C] = 1;
                                    b = -1
                                } else b = -1;
                                if (h[v][6]) -1 == b && (b = w); else if (b > -1) {
                                    for (C = b; C < w; C++) t[C] = m;
                                    b = -1
                                }
                                5 == u[w] && (t[w] = 0), r |= m
                            }
                            if (s) for (C = 0; C < n; C++) if (6 == u[C]) {
                                t[C] = i;
                                for (var x = C - 1; x >= 0 && 8 == u[x]; x--) t[x] = i
                            }
                        }(h, v, h.length, n);
                        for (var y = 0; y < p.length; p[y] = y, y++) ;
                        for (d(2, v, p), d(1, v, p), y = 0; y < p.length - 1; y++) 3 === n[y] ? v[y] = t.AN : 1 === v[y] && (n[y] > 7 && n[y] < 13 || 4 === n[y] || 18 === n[y]) ? v[y] = t.ON_R : y > 0 && "ل" === h[y - 1] && /\u0622|\u0623|\u0625|\u0627/.test(h[y]) && (v[y - 1] = v[y] = t.R_H, y++);
                        for (h[h.length - 1] === t.DOT && (v[h.length - 1] = t.B), "‫" === h[0] && (v[0] = t.RLE), y = 0; y < p.length; y++) m[y] = v[p[y]];
                        return {logicalFromVisual: p, bidiLevels: m}
                    }, t.hasBidiCharacters = function (e, t) {
                        for (var n = !1, i = 0; i < e.length; i++) t[i] = g(e.charAt(i)), n || 1 != t[i] && 7 != t[i] && 3 != t[i] || (n = !0);
                        return n
                    }, t.getVisualFromLogicalIdx = function (e, t) {
                        for (var n = 0; n < t.logicalFromVisual.length; n++) if (t.logicalFromVisual[n] == e) return n;
                        return 0
                    }
                })), ace.define("ace/bidihandler", ["require", "exports", "module", "ace/lib/bidiutil", "ace/lib/lang"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/bidiutil"), r = e("./lib/lang"),
                        o = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/, a = function (e) {
                            this.session = e, this.bidiMap = {}, this.currentRow = null, this.bidiUtil = i, this.charWidths = [], this.EOL = "¬", this.showInvisibles = !0, this.isRtlDir = !1, this.$isRtl = !1, this.line = "", this.wrapIndent = 0, this.EOF = "¶", this.RLE = "‫", this.contentWidth = 0, this.fontMetrics = null, this.rtlLineOffset = 0, this.wrapOffset = 0, this.isMoveLeftOperation = !1, this.seenBidi = o.test(e.getValue())
                        };
                    (function () {
                        this.isBidiRow = function (e, t, n) {
                            return !!this.seenBidi && (e !== this.currentRow && (this.currentRow = e, this.updateRowLine(t, n), this.updateBidiMap()), this.bidiMap.bidiLevels)
                        }, this.onChange = function (e) {
                            this.seenBidi ? this.currentRow = null : "insert" == e.action && o.test(e.lines.join("\n")) && (this.seenBidi = !0, this.currentRow = null)
                        }, this.getDocumentRow = function () {
                            var e = 0, t = this.session.$screenRowCache;
                            if (t.length) {
                                var n = this.session.$getRowCacheIndex(t, this.currentRow);
                                n >= 0 && (e = this.session.$docRowCache[n])
                            }
                            return e
                        }, this.getSplitIndex = function () {
                            var e = 0, t = this.session.$screenRowCache;
                            if (t.length) for (var n, i = this.session.$getRowCacheIndex(t, this.currentRow); this.currentRow - e > 0 && (n = this.session.$getRowCacheIndex(t, this.currentRow - e - 1)) === i;) i = n, e++; else e = this.currentRow;
                            return e
                        }, this.updateRowLine = function (e, t) {
                            void 0 === e && (e = this.getDocumentRow());
                            var n = e === this.session.getLength() - 1 ? this.EOF : this.EOL;
                            if (this.wrapIndent = 0, this.line = this.session.getLine(e), this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE, this.session.$useWrapMode) {
                                var o = this.session.$wrapData[e];
                                o && (void 0 === t && (t = this.getSplitIndex()), t > 0 && o.length ? (this.wrapIndent = o.indent, this.wrapOffset = this.wrapIndent * this.charWidths[i.L], this.line = t < o.length ? this.line.substring(o[t - 1], o[t]) : this.line.substring(o[o.length - 1])) : this.line = this.line.substring(0, o[t])), t == o.length && (this.line += this.showInvisibles ? n : i.DOT)
                            } else this.line += this.showInvisibles ? n : i.DOT;
                            var a, s = this.session, l = 0;
                            this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, (function (e, t) {
                                return "\t" === e || s.isFullWidth(e.charCodeAt(0)) ? (a = "\t" === e ? s.getScreenTabSize(t + l) : 2, l += a - 1, r.stringRepeat(i.DOT, a)) : e
                            })), this.isRtlDir && (this.fontMetrics.$main.textContent = this.line.charAt(this.line.length - 1) == i.DOT ? this.line.substr(0, this.line.length - 1) : this.line, this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width)
                        }, this.updateBidiMap = function () {
                            var e = [];
                            i.hasBidiCharacters(this.line, e) || this.isRtlDir ? this.bidiMap = i.doBidiReorder(this.line, e, this.isRtlDir) : this.bidiMap = {}
                        }, this.markAsDirty = function () {
                            this.currentRow = null
                        }, this.updateCharacterWidths = function (e) {
                            if (this.characterWidth !== e.$characterSize.width) {
                                this.fontMetrics = e;
                                var t = this.characterWidth = e.$characterSize.width, n = e.$measureCharWidth("ה");
                                this.charWidths[i.L] = this.charWidths[i.EN] = this.charWidths[i.ON_R] = t, this.charWidths[i.R] = this.charWidths[i.AN] = n, this.charWidths[i.R_H] = .45 * n, this.charWidths[i.B] = this.charWidths[i.RLE] = 0, this.currentRow = null
                            }
                        }, this.setShowInvisibles = function (e) {
                            this.showInvisibles = e, this.currentRow = null
                        }, this.setEolChar = function (e) {
                            this.EOL = e
                        }, this.setContentWidth = function (e) {
                            this.contentWidth = e
                        }, this.isRtlLine = function (e) {
                            return !!this.$isRtl || (null != e ? this.session.getLine(e).charAt(0) == this.RLE : this.isRtlDir)
                        }, this.setRtlDirection = function (e, t) {
                            for (var n = e.getCursorPosition(), i = e.selection.getSelectionAnchor().row; i <= n.row; i++) t || e.session.getLine(i).charAt(0) !== e.session.$bidiHandler.RLE ? t && e.session.getLine(i).charAt(0) !== e.session.$bidiHandler.RLE && e.session.doc.insert({
                                column: 0,
                                row: i
                            }, e.session.$bidiHandler.RLE) : e.session.doc.removeInLine(i, 0, 1)
                        }, this.getPosLeft = function (e) {
                            e -= this.wrapIndent;
                            var t = this.line.charAt(0) === this.RLE ? 1 : 0,
                                n = e > t ? this.session.getOverwrite() ? e : e - 1 : t,
                                r = i.getVisualFromLogicalIdx(n, this.bidiMap), o = this.bidiMap.bidiLevels, a = 0;
                            !this.session.getOverwrite() && e <= t && o[r] % 2 != 0 && r++;
                            for (var s = 0; s < r; s++) a += this.charWidths[o[s]];
                            return !this.session.getOverwrite() && e > t && o[r] % 2 == 0 && (a += this.charWidths[o[r]]), this.wrapIndent && (a += this.isRtlDir ? -1 * this.wrapOffset : this.wrapOffset), this.isRtlDir && (a += this.rtlLineOffset), a
                        }, this.getSelections = function (e, t) {
                            var n, i = this.bidiMap, r = i.bidiLevels, o = [], a = 0,
                                s = Math.min(e, t) - this.wrapIndent, l = Math.max(e, t) - this.wrapIndent, c = !1,
                                u = !1, h = 0;
                            this.wrapIndent && (a += this.isRtlDir ? -1 * this.wrapOffset : this.wrapOffset);
                            for (var d, f = 0; f < r.length; f++) d = i.logicalFromVisual[f], n = r[f], (c = d >= s && d < l) && !u ? h = a : !c && u && o.push({
                                left: h,
                                width: a - h
                            }), a += this.charWidths[n], u = c;
                            if (c && f === r.length && o.push({
                                left: h,
                                width: a - h
                            }), this.isRtlDir) for (var g = 0; g < o.length; g++) o[g].left += this.rtlLineOffset;
                            return o
                        }, this.offsetToCol = function (e) {
                            this.isRtlDir && (e -= this.rtlLineOffset);
                            var t = 0, n = (e = Math.max(e, 0), 0), i = 0, r = this.bidiMap.bidiLevels,
                                o = this.charWidths[r[i]];
                            for (this.wrapIndent && (e -= this.isRtlDir ? -1 * this.wrapOffset : this.wrapOffset); e > n + o / 2;) {
                                if (n += o, i === r.length - 1) {
                                    o = 0;
                                    break
                                }
                                o = this.charWidths[r[++i]]
                            }
                            return i > 0 && r[i - 1] % 2 != 0 && r[i] % 2 == 0 ? (e < n && i--, t = this.bidiMap.logicalFromVisual[i]) : i > 0 && r[i - 1] % 2 == 0 && r[i] % 2 != 0 ? t = 1 + (e > n ? this.bidiMap.logicalFromVisual[i] : this.bidiMap.logicalFromVisual[i - 1]) : this.isRtlDir && i === r.length - 1 && 0 === o && r[i - 1] % 2 == 0 || !this.isRtlDir && 0 === i && r[i] % 2 != 0 ? t = 1 + this.bidiMap.logicalFromVisual[i] : (i > 0 && r[i - 1] % 2 != 0 && 0 !== o && i--, t = this.bidiMap.logicalFromVisual[i]), 0 === t && this.isRtlDir && t++, t + this.wrapIndent
                        }
                    }).call(a.prototype), t.BidiHandler = a
                })), ace.define("ace/selection", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/lib/event_emitter", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./lib/lang"), o = e("./lib/event_emitter").EventEmitter,
                        a = e("./range").Range, s = function (e) {
                            this.session = e, this.doc = e.getDocument(), this.clearSelection(), this.cursor = this.lead = this.doc.createAnchor(0, 0), this.anchor = this.doc.createAnchor(0, 0), this.$silent = !1;
                            var t = this;
                            this.cursor.on("change", (function (e) {
                                t.$cursorChanged = !0, t.$silent || t._emit("changeCursor"), t.$isEmpty || t.$silent || t._emit("changeSelection"), t.$keepDesiredColumnOnChange || e.old.column == e.value.column || (t.$desiredColumn = null)
                            })), this.anchor.on("change", (function () {
                                t.$anchorChanged = !0, t.$isEmpty || t.$silent || t._emit("changeSelection")
                            }))
                        };
                    (function () {
                        i.implement(this, o), this.isEmpty = function () {
                            return this.$isEmpty || this.anchor.row == this.lead.row && this.anchor.column == this.lead.column
                        }, this.isMultiLine = function () {
                            return !this.$isEmpty && this.anchor.row != this.cursor.row
                        }, this.getCursor = function () {
                            return this.lead.getPosition()
                        }, this.setSelectionAnchor = function (e, t) {
                            this.$isEmpty = !1, this.anchor.setPosition(e, t)
                        }, this.getAnchor = this.getSelectionAnchor = function () {
                            return this.$isEmpty ? this.getSelectionLead() : this.anchor.getPosition()
                        }, this.getSelectionLead = function () {
                            return this.lead.getPosition()
                        }, this.isBackwards = function () {
                            var e = this.anchor, t = this.lead;
                            return e.row > t.row || e.row == t.row && e.column > t.column
                        }, this.getRange = function () {
                            var e = this.anchor, t = this.lead;
                            return this.$isEmpty ? a.fromPoints(t, t) : this.isBackwards() ? a.fromPoints(t, e) : a.fromPoints(e, t)
                        }, this.clearSelection = function () {
                            this.$isEmpty || (this.$isEmpty = !0, this._emit("changeSelection"))
                        }, this.selectAll = function () {
                            this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE)
                        }, this.setRange = this.setSelectionRange = function (e, t) {
                            var n = t ? e.end : e.start, i = t ? e.start : e.end;
                            this.$setSelection(n.row, n.column, i.row, i.column)
                        }, this.$setSelection = function (e, t, n, i) {
                            if (!this.$silent) {
                                var r = this.$isEmpty, o = this.inMultiSelectMode;
                                this.$silent = !0, this.$cursorChanged = this.$anchorChanged = !1, this.anchor.setPosition(e, t), this.cursor.setPosition(n, i), this.$isEmpty = !a.comparePoints(this.anchor, this.cursor), this.$silent = !1, this.$cursorChanged && this._emit("changeCursor"), (this.$cursorChanged || this.$anchorChanged || r != this.$isEmpty || o) && this._emit("changeSelection")
                            }
                        }, this.$moveSelection = function (e) {
                            var t = this.lead;
                            this.$isEmpty && this.setSelectionAnchor(t.row, t.column), e.call(this)
                        }, this.selectTo = function (e, t) {
                            this.$moveSelection((function () {
                                this.moveCursorTo(e, t)
                            }))
                        }, this.selectToPosition = function (e) {
                            this.$moveSelection((function () {
                                this.moveCursorToPosition(e)
                            }))
                        }, this.moveTo = function (e, t) {
                            this.clearSelection(), this.moveCursorTo(e, t)
                        }, this.moveToPosition = function (e) {
                            this.clearSelection(), this.moveCursorToPosition(e)
                        }, this.selectUp = function () {
                            this.$moveSelection(this.moveCursorUp)
                        }, this.selectDown = function () {
                            this.$moveSelection(this.moveCursorDown)
                        }, this.selectRight = function () {
                            this.$moveSelection(this.moveCursorRight)
                        }, this.selectLeft = function () {
                            this.$moveSelection(this.moveCursorLeft)
                        }, this.selectLineStart = function () {
                            this.$moveSelection(this.moveCursorLineStart)
                        }, this.selectLineEnd = function () {
                            this.$moveSelection(this.moveCursorLineEnd)
                        }, this.selectFileEnd = function () {
                            this.$moveSelection(this.moveCursorFileEnd)
                        }, this.selectFileStart = function () {
                            this.$moveSelection(this.moveCursorFileStart)
                        }, this.selectWordRight = function () {
                            this.$moveSelection(this.moveCursorWordRight)
                        }, this.selectWordLeft = function () {
                            this.$moveSelection(this.moveCursorWordLeft)
                        }, this.getWordRange = function (e, t) {
                            if (void 0 === t) {
                                var n = e || this.lead;
                                e = n.row, t = n.column
                            }
                            return this.session.getWordRange(e, t)
                        }, this.selectWord = function () {
                            this.setSelectionRange(this.getWordRange())
                        }, this.selectAWord = function () {
                            var e = this.getCursor(), t = this.session.getAWordRange(e.row, e.column);
                            this.setSelectionRange(t)
                        }, this.getLineRange = function (e, t) {
                            var n, i = "number" == typeof e ? e : this.lead.row, r = this.session.getFoldLine(i);
                            return r ? (i = r.start.row, n = r.end.row) : n = i, !0 === t ? new a(i, 0, n, this.session.getLine(n).length) : new a(i, 0, n + 1, 0)
                        }, this.selectLine = function () {
                            this.setSelectionRange(this.getLineRange())
                        }, this.moveCursorUp = function () {
                            this.moveCursorBy(-1, 0)
                        }, this.moveCursorDown = function () {
                            this.moveCursorBy(1, 0)
                        }, this.wouldMoveIntoSoftTab = function (e, t, n) {
                            var i = e.column, r = e.column + t;
                            return n < 0 && (i = e.column - t, r = e.column), this.session.isTabStop(e) && this.doc.getLine(e.row).slice(i, r).split(" ").length - 1 == t
                        }, this.moveCursorLeft = function () {
                            var e, t = this.lead.getPosition();
                            if (e = this.session.getFoldAt(t.row, t.column, -1)) this.moveCursorTo(e.start.row, e.start.column); else if (0 === t.column) t.row > 0 && this.moveCursorTo(t.row - 1, this.doc.getLine(t.row - 1).length); else {
                                var n = this.session.getTabSize();
                                this.wouldMoveIntoSoftTab(t, n, -1) && !this.session.getNavigateWithinSoftTabs() ? this.moveCursorBy(0, -n) : this.moveCursorBy(0, -1)
                            }
                        }, this.moveCursorRight = function () {
                            var e, t = this.lead.getPosition();
                            if (e = this.session.getFoldAt(t.row, t.column, 1)) this.moveCursorTo(e.end.row, e.end.column); else if (this.lead.column == this.doc.getLine(this.lead.row).length) this.lead.row < this.doc.getLength() - 1 && this.moveCursorTo(this.lead.row + 1, 0); else {
                                var n = this.session.getTabSize();
                                t = this.lead, this.wouldMoveIntoSoftTab(t, n, 1) && !this.session.getNavigateWithinSoftTabs() ? this.moveCursorBy(0, n) : this.moveCursorBy(0, 1)
                            }
                        }, this.moveCursorLineStart = function () {
                            var e = this.lead.row, t = this.lead.column, n = this.session.documentToScreenRow(e, t),
                                i = this.session.screenToDocumentPosition(n, 0),
                                r = this.session.getDisplayLine(e, null, i.row, i.column).match(/^\s*/);
                            r[0].length == t || this.session.$useEmacsStyleLineStart || (i.column += r[0].length), this.moveCursorToPosition(i)
                        }, this.moveCursorLineEnd = function () {
                            var e = this.lead, t = this.session.getDocumentLastRowColumnPosition(e.row, e.column);
                            if (this.lead.column == t.column) {
                                var n = this.session.getLine(t.row);
                                if (t.column == n.length) {
                                    var i = n.search(/\s+$/);
                                    i > 0 && (t.column = i)
                                }
                            }
                            this.moveCursorTo(t.row, t.column)
                        }, this.moveCursorFileEnd = function () {
                            var e = this.doc.getLength() - 1, t = this.doc.getLine(e).length;
                            this.moveCursorTo(e, t)
                        }, this.moveCursorFileStart = function () {
                            this.moveCursorTo(0, 0)
                        }, this.moveCursorLongWordRight = function () {
                            var e = this.lead.row, t = this.lead.column, n = this.doc.getLine(e), i = n.substring(t);
                            this.session.nonTokenRe.lastIndex = 0, this.session.tokenRe.lastIndex = 0;
                            var r = this.session.getFoldAt(e, t, 1);
                            if (r) this.moveCursorTo(r.end.row, r.end.column); else {
                                if (this.session.nonTokenRe.exec(i) && (t += this.session.nonTokenRe.lastIndex, this.session.nonTokenRe.lastIndex = 0, i = n.substring(t)), t >= n.length) return this.moveCursorTo(e, n.length), this.moveCursorRight(), void (e < this.doc.getLength() - 1 && this.moveCursorWordRight());
                                this.session.tokenRe.exec(i) && (t += this.session.tokenRe.lastIndex, this.session.tokenRe.lastIndex = 0), this.moveCursorTo(e, t)
                            }
                        }, this.moveCursorLongWordLeft = function () {
                            var e, t = this.lead.row, n = this.lead.column;
                            if (e = this.session.getFoldAt(t, n, -1)) this.moveCursorTo(e.start.row, e.start.column); else {
                                var i = this.session.getFoldStringAt(t, n, -1);
                                null == i && (i = this.doc.getLine(t).substring(0, n));
                                var o = r.stringReverse(i);
                                if (this.session.nonTokenRe.lastIndex = 0, this.session.tokenRe.lastIndex = 0, this.session.nonTokenRe.exec(o) && (n -= this.session.nonTokenRe.lastIndex, o = o.slice(this.session.nonTokenRe.lastIndex), this.session.nonTokenRe.lastIndex = 0), n <= 0) return this.moveCursorTo(t, 0), this.moveCursorLeft(), void (t > 0 && this.moveCursorWordLeft());
                                this.session.tokenRe.exec(o) && (n -= this.session.tokenRe.lastIndex, this.session.tokenRe.lastIndex = 0), this.moveCursorTo(t, n)
                            }
                        }, this.$shortWordEndIndex = function (e) {
                            var t, n = 0, i = /\s/, r = this.session.tokenRe;
                            if (r.lastIndex = 0, this.session.tokenRe.exec(e)) n = this.session.tokenRe.lastIndex; else {
                                for (; (t = e[n]) && i.test(t);) n++;
                                if (n < 1) for (r.lastIndex = 0; (t = e[n]) && !r.test(t);) if (r.lastIndex = 0, n++, i.test(t)) {
                                    if (n > 2) {
                                        n--;
                                        break
                                    }
                                    for (; (t = e[n]) && i.test(t);) n++;
                                    if (n > 2) break
                                }
                            }
                            return r.lastIndex = 0, n
                        }, this.moveCursorShortWordRight = function () {
                            var e = this.lead.row, t = this.lead.column, n = this.doc.getLine(e), i = n.substring(t),
                                r = this.session.getFoldAt(e, t, 1);
                            if (r) return this.moveCursorTo(r.end.row, r.end.column);
                            if (t == n.length) {
                                var o = this.doc.getLength();
                                do {
                                    e++, i = this.doc.getLine(e)
                                } while (e < o && /^\s*$/.test(i));
                                /^\s+/.test(i) || (i = ""), t = 0
                            }
                            var a = this.$shortWordEndIndex(i);
                            this.moveCursorTo(e, t + a)
                        }, this.moveCursorShortWordLeft = function () {
                            var e, t = this.lead.row, n = this.lead.column;
                            if (e = this.session.getFoldAt(t, n, -1)) return this.moveCursorTo(e.start.row, e.start.column);
                            var i = this.session.getLine(t).substring(0, n);
                            if (0 === n) {
                                do {
                                    t--, i = this.doc.getLine(t)
                                } while (t > 0 && /^\s*$/.test(i));
                                n = i.length, /\s+$/.test(i) || (i = "")
                            }
                            var o = r.stringReverse(i), a = this.$shortWordEndIndex(o);
                            return this.moveCursorTo(t, n - a)
                        }, this.moveCursorWordRight = function () {
                            this.session.$selectLongWords ? this.moveCursorLongWordRight() : this.moveCursorShortWordRight()
                        }, this.moveCursorWordLeft = function () {
                            this.session.$selectLongWords ? this.moveCursorLongWordLeft() : this.moveCursorShortWordLeft()
                        }, this.moveCursorBy = function (e, t) {
                            var n, i = this.session.documentToScreenPosition(this.lead.row, this.lead.column);
                            if (0 === t && (0 !== e && (this.session.$bidiHandler.isBidiRow(i.row, this.lead.row) ? (n = this.session.$bidiHandler.getPosLeft(i.column), i.column = Math.round(n / this.session.$bidiHandler.charWidths[0])) : n = i.column * this.session.$bidiHandler.charWidths[0]), this.$desiredColumn ? i.column = this.$desiredColumn : this.$desiredColumn = i.column), 0 != e && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {
                                var r = this.session.lineWidgets[this.lead.row];
                                e < 0 ? e -= r.rowsAbove || 0 : e > 0 && (e += r.rowCount - (r.rowsAbove || 0))
                            }
                            var o = this.session.screenToDocumentPosition(i.row + e, i.column, n);
                            0 !== e && 0 === t && o.row === this.lead.row && (o.column, this.lead.column), this.moveCursorTo(o.row, o.column + t, 0 === t)
                        }, this.moveCursorToPosition = function (e) {
                            this.moveCursorTo(e.row, e.column)
                        }, this.moveCursorTo = function (e, t, n) {
                            var i = this.session.getFoldAt(e, t, 1);
                            i && (e = i.start.row, t = i.start.column), this.$keepDesiredColumnOnChange = !0;
                            var r = this.session.getLine(e);
                            /[\uDC00-\uDFFF]/.test(r.charAt(t)) && r.charAt(t - 1) && (this.lead.row == e && this.lead.column == t + 1 ? t -= 1 : t += 1), this.lead.setPosition(e, t), this.$keepDesiredColumnOnChange = !1, n || (this.$desiredColumn = null)
                        }, this.moveCursorToScreen = function (e, t, n) {
                            var i = this.session.screenToDocumentPosition(e, t);
                            this.moveCursorTo(i.row, i.column, n)
                        }, this.detach = function () {
                            this.lead.detach(), this.anchor.detach(), this.session = this.doc = null
                        }, this.fromOrientedRange = function (e) {
                            this.setSelectionRange(e, e.cursor == e.start), this.$desiredColumn = e.desiredColumn || this.$desiredColumn
                        }, this.toOrientedRange = function (e) {
                            var t = this.getRange();
                            return e ? (e.start.column = t.start.column, e.start.row = t.start.row, e.end.column = t.end.column, e.end.row = t.end.row) : e = t, e.cursor = this.isBackwards() ? e.start : e.end, e.desiredColumn = this.$desiredColumn, e
                        }, this.getRangeOfMovements = function (e) {
                            var t = this.getCursor();
                            try {
                                e(this);
                                var n = this.getCursor();
                                return a.fromPoints(t, n)
                            } catch (e) {
                                return a.fromPoints(t, t)
                            } finally {
                                this.moveCursorToPosition(t)
                            }
                        }, this.toJSON = function () {
                            if (this.rangeCount) var e = this.ranges.map((function (e) {
                                var t = e.clone();
                                return t.isBackwards = e.cursor == e.start, t
                            })); else (e = this.getRange()).isBackwards = this.isBackwards();
                            return e
                        }, this.fromJSON = function (e) {
                            if (null == e.start) {
                                if (this.rangeList && e.length > 1) {
                                    this.toSingleRange(e[0]);
                                    for (var t = e.length; t--;) {
                                        var n = a.fromPoints(e[t].start, e[t].end);
                                        e[t].isBackwards && (n.cursor = n.start), this.addRange(n, !0)
                                    }
                                    return
                                }
                                e = e[0]
                            }
                            this.rangeList && this.toSingleRange(e), this.setSelectionRange(e, e.isBackwards)
                        }, this.isEqual = function (e) {
                            if ((e.length || this.rangeCount) && e.length != this.rangeCount) return !1;
                            if (!e.length || !this.ranges) return this.getRange().isEqual(e);
                            for (var t = this.ranges.length; t--;) if (!this.ranges[t].isEqual(e[t])) return !1;
                            return !0
                        }
                    }).call(s.prototype), t.Selection = s
                })), ace.define("ace/tokenizer", ["require", "exports", "module", "ace/config"], (function (e, t, n) {
                    "use strict";
                    var i = e("./config"), r = 2e3, o = function (e) {
                        for (var t in this.states = e, this.regExps = {}, this.matchMappings = {}, this.states) {
                            for (var n = this.states[t], i = [], r = 0, o = this.matchMappings[t] = {defaultToken: "text"}, a = "g", s = [], l = 0; l < n.length; l++) {
                                var c = n[l];
                                if (c.defaultToken && (o.defaultToken = c.defaultToken), c.caseInsensitive && (a = "gi"), null != c.regex) {
                                    c.regex instanceof RegExp && (c.regex = c.regex.toString().slice(1, -1));
                                    var u = c.regex, h = new RegExp("(?:(" + u + ")|(.))").exec("a").length - 2;
                                    Array.isArray(c.token) ? 1 == c.token.length || 1 == h ? c.token = c.token[0] : h - 1 != c.token.length ? (this.reportError("number of classes and regexp groups doesn't match", {
                                        rule: c,
                                        groupCount: h - 1
                                    }), c.token = c.token[0]) : (c.tokenArray = c.token, c.token = null, c.onMatch = this.$arrayTokens) : "function" != typeof c.token || c.onMatch || (c.onMatch = h > 1 ? this.$applyToken : c.token), h > 1 && (/\\\d/.test(c.regex) ? u = c.regex.replace(/\\([0-9]+)/g, (function (e, t) {
                                        return "\\" + (parseInt(t, 10) + r + 1)
                                    })) : (h = 1, u = this.removeCapturingGroups(c.regex)), c.splitRegex || "string" == typeof c.token || s.push(c)), o[r] = l, r += h, i.push(u), c.onMatch || (c.onMatch = null)
                                }
                            }
                            i.length || (o[0] = 0, i.push("$")), s.forEach((function (e) {
                                e.splitRegex = this.createSplitterRegexp(e.regex, a)
                            }), this), this.regExps[t] = new RegExp("(" + i.join(")|(") + ")|($)", a)
                        }
                    };
                    (function () {
                        this.$setMaxTokenCount = function (e) {
                            r = 0 | e
                        }, this.$applyToken = function (e) {
                            var t = this.splitRegex.exec(e).slice(1), n = this.token.apply(this, t);
                            if ("string" == typeof n) return [{type: n, value: e}];
                            for (var i = [], r = 0, o = n.length; r < o; r++) t[r] && (i[i.length] = {
                                type: n[r],
                                value: t[r]
                            });
                            return i
                        }, this.$arrayTokens = function (e) {
                            if (!e) return [];
                            var t = this.splitRegex.exec(e);
                            if (!t) return "text";
                            for (var n = [], i = this.tokenArray, r = 0, o = i.length; r < o; r++) t[r + 1] && (n[n.length] = {
                                type: i[r],
                                value: t[r + 1]
                            });
                            return n
                        }, this.removeCapturingGroups = function (e) {
                            return e.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!]|(\()/g, (function (e, t) {
                                return t ? "(?:" : e
                            }))
                        }, this.createSplitterRegexp = function (e, t) {
                            if (-1 != e.indexOf("(?=")) {
                                var n = 0, i = !1, r = {};
                                e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, (function (e, t, o, a, s, l) {
                                    return i ? i = "]" != s : s ? i = !0 : a ? (n == r.stack && (r.end = l + 1, r.stack = -1), n--) : o && (n++, 1 != o.length && (r.stack = n, r.start = l)), e
                                })), null != r.end && /^\)*$/.test(e.substr(r.end)) && (e = e.substring(0, r.start) + e.substr(r.end))
                            }
                            return "^" != e.charAt(0) && (e = "^" + e), "$" != e.charAt(e.length - 1) && (e += "$"), new RegExp(e, (t || "").replace("g", ""))
                        }, this.getLineTokens = function (e, t) {
                            if (t && "string" != typeof t) {
                                var n = t.slice(0);
                                "#tmp" === (t = n[0]) && (n.shift(), t = n.shift())
                            } else n = [];
                            var i = t || "start", o = this.states[i];
                            o || (i = "start", o = this.states[i]);
                            var a = this.matchMappings[i], s = this.regExps[i];
                            s.lastIndex = 0;
                            for (var l, c = [], u = 0, h = 0, d = {type: null, value: ""}; l = s.exec(e);) {
                                var f = a.defaultToken, g = null, p = l[0], m = s.lastIndex;
                                if (m - p.length > u) {
                                    var v = e.substring(u, m - p.length);
                                    d.type == f ? d.value += v : (d.type && c.push(d), d = {type: f, value: v})
                                }
                                for (var y = 0; y < l.length - 2; y++) if (void 0 !== l[y + 1]) {
                                    f = (g = o[a[y]]).onMatch ? g.onMatch(p, i, n, e) : g.token, g.next && (i = "string" == typeof g.next ? g.next : g.next(i, n), (o = this.states[i]) || (this.reportError("state doesn't exist", i), i = "start", o = this.states[i]), a = this.matchMappings[i], u = m, (s = this.regExps[i]).lastIndex = m), g.consumeLineEnd && (u = m);
                                    break
                                }
                                if (p) if ("string" == typeof f) g && !1 === g.merge || d.type !== f ? (d.type && c.push(d), d = {
                                    type: f,
                                    value: p
                                }) : d.value += p; else if (f) for (d.type && c.push(d), d = {
                                    type: null,
                                    value: ""
                                }, y = 0; y < f.length; y++) c.push(f[y]);
                                if (u == e.length) break;
                                if (u = m, h++ > r) {
                                    for (h > 2 * e.length && this.reportError("infinite loop with in ace tokenizer", {
                                        startState: t,
                                        line: e
                                    }); u < e.length;) d.type && c.push(d), d = {
                                        value: e.substring(u, u += 500),
                                        type: "overflow"
                                    };
                                    i = "start", n = [];
                                    break
                                }
                            }
                            return d.type && c.push(d), n.length > 1 && n[0] !== i && n.unshift("#tmp", i), {
                                tokens: c,
                                state: n.length ? n : i
                            }
                        }, this.reportError = i.reportError
                    }).call(o.prototype), t.Tokenizer = o
                })), ace.define("ace/mode/text_highlight_rules", ["require", "exports", "module", "ace/lib/lang"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/lang"), r = function () {
                        this.$rules = {start: [{token: "empty_line", regex: "^$"}, {defaultToken: "text"}]}
                    };
                    (function () {
                        this.addRules = function (e, t) {
                            if (t) for (var n in e) {
                                for (var i = e[n], r = 0; r < i.length; r++) {
                                    var o = i[r];
                                    (o.next || o.onMatch) && ("string" == typeof o.next && 0 !== o.next.indexOf(t) && (o.next = t + o.next), o.nextState && 0 !== o.nextState.indexOf(t) && (o.nextState = t + o.nextState))
                                }
                                this.$rules[t + n] = i
                            } else for (var n in e) this.$rules[n] = e[n]
                        }, this.getRules = function () {
                            return this.$rules
                        }, this.embedRules = function (e, t, n, r, o) {
                            var a = "function" == typeof e ? (new e).getRules() : e;
                            if (r) for (var s = 0; s < r.length; s++) r[s] = t + r[s]; else for (var l in r = [], a) r.push(t + l);
                            if (this.addRules(a, t), n) {
                                var c = Array.prototype[o ? "push" : "unshift"];
                                for (s = 0; s < r.length; s++) c.apply(this.$rules[r[s]], i.deepCopy(n))
                            }
                            this.$embeds || (this.$embeds = []), this.$embeds.push(t)
                        }, this.getEmbeds = function () {
                            return this.$embeds
                        };
                        var e = function (e, t) {
                            return ("start" != e || t.length) && t.unshift(this.nextState, e), this.nextState
                        }, t = function (e, t) {
                            return t.shift(), t.shift() || "start"
                        };
                        this.normalizeRules = function () {
                            var n = 0, i = this.$rules;
                            Object.keys(i).forEach((function r(o) {
                                var a = i[o];
                                a.processed = !0;
                                for (var s = 0; s < a.length; s++) {
                                    var l = a[s], c = null;
                                    Array.isArray(l) && (c = l, l = {}), !l.regex && l.start && (l.regex = l.start, l.next || (l.next = []), l.next.push({defaultToken: l.token}, {
                                        token: l.token + ".end",
                                        regex: l.end || l.start,
                                        next: "pop"
                                    }), l.token = l.token + ".start", l.push = !0);
                                    var u = l.next || l.push;
                                    if (u && Array.isArray(u)) {
                                        var h = l.stateName;
                                        h || ("string" != typeof (h = l.token) && (h = h[0] || ""), i[h] && (h += n++)), i[h] = u, l.next = h, r(h)
                                    } else "pop" == u && (l.next = t);
                                    if (l.push && (l.nextState = l.next || l.push, l.next = e, delete l.push), l.rules) for (var d in l.rules) i[d] ? i[d].push && i[d].push.apply(i[d], l.rules[d]) : i[d] = l.rules[d];
                                    var f = "string" == typeof l ? l : l.include;
                                    if (f && (c = Array.isArray(f) ? f.map((function (e) {
                                        return i[e]
                                    })) : i[f]), c) {
                                        var g = [s, 1].concat(c);
                                        l.noEscape && (g = g.filter((function (e) {
                                            return !e.next
                                        }))), a.splice.apply(a, g), s--
                                    }
                                    l.keywordMap && (l.token = this.createKeywordMapper(l.keywordMap, l.defaultToken || "text", l.caseInsensitive), delete l.defaultToken)
                                }
                            }), this)
                        }, this.createKeywordMapper = function (e, t, n, i) {
                            var r = Object.create(null);
                            return Object.keys(e).forEach((function (t) {
                                var o = e[t];
                                n && (o = o.toLowerCase());
                                for (var a = o.split(i || "|"), s = a.length; s--;) r[a[s]] = t
                            })), Object.getPrototypeOf(r) && (r.__proto__ = null), this.$keywordList = Object.keys(r), e = null, n ? function (e) {
                                return r[e.toLowerCase()] || t
                            } : function (e) {
                                return r[e] || t
                            }
                        }, this.getKeywords = function () {
                            return this.$keywords
                        }
                    }).call(r.prototype), t.TextHighlightRules = r
                })), ace.define("ace/mode/behaviour", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    var i = function () {
                        this.$behaviours = {}
                    };
                    (function () {
                        this.add = function (e, t, n) {
                            switch (void 0) {
                                case this.$behaviours:
                                    this.$behaviours = {};
                                case this.$behaviours[e]:
                                    this.$behaviours[e] = {}
                            }
                            this.$behaviours[e][t] = n
                        }, this.addBehaviours = function (e) {
                            for (var t in e) for (var n in e[t]) this.add(t, n, e[t][n])
                        }, this.remove = function (e) {
                            this.$behaviours && this.$behaviours[e] && delete this.$behaviours[e]
                        }, this.inherit = function (e, t) {
                            if ("function" == typeof e) var n = (new e).getBehaviours(t); else n = e.getBehaviours(t);
                            this.addBehaviours(n)
                        }, this.getBehaviours = function (e) {
                            if (e) {
                                for (var t = {}, n = 0; n < e.length; n++) this.$behaviours[e[n]] && (t[e[n]] = this.$behaviours[e[n]]);
                                return t
                            }
                            return this.$behaviours
                        }
                    }).call(i.prototype), t.Behaviour = i
                })), ace.define("ace/token_iterator", ["require", "exports", "module", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("./range").Range, r = function (e, t, n) {
                        this.$session = e, this.$row = t, this.$rowTokens = e.getTokens(t);
                        var i = e.getTokenAt(t, n);
                        this.$tokenIndex = i ? i.index : -1
                    };
                    (function () {
                        this.stepBackward = function () {
                            for (this.$tokenIndex -= 1; this.$tokenIndex < 0;) {
                                if (this.$row -= 1, this.$row < 0) return this.$row = 0, null;
                                this.$rowTokens = this.$session.getTokens(this.$row), this.$tokenIndex = this.$rowTokens.length - 1
                            }
                            return this.$rowTokens[this.$tokenIndex]
                        }, this.stepForward = function () {
                            var e;
                            for (this.$tokenIndex += 1; this.$tokenIndex >= this.$rowTokens.length;) {
                                if (this.$row += 1, e || (e = this.$session.getLength()), this.$row >= e) return this.$row = e - 1, null;
                                this.$rowTokens = this.$session.getTokens(this.$row), this.$tokenIndex = 0
                            }
                            return this.$rowTokens[this.$tokenIndex]
                        }, this.getCurrentToken = function () {
                            return this.$rowTokens[this.$tokenIndex]
                        }, this.getCurrentTokenRow = function () {
                            return this.$row
                        }, this.getCurrentTokenColumn = function () {
                            var e = this.$rowTokens, t = this.$tokenIndex, n = e[t].start;
                            if (void 0 !== n) return n;
                            for (n = 0; t > 0;) n += e[t -= 1].value.length;
                            return n
                        }, this.getCurrentTokenPosition = function () {
                            return {row: this.$row, column: this.getCurrentTokenColumn()}
                        }, this.getCurrentTokenRange = function () {
                            var e = this.$rowTokens[this.$tokenIndex], t = this.getCurrentTokenColumn();
                            return new i(this.$row, t, this.$row, t + e.value.length)
                        }
                    }).call(r.prototype), t.TokenIterator = r
                })), ace.define("ace/mode/behaviour/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], (function (e, t, n) {
                    "use strict";
                    var i, r = e("../../lib/oop"), o = e("../behaviour").Behaviour,
                        a = e("../../token_iterator").TokenIterator, s = e("../../lib/lang"),
                        l = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"],
                        c = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"], u = {},
                        h = {'"': '"', "'": "'"}, d = function (e) {
                            var t = -1;
                            if (e.multiSelect && (t = e.selection.index, u.rangeCount != e.multiSelect.rangeCount && (u = {rangeCount: e.multiSelect.rangeCount})), u[t]) return i = u[t];
                            i = u[t] = {
                                autoInsertedBrackets: 0,
                                autoInsertedRow: -1,
                                autoInsertedLineEnd: "",
                                maybeInsertedBrackets: 0,
                                maybeInsertedRow: -1,
                                maybeInsertedLineStart: "",
                                maybeInsertedLineEnd: ""
                            }
                        }, f = function (e, t, n, i) {
                            var r = e.end.row - e.start.row;
                            return {text: n + t + i, selection: [0, e.start.column + 1, r, e.end.column + (r ? 0 : 1)]}
                        }, g = function (e) {
                            this.add("braces", "insertion", (function (t, n, r, o, a) {
                                var l = r.getCursorPosition(), c = o.doc.getLine(l.row);
                                if ("{" == a) {
                                    d(r);
                                    var u = r.getSelectionRange(), h = o.doc.getTextRange(u);
                                    if ("" !== h && "{" !== h && r.getWrapBehavioursEnabled()) return f(u, h, "{", "}");
                                    if (g.isSaneInsertion(r, o)) return /[\]\}\)]/.test(c[l.column]) || r.inMultiSelectMode || e && e.braces ? (g.recordAutoInsert(r, o, "}"), {
                                        text: "{}",
                                        selection: [1, 1]
                                    }) : (g.recordMaybeInsert(r, o, "{"), {text: "{", selection: [1, 1]})
                                } else if ("}" == a) {
                                    if (d(r), "}" == c.substring(l.column, l.column + 1) && null !== o.$findOpeningBracket("}", {
                                        column: l.column + 1,
                                        row: l.row
                                    }) && g.isAutoInsertedClosing(l, c, a)) return g.popAutoInsertedClosing(), {
                                        text: "",
                                        selection: [1, 1]
                                    }
                                } else {
                                    if ("\n" == a || "\r\n" == a) {
                                        d(r);
                                        var p = "";
                                        if (g.isMaybeInsertedClosing(l, c) && (p = s.stringRepeat("}", i.maybeInsertedBrackets), g.clearMaybeInsertedClosing()), "}" === c.substring(l.column, l.column + 1)) {
                                            var m = o.findMatchingBracket({row: l.row, column: l.column + 1}, "}");
                                            if (!m) return null;
                                            var v = this.$getIndent(o.getLine(m.row))
                                        } else {
                                            if (!p) return void g.clearMaybeInsertedClosing();
                                            v = this.$getIndent(c)
                                        }
                                        var y = v + o.getTabString();
                                        return {text: "\n" + y + "\n" + v + p, selection: [1, y.length, 1, y.length]}
                                    }
                                    g.clearMaybeInsertedClosing()
                                }
                            })), this.add("braces", "deletion", (function (e, t, n, r, o) {
                                var a = r.doc.getTextRange(o);
                                if (!o.isMultiLine() && "{" == a) {
                                    if (d(n), "}" == r.doc.getLine(o.start.row).substring(o.end.column, o.end.column + 1)) return o.end.column++, o;
                                    i.maybeInsertedBrackets--
                                }
                            })), this.add("parens", "insertion", (function (e, t, n, i, r) {
                                if ("(" == r) {
                                    d(n);
                                    var o = n.getSelectionRange(), a = i.doc.getTextRange(o);
                                    if ("" !== a && n.getWrapBehavioursEnabled()) return f(o, a, "(", ")");
                                    if (g.isSaneInsertion(n, i)) return g.recordAutoInsert(n, i, ")"), {
                                        text: "()",
                                        selection: [1, 1]
                                    }
                                } else if (")" == r) {
                                    d(n);
                                    var s = n.getCursorPosition(), l = i.doc.getLine(s.row);
                                    if (")" == l.substring(s.column, s.column + 1) && null !== i.$findOpeningBracket(")", {
                                        column: s.column + 1,
                                        row: s.row
                                    }) && g.isAutoInsertedClosing(s, l, r)) return g.popAutoInsertedClosing(), {
                                        text: "",
                                        selection: [1, 1]
                                    }
                                }
                            })), this.add("parens", "deletion", (function (e, t, n, i, r) {
                                var o = i.doc.getTextRange(r);
                                if (!r.isMultiLine() && "(" == o && (d(n), ")" == i.doc.getLine(r.start.row).substring(r.start.column + 1, r.start.column + 2))) return r.end.column++, r
                            })), this.add("brackets", "insertion", (function (e, t, n, i, r) {
                                if ("[" == r) {
                                    d(n);
                                    var o = n.getSelectionRange(), a = i.doc.getTextRange(o);
                                    if ("" !== a && n.getWrapBehavioursEnabled()) return f(o, a, "[", "]");
                                    if (g.isSaneInsertion(n, i)) return g.recordAutoInsert(n, i, "]"), {
                                        text: "[]",
                                        selection: [1, 1]
                                    }
                                } else if ("]" == r) {
                                    d(n);
                                    var s = n.getCursorPosition(), l = i.doc.getLine(s.row);
                                    if ("]" == l.substring(s.column, s.column + 1) && null !== i.$findOpeningBracket("]", {
                                        column: s.column + 1,
                                        row: s.row
                                    }) && g.isAutoInsertedClosing(s, l, r)) return g.popAutoInsertedClosing(), {
                                        text: "",
                                        selection: [1, 1]
                                    }
                                }
                            })), this.add("brackets", "deletion", (function (e, t, n, i, r) {
                                var o = i.doc.getTextRange(r);
                                if (!r.isMultiLine() && "[" == o && (d(n), "]" == i.doc.getLine(r.start.row).substring(r.start.column + 1, r.start.column + 2))) return r.end.column++, r
                            })), this.add("string_dquotes", "insertion", (function (e, t, n, i, r) {
                                var o = i.$mode.$quotes || h;
                                if (1 == r.length && o[r]) {
                                    if (this.lineCommentStart && -1 != this.lineCommentStart.indexOf(r)) return;
                                    d(n);
                                    var a = r, s = n.getSelectionRange(), l = i.doc.getTextRange(s);
                                    if (!("" === l || 1 == l.length && o[l]) && n.getWrapBehavioursEnabled()) return f(s, l, a, a);
                                    if (!l) {
                                        var c = n.getCursorPosition(), u = i.doc.getLine(c.row),
                                            g = u.substring(c.column - 1, c.column),
                                            p = u.substring(c.column, c.column + 1), m = i.getTokenAt(c.row, c.column),
                                            v = i.getTokenAt(c.row, c.column + 1);
                                        if ("\\" == g && m && /escape/.test(m.type)) return null;
                                        var y, b = m && /string|escape/.test(m.type),
                                            C = !v || /string|escape/.test(v.type);
                                        if (p == a) (y = b !== C) && /string\.end/.test(v.type) && (y = !1); else {
                                            if (b && !C) return null;
                                            if (b && C) return null;
                                            var w = i.$mode.tokenRe;
                                            w.lastIndex = 0;
                                            var I = w.test(g);
                                            w.lastIndex = 0;
                                            var x = w.test(g);
                                            if (I || x) return null;
                                            if (p && !/[\s;,.})\]\\]/.test(p)) return null;
                                            var A = u[c.column - 2];
                                            if (g == a && (A == a || w.test(A))) return null;
                                            y = !0
                                        }
                                        return {text: y ? a + a : "", selection: [1, 1]}
                                    }
                                }
                            })), this.add("string_dquotes", "deletion", (function (e, t, n, i, r) {
                                var o = i.$mode.$quotes || h, a = i.doc.getTextRange(r);
                                if (!r.isMultiLine() && o.hasOwnProperty(a) && (d(n), i.doc.getLine(r.start.row).substring(r.start.column + 1, r.start.column + 2) == a)) return r.end.column++, r
                            }))
                        };
                    g.isSaneInsertion = function (e, t) {
                        var n = e.getCursorPosition(), i = new a(t, n.row, n.column);
                        if (!this.$matchTokenType(i.getCurrentToken() || "text", l)) {
                            if (/[)}\]]/.test(e.session.getLine(n.row)[n.column])) return !0;
                            var r = new a(t, n.row, n.column + 1);
                            if (!this.$matchTokenType(r.getCurrentToken() || "text", l)) return !1
                        }
                        return i.stepForward(), i.getCurrentTokenRow() !== n.row || this.$matchTokenType(i.getCurrentToken() || "text", c)
                    }, g.$matchTokenType = function (e, t) {
                        return t.indexOf(e.type || e) > -1
                    }, g.recordAutoInsert = function (e, t, n) {
                        var r = e.getCursorPosition(), o = t.doc.getLine(r.row);
                        this.isAutoInsertedClosing(r, o, i.autoInsertedLineEnd[0]) || (i.autoInsertedBrackets = 0), i.autoInsertedRow = r.row, i.autoInsertedLineEnd = n + o.substr(r.column), i.autoInsertedBrackets++
                    }, g.recordMaybeInsert = function (e, t, n) {
                        var r = e.getCursorPosition(), o = t.doc.getLine(r.row);
                        this.isMaybeInsertedClosing(r, o) || (i.maybeInsertedBrackets = 0), i.maybeInsertedRow = r.row, i.maybeInsertedLineStart = o.substr(0, r.column) + n, i.maybeInsertedLineEnd = o.substr(r.column), i.maybeInsertedBrackets++
                    }, g.isAutoInsertedClosing = function (e, t, n) {
                        return i.autoInsertedBrackets > 0 && e.row === i.autoInsertedRow && n === i.autoInsertedLineEnd[0] && t.substr(e.column) === i.autoInsertedLineEnd
                    }, g.isMaybeInsertedClosing = function (e, t) {
                        return i.maybeInsertedBrackets > 0 && e.row === i.maybeInsertedRow && t.substr(e.column) === i.maybeInsertedLineEnd && t.substr(0, e.column) == i.maybeInsertedLineStart
                    }, g.popAutoInsertedClosing = function () {
                        i.autoInsertedLineEnd = i.autoInsertedLineEnd.substr(1), i.autoInsertedBrackets--
                    }, g.clearMaybeInsertedClosing = function () {
                        i && (i.maybeInsertedBrackets = 0, i.maybeInsertedRow = -1)
                    }, r.inherits(g, o), t.CstyleBehaviour = g
                })), ace.define("ace/unicode", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    for (var i = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2], r = 0, o = [], a = 0; a < i.length; a += 2) o.push(r += i[a]), i[a + 1] && o.push(45, r += i[a + 1]);
                    t.wordChars = String.fromCharCode.apply(null, o)
                })), ace.define("ace/mode/text", ["require", "exports", "module", "ace/config", "ace/tokenizer", "ace/mode/text_highlight_rules", "ace/mode/behaviour/cstyle", "ace/unicode", "ace/lib/lang", "ace/token_iterator", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../config"), r = e("../tokenizer").Tokenizer,
                        o = e("./text_highlight_rules").TextHighlightRules, a = e("./behaviour/cstyle").CstyleBehaviour,
                        s = e("../unicode"), l = e("../lib/lang"), c = e("../token_iterator").TokenIterator,
                        u = e("../range").Range, h = function () {
                            this.HighlightRules = o
                        };
                    (function () {
                        this.$defaultBehaviour = new a, this.tokenRe = new RegExp("^[" + s.wordChars + "\\$_]+", "g"), this.nonTokenRe = new RegExp("^(?:[^" + s.wordChars + "\\$_]|\\s])+", "g"), this.getTokenizer = function () {
                            return this.$tokenizer || (this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig), this.$tokenizer = new r(this.$highlightRules.getRules())), this.$tokenizer
                        }, this.lineCommentStart = "", this.blockComment = "", this.toggleCommentLines = function (e, t, n, i) {
                            var r = t.doc, o = !0, a = !0, s = 1 / 0, c = t.getTabSize(), u = !1;
                            if (this.lineCommentStart) {
                                Array.isArray(this.lineCommentStart) ? (p = this.lineCommentStart.map(l.escapeRegExp).join("|"), f = this.lineCommentStart[0]) : (p = l.escapeRegExp(this.lineCommentStart), f = this.lineCommentStart), p = new RegExp("^(\\s*)(?:" + p + ") ?"), u = t.getUseSoftTabs(), y = function (e, t) {
                                    var n = e.match(p);
                                    if (n) {
                                        var i = n[1].length, o = n[0].length;
                                        d(e, i, o) || " " != n[0][o - 1] || o--, r.removeInLine(t, i, o)
                                    }
                                };
                                var h = f + " ", d = (v = function (e, t) {
                                    o && !/\S/.test(e) || (d(e, s, s) ? r.insertInLine({
                                        row: t,
                                        column: s
                                    }, h) : r.insertInLine({row: t, column: s}, f))
                                }, b = function (e, t) {
                                    return p.test(e)
                                }, function (e, t, n) {
                                    for (var i = 0; t-- && " " == e.charAt(t);) i++;
                                    if (i % c != 0) return !1;
                                    for (i = 0; " " == e.charAt(n++);) i++;
                                    return c > 2 ? i % c != c - 1 : i % c == 0
                                })
                            } else {
                                if (!this.blockComment) return !1;
                                var f = this.blockComment.start, g = this.blockComment.end,
                                    p = new RegExp("^(\\s*)(?:" + l.escapeRegExp(f) + ")"),
                                    m = new RegExp("(?:" + l.escapeRegExp(g) + ")\\s*$"), v = function (e, t) {
                                        b(e, t) || o && !/\S/.test(e) || (r.insertInLine({
                                            row: t,
                                            column: e.length
                                        }, g), r.insertInLine({row: t, column: s}, f))
                                    }, y = function (e, t) {
                                        var n;
                                        (n = e.match(m)) && r.removeInLine(t, e.length - n[0].length, e.length), (n = e.match(p)) && r.removeInLine(t, n[1].length, n[0].length)
                                    }, b = function (e, n) {
                                        if (p.test(e)) return !0;
                                        for (var i = t.getTokens(n), r = 0; r < i.length; r++) if ("comment" === i[r].type) return !0
                                    }
                            }

                            function C(e) {
                                for (var t = n; t <= i; t++) e(r.getLine(t), t)
                            }

                            var w = 1 / 0;
                            C((function (e, t) {
                                var n = e.search(/\S/);
                                -1 !== n ? (n < s && (s = n), a && !b(e, t) && (a = !1)) : w > e.length && (w = e.length)
                            })), s == 1 / 0 && (s = w, o = !1, a = !1), u && s % c != 0 && (s = Math.floor(s / c) * c), C(a ? y : v)
                        }, this.toggleBlockComment = function (e, t, n, i) {
                            var r = this.blockComment;
                            if (r) {
                                !r.start && r[0] && (r = r[0]);
                                var o, a, s = (p = new c(t, i.row, i.column)).getCurrentToken(),
                                    l = (t.selection, t.selection.toOrientedRange());
                                if (s && /comment/.test(s.type)) {
                                    for (var h, d; s && /comment/.test(s.type);) {
                                        if (-1 != (m = s.value.indexOf(r.start))) {
                                            var f = p.getCurrentTokenRow(), g = p.getCurrentTokenColumn() + m;
                                            h = new u(f, g, f, g + r.start.length);
                                            break
                                        }
                                        s = p.stepBackward()
                                    }
                                    var p;
                                    for (s = (p = new c(t, i.row, i.column)).getCurrentToken(); s && /comment/.test(s.type);) {
                                        var m;
                                        if (-1 != (m = s.value.indexOf(r.end))) {
                                            f = p.getCurrentTokenRow(), g = p.getCurrentTokenColumn() + m, d = new u(f, g, f, g + r.end.length);
                                            break
                                        }
                                        s = p.stepForward()
                                    }
                                    d && t.remove(d), h && (t.remove(h), o = h.start.row, a = -r.start.length)
                                } else a = r.start.length, o = n.start.row, t.insert(n.end, r.end), t.insert(n.start, r.start);
                                l.start.row == o && (l.start.column += a), l.end.row == o && (l.end.column += a), t.selection.fromOrientedRange(l)
                            }
                        }, this.getNextLineIndent = function (e, t, n) {
                            return this.$getIndent(t)
                        }, this.checkOutdent = function (e, t, n) {
                            return !1
                        }, this.autoOutdent = function (e, t, n) {
                        }, this.$getIndent = function (e) {
                            return e.match(/^\s*/)[0]
                        }, this.createWorker = function (e) {
                            return null
                        }, this.createModeDelegates = function (e) {
                            for (var t in this.$embeds = [], this.$modes = {}, e) if (e[t]) {
                                var n = e[t], r = n.prototype.$id, o = i.$modes[r];
                                o || (i.$modes[r] = o = new n), i.$modes[t] || (i.$modes[t] = o), this.$embeds.push(t), this.$modes[t] = o
                            }
                            var a = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", "checkOutdent", "autoOutdent", "transformAction", "getCompletions"];
                            for (t = 0; t < a.length; t++) !function (e) {
                                var n = a[t], i = e[n];
                                e[a[t]] = function () {
                                    return this.$delegator(n, arguments, i)
                                }
                            }(this)
                        }, this.$delegator = function (e, t, n) {
                            var i = t[0] || "start";
                            if ("string" != typeof i) {
                                if (Array.isArray(i[2])) {
                                    var r = i[2][i[2].length - 1];
                                    if (a = this.$modes[r]) return a[e].apply(a, [i[1]].concat([].slice.call(t, 1)))
                                }
                                i = i[0] || "start"
                            }
                            for (var o = 0; o < this.$embeds.length; o++) if (this.$modes[this.$embeds[o]]) {
                                var a, s = i.split(this.$embeds[o]);
                                if (!s[0] && s[1]) return t[0] = s[1], (a = this.$modes[this.$embeds[o]])[e].apply(a, t)
                            }
                            var l = n.apply(this, t);
                            return n ? l : void 0
                        }, this.transformAction = function (e, t, n, i, r) {
                            if (this.$behaviour) {
                                var o = this.$behaviour.getBehaviours();
                                for (var a in o) if (o[a][t]) {
                                    var s = o[a][t].apply(this, arguments);
                                    if (s) return s
                                }
                            }
                        }, this.getKeywords = function (e) {
                            if (!this.completionKeywords) {
                                var t = this.$tokenizer.rules, n = [];
                                for (var i in t) for (var r = t[i], o = 0, a = r.length; o < a; o++) if ("string" == typeof r[o].token) /keyword|support|storage/.test(r[o].token) && n.push(r[o].regex); else if ("object" == typeof r[o].token) for (var s = 0, l = r[o].token.length; s < l; s++) /keyword|support|storage/.test(r[o].token[s]) && (i = r[o].regex.match(/\(.+?\)/g)[s], n.push(i.substr(1, i.length - 2)));
                                this.completionKeywords = n
                            }
                            return e ? n.concat(this.$keywordList || []) : this.$keywordList
                        }, this.$createKeywordList = function () {
                            return this.$highlightRules || this.getTokenizer(), this.$keywordList = this.$highlightRules.$keywordList || []
                        }, this.getCompletions = function (e, t, n, i) {
                            return (this.$keywordList || this.$createKeywordList()).map((function (e) {
                                return {name: e, value: e, score: 0, meta: "keyword"}
                            }))
                        }, this.$id = "ace/mode/text"
                    }).call(h.prototype), t.Mode = h
                })), ace.define("ace/apply_delta", ["require", "exports", "module"], (function (e, t, n) {
                    "use strict";
                    t.applyDelta = function (e, t, n) {
                        var i = t.start.row, r = t.start.column, o = e[i] || "";
                        switch (t.action) {
                            case"insert":
                                if (1 === t.lines.length) e[i] = o.substring(0, r) + t.lines[0] + o.substring(r); else {
                                    var a = [i, 1].concat(t.lines);
                                    e.splice.apply(e, a), e[i] = o.substring(0, r) + e[i], e[i + t.lines.length - 1] += o.substring(r)
                                }
                                break;
                            case"remove":
                                var s = t.end.column, l = t.end.row;
                                i === l ? e[i] = o.substring(0, r) + o.substring(s) : e.splice(i, l - i + 1, o.substring(0, r) + e[l].substring(s))
                        }
                    }
                })), ace.define("ace/anchor", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./lib/event_emitter").EventEmitter,
                        o = t.Anchor = function (e, t, n) {
                            this.$onChange = this.onChange.bind(this), this.attach(e), void 0 === n ? this.setPosition(t.row, t.column) : this.setPosition(t, n)
                        };
                    (function () {
                        function e(e, t, n) {
                            var i = n ? e.column <= t.column : e.column < t.column;
                            return e.row < t.row || e.row == t.row && i
                        }

                        i.implement(this, r), this.getPosition = function () {
                            return this.$clipPositionToDocument(this.row, this.column)
                        }, this.getDocument = function () {
                            return this.document
                        }, this.$insertRight = !1, this.onChange = function (t) {
                            if (!(t.start.row == t.end.row && t.start.row != this.row || t.start.row > this.row)) {
                                var n = function (t, n, i) {
                                    var r = "insert" == t.action, o = (r ? 1 : -1) * (t.end.row - t.start.row),
                                        a = (r ? 1 : -1) * (t.end.column - t.start.column), s = t.start,
                                        l = r ? s : t.end;
                                    return e(n, s, i) ? {row: n.row, column: n.column} : e(l, n, !i) ? {
                                        row: n.row + o,
                                        column: n.column + (n.row == l.row ? a : 0)
                                    } : {row: s.row, column: s.column}
                                }(t, {row: this.row, column: this.column}, this.$insertRight);
                                this.setPosition(n.row, n.column, !0)
                            }
                        }, this.setPosition = function (e, t, n) {
                            var i;
                            if (i = n ? {
                                row: e,
                                column: t
                            } : this.$clipPositionToDocument(e, t), this.row != i.row || this.column != i.column) {
                                var r = {row: this.row, column: this.column};
                                this.row = i.row, this.column = i.column, this._signal("change", {old: r, value: i})
                            }
                        }, this.detach = function () {
                            this.document.off("change", this.$onChange)
                        }, this.attach = function (e) {
                            this.document = e || this.document, this.document.on("change", this.$onChange)
                        }, this.$clipPositionToDocument = function (e, t) {
                            var n = {};
                            return e >= this.document.getLength() ? (n.row = Math.max(0, this.document.getLength() - 1), n.column = this.document.getLine(n.row).length) : e < 0 ? (n.row = 0, n.column = 0) : (n.row = e, n.column = Math.min(this.document.getLine(n.row).length, Math.max(0, t))), t < 0 && (n.column = 0), n
                        }
                    }).call(o.prototype)
                })), ace.define("ace/document", ["require", "exports", "module", "ace/lib/oop", "ace/apply_delta", "ace/lib/event_emitter", "ace/range", "ace/anchor"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./apply_delta").applyDelta,
                        o = e("./lib/event_emitter").EventEmitter, a = e("./range").Range, s = e("./anchor").Anchor,
                        l = function (e) {
                            this.$lines = [""], 0 === e.length ? this.$lines = [""] : Array.isArray(e) ? this.insertMergedLines({
                                row: 0,
                                column: 0
                            }, e) : this.insert({row: 0, column: 0}, e)
                        };
                    (function () {
                        i.implement(this, o), this.setValue = function (e) {
                            var t = this.getLength() - 1;
                            this.remove(new a(0, 0, t, this.getLine(t).length)), this.insert({row: 0, column: 0}, e)
                        }, this.getValue = function () {
                            return this.getAllLines().join(this.getNewLineCharacter())
                        }, this.createAnchor = function (e, t) {
                            return new s(this, e, t)
                        }, 0 === "aaa".split(/a/).length ? this.$split = function (e) {
                            return e.replace(/\r\n|\r/g, "\n").split("\n")
                        } : this.$split = function (e) {
                            return e.split(/\r\n|\r|\n/)
                        }, this.$detectNewLine = function (e) {
                            var t = e.match(/^.*?(\r\n|\r|\n)/m);
                            this.$autoNewLine = t ? t[1] : "\n", this._signal("changeNewLineMode")
                        }, this.getNewLineCharacter = function () {
                            switch (this.$newLineMode) {
                                case"windows":
                                    return "\r\n";
                                case"unix":
                                    return "\n";
                                default:
                                    return this.$autoNewLine || "\n"
                            }
                        }, this.$autoNewLine = "", this.$newLineMode = "auto", this.setNewLineMode = function (e) {
                            this.$newLineMode !== e && (this.$newLineMode = e, this._signal("changeNewLineMode"))
                        }, this.getNewLineMode = function () {
                            return this.$newLineMode
                        }, this.isNewLine = function (e) {
                            return "\r\n" == e || "\r" == e || "\n" == e
                        }, this.getLine = function (e) {
                            return this.$lines[e] || ""
                        }, this.getLines = function (e, t) {
                            return this.$lines.slice(e, t + 1)
                        }, this.getAllLines = function () {
                            return this.getLines(0, this.getLength())
                        }, this.getLength = function () {
                            return this.$lines.length
                        }, this.getTextRange = function (e) {
                            return this.getLinesForRange(e).join(this.getNewLineCharacter())
                        }, this.getLinesForRange = function (e) {
                            var t;
                            if (e.start.row === e.end.row) t = [this.getLine(e.start.row).substring(e.start.column, e.end.column)]; else {
                                (t = this.getLines(e.start.row, e.end.row))[0] = (t[0] || "").substring(e.start.column);
                                var n = t.length - 1;
                                e.end.row - e.start.row == n && (t[n] = t[n].substring(0, e.end.column))
                            }
                            return t
                        }, this.insertLines = function (e, t) {
                            return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."), this.insertFullLines(e, t)
                        }, this.removeLines = function (e, t) {
                            return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."), this.removeFullLines(e, t)
                        }, this.insertNewLine = function (e) {
                            return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."), this.insertMergedLines(e, ["", ""])
                        }, this.insert = function (e, t) {
                            return this.getLength() <= 1 && this.$detectNewLine(t), this.insertMergedLines(e, this.$split(t))
                        }, this.insertInLine = function (e, t) {
                            var n = this.clippedPos(e.row, e.column), i = this.pos(e.row, e.column + t.length);
                            return this.applyDelta({
                                start: n,
                                end: i,
                                action: "insert",
                                lines: [t]
                            }, !0), this.clonePos(i)
                        }, this.clippedPos = function (e, t) {
                            var n = this.getLength();
                            void 0 === e ? e = n : e < 0 ? e = 0 : e >= n && (e = n - 1, t = void 0);
                            var i = this.getLine(e);
                            return null == t && (t = i.length), {row: e, column: t = Math.min(Math.max(t, 0), i.length)}
                        }, this.clonePos = function (e) {
                            return {row: e.row, column: e.column}
                        }, this.pos = function (e, t) {
                            return {row: e, column: t}
                        }, this.$clipPosition = function (e) {
                            var t = this.getLength();
                            return e.row >= t ? (e.row = Math.max(0, t - 1), e.column = this.getLine(t - 1).length) : (e.row = Math.max(0, e.row), e.column = Math.min(Math.max(e.column, 0), this.getLine(e.row).length)), e
                        }, this.insertFullLines = function (e, t) {
                            var n = 0;
                            (e = Math.min(Math.max(e, 0), this.getLength())) < this.getLength() ? (t = t.concat([""]), n = 0) : (t = [""].concat(t), e--, n = this.$lines[e].length), this.insertMergedLines({
                                row: e,
                                column: n
                            }, t)
                        }, this.insertMergedLines = function (e, t) {
                            var n = this.clippedPos(e.row, e.column), i = {
                                row: n.row + t.length - 1,
                                column: (1 == t.length ? n.column : 0) + t[t.length - 1].length
                            };
                            return this.applyDelta({start: n, end: i, action: "insert", lines: t}), this.clonePos(i)
                        }, this.remove = function (e) {
                            var t = this.clippedPos(e.start.row, e.start.column),
                                n = this.clippedPos(e.end.row, e.end.column);
                            return this.applyDelta({
                                start: t,
                                end: n,
                                action: "remove",
                                lines: this.getLinesForRange({start: t, end: n})
                            }), this.clonePos(t)
                        }, this.removeInLine = function (e, t, n) {
                            var i = this.clippedPos(e, t), r = this.clippedPos(e, n);
                            return this.applyDelta({
                                start: i,
                                end: r,
                                action: "remove",
                                lines: this.getLinesForRange({start: i, end: r})
                            }, !0), this.clonePos(i)
                        }, this.removeFullLines = function (e, t) {
                            e = Math.min(Math.max(0, e), this.getLength() - 1);
                            var n = (t = Math.min(Math.max(0, t), this.getLength() - 1)) == this.getLength() - 1 && e > 0,
                                i = t < this.getLength() - 1, r = n ? e - 1 : e, o = n ? this.getLine(r).length : 0,
                                s = i ? t + 1 : t, l = i ? 0 : this.getLine(s).length, c = new a(r, o, s, l),
                                u = this.$lines.slice(e, t + 1);
                            return this.applyDelta({
                                start: c.start,
                                end: c.end,
                                action: "remove",
                                lines: this.getLinesForRange(c)
                            }), u
                        }, this.removeNewLine = function (e) {
                            e < this.getLength() - 1 && e >= 0 && this.applyDelta({
                                start: this.pos(e, this.getLine(e).length),
                                end: this.pos(e + 1, 0),
                                action: "remove",
                                lines: ["", ""]
                            })
                        }, this.replace = function (e, t) {
                            return e instanceof a || (e = a.fromPoints(e.start, e.end)), 0 === t.length && e.isEmpty() ? e.start : t == this.getTextRange(e) ? e.end : (this.remove(e), t ? this.insert(e.start, t) : e.start)
                        }, this.applyDeltas = function (e) {
                            for (var t = 0; t < e.length; t++) this.applyDelta(e[t])
                        }, this.revertDeltas = function (e) {
                            for (var t = e.length - 1; t >= 0; t--) this.revertDelta(e[t])
                        }, this.applyDelta = function (e, t) {
                            var n = "insert" == e.action;
                            (n ? e.lines.length <= 1 && !e.lines[0] : !a.comparePoints(e.start, e.end)) || (n && e.lines.length > 2e4 ? this.$splitAndapplyLargeDelta(e, 2e4) : (r(this.$lines, e, t), this._signal("change", e)))
                        }, this.$safeApplyDelta = function (e) {
                            var t = this.$lines.length;
                            ("remove" == e.action && e.start.row < t && e.end.row < t || "insert" == e.action && e.start.row <= t) && this.applyDelta(e)
                        }, this.$splitAndapplyLargeDelta = function (e, t) {
                            for (var n = e.lines, i = n.length - t + 1, r = e.start.row, o = e.start.column, a = 0, s = 0; a < i; a = s) {
                                s += t - 1;
                                var l = n.slice(a, s);
                                l.push(""), this.applyDelta({
                                    start: this.pos(r + a, o),
                                    end: this.pos(r + s, o = 0),
                                    action: e.action,
                                    lines: l
                                }, !0)
                            }
                            e.lines = n.slice(a), e.start.row = r + a, e.start.column = o, this.applyDelta(e, !0)
                        }, this.revertDelta = function (e) {
                            this.$safeApplyDelta({
                                start: this.clonePos(e.start),
                                end: this.clonePos(e.end),
                                action: "insert" == e.action ? "remove" : "insert",
                                lines: e.lines.slice()
                            })
                        }, this.indexToPosition = function (e, t) {
                            for (var n = this.$lines || this.getAllLines(), i = this.getNewLineCharacter().length, r = t || 0, o = n.length; r < o; r++) if ((e -= n[r].length + i) < 0) return {
                                row: r,
                                column: e + n[r].length + i
                            };
                            return {row: o - 1, column: e + n[o - 1].length + i}
                        }, this.positionToIndex = function (e, t) {
                            for (var n = this.$lines || this.getAllLines(), i = this.getNewLineCharacter().length, r = 0, o = Math.min(e.row, n.length), a = t || 0; a < o; ++a) r += n[a].length + i;
                            return r + e.column
                        }
                    }).call(l.prototype), t.Document = l
                })), ace.define("ace/background_tokenizer", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./lib/event_emitter").EventEmitter, o = function (e, t) {
                        this.running = !1, this.lines = [], this.states = [], this.currentLine = 0, this.tokenizer = e;
                        var n = this;
                        this.$worker = function () {
                            if (n.running) {
                                for (var e = new Date, t = n.currentLine, i = -1, r = n.doc, o = t; n.lines[t];) t++;
                                var a = r.getLength(), s = 0;
                                for (n.running = !1; t < a;) {
                                    n.$tokenizeRow(t), i = t;
                                    do {
                                        t++
                                    } while (n.lines[t]);
                                    if (++s % 5 == 0 && new Date - e > 20) {
                                        n.running = setTimeout(n.$worker, 20);
                                        break
                                    }
                                }
                                n.currentLine = t, -1 == i && (i = t), o <= i && n.fireUpdateEvent(o, i)
                            }
                        }
                    };
                    (function () {
                        i.implement(this, r), this.setTokenizer = function (e) {
                            this.tokenizer = e, this.lines = [], this.states = [], this.start(0)
                        }, this.setDocument = function (e) {
                            this.doc = e, this.lines = [], this.states = [], this.stop()
                        }, this.fireUpdateEvent = function (e, t) {
                            var n = {first: e, last: t};
                            this._signal("update", {data: n})
                        }, this.start = function (e) {
                            this.currentLine = Math.min(e || 0, this.currentLine, this.doc.getLength()), this.lines.splice(this.currentLine, this.lines.length), this.states.splice(this.currentLine, this.states.length), this.stop(), this.running = setTimeout(this.$worker, 700)
                        }, this.scheduleStart = function () {
                            this.running || (this.running = setTimeout(this.$worker, 700))
                        }, this.$updateOnChange = function (e) {
                            var t = e.start.row, n = e.end.row - t;
                            if (0 === n) this.lines[t] = null; else if ("remove" == e.action) this.lines.splice(t, n + 1, null), this.states.splice(t, n + 1, null); else {
                                var i = Array(n + 1);
                                i.unshift(t, 1), this.lines.splice.apply(this.lines, i), this.states.splice.apply(this.states, i)
                            }
                            this.currentLine = Math.min(t, this.currentLine, this.doc.getLength()), this.stop()
                        }, this.stop = function () {
                            this.running && clearTimeout(this.running), this.running = !1
                        }, this.getTokens = function (e) {
                            return this.lines[e] || this.$tokenizeRow(e)
                        }, this.getState = function (e) {
                            return this.currentLine == e && this.$tokenizeRow(e), this.states[e] || "start"
                        }, this.$tokenizeRow = function (e) {
                            var t = this.doc.getLine(e), n = this.states[e - 1],
                                i = this.tokenizer.getLineTokens(t, n, e);
                            return this.states[e] + "" != i.state + "" ? (this.states[e] = i.state, this.lines[e + 1] = null, this.currentLine > e + 1 && (this.currentLine = e + 1)) : this.currentLine == e && (this.currentLine = e + 1), this.lines[e] = i.tokens
                        }
                    }).call(o.prototype), t.BackgroundTokenizer = o
                })), ace.define("ace/search_highlight", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/lang"), r = (e("./lib/oop"), e("./range").Range), o = function (e, t, n) {
                        this.setRegexp(e), this.clazz = t, this.type = n || "text"
                    };
                    (function () {
                        this.MAX_RANGES = 500, this.setRegexp = function (e) {
                            this.regExp + "" != e + "" && (this.regExp = e, this.cache = [])
                        }, this.update = function (e, t, n, o) {
                            if (this.regExp) for (var a = o.firstRow, s = o.lastRow, l = a; l <= s; l++) {
                                var c = this.cache[l];
                                null == c && ((c = i.getMatchOffsets(n.getLine(l), this.regExp)).length > this.MAX_RANGES && (c = c.slice(0, this.MAX_RANGES)), c = c.map((function (e) {
                                    return new r(l, e.offset, l, e.offset + e.length)
                                })), this.cache[l] = c.length ? c : "");
                                for (var u = c.length; u--;) t.drawSingleLineMarker(e, c[u].toScreenRange(n), this.clazz, o)
                            }
                        }
                    }).call(o.prototype), t.SearchHighlight = o
                })), ace.define("ace/edit_session/fold_line", ["require", "exports", "module", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../range").Range;

                    function r(e, t) {
                        this.foldData = e, Array.isArray(t) ? this.folds = t : t = this.folds = [t];
                        var n = t[t.length - 1];
                        this.range = new i(t[0].start.row, t[0].start.column, n.end.row, n.end.column), this.start = this.range.start, this.end = this.range.end, this.folds.forEach((function (e) {
                            e.setFoldLine(this)
                        }), this)
                    }

                    (function () {
                        this.shiftRow = function (e) {
                            this.start.row += e, this.end.row += e, this.folds.forEach((function (t) {
                                t.start.row += e, t.end.row += e
                            }))
                        }, this.addFold = function (e) {
                            if (e.sameRow) {
                                if (e.start.row < this.startRow || e.endRow > this.endRow) throw new Error("Can't add a fold to this FoldLine as it has no connection");
                                this.folds.push(e), this.folds.sort((function (e, t) {
                                    return -e.range.compareEnd(t.start.row, t.start.column)
                                })), this.range.compareEnd(e.start.row, e.start.column) > 0 ? (this.end.row = e.end.row, this.end.column = e.end.column) : this.range.compareStart(e.end.row, e.end.column) < 0 && (this.start.row = e.start.row, this.start.column = e.start.column)
                            } else if (e.start.row == this.end.row) this.folds.push(e), this.end.row = e.end.row, this.end.column = e.end.column; else {
                                if (e.end.row != this.start.row) throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");
                                this.folds.unshift(e), this.start.row = e.start.row, this.start.column = e.start.column
                            }
                            e.foldLine = this
                        }, this.containsRow = function (e) {
                            return e >= this.start.row && e <= this.end.row
                        }, this.walk = function (e, t, n) {
                            var i, r, o = 0, a = this.folds, s = !0;
                            null == t && (t = this.end.row, n = this.end.column);
                            for (var l = 0; l < a.length; l++) {
                                if (-1 == (r = (i = a[l]).range.compareStart(t, n))) return void e(null, t, n, o, s);
                                if (!e(null, i.start.row, i.start.column, o, s) && e(i.placeholder, i.start.row, i.start.column, o) || 0 === r) return;
                                s = !i.sameRow, o = i.end.column
                            }
                            e(null, t, n, o, s)
                        }, this.getNextFoldTo = function (e, t) {
                            for (var n, i, r = 0; r < this.folds.length; r++) {
                                if (-1 == (i = (n = this.folds[r]).range.compareEnd(e, t))) return {
                                    fold: n,
                                    kind: "after"
                                };
                                if (0 === i) return {fold: n, kind: "inside"}
                            }
                            return null
                        }, this.addRemoveChars = function (e, t, n) {
                            var i, r, o = this.getNextFoldTo(e, t);
                            if (o) if (i = o.fold, "inside" == o.kind && i.start.column != t && i.start.row != e) window.console && window.console.log(e, t, i); else if (i.start.row == e) {
                                var a = (r = this.folds).indexOf(i);
                                for (0 === a && (this.start.column += n); a < r.length; a++) {
                                    if ((i = r[a]).start.column += n, !i.sameRow) return;
                                    i.end.column += n
                                }
                                this.end.column += n
                            }
                        }, this.split = function (e, t) {
                            var n = this.getNextFoldTo(e, t);
                            if (!n || "inside" == n.kind) return null;
                            var i = n.fold, o = this.folds, a = this.foldData, s = o.indexOf(i), l = o[s - 1];
                            this.end.row = l.end.row, this.end.column = l.end.column;
                            var c = new r(a, o = o.splice(s, o.length - s));
                            return a.splice(a.indexOf(this) + 1, 0, c), c
                        }, this.merge = function (e) {
                            for (var t = e.folds, n = 0; n < t.length; n++) this.addFold(t[n]);
                            var i = this.foldData;
                            i.splice(i.indexOf(e), 1)
                        }, this.toString = function () {
                            var e = [this.range.toString() + ": ["];
                            return this.folds.forEach((function (t) {
                                e.push("  " + t.toString())
                            })), e.push("]"), e.join("\n")
                        }, this.idxToPosition = function (e) {
                            for (var t = 0, n = 0; n < this.folds.length; n++) {
                                var i = this.folds[n];
                                if ((e -= i.start.column - t) < 0) return {
                                    row: i.start.row,
                                    column: i.start.column + e
                                };
                                if ((e -= i.placeholder.length) < 0) return i.start;
                                t = i.end.column
                            }
                            return {row: this.end.row, column: this.end.column + e}
                        }
                    }).call(r.prototype), t.FoldLine = r
                })), ace.define("ace/range_list", ["require", "exports", "module", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("./range").Range.comparePoints, r = function () {
                        this.ranges = [], this.$bias = 1
                    };
                    (function () {
                        this.comparePoints = i, this.pointIndex = function (e, t, n) {
                            for (var r = this.ranges, o = n || 0; o < r.length; o++) {
                                var a = r[o], s = i(e, a.end);
                                if (!(s > 0)) {
                                    var l = i(e, a.start);
                                    return 0 === s ? t && 0 !== l ? -o - 2 : o : l > 0 || 0 === l && !t ? o : -o - 1
                                }
                            }
                            return -o - 1
                        }, this.add = function (e) {
                            var t = !e.isEmpty(), n = this.pointIndex(e.start, t);
                            n < 0 && (n = -n - 1);
                            var i = this.pointIndex(e.end, t, n);
                            return i < 0 ? i = -i - 1 : i++, this.ranges.splice(n, i - n, e)
                        }, this.addList = function (e) {
                            for (var t = [], n = e.length; n--;) t.push.apply(t, this.add(e[n]));
                            return t
                        }, this.substractPoint = function (e) {
                            var t = this.pointIndex(e);
                            if (t >= 0) return this.ranges.splice(t, 1)
                        }, this.merge = function () {
                            for (var e, t = [], n = this.ranges, r = (n = n.sort((function (e, t) {
                                return i(e.start, t.start)
                            })))[0], o = 1; o < n.length; o++) {
                                e = r, r = n[o];
                                var a = i(e.end, r.start);
                                a < 0 || (0 != a || e.isEmpty() || r.isEmpty()) && (i(e.end, r.end) < 0 && (e.end.row = r.end.row, e.end.column = r.end.column), n.splice(o, 1), t.push(r), r = e, o--)
                            }
                            return this.ranges = n, t
                        }, this.contains = function (e, t) {
                            return this.pointIndex({row: e, column: t}) >= 0
                        }, this.containsPoint = function (e) {
                            return this.pointIndex(e) >= 0
                        }, this.rangeAtPoint = function (e) {
                            var t = this.pointIndex(e);
                            if (t >= 0) return this.ranges[t]
                        }, this.clipRows = function (e, t) {
                            var n = this.ranges;
                            if (n[0].start.row > t || n[n.length - 1].start.row < e) return [];
                            var i = this.pointIndex({row: e, column: 0});
                            i < 0 && (i = -i - 1);
                            var r = this.pointIndex({row: t, column: 0}, i);
                            r < 0 && (r = -r - 1);
                            for (var o = [], a = i; a < r; a++) o.push(n[a]);
                            return o
                        }, this.removeAll = function () {
                            return this.ranges.splice(0, this.ranges.length)
                        }, this.attach = function (e) {
                            this.session && this.detach(), this.session = e, this.onChange = this.$onChange.bind(this), this.session.on("change", this.onChange)
                        }, this.detach = function () {
                            this.session && (this.session.removeListener("change", this.onChange), this.session = null)
                        }, this.$onChange = function (e) {
                            for (var t = e.start, n = e.end, i = t.row, r = n.row, o = this.ranges, a = 0, s = o.length; a < s && !((u = o[a]).end.row >= i); a++) ;
                            if ("insert" == e.action) {
                                for (var l = r - i, c = -t.column + n.column; a < s && !((u = o[a]).start.row > i); a++) if (u.start.row == i && u.start.column >= t.column && (u.start.column == t.column && this.$bias <= 0 || (u.start.column += c, u.start.row += l)), u.end.row == i && u.end.column >= t.column) {
                                    if (u.end.column == t.column && this.$bias < 0) continue;
                                    u.end.column == t.column && c > 0 && a < s - 1 && u.end.column > u.start.column && u.end.column == o[a + 1].start.column && (u.end.column -= c), u.end.column += c, u.end.row += l
                                }
                            } else for (l = i - r, c = t.column - n.column; a < s && !((u = o[a]).start.row > r); a++) u.end.row < r && (i < u.end.row || i == u.end.row && t.column < u.end.column) ? (u.end.row = i, u.end.column = t.column) : u.end.row == r ? u.end.column <= n.column ? (l || u.end.column > t.column) && (u.end.column = t.column, u.end.row = t.row) : (u.end.column += c, u.end.row += l) : u.end.row > r && (u.end.row += l), u.start.row < r && (i < u.start.row || i == u.start.row && t.column < u.start.column) ? (u.start.row = i, u.start.column = t.column) : u.start.row == r ? u.start.column <= n.column ? (l || u.start.column > t.column) && (u.start.column = t.column, u.start.row = t.row) : (u.start.column += c, u.start.row += l) : u.start.row > r && (u.start.row += l);
                            if (0 != l && a < s) for (; a < s; a++) {
                                var u;
                                (u = o[a]).start.row += l, u.end.row += l
                            }
                        }
                    }).call(r.prototype), t.RangeList = r
                })), ace.define("ace/edit_session/fold", ["require", "exports", "module", "ace/range_list", "ace/lib/oop"], (function (e, t, n) {
                    "use strict";
                    var i = e("../range_list").RangeList, r = e("../lib/oop"), o = t.Fold = function (e, t) {
                        this.foldLine = null, this.placeholder = t, this.range = e, this.start = e.start, this.end = e.end, this.sameRow = e.start.row == e.end.row, this.subFolds = this.ranges = []
                    };

                    function a(e, t) {
                        e.row -= t.row, 0 == e.row && (e.column -= t.column)
                    }

                    function s(e, t) {
                        0 == e.row && (e.column += t.column), e.row += t.row
                    }

                    r.inherits(o, i), function () {
                        this.toString = function () {
                            return '"' + this.placeholder + '" ' + this.range.toString()
                        }, this.setFoldLine = function (e) {
                            this.foldLine = e, this.subFolds.forEach((function (t) {
                                t.setFoldLine(e)
                            }))
                        }, this.clone = function () {
                            var e = this.range.clone(), t = new o(e, this.placeholder);
                            return this.subFolds.forEach((function (e) {
                                t.subFolds.push(e.clone())
                            })), t.collapseChildren = this.collapseChildren, t
                        }, this.addSubFold = function (e) {
                            if (!this.range.isEqual(e)) {
                                var t, n;
                                t = e, n = this.start, a(t.start, n), a(t.end, n);
                                for (var i = e.start.row, r = e.start.column, o = 0, s = -1; o < this.subFolds.length && 1 == (s = this.subFolds[o].range.compare(i, r)); o++) ;
                                var l = this.subFolds[o], c = 0;
                                if (0 == s) {
                                    if (l.range.containsRange(e)) return l.addSubFold(e);
                                    c = 1
                                }
                                i = e.range.end.row, r = e.range.end.column;
                                var u = o;
                                for (s = -1; u < this.subFolds.length && 1 == (s = this.subFolds[u].range.compare(i, r)); u++) ;
                                0 == s && u++;
                                for (var h = this.subFolds.splice(o, u - o, e), d = 0 == s ? h.length - 1 : h.length, f = c; f < d; f++) e.addSubFold(h[f]);
                                return e.setFoldLine(this.foldLine), e
                            }
                        }, this.restoreRange = function (e) {
                            return function (e, t) {
                                s(e.start, t), s(e.end, t)
                            }(e, this.start)
                        }
                    }.call(o.prototype)
                })), ace.define("ace/edit_session/folding", ["require", "exports", "module", "ace/range", "ace/edit_session/fold_line", "ace/edit_session/fold", "ace/token_iterator"], (function (e, t, n) {
                    "use strict";
                    var i = e("../range").Range, r = e("./fold_line").FoldLine, o = e("./fold").Fold,
                        a = e("../token_iterator").TokenIterator;
                    t.Folding = function () {
                        this.getFoldAt = function (e, t, n) {
                            var i = this.getFoldLine(e);
                            if (!i) return null;
                            for (var r = i.folds, o = 0; o < r.length; o++) {
                                var a = r[o].range;
                                if (a.contains(e, t)) {
                                    if (1 == n && a.isEnd(e, t) && !a.isEmpty()) continue;
                                    if (-1 == n && a.isStart(e, t) && !a.isEmpty()) continue;
                                    return r[o]
                                }
                            }
                        }, this.getFoldsInRange = function (e) {
                            var t = e.start, n = e.end, i = this.$foldData, r = [];
                            t.column += 1, n.column -= 1;
                            for (var o = 0; o < i.length; o++) {
                                var a = i[o].range.compareRange(e);
                                if (2 != a) {
                                    if (-2 == a) break;
                                    for (var s = i[o].folds, l = 0; l < s.length; l++) {
                                        var c = s[l];
                                        if (-2 == (a = c.range.compareRange(e))) break;
                                        if (2 != a) {
                                            if (42 == a) break;
                                            r.push(c)
                                        }
                                    }
                                }
                            }
                            return t.column -= 1, n.column += 1, r
                        }, this.getFoldsInRangeList = function (e) {
                            if (Array.isArray(e)) {
                                var t = [];
                                e.forEach((function (e) {
                                    t = t.concat(this.getFoldsInRange(e))
                                }), this)
                            } else t = this.getFoldsInRange(e);
                            return t
                        }, this.getAllFolds = function () {
                            for (var e = [], t = this.$foldData, n = 0; n < t.length; n++) for (var i = 0; i < t[n].folds.length; i++) e.push(t[n].folds[i]);
                            return e
                        }, this.getFoldStringAt = function (e, t, n, i) {
                            if (!(i = i || this.getFoldLine(e))) return null;
                            for (var r, o, a = {end: {column: 0}}, s = 0; s < i.folds.length; s++) {
                                var l = (o = i.folds[s]).range.compareEnd(e, t);
                                if (-1 == l) {
                                    r = this.getLine(o.start.row).substring(a.end.column, o.start.column);
                                    break
                                }
                                if (0 === l) return null;
                                a = o
                            }
                            return r || (r = this.getLine(o.start.row).substring(a.end.column)), -1 == n ? r.substring(0, t - a.end.column) : 1 == n ? r.substring(t - a.end.column) : r
                        }, this.getFoldLine = function (e, t) {
                            var n = this.$foldData, i = 0;
                            for (t && (i = n.indexOf(t)), -1 == i && (i = 0); i < n.length; i++) {
                                var r = n[i];
                                if (r.start.row <= e && r.end.row >= e) return r;
                                if (r.end.row > e) return null
                            }
                            return null
                        }, this.getNextFoldLine = function (e, t) {
                            var n = this.$foldData, i = 0;
                            for (t && (i = n.indexOf(t)), -1 == i && (i = 0); i < n.length; i++) {
                                var r = n[i];
                                if (r.end.row >= e) return r
                            }
                            return null
                        }, this.getFoldedRowCount = function (e, t) {
                            for (var n = this.$foldData, i = t - e + 1, r = 0; r < n.length; r++) {
                                var o = n[r], a = o.end.row, s = o.start.row;
                                if (a >= t) {
                                    s < t && (s >= e ? i -= t - s : i = 0);
                                    break
                                }
                                a >= e && (i -= s >= e ? a - s : a - e + 1)
                            }
                            return i
                        }, this.$addFoldLine = function (e) {
                            return this.$foldData.push(e), this.$foldData.sort((function (e, t) {
                                return e.start.row - t.start.row
                            })), e
                        }, this.addFold = function (e, t) {
                            var n, i = this.$foldData, a = !1;
                            e instanceof o ? n = e : (n = new o(t, e)).collapseChildren = t.collapseChildren, this.$clipRangeToDocument(n.range);
                            var s = n.start.row, l = n.start.column, c = n.end.row, u = n.end.column,
                                h = this.getFoldAt(s, l, 1), d = this.getFoldAt(c, u, -1);
                            if (h && d == h) return h.addSubFold(n);
                            h && !h.range.isStart(s, l) && this.removeFold(h), d && !d.range.isEnd(c, u) && this.removeFold(d);
                            var f = this.getFoldsInRange(n.range);
                            f.length > 0 && (this.removeFolds(f), f.forEach((function (e) {
                                n.addSubFold(e)
                            })));
                            for (var g = 0; g < i.length; g++) {
                                var p = i[g];
                                if (c == p.start.row) {
                                    p.addFold(n), a = !0;
                                    break
                                }
                                if (s == p.end.row) {
                                    if (p.addFold(n), a = !0, !n.sameRow) {
                                        var m = i[g + 1];
                                        if (m && m.start.row == c) {
                                            p.merge(m);
                                            break
                                        }
                                    }
                                    break
                                }
                                if (c <= p.start.row) break
                            }
                            return a || (p = this.$addFoldLine(new r(this.$foldData, n))), this.$useWrapMode ? this.$updateWrapData(p.start.row, p.start.row) : this.$updateRowLengthCache(p.start.row, p.start.row), this.$modified = !0, this._signal("changeFold", {
                                data: n,
                                action: "add"
                            }), n
                        }, this.addFolds = function (e) {
                            e.forEach((function (e) {
                                this.addFold(e)
                            }), this)
                        }, this.removeFold = function (e) {
                            var t = e.foldLine, n = t.start.row, i = t.end.row, r = this.$foldData, o = t.folds;
                            if (1 == o.length) r.splice(r.indexOf(t), 1); else if (t.range.isEnd(e.end.row, e.end.column)) o.pop(), t.end.row = o[o.length - 1].end.row, t.end.column = o[o.length - 1].end.column; else if (t.range.isStart(e.start.row, e.start.column)) o.shift(), t.start.row = o[0].start.row, t.start.column = o[0].start.column; else if (e.sameRow) o.splice(o.indexOf(e), 1); else {
                                var a = t.split(e.start.row, e.start.column);
                                (o = a.folds).shift(), a.start.row = o[0].start.row, a.start.column = o[0].start.column
                            }
                            this.$updating || (this.$useWrapMode ? this.$updateWrapData(n, i) : this.$updateRowLengthCache(n, i)), this.$modified = !0, this._signal("changeFold", {
                                data: e,
                                action: "remove"
                            })
                        }, this.removeFolds = function (e) {
                            for (var t = [], n = 0; n < e.length; n++) t.push(e[n]);
                            t.forEach((function (e) {
                                this.removeFold(e)
                            }), this), this.$modified = !0
                        }, this.expandFold = function (e) {
                            this.removeFold(e), e.subFolds.forEach((function (t) {
                                e.restoreRange(t), this.addFold(t)
                            }), this), e.collapseChildren > 0 && this.foldAll(e.start.row + 1, e.end.row, e.collapseChildren - 1), e.subFolds = []
                        }, this.expandFolds = function (e) {
                            e.forEach((function (e) {
                                this.expandFold(e)
                            }), this)
                        }, this.unfold = function (e, t) {
                            var n, r;
                            if (null == e ? (n = new i(0, 0, this.getLength(), 0), t = !0) : n = "number" == typeof e ? new i(e, 0, e, this.getLine(e).length) : "row" in e ? i.fromPoints(e, e) : e, r = this.getFoldsInRangeList(n), t) this.removeFolds(r); else for (var o = r; o.length;) this.expandFolds(o), o = this.getFoldsInRangeList(n);
                            if (r.length) return r
                        }, this.isRowFolded = function (e, t) {
                            return !!this.getFoldLine(e, t)
                        }, this.getRowFoldEnd = function (e, t) {
                            var n = this.getFoldLine(e, t);
                            return n ? n.end.row : e
                        }, this.getRowFoldStart = function (e, t) {
                            var n = this.getFoldLine(e, t);
                            return n ? n.start.row : e
                        }, this.getFoldDisplayLine = function (e, t, n, i, r) {
                            null == i && (i = e.start.row), null == r && (r = 0), null == t && (t = e.end.row), null == n && (n = this.getLine(t).length);
                            var o = this.doc, a = "";
                            return e.walk((function (e, t, n, s) {
                                if (!(t < i)) {
                                    if (t == i) {
                                        if (n < r) return;
                                        s = Math.max(r, s)
                                    }
                                    a += null != e ? e : o.getLine(t).substring(s, n)
                                }
                            }), t, n), a
                        }, this.getDisplayLine = function (e, t, n, i) {
                            var r, o = this.getFoldLine(e);
                            return o ? this.getFoldDisplayLine(o, e, t, n, i) : (r = this.doc.getLine(e)).substring(i || 0, t || r.length)
                        }, this.$cloneFoldData = function () {
                            var e = [];
                            return e = this.$foldData.map((function (t) {
                                var n = t.folds.map((function (e) {
                                    return e.clone()
                                }));
                                return new r(e, n)
                            }))
                        }, this.toggleFold = function (e) {
                            var t, n, i = this.selection.getRange();
                            if (i.isEmpty()) {
                                var r = i.start;
                                if (t = this.getFoldAt(r.row, r.column)) return void this.expandFold(t);
                                (n = this.findMatchingBracket(r)) ? 1 == i.comparePoint(n) ? i.end = n : (i.start = n, i.start.column++, i.end.column--) : (n = this.findMatchingBracket({
                                    row: r.row,
                                    column: r.column + 1
                                })) ? (1 == i.comparePoint(n) ? i.end = n : i.start = n, i.start.column++) : i = this.getCommentFoldRange(r.row, r.column) || i
                            } else {
                                var o = this.getFoldsInRange(i);
                                if (e && o.length) return void this.expandFolds(o);
                                1 == o.length && (t = o[0])
                            }
                            if (t || (t = this.getFoldAt(i.start.row, i.start.column)), t && t.range.toString() == i.toString()) this.expandFold(t); else {
                                var a = "...";
                                if (!i.isMultiLine()) {
                                    if ((a = this.getTextRange(i)).length < 4) return;
                                    a = a.trim().substring(0, 2) + ".."
                                }
                                this.addFold(a, i)
                            }
                        }, this.getCommentFoldRange = function (e, t, n) {
                            var r = new a(this, e, t), o = r.getCurrentToken(), s = o.type;
                            if (o && /^comment|string/.test(s)) {
                                "comment" == (s = s.match(/comment|string/)[0]) && (s += "|doc-start");
                                var l = new RegExp(s), c = new i;
                                if (1 != n) {
                                    do {
                                        o = r.stepBackward()
                                    } while (o && l.test(o.type));
                                    r.stepForward()
                                }
                                if (c.start.row = r.getCurrentTokenRow(), c.start.column = r.getCurrentTokenColumn() + 2, r = new a(this, e, t), -1 != n) {
                                    var u = -1;
                                    do {
                                        if (o = r.stepForward(), -1 == u) {
                                            var h = this.getState(r.$row);
                                            l.test(h) || (u = r.$row)
                                        } else if (r.$row > u) break
                                    } while (o && l.test(o.type));
                                    o = r.stepBackward()
                                } else o = r.getCurrentToken();
                                return c.end.row = r.getCurrentTokenRow(), c.end.column = r.getCurrentTokenColumn() + o.value.length - 2, c
                            }
                        }, this.foldAll = function (e, t, n) {
                            null == n && (n = 1e5);
                            var i = this.foldWidgets;
                            if (i) {
                                t = t || this.getLength();
                                for (var r = e = e || 0; r < t; r++) if (null == i[r] && (i[r] = this.getFoldWidget(r)), "start" == i[r]) {
                                    var o = this.getFoldWidgetRange(r);
                                    if (o && o.isMultiLine() && o.end.row <= t && o.start.row >= e) {
                                        r = o.end.row;
                                        try {
                                            var a = this.addFold("...", o);
                                            a && (a.collapseChildren = n)
                                        } catch (e) {
                                        }
                                    }
                                }
                            }
                        }, this.$foldStyles = {
                            manual: 1,
                            markbegin: 1,
                            markbeginend: 1
                        }, this.$foldStyle = "markbegin", this.setFoldStyle = function (e) {
                            if (!this.$foldStyles[e]) throw new Error("invalid fold style: " + e + "[" + Object.keys(this.$foldStyles).join(", ") + "]");
                            if (this.$foldStyle != e) {
                                this.$foldStyle = e, "manual" == e && this.unfold();
                                var t = this.$foldMode;
                                this.$setFolding(null), this.$setFolding(t)
                            }
                        }, this.$setFolding = function (e) {
                            this.$foldMode != e && (this.$foldMode = e, this.off("change", this.$updateFoldWidgets), this.off("tokenizerUpdate", this.$tokenizerUpdateFoldWidgets), this._signal("changeAnnotation"), e && "manual" != this.$foldStyle ? (this.foldWidgets = [], this.getFoldWidget = e.getFoldWidget.bind(e, this, this.$foldStyle), this.getFoldWidgetRange = e.getFoldWidgetRange.bind(e, this, this.$foldStyle), this.$updateFoldWidgets = this.updateFoldWidgets.bind(this), this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this), this.on("change", this.$updateFoldWidgets), this.on("tokenizerUpdate", this.$tokenizerUpdateFoldWidgets)) : this.foldWidgets = null)
                        }, this.getParentFoldRangeData = function (e, t) {
                            var n = this.foldWidgets;
                            if (!n || t && n[e]) return {};
                            for (var i, r = e - 1; r >= 0;) {
                                var o = n[r];
                                if (null == o && (o = n[r] = this.getFoldWidget(r)), "start" == o) {
                                    var a = this.getFoldWidgetRange(r);
                                    if (i || (i = a), a && a.end.row >= e) break
                                }
                                r--
                            }
                            return {range: -1 !== r && a, firstRange: i}
                        }, this.onFoldWidgetClick = function (e, t) {
                            var n = {
                                children: (t = t.domEvent).shiftKey,
                                all: t.ctrlKey || t.metaKey,
                                siblings: t.altKey
                            };
                            if (!this.$toggleFoldWidget(e, n)) {
                                var i = t.target || t.srcElement;
                                i && /ace_fold-widget/.test(i.className) && (i.className += " ace_invalid")
                            }
                        }, this.$toggleFoldWidget = function (e, t) {
                            if (this.getFoldWidget) {
                                var n = this.getFoldWidget(e), i = this.getLine(e), r = "end" === n ? -1 : 1,
                                    o = this.getFoldAt(e, -1 === r ? 0 : i.length, r);
                                if (o) return t.children || t.all ? this.removeFold(o) : this.expandFold(o), o;
                                var a = this.getFoldWidgetRange(e, !0);
                                if (a && !a.isMultiLine() && (o = this.getFoldAt(a.start.row, a.start.column, 1)) && a.isEqual(o.range)) return this.removeFold(o), o;
                                if (t.siblings) {
                                    var s = this.getParentFoldRangeData(e);
                                    if (s.range) var l = s.range.start.row + 1, c = s.range.end.row;
                                    this.foldAll(l, c, t.all ? 1e4 : 0)
                                } else t.children ? (c = a ? a.end.row : this.getLength(), this.foldAll(e + 1, c, t.all ? 1e4 : 0)) : a && (t.all && (a.collapseChildren = 1e4), this.addFold("...", a));
                                return a
                            }
                        }, this.toggleFoldWidget = function (e) {
                            var t = this.selection.getCursor().row;
                            t = this.getRowFoldStart(t);
                            var n = this.$toggleFoldWidget(t, {});
                            if (!n) {
                                var i = this.getParentFoldRangeData(t, !0);
                                if (n = i.range || i.firstRange) {
                                    t = n.start.row;
                                    var r = this.getFoldAt(t, this.getLine(t).length, 1);
                                    r ? this.removeFold(r) : this.addFold("...", n)
                                }
                            }
                        }, this.updateFoldWidgets = function (e) {
                            var t = e.start.row, n = e.end.row - t;
                            if (0 === n) this.foldWidgets[t] = null; else if ("remove" == e.action) this.foldWidgets.splice(t, n + 1, null); else {
                                var i = Array(n + 1);
                                i.unshift(t, 1), this.foldWidgets.splice.apply(this.foldWidgets, i)
                            }
                        }, this.tokenizerUpdateFoldWidgets = function (e) {
                            var t = e.data;
                            t.first != t.last && this.foldWidgets.length > t.first && this.foldWidgets.splice(t.first, this.foldWidgets.length)
                        }
                    }
                })), ace.define("ace/edit_session/bracket_match", ["require", "exports", "module", "ace/token_iterator", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../token_iterator").TokenIterator, r = e("../range").Range;
                    t.BracketMatch = function () {
                        this.findMatchingBracket = function (e, t) {
                            if (0 == e.column) return null;
                            var n = t || this.getLine(e.row).charAt(e.column - 1);
                            if ("" == n) return null;
                            var i = n.match(/([\(\[\{])|([\)\]\}])/);
                            return i ? i[1] ? this.$findClosingBracket(i[1], e) : this.$findOpeningBracket(i[2], e) : null
                        }, this.getBracketRange = function (e) {
                            var t, n = this.getLine(e.row), i = !0, o = n.charAt(e.column - 1),
                                a = o && o.match(/([\(\[\{])|([\)\]\}])/);
                            if (a || (o = n.charAt(e.column), e = {
                                row: e.row,
                                column: e.column + 1
                            }, a = o && o.match(/([\(\[\{])|([\)\]\}])/), i = !1), !a) return null;
                            if (a[1]) {
                                if (!(s = this.$findClosingBracket(a[1], e))) return null;
                                t = r.fromPoints(e, s), i || (t.end.column++, t.start.column--), t.cursor = t.end
                            } else {
                                var s;
                                if (!(s = this.$findOpeningBracket(a[2], e))) return null;
                                t = r.fromPoints(s, e), i || (t.start.column++, t.end.column--), t.cursor = t.start
                            }
                            return t
                        }, this.getMatchingBracketRanges = function (e) {
                            var t = this.getLine(e.row), n = t.charAt(e.column - 1),
                                i = n && n.match(/([\(\[\{])|([\)\]\}])/);
                            if (i || (n = t.charAt(e.column), e = {
                                row: e.row,
                                column: e.column + 1
                            }, i = n && n.match(/([\(\[\{])|([\)\]\}])/)), !i) return null;
                            var o = new r(e.row, e.column - 1, e.row, e.column),
                                a = i[1] ? this.$findClosingBracket(i[1], e) : this.$findOpeningBracket(i[2], e);
                            return a ? [o, new r(a.row, a.column, a.row, a.column + 1)] : [o]
                        }, this.$brackets = {
                            ")": "(",
                            "(": ")",
                            "]": "[",
                            "[": "]",
                            "{": "}",
                            "}": "{",
                            "<": ">",
                            ">": "<"
                        }, this.$findOpeningBracket = function (e, t, n) {
                            var r = this.$brackets[e], o = 1, a = new i(this, t.row, t.column), s = a.getCurrentToken();
                            if (s || (s = a.stepForward()), s) {
                                n || (n = new RegExp("(\\.?" + s.type.replace(".", "\\.").replace("rparen", ".paren").replace(/\b(?:end)\b/, "(?:start|begin|end)") + ")+"));
                                for (var l = t.column - a.getCurrentTokenColumn() - 2, c = s.value; ;) {
                                    for (; l >= 0;) {
                                        var u = c.charAt(l);
                                        if (u == r) {
                                            if (0 == (o -= 1)) return {
                                                row: a.getCurrentTokenRow(),
                                                column: l + a.getCurrentTokenColumn()
                                            }
                                        } else u == e && (o += 1);
                                        l -= 1
                                    }
                                    do {
                                        s = a.stepBackward()
                                    } while (s && !n.test(s.type));
                                    if (null == s) break;
                                    l = (c = s.value).length - 1
                                }
                                return null
                            }
                        }, this.$findClosingBracket = function (e, t, n) {
                            var r = this.$brackets[e], o = 1, a = new i(this, t.row, t.column), s = a.getCurrentToken();
                            if (s || (s = a.stepForward()), s) {
                                n || (n = new RegExp("(\\.?" + s.type.replace(".", "\\.").replace("lparen", ".paren").replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") + ")+"));
                                for (var l = t.column - a.getCurrentTokenColumn(); ;) {
                                    for (var c = s.value, u = c.length; l < u;) {
                                        var h = c.charAt(l);
                                        if (h == r) {
                                            if (0 == (o -= 1)) return {
                                                row: a.getCurrentTokenRow(),
                                                column: l + a.getCurrentTokenColumn()
                                            }
                                        } else h == e && (o += 1);
                                        l += 1
                                    }
                                    do {
                                        s = a.stepForward()
                                    } while (s && !n.test(s.type));
                                    if (null == s) break;
                                    l = 0
                                }
                                return null
                            }
                        }
                    }
                })), ace.define("ace/edit_session", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/bidihandler", "ace/config", "ace/lib/event_emitter", "ace/selection", "ace/mode/text", "ace/range", "ace/document", "ace/background_tokenizer", "ace/search_highlight", "ace/edit_session/folding", "ace/edit_session/bracket_match"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./lib/lang"), o = e("./bidihandler").BidiHandler, a = e("./config"),
                        s = e("./lib/event_emitter").EventEmitter, l = e("./selection").Selection,
                        c = e("./mode/text").Mode, u = e("./range").Range, h = e("./document").Document,
                        d = e("./background_tokenizer").BackgroundTokenizer,
                        f = e("./search_highlight").SearchHighlight, g = function (e, t) {
                            this.$breakpoints = [], this.$decorations = [], this.$frontMarkers = {}, this.$backMarkers = {}, this.$markerId = 1, this.$undoSelect = !0, this.$foldData = [], this.id = "session" + ++g.$uid, this.$foldData.toString = function () {
                                return this.join("\n")
                            }, this.on("changeFold", this.onChangeFold.bind(this)), this.$onChange = this.onChange.bind(this), "object" == typeof e && e.getLine || (e = new h(e)), this.setDocument(e), this.selection = new l(this), this.$bidiHandler = new o(this), a.resetOptions(this), this.setMode(t), a._signal("session", this)
                        };
                    g.$uid = 0, function () {
                        i.implement(this, s), this.setDocument = function (e) {
                            this.doc && this.doc.removeListener("change", this.$onChange), this.doc = e, e.on("change", this.$onChange), this.bgTokenizer && this.bgTokenizer.setDocument(this.getDocument()), this.resetCaches()
                        }, this.getDocument = function () {
                            return this.doc
                        }, this.$resetRowCache = function (e) {
                            if (!e) return this.$docRowCache = [], void (this.$screenRowCache = []);
                            var t = this.$docRowCache.length, n = this.$getRowCacheIndex(this.$docRowCache, e) + 1;
                            t > n && (this.$docRowCache.splice(n, t), this.$screenRowCache.splice(n, t))
                        }, this.$getRowCacheIndex = function (e, t) {
                            for (var n = 0, i = e.length - 1; n <= i;) {
                                var r = n + i >> 1, o = e[r];
                                if (t > o) n = r + 1; else {
                                    if (!(t < o)) return r;
                                    i = r - 1
                                }
                            }
                            return n - 1
                        }, this.resetCaches = function () {
                            this.$modified = !0, this.$wrapData = [], this.$rowLengthCache = [], this.$resetRowCache(0), this.bgTokenizer && this.bgTokenizer.start(0)
                        }, this.onChangeFold = function (e) {
                            var t = e.data;
                            this.$resetRowCache(t.start.row)
                        }, this.onChange = function (e) {
                            this.$modified = !0, this.$bidiHandler.onChange(e), this.$resetRowCache(e.start.row);
                            var t = this.$updateInternalDataOnChange(e);
                            !this.$fromUndo && this.$undoManager && (t && t.length && (this.$undoManager.add({
                                action: "removeFolds",
                                folds: t
                            }, this.mergeUndoDeltas), this.mergeUndoDeltas = !0), this.$undoManager.add(e, this.mergeUndoDeltas), this.mergeUndoDeltas = !0, this.$informUndoManager.schedule()), this.bgTokenizer && this.bgTokenizer.$updateOnChange(e), this._signal("change", e)
                        }, this.setValue = function (e) {
                            this.doc.setValue(e), this.selection.moveTo(0, 0), this.$resetRowCache(0), this.setUndoManager(this.$undoManager), this.getUndoManager().reset()
                        }, this.getValue = this.toString = function () {
                            return this.doc.getValue()
                        }, this.getSelection = function () {
                            return this.selection
                        }, this.getState = function (e) {
                            return this.bgTokenizer.getState(e)
                        }, this.getTokens = function (e) {
                            return this.bgTokenizer.getTokens(e)
                        }, this.getTokenAt = function (e, t) {
                            var n, i = this.bgTokenizer.getTokens(e), r = 0;
                            if (null == t) {
                                var o = i.length - 1;
                                r = this.getLine(e).length
                            } else for (o = 0; o < i.length && !((r += i[o].value.length) >= t); o++) ;
                            return (n = i[o]) ? (n.index = o, n.start = r - n.value.length, n) : null
                        }, this.setUndoManager = function (e) {
                            if (this.$undoManager = e, this.$informUndoManager && this.$informUndoManager.cancel(), e) {
                                var t = this;
                                e.addSession(this), this.$syncInformUndoManager = function () {
                                    t.$informUndoManager.cancel(), t.mergeUndoDeltas = !1
                                }, this.$informUndoManager = r.delayedCall(this.$syncInformUndoManager)
                            } else this.$syncInformUndoManager = function () {
                            }
                        }, this.markUndoGroup = function () {
                            this.$syncInformUndoManager && this.$syncInformUndoManager()
                        }, this.$defaultUndoManager = {
                            undo: function () {
                            }, redo: function () {
                            }, hasUndo: function () {
                            }, hasRedo: function () {
                            }, reset: function () {
                            }, add: function () {
                            }, addSelection: function () {
                            }, startNewGroup: function () {
                            }, addSession: function () {
                            }
                        }, this.getUndoManager = function () {
                            return this.$undoManager || this.$defaultUndoManager
                        }, this.getTabString = function () {
                            return this.getUseSoftTabs() ? r.stringRepeat(" ", this.getTabSize()) : "\t"
                        }, this.setUseSoftTabs = function (e) {
                            this.setOption("useSoftTabs", e)
                        }, this.getUseSoftTabs = function () {
                            return this.$useSoftTabs && !this.$mode.$indentWithTabs
                        }, this.setTabSize = function (e) {
                            this.setOption("tabSize", e)
                        }, this.getTabSize = function () {
                            return this.$tabSize
                        }, this.isTabStop = function (e) {
                            return this.$useSoftTabs && e.column % this.$tabSize == 0
                        }, this.setNavigateWithinSoftTabs = function (e) {
                            this.setOption("navigateWithinSoftTabs", e)
                        }, this.getNavigateWithinSoftTabs = function () {
                            return this.$navigateWithinSoftTabs
                        }, this.$overwrite = !1, this.setOverwrite = function (e) {
                            this.setOption("overwrite", e)
                        }, this.getOverwrite = function () {
                            return this.$overwrite
                        }, this.toggleOverwrite = function () {
                            this.setOverwrite(!this.$overwrite)
                        }, this.addGutterDecoration = function (e, t) {
                            this.$decorations[e] || (this.$decorations[e] = ""), this.$decorations[e] += " " + t, this._signal("changeBreakpoint", {})
                        }, this.removeGutterDecoration = function (e, t) {
                            this.$decorations[e] = (this.$decorations[e] || "").replace(" " + t, ""), this._signal("changeBreakpoint", {})
                        }, this.getBreakpoints = function () {
                            return this.$breakpoints
                        }, this.setBreakpoints = function (e) {
                            this.$breakpoints = [];
                            for (var t = 0; t < e.length; t++) this.$breakpoints[e[t]] = "ace_breakpoint";
                            this._signal("changeBreakpoint", {})
                        }, this.clearBreakpoints = function () {
                            this.$breakpoints = [], this._signal("changeBreakpoint", {})
                        }, this.setBreakpoint = function (e, t) {
                            void 0 === t && (t = "ace_breakpoint"), t ? this.$breakpoints[e] = t : delete this.$breakpoints[e], this._signal("changeBreakpoint", {})
                        }, this.clearBreakpoint = function (e) {
                            delete this.$breakpoints[e], this._signal("changeBreakpoint", {})
                        }, this.addMarker = function (e, t, n, i) {
                            var r = this.$markerId++, o = {
                                range: e,
                                type: n || "line",
                                renderer: "function" == typeof n ? n : null,
                                clazz: t,
                                inFront: !!i,
                                id: r
                            };
                            return i ? (this.$frontMarkers[r] = o, this._signal("changeFrontMarker")) : (this.$backMarkers[r] = o, this._signal("changeBackMarker")), r
                        }, this.addDynamicMarker = function (e, t) {
                            if (e.update) {
                                var n = this.$markerId++;
                                return e.id = n, e.inFront = !!t, t ? (this.$frontMarkers[n] = e, this._signal("changeFrontMarker")) : (this.$backMarkers[n] = e, this._signal("changeBackMarker")), e
                            }
                        }, this.removeMarker = function (e) {
                            var t = this.$frontMarkers[e] || this.$backMarkers[e];
                            t && (delete (t.inFront ? this.$frontMarkers : this.$backMarkers)[e], this._signal(t.inFront ? "changeFrontMarker" : "changeBackMarker"))
                        }, this.getMarkers = function (e) {
                            return e ? this.$frontMarkers : this.$backMarkers
                        }, this.highlight = function (e) {
                            if (!this.$searchHighlight) {
                                var t = new f(null, "ace_selected-word", "text");
                                this.$searchHighlight = this.addDynamicMarker(t)
                            }
                            this.$searchHighlight.setRegexp(e)
                        }, this.highlightLines = function (e, t, n, i) {
                            "number" != typeof t && (n = t, t = e), n || (n = "ace_step");
                            var r = new u(e, 0, t, 1 / 0);
                            return r.id = this.addMarker(r, n, "fullLine", i), r
                        }, this.setAnnotations = function (e) {
                            this.$annotations = e, this._signal("changeAnnotation", {})
                        }, this.getAnnotations = function () {
                            return this.$annotations || []
                        }, this.clearAnnotations = function () {
                            this.setAnnotations([])
                        }, this.$detectNewLine = function (e) {
                            var t = e.match(/^.*?(\r?\n)/m);
                            this.$autoNewLine = t ? t[1] : "\n"
                        }, this.getWordRange = function (e, t) {
                            var n = this.getLine(e), i = !1;
                            if (t > 0 && (i = !!n.charAt(t - 1).match(this.tokenRe)), i || (i = !!n.charAt(t).match(this.tokenRe)), i) var r = this.tokenRe; else r = /^\s+$/.test(n.slice(t - 1, t + 1)) ? /\s/ : this.nonTokenRe;
                            var o = t;
                            if (o > 0) {
                                do {
                                    o--
                                } while (o >= 0 && n.charAt(o).match(r));
                                o++
                            }
                            for (var a = t; a < n.length && n.charAt(a).match(r);) a++;
                            return new u(e, o, e, a)
                        }, this.getAWordRange = function (e, t) {
                            for (var n = this.getWordRange(e, t), i = this.getLine(n.end.row); i.charAt(n.end.column).match(/[ \t]/);) n.end.column += 1;
                            return n
                        }, this.setNewLineMode = function (e) {
                            this.doc.setNewLineMode(e)
                        }, this.getNewLineMode = function () {
                            return this.doc.getNewLineMode()
                        }, this.setUseWorker = function (e) {
                            this.setOption("useWorker", e)
                        }, this.getUseWorker = function () {
                            return this.$useWorker
                        }, this.onReloadTokenizer = function (e) {
                            var t = e.data;
                            this.bgTokenizer.start(t.first), this._signal("tokenizerUpdate", e)
                        }, this.$modes = a.$modes, this.$mode = null, this.$modeId = null, this.setMode = function (e, t) {
                            if (e && "object" == typeof e) {
                                if (e.getTokenizer) return this.$onChangeMode(e);
                                var n = e, i = n.path
                            } else i = e || "ace/mode/text";
                            if (this.$modes["ace/mode/text"] || (this.$modes["ace/mode/text"] = new c), this.$modes[i] && !n) return this.$onChangeMode(this.$modes[i]), void (t && t());
                            this.$modeId = i, a.loadModule(["mode", i], function (e) {
                                if (this.$modeId !== i) return t && t();
                                this.$modes[i] && !n ? this.$onChangeMode(this.$modes[i]) : e && e.Mode && (e = new e.Mode(n), n || (this.$modes[i] = e, e.$id = i), this.$onChangeMode(e)), t && t()
                            }.bind(this)), this.$mode || this.$onChangeMode(this.$modes["ace/mode/text"], !0)
                        }, this.$onChangeMode = function (e, t) {
                            if (t || (this.$modeId = e.$id), this.$mode !== e) {
                                var n = this.$mode;
                                this.$mode = e, this.$stopWorker(), this.$useWorker && this.$startWorker();
                                var i = e.getTokenizer();
                                if (void 0 !== i.on) {
                                    var r = this.onReloadTokenizer.bind(this);
                                    i.on("update", r)
                                }
                                if (this.bgTokenizer) this.bgTokenizer.setTokenizer(i); else {
                                    this.bgTokenizer = new d(i);
                                    var o = this;
                                    this.bgTokenizer.on("update", (function (e) {
                                        o._signal("tokenizerUpdate", e)
                                    }))
                                }
                                this.bgTokenizer.setDocument(this.getDocument()), this.tokenRe = e.tokenRe, this.nonTokenRe = e.nonTokenRe, t || (e.attachToSession && e.attachToSession(this), this.$options.wrapMethod.set.call(this, this.$wrapMethod), this.$setFolding(e.foldingRules), this.bgTokenizer.start(0), this._emit("changeMode", {
                                    oldMode: n,
                                    mode: e
                                }))
                            }
                        }, this.$stopWorker = function () {
                            this.$worker && (this.$worker.terminate(), this.$worker = null)
                        }, this.$startWorker = function () {
                            try {
                                this.$worker = this.$mode.createWorker(this)
                            } catch (e) {
                                a.warn("Could not load worker", e), this.$worker = null
                            }
                        }, this.getMode = function () {
                            return this.$mode
                        }, this.$scrollTop = 0, this.setScrollTop = function (e) {
                            this.$scrollTop === e || isNaN(e) || (this.$scrollTop = e, this._signal("changeScrollTop", e))
                        }, this.getScrollTop = function () {
                            return this.$scrollTop
                        }, this.$scrollLeft = 0, this.setScrollLeft = function (e) {
                            this.$scrollLeft === e || isNaN(e) || (this.$scrollLeft = e, this._signal("changeScrollLeft", e))
                        }, this.getScrollLeft = function () {
                            return this.$scrollLeft
                        }, this.getScreenWidth = function () {
                            return this.$computeWidth(), this.lineWidgets ? Math.max(this.getLineWidgetMaxWidth(), this.screenWidth) : this.screenWidth
                        }, this.getLineWidgetMaxWidth = function () {
                            if (null != this.lineWidgetsWidth) return this.lineWidgetsWidth;
                            var e = 0;
                            return this.lineWidgets.forEach((function (t) {
                                t && t.screenWidth > e && (e = t.screenWidth)
                            })), this.lineWidgetWidth = e
                        }, this.$computeWidth = function (e) {
                            if (this.$modified || e) {
                                if (this.$modified = !1, this.$useWrapMode) return this.screenWidth = this.$wrapLimit;
                                for (var t = this.doc.getAllLines(), n = this.$rowLengthCache, i = 0, r = 0, o = this.$foldData[r], a = o ? o.start.row : 1 / 0, s = t.length, l = 0; l < s; l++) {
                                    if (l > a) {
                                        if ((l = o.end.row + 1) >= s) break;
                                        a = (o = this.$foldData[r++]) ? o.start.row : 1 / 0
                                    }
                                    null == n[l] && (n[l] = this.$getStringScreenWidth(t[l])[0]), n[l] > i && (i = n[l])
                                }
                                this.screenWidth = i
                            }
                        }, this.getLine = function (e) {
                            return this.doc.getLine(e)
                        }, this.getLines = function (e, t) {
                            return this.doc.getLines(e, t)
                        }, this.getLength = function () {
                            return this.doc.getLength()
                        }, this.getTextRange = function (e) {
                            return this.doc.getTextRange(e || this.selection.getRange())
                        }, this.insert = function (e, t) {
                            return this.doc.insert(e, t)
                        }, this.remove = function (e) {
                            return this.doc.remove(e)
                        }, this.removeFullLines = function (e, t) {
                            return this.doc.removeFullLines(e, t)
                        }, this.undoChanges = function (e, t) {
                            if (e.length) {
                                this.$fromUndo = !0;
                                for (var n = e.length - 1; -1 != n; n--) {
                                    var i = e[n];
                                    "insert" == i.action || "remove" == i.action ? this.doc.revertDelta(i) : i.folds && this.addFolds(i.folds)
                                }
                                !t && this.$undoSelect && (e.selectionBefore ? this.selection.fromJSON(e.selectionBefore) : this.selection.setRange(this.$getUndoSelection(e, !0))), this.$fromUndo = !1
                            }
                        }, this.redoChanges = function (e, t) {
                            if (e.length) {
                                this.$fromUndo = !0;
                                for (var n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    "insert" != i.action && "remove" != i.action || this.doc.$safeApplyDelta(i)
                                }
                                !t && this.$undoSelect && (e.selectionAfter ? this.selection.fromJSON(e.selectionAfter) : this.selection.setRange(this.$getUndoSelection(e, !1))), this.$fromUndo = !1
                            }
                        }, this.setUndoSelect = function (e) {
                            this.$undoSelect = e
                        }, this.$getUndoSelection = function (e, t) {
                            function n(e) {
                                return t ? "insert" !== e.action : "insert" === e.action
                            }

                            for (var i, r, o = 0; o < e.length; o++) {
                                var a = e[o];
                                a.start && (i ? n(a) ? (r = a.start, -1 == i.compare(r.row, r.column) && i.setStart(r), r = a.end, 1 == i.compare(r.row, r.column) && i.setEnd(r)) : (r = a.start, -1 == i.compare(r.row, r.column) && (i = u.fromPoints(a.start, a.start))) : i = n(a) ? u.fromPoints(a.start, a.end) : u.fromPoints(a.start, a.start))
                            }
                            return i
                        }, this.replace = function (e, t) {
                            return this.doc.replace(e, t)
                        }, this.moveText = function (e, t, n) {
                            var i = this.getTextRange(e), r = this.getFoldsInRange(e), o = u.fromPoints(t, t);
                            if (!n) {
                                this.remove(e);
                                var a = e.start.row - e.end.row;
                                (c = a ? -e.end.column : e.start.column - e.end.column) && (o.start.row == e.end.row && o.start.column > e.end.column && (o.start.column += c), o.end.row == e.end.row && o.end.column > e.end.column && (o.end.column += c)), a && o.start.row >= e.end.row && (o.start.row += a, o.end.row += a)
                            }
                            if (o.end = this.insert(o.start, i), r.length) {
                                var s = e.start, l = o.start, c = (a = l.row - s.row, l.column - s.column);
                                this.addFolds(r.map((function (e) {
                                    return (e = e.clone()).start.row == s.row && (e.start.column += c), e.end.row == s.row && (e.end.column += c), e.start.row += a, e.end.row += a, e
                                })))
                            }
                            return o
                        }, this.indentRows = function (e, t, n) {
                            n = n.replace(/\t/g, this.getTabString());
                            for (var i = e; i <= t; i++) this.doc.insertInLine({row: i, column: 0}, n)
                        }, this.outdentRows = function (e) {
                            for (var t = e.collapseRows(), n = new u(0, 0, 0, 0), i = this.getTabSize(), r = t.start.row; r <= t.end.row; ++r) {
                                var o = this.getLine(r);
                                n.start.row = r, n.end.row = r;
                                for (var a = 0; a < i && " " == o.charAt(a); ++a) ;
                                a < i && "\t" == o.charAt(a) ? (n.start.column = a, n.end.column = a + 1) : (n.start.column = 0, n.end.column = a), this.remove(n)
                            }
                        }, this.$moveLines = function (e, t, n) {
                            if (e = this.getRowFoldStart(e), t = this.getRowFoldEnd(t), n < 0) {
                                if ((r = this.getRowFoldStart(e + n)) < 0) return 0;
                                var i = r - e
                            } else if (n > 0) {
                                var r;
                                if ((r = this.getRowFoldEnd(t + n)) > this.doc.getLength() - 1) return 0;
                                i = r - t
                            } else e = this.$clipRowToDocument(e), i = (t = this.$clipRowToDocument(t)) - e + 1;
                            var o = new u(e, 0, t, Number.MAX_VALUE), a = this.getFoldsInRange(o).map((function (e) {
                                return (e = e.clone()).start.row += i, e.end.row += i, e
                            })), s = 0 == n ? this.doc.getLines(e, t) : this.doc.removeFullLines(e, t);
                            return this.doc.insertFullLines(e + i, s), a.length && this.addFolds(a), i
                        }, this.moveLinesUp = function (e, t) {
                            return this.$moveLines(e, t, -1)
                        }, this.moveLinesDown = function (e, t) {
                            return this.$moveLines(e, t, 1)
                        }, this.duplicateLines = function (e, t) {
                            return this.$moveLines(e, t, 0)
                        }, this.$clipRowToDocument = function (e) {
                            return Math.max(0, Math.min(e, this.doc.getLength() - 1))
                        }, this.$clipColumnToRow = function (e, t) {
                            return t < 0 ? 0 : Math.min(this.doc.getLine(e).length, t)
                        }, this.$clipPositionToDocument = function (e, t) {
                            if (t = Math.max(0, t), e < 0) e = 0, t = 0; else {
                                var n = this.doc.getLength();
                                e >= n ? (e = n - 1, t = this.doc.getLine(n - 1).length) : t = Math.min(this.doc.getLine(e).length, t)
                            }
                            return {row: e, column: t}
                        }, this.$clipRangeToDocument = function (e) {
                            e.start.row < 0 ? (e.start.row = 0, e.start.column = 0) : e.start.column = this.$clipColumnToRow(e.start.row, e.start.column);
                            var t = this.doc.getLength() - 1;
                            return e.end.row > t ? (e.end.row = t, e.end.column = this.doc.getLine(t).length) : e.end.column = this.$clipColumnToRow(e.end.row, e.end.column), e
                        }, this.$wrapLimit = 80, this.$useWrapMode = !1, this.$wrapLimitRange = {
                            min: null,
                            max: null
                        }, this.setUseWrapMode = function (e) {
                            if (e != this.$useWrapMode) {
                                if (this.$useWrapMode = e, this.$modified = !0, this.$resetRowCache(0), e) {
                                    var t = this.getLength();
                                    this.$wrapData = Array(t), this.$updateWrapData(0, t - 1)
                                }
                                this._signal("changeWrapMode")
                            }
                        }, this.getUseWrapMode = function () {
                            return this.$useWrapMode
                        }, this.setWrapLimitRange = function (e, t) {
                            this.$wrapLimitRange.min === e && this.$wrapLimitRange.max === t || (this.$wrapLimitRange = {
                                min: e,
                                max: t
                            }, this.$modified = !0, this.$bidiHandler.markAsDirty(), this.$useWrapMode && this._signal("changeWrapMode"))
                        }, this.adjustWrapLimit = function (e, t) {
                            var n = this.$wrapLimitRange;
                            n.max < 0 && (n = {min: t, max: t});
                            var i = this.$constrainWrapLimit(e, n.min, n.max);
                            return i != this.$wrapLimit && i > 1 && (this.$wrapLimit = i, this.$modified = !0, this.$useWrapMode && (this.$updateWrapData(0, this.getLength() - 1), this.$resetRowCache(0), this._signal("changeWrapLimit")), !0)
                        },this.$constrainWrapLimit = function (e, t, n) {
                            return t && (e = Math.max(t, e)), n && (e = Math.min(n, e)), e
                        },this.getWrapLimit = function () {
                            return this.$wrapLimit
                        },this.setWrapLimit = function (e) {
                            this.setWrapLimitRange(e, e)
                        },this.getWrapLimitRange = function () {
                            return {min: this.$wrapLimitRange.min, max: this.$wrapLimitRange.max}
                        },this.$updateInternalDataOnChange = function (e) {
                            var t = this.$useWrapMode, n = e.action, i = e.start, r = e.end, o = i.row, a = r.row,
                                s = a - o, l = null;
                            if (this.$updating = !0, 0 != s) if ("remove" === n) {
                                this[t ? "$wrapData" : "$rowLengthCache"].splice(o, s);
                                var c = this.$foldData;
                                l = this.getFoldsInRange(e), this.removeFolds(l);
                                var u = 0;
                                if (p = this.getFoldLine(r.row)) {
                                    p.addRemoveChars(r.row, r.column, i.column - r.column), p.shiftRow(-s);
                                    var h = this.getFoldLine(o);
                                    h && h !== p && (h.merge(p), p = h), u = c.indexOf(p) + 1
                                }
                                for (; u < c.length; u++) (p = c[u]).start.row >= r.row && p.shiftRow(-s);
                                a = o
                            } else {
                                var d = Array(s);
                                d.unshift(o, 0);
                                var f = t ? this.$wrapData : this.$rowLengthCache;
                                if (f.splice.apply(f, d), c = this.$foldData, u = 0, p = this.getFoldLine(o)) {
                                    var g = p.range.compareInside(i.row, i.column);
                                    0 == g ? (p = p.split(i.row, i.column)) && (p.shiftRow(s), p.addRemoveChars(a, 0, r.column - i.column)) : -1 == g && (p.addRemoveChars(o, 0, r.column - i.column), p.shiftRow(s)), u = c.indexOf(p) + 1
                                }
                                for (; u < c.length; u++) {
                                    var p;
                                    (p = c[u]).start.row >= o && p.shiftRow(s)
                                }
                            } else s = Math.abs(e.start.column - e.end.column), "remove" === n && (l = this.getFoldsInRange(e), this.removeFolds(l), s = -s), (p = this.getFoldLine(o)) && p.addRemoveChars(o, i.column, s);
                            return t && this.$wrapData.length != this.doc.getLength() && console.error("doc.getLength() and $wrapData.length have to be the same!"), this.$updating = !1, t ? this.$updateWrapData(o, a) : this.$updateRowLengthCache(o, a), l
                        },this.$updateRowLengthCache = function (e, t, n) {
                            this.$rowLengthCache[e] = null, this.$rowLengthCache[t] = null
                        },this.$updateWrapData = function (n, i) {
                            var r, o, a = this.doc.getAllLines(), s = this.getTabSize(), l = this.$wrapData,
                                c = this.$wrapLimit, u = n;
                            for (i = Math.min(i, a.length - 1); u <= i;) (o = this.getFoldLine(u, o)) ? (r = [], o.walk(function (n, i, o, s) {
                                var l;
                                if (null != n) {
                                    (l = this.$getDisplayTokens(n, r.length))[0] = e;
                                    for (var c = 1; c < l.length; c++) l[c] = t
                                } else l = this.$getDisplayTokens(a[i].substring(s, o), r.length);
                                r = r.concat(l)
                            }.bind(this), o.end.row, a[o.end.row].length + 1), l[o.start.row] = this.$computeWrapSplits(r, c, s), u = o.end.row + 1) : (r = this.$getDisplayTokens(a[u]), l[u] = this.$computeWrapSplits(r, c, s), u++)
                        };
                        var e = 3, t = 4;

                        function n(e) {
                            return !(e < 4352) && (e >= 4352 && e <= 4447 || e >= 4515 && e <= 4519 || e >= 4602 && e <= 4607 || e >= 9001 && e <= 9002 || e >= 11904 && e <= 11929 || e >= 11931 && e <= 12019 || e >= 12032 && e <= 12245 || e >= 12272 && e <= 12283 || e >= 12288 && e <= 12350 || e >= 12353 && e <= 12438 || e >= 12441 && e <= 12543 || e >= 12549 && e <= 12589 || e >= 12593 && e <= 12686 || e >= 12688 && e <= 12730 || e >= 12736 && e <= 12771 || e >= 12784 && e <= 12830 || e >= 12832 && e <= 12871 || e >= 12880 && e <= 13054 || e >= 13056 && e <= 19903 || e >= 19968 && e <= 42124 || e >= 42128 && e <= 42182 || e >= 43360 && e <= 43388 || e >= 44032 && e <= 55203 || e >= 55216 && e <= 55238 || e >= 55243 && e <= 55291 || e >= 63744 && e <= 64255 || e >= 65040 && e <= 65049 || e >= 65072 && e <= 65106 || e >= 65108 && e <= 65126 || e >= 65128 && e <= 65131 || e >= 65281 && e <= 65376 || e >= 65504 && e <= 65510)
                        }

                        this.$computeWrapSplits = function (n, i, r) {
                            if (0 == n.length) return [];
                            var o = [], a = n.length, s = 0, l = 0, c = this.$wrapAsCode, u = this.$indentedSoftWrap,
                                h = i <= Math.max(2 * r, 8) || !1 === u ? 0 : Math.floor(i / 2);

                            function d(e) {
                                for (var t = e - s, i = s; i < e; i++) {
                                    var a = n[i];
                                    12 !== a && 2 !== a || (t -= 1)
                                }
                                o.length || (f = function () {
                                    var e = 0;
                                    if (0 === h) return e;
                                    if (u) for (var t = 0; t < n.length; t++) {
                                        var i = n[t];
                                        if (10 == i) e += 1; else {
                                            if (11 != i) {
                                                if (12 == i) continue;
                                                break
                                            }
                                            e += r
                                        }
                                    }
                                    return c && !1 !== u && (e += r), Math.min(e, h)
                                }(), o.indent = f), l += t, o.push(l), s = e
                            }

                            for (var f = 0; a - s > i - f;) {
                                var g = s + i - f;
                                if (n[g - 1] >= 10 && n[g] >= 10) d(g); else if (n[g] != e && n[g] != t) {
                                    for (var p = Math.max(g - (i - (i >> 2)), s - 1); g > p && n[g] < e;) g--;
                                    if (c) {
                                        for (; g > p && n[g] < e;) g--;
                                        for (; g > p && 9 == n[g];) g--
                                    } else for (; g > p && n[g] < 10;) g--;
                                    g > p ? d(++g) : (2 == n[g = s + i] && g--, d(g - f))
                                } else {
                                    for (; g != s - 1 && n[g] != e; g--) ;
                                    if (g > s) {
                                        d(g);
                                        continue
                                    }
                                    for (g = s + i; g < n.length && n[g] == t; g++) ;
                                    if (g == n.length) break;
                                    d(g)
                                }
                            }
                            return o
                        }, this.$getDisplayTokens = function (e, t) {
                            var i, r = [];
                            t = t || 0;
                            for (var o = 0; o < e.length; o++) {
                                var a = e.charCodeAt(o);
                                if (9 == a) {
                                    i = this.getScreenTabSize(r.length + t), r.push(11);
                                    for (var s = 1; s < i; s++) r.push(12)
                                } else 32 == a ? r.push(10) : a > 39 && a < 48 || a > 57 && a < 64 ? r.push(9) : a >= 4352 && n(a) ? r.push(1, 2) : r.push(1)
                            }
                            return r
                        }, this.$getStringScreenWidth = function (e, t, i) {
                            if (0 == t) return [0, 0];
                            var r, o;
                            for (null == t && (t = 1 / 0), i = i || 0, o = 0; o < e.length && (9 == (r = e.charCodeAt(o)) ? i += this.getScreenTabSize(i) : r >= 4352 && n(r) ? i += 2 : i += 1, !(i > t)); o++) ;
                            return [i, o]
                        }, this.lineWidgets = null, this.getRowLength = function (e) {
                            var t = 1;
                            return this.lineWidgets && (t += this.lineWidgets[e] && this.lineWidgets[e].rowCount || 0), this.$useWrapMode && this.$wrapData[e] ? this.$wrapData[e].length + t : t
                        }, this.getRowLineCount = function (e) {
                            return this.$useWrapMode && this.$wrapData[e] ? this.$wrapData[e].length + 1 : 1
                        }, this.getRowWrapIndent = function (e) {
                            if (this.$useWrapMode) {
                                var t = this.screenToDocumentPosition(e, Number.MAX_VALUE), n = this.$wrapData[t.row];
                                return n.length && n[0] < t.column ? n.indent : 0
                            }
                            return 0
                        }, this.getScreenLastRowColumn = function (e) {
                            var t = this.screenToDocumentPosition(e, Number.MAX_VALUE);
                            return this.documentToScreenColumn(t.row, t.column)
                        }, this.getDocumentLastRowColumn = function (e, t) {
                            var n = this.documentToScreenRow(e, t);
                            return this.getScreenLastRowColumn(n)
                        }, this.getDocumentLastRowColumnPosition = function (e, t) {
                            var n = this.documentToScreenRow(e, t);
                            return this.screenToDocumentPosition(n, Number.MAX_VALUE / 10)
                        }, this.getRowSplitData = function (e) {
                            return this.$useWrapMode ? this.$wrapData[e] : void 0
                        }, this.getScreenTabSize = function (e) {
                            return this.$tabSize - (e % this.$tabSize | 0)
                        }, this.screenToDocumentRow = function (e, t) {
                            return this.screenToDocumentPosition(e, t).row
                        }, this.screenToDocumentColumn = function (e, t) {
                            return this.screenToDocumentPosition(e, t).column
                        }, this.screenToDocumentPosition = function (e, t, n) {
                            if (e < 0) return {row: 0, column: 0};
                            var i, r, o = 0, a = 0, s = 0, l = 0, c = this.$screenRowCache,
                                u = this.$getRowCacheIndex(c, e), h = c.length;
                            if (h && u >= 0) {
                                s = c[u], o = this.$docRowCache[u];
                                var d = e > c[h - 1]
                            } else d = !h;
                            for (var f = this.getLength() - 1, g = this.getNextFoldLine(o), p = g ? g.start.row : 1 / 0; s <= e && !(s + (l = this.getRowLength(o)) > e || o >= f);) s += l, ++o > p && (o = g.end.row + 1, p = (g = this.getNextFoldLine(o, g)) ? g.start.row : 1 / 0), d && (this.$docRowCache.push(o), this.$screenRowCache.push(s));
                            if (g && g.start.row <= o) i = this.getFoldDisplayLine(g), o = g.start.row; else {
                                if (s + l <= e || o > f) return {row: f, column: this.getLine(f).length};
                                i = this.getLine(o), g = null
                            }
                            var m = 0, v = Math.floor(e - s);
                            if (this.$useWrapMode) {
                                var y = this.$wrapData[o];
                                y && (r = y[v], v > 0 && y.length && (m = y.indent, a = y[v - 1] || y[y.length - 1], i = i.substring(a)))
                            }
                            return void 0 !== n && this.$bidiHandler.isBidiRow(s + v, o, v) && (t = this.$bidiHandler.offsetToCol(n)), a += this.$getStringScreenWidth(i, t - m)[1], this.$useWrapMode && a >= r && (a = r - 1), g ? g.idxToPosition(a) : {
                                row: o,
                                column: a
                            }
                        }, this.documentToScreenPosition = function (e, t) {
                            if (void 0 === t) var n = this.$clipPositionToDocument(e.row, e.column); else n = this.$clipPositionToDocument(e, t);
                            e = n.row, t = n.column;
                            var i, r = 0, o = null;
                            (i = this.getFoldAt(e, t, 1)) && (e = i.start.row, t = i.start.column);
                            var a, s = 0, l = this.$docRowCache, c = this.$getRowCacheIndex(l, e), u = l.length;
                            if (u && c >= 0) {
                                s = l[c], r = this.$screenRowCache[c];
                                var h = e > l[u - 1]
                            } else h = !u;
                            for (var d = this.getNextFoldLine(s), f = d ? d.start.row : 1 / 0; s < e;) {
                                if (s >= f) {
                                    if ((a = d.end.row + 1) > e) break;
                                    f = (d = this.getNextFoldLine(a, d)) ? d.start.row : 1 / 0
                                } else a = s + 1;
                                r += this.getRowLength(s), s = a, h && (this.$docRowCache.push(s), this.$screenRowCache.push(r))
                            }
                            var g = "";
                            d && s >= f ? (g = this.getFoldDisplayLine(d, e, t), o = d.start.row) : (g = this.getLine(e).substring(0, t), o = e);
                            var p = 0;
                            if (this.$useWrapMode) {
                                var m = this.$wrapData[o];
                                if (m) {
                                    for (var v = 0; g.length >= m[v];) r++, v++;
                                    g = g.substring(m[v - 1] || 0, g.length), p = v > 0 ? m.indent : 0
                                }
                            }
                            return this.lineWidgets && this.lineWidgets[s] && this.lineWidgets[s].rowsAbove && (r += this.lineWidgets[s].rowsAbove), {
                                row: r,
                                column: p + this.$getStringScreenWidth(g)[0]
                            }
                        }, this.documentToScreenColumn = function (e, t) {
                            return this.documentToScreenPosition(e, t).column
                        }, this.documentToScreenRow = function (e, t) {
                            return this.documentToScreenPosition(e, t).row
                        }, this.getScreenLength = function () {
                            var e = 0, t = null;
                            if (this.$useWrapMode) for (var n = this.$wrapData.length, i = 0, r = (s = 0, (t = this.$foldData[s++]) ? t.start.row : 1 / 0); i < n;) {
                                var o = this.$wrapData[i];
                                e += o ? o.length + 1 : 1, ++i > r && (i = t.end.row + 1, r = (t = this.$foldData[s++]) ? t.start.row : 1 / 0)
                            } else {
                                e = this.getLength();
                                for (var a = this.$foldData, s = 0; s < a.length; s++) e -= (t = a[s]).end.row - t.start.row
                            }
                            return this.lineWidgets && (e += this.$getWidgetScreenLength()), e
                        }, this.$setFontMetrics = function (e) {
                            this.$enableVarChar && (this.$getStringScreenWidth = function (t, n, i) {
                                if (0 === n) return [0, 0];
                                var r, o;
                                for (n || (n = 1 / 0), i = i || 0, o = 0; o < t.length && !((i += "\t" === (r = t.charAt(o)) ? this.getScreenTabSize(i) : e.getCharacterWidth(r)) > n); o++) ;
                                return [i, o]
                            })
                        }, this.destroy = function () {
                            this.bgTokenizer && (this.bgTokenizer.setDocument(null), this.bgTokenizer = null), this.$stopWorker(), this.removeAllListeners(), this.selection.detach()
                        }, this.isFullWidth = n
                    }.call(g.prototype), e("./edit_session/folding").Folding.call(g.prototype), e("./edit_session/bracket_match").BracketMatch.call(g.prototype), a.defineOptions(g.prototype, "session", {
                        wrap: {
                            set: function (e) {
                                if (e && "off" != e ? "free" == e ? e = !0 : "printMargin" == e ? e = -1 : "string" == typeof e && (e = parseInt(e, 10) || !1) : e = !1, this.$wrap != e) if (this.$wrap = e, e) {
                                    var t = "number" == typeof e ? e : null;
                                    this.setWrapLimitRange(t, t), this.setUseWrapMode(!0)
                                } else this.setUseWrapMode(!1)
                            }, get: function () {
                                return this.getUseWrapMode() ? -1 == this.$wrap ? "printMargin" : this.getWrapLimitRange().min ? this.$wrap : "free" : "off"
                            }, handlesSet: !0
                        }, wrapMethod: {
                            set: function (e) {
                                (e = "auto" == e ? "text" != this.$mode.type : "text" != e) != this.$wrapAsCode && (this.$wrapAsCode = e, this.$useWrapMode && (this.$useWrapMode = !1, this.setUseWrapMode(!0)))
                            }, initialValue: "auto"
                        }, indentedSoftWrap: {
                            set: function () {
                                this.$useWrapMode && (this.$useWrapMode = !1, this.setUseWrapMode(!0))
                            }, initialValue: !0
                        }, firstLineNumber: {
                            set: function () {
                                this._signal("changeBreakpoint")
                            }, initialValue: 1
                        }, useWorker: {
                            set: function (e) {
                                this.$useWorker = e, this.$stopWorker(), e && this.$startWorker()
                            }, initialValue: !0
                        }, useSoftTabs: {initialValue: !0}, tabSize: {
                            set: function (e) {
                                (e = parseInt(e)) > 0 && this.$tabSize !== e && (this.$modified = !0, this.$rowLengthCache = [], this.$tabSize = e, this._signal("changeTabSize"))
                            }, initialValue: 4, handlesSet: !0
                        }, navigateWithinSoftTabs: {initialValue: !1}, foldStyle: {
                            set: function (e) {
                                this.setFoldStyle(e)
                            }, handlesSet: !0
                        }, overwrite: {
                            set: function (e) {
                                this._signal("changeOverwrite")
                            }, initialValue: !1
                        }, newLineMode: {
                            set: function (e) {
                                this.doc.setNewLineMode(e)
                            }, get: function () {
                                return this.doc.getNewLineMode()
                            }, handlesSet: !0
                        }, mode: {
                            set: function (e) {
                                this.setMode(e)
                            }, get: function () {
                                return this.$modeId
                            }, handlesSet: !0
                        }
                    }), t.EditSession = g
                })), ace.define("ace/search", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/lang"), r = e("./lib/oop"), o = e("./range").Range, a = function () {
                        this.$options = {}
                    };
                    (function () {
                        this.set = function (e) {
                            return r.mixin(this.$options, e), this
                        }, this.getOptions = function () {
                            return i.copyObject(this.$options)
                        }, this.setOptions = function (e) {
                            this.$options = e
                        }, this.find = function (e) {
                            var t = this.$options, n = this.$matchIterator(e, t);
                            if (!n) return !1;
                            var i = null;
                            return n.forEach((function (e, n, r, a) {
                                return i = new o(e, n, r, a), !(n == a && t.start && t.start.start && 0 != t.skipCurrent && i.isEqual(t.start) && (i = null, 1))
                            })), i
                        }, this.findAll = function (e) {
                            var t = this.$options;
                            if (!t.needle) return [];
                            this.$assembleRegExp(t);
                            var n = t.range, r = n ? e.getLines(n.start.row, n.end.row) : e.doc.getAllLines(), a = [],
                                s = t.re;
                            if (t.$isMultiLine) {
                                var l, c = s.length, u = r.length - c;
                                e:for (var h = s.offset || 0; h <= u; h++) {
                                    for (var d = 0; d < c; d++) if (-1 == r[h + d].search(s[d])) continue e;
                                    var f = r[h], g = r[h + c - 1], p = f.length - f.match(s[0])[0].length,
                                        m = g.match(s[c - 1])[0].length;
                                    l && l.end.row === h && l.end.column > p || (a.push(l = new o(h, p, h + c - 1, m)), c > 2 && (h = h + c - 2))
                                }
                            } else for (var v = 0; v < r.length; v++) {
                                var y = i.getMatchOffsets(r[v], s);
                                for (d = 0; d < y.length; d++) {
                                    var b = y[d];
                                    a.push(new o(v, b.offset, v, b.offset + b.length))
                                }
                            }
                            if (n) {
                                var C = n.start.column, w = n.start.column;
                                for (v = 0, d = a.length - 1; v < d && a[v].start.column < C && a[v].start.row == n.start.row;) v++;
                                for (; v < d && a[d].end.column > w && a[d].end.row == n.end.row;) d--;
                                for (a = a.slice(v, d + 1), v = 0, d = a.length; v < d; v++) a[v].start.row += n.start.row, a[v].end.row += n.start.row
                            }
                            return a
                        }, this.replace = function (e, t) {
                            var n = this.$options, i = this.$assembleRegExp(n);
                            if (n.$isMultiLine) return t;
                            if (i) {
                                var r = i.exec(e);
                                if (!r || r[0].length != e.length) return null;
                                if (t = e.replace(i, t), n.preserveCase) {
                                    t = t.split("");
                                    for (var o = Math.min(e.length, e.length); o--;) {
                                        var a = e[o];
                                        a && a.toLowerCase() != a ? t[o] = t[o].toUpperCase() : t[o] = t[o].toLowerCase()
                                    }
                                    t = t.join("")
                                }
                                return t
                            }
                        }, this.$assembleRegExp = function (e, t) {
                            if (e.needle instanceof RegExp) return e.re = e.needle;
                            var n = e.needle;
                            if (!e.needle) return e.re = !1;
                            e.regExp || (n = i.escapeRegExp(n)), e.wholeWord && (n = function (e, t) {
                                function n(e) {
                                    return /\w/.test(e) || t.regExp ? "\\b" : ""
                                }

                                return n(e[0]) + e + n(e[e.length - 1])
                            }(n, e));
                            var r = e.caseSensitive ? "gm" : "gmi";
                            if (e.$isMultiLine = !t && /[\n\r]/.test(n), e.$isMultiLine) return e.re = this.$assembleMultilineRegExp(n, r);
                            try {
                                var o = new RegExp(n, r)
                            } catch (e) {
                                o = !1
                            }
                            return e.re = o
                        }, this.$assembleMultilineRegExp = function (e, t) {
                            for (var n = e.replace(/\r\n|\r|\n/g, "$\n^").split("\n"), i = [], r = 0; r < n.length; r++) try {
                                i.push(new RegExp(n[r], t))
                            } catch (e) {
                                return !1
                            }
                            return i
                        }, this.$matchIterator = function (e, t) {
                            var n = this.$assembleRegExp(t);
                            if (!n) return !1;
                            var i = 1 == t.backwards, r = 0 != t.skipCurrent, o = t.range, a = t.start;
                            a || (a = o ? o[i ? "end" : "start"] : e.selection.getRange()), a.start && (a = a[r != i ? "end" : "start"]);
                            var s = o ? o.start.row : 0, l = o ? o.end.row : e.getLength() - 1;
                            if (i) var c = function (e) {
                                var n = a.row;
                                if (!h(n, a.column, e)) {
                                    for (n--; n >= s; n--) if (h(n, Number.MAX_VALUE, e)) return;
                                    if (0 != t.wrap) for (n = l, s = a.row; n >= s; n--) if (h(n, Number.MAX_VALUE, e)) return
                                }
                            }; else c = function (e) {
                                var n = a.row;
                                if (!h(n, a.column, e)) {
                                    for (n += 1; n <= l; n++) if (h(n, 0, e)) return;
                                    if (0 != t.wrap) for (n = s, l = a.row; n <= l; n++) if (h(n, 0, e)) return
                                }
                            };
                            if (t.$isMultiLine) var u = n.length, h = function (t, r, o) {
                                var a = i ? t - u + 1 : t;
                                if (!(a < 0)) {
                                    var s = e.getLine(a), l = s.search(n[0]);
                                    if (!(!i && l < r || -1 === l)) {
                                        for (var c = 1; c < u; c++) if (-1 == (s = e.getLine(a + c)).search(n[c])) return;
                                        var h = s.match(n[u - 1])[0].length;
                                        if (!(i && h > r)) return !!o(a, l, a + u - 1, h) || void 0
                                    }
                                }
                            }; else h = i ? function (t, i, r) {
                                var o, a = e.getLine(t), s = [], l = 0;
                                for (n.lastIndex = 0; o = n.exec(a);) {
                                    var c = o[0].length;
                                    if (l = o.index, !c) {
                                        if (l >= a.length) break;
                                        n.lastIndex = l += 1
                                    }
                                    if (o.index + c > i) break;
                                    s.push(o.index, c)
                                }
                                for (var u = s.length - 1; u >= 0; u -= 2) {
                                    var h = s[u - 1];
                                    if (r(t, h, t, h + (c = s[u]))) return !0
                                }
                            } : function (t, i, r) {
                                var o, a, s = e.getLine(t);
                                for (n.lastIndex = i; a = n.exec(s);) {
                                    var l = a[0].length;
                                    if (r(t, o = a.index, t, o + l)) return !0;
                                    if (!l && (n.lastIndex = o += 1, o >= s.length)) return !1
                                }
                            };
                            return {forEach: c}
                        }
                    }).call(a.prototype), t.Search = a
                })), ace.define("ace/keyboard/hash_handler", ["require", "exports", "module", "ace/lib/keys", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/keys"), r = e("../lib/useragent"), o = i.KEY_MODS;

                    function a(e, t) {
                        this.platform = t || (r.isMac ? "mac" : "win"), this.commands = {}, this.commandKeyBinding = {}, this.addCommands(e), this.$singleCommand = !0
                    }

                    function s(e, t) {
                        a.call(this, e, t), this.$singleCommand = !1
                    }

                    s.prototype = a.prototype, function () {
                        function e(e) {
                            return "object" == typeof e && e.bindKey && e.bindKey.position || (e.isDefault ? -100 : 0)
                        }

                        this.addCommand = function (e) {
                            this.commands[e.name] && this.removeCommand(e), this.commands[e.name] = e, e.bindKey && this._buildKeyHash(e)
                        }, this.removeCommand = function (e, t) {
                            var n = e && ("string" == typeof e ? e : e.name);
                            e = this.commands[n], t || delete this.commands[n];
                            var i = this.commandKeyBinding;
                            for (var r in i) {
                                var o = i[r];
                                if (o == e) delete i[r]; else if (Array.isArray(o)) {
                                    var a = o.indexOf(e);
                                    -1 != a && (o.splice(a, 1), 1 == o.length && (i[r] = o[0]))
                                }
                            }
                        }, this.bindKey = function (e, t, n) {
                            if ("object" == typeof e && e && (null == n && (n = e.position), e = e[this.platform]), e) return "function" == typeof t ? this.addCommand({
                                exec: t,
                                bindKey: e,
                                name: t.name || e
                            }) : void e.split("|").forEach((function (e) {
                                var i = "";
                                if (-1 != e.indexOf(" ")) {
                                    var r = e.split(/\s+/);
                                    e = r.pop(), r.forEach((function (e) {
                                        var t = this.parseKeys(e), n = o[t.hashId] + t.key;
                                        i += (i ? " " : "") + n, this._addCommandToBinding(i, "chainKeys")
                                    }), this), i += " "
                                }
                                var a = this.parseKeys(e), s = o[a.hashId] + a.key;
                                this._addCommandToBinding(i + s, t, n)
                            }), this)
                        }, this._addCommandToBinding = function (t, n, i) {
                            var r, o = this.commandKeyBinding;
                            if (n) if (!o[t] || this.$singleCommand) o[t] = n; else {
                                Array.isArray(o[t]) ? -1 != (r = o[t].indexOf(n)) && o[t].splice(r, 1) : o[t] = [o[t]], "number" != typeof i && (i = e(n));
                                var a = o[t];
                                for (r = 0; r < a.length && !(e(a[r]) > i); r++) ;
                                a.splice(r, 0, n)
                            } else delete o[t]
                        }, this.addCommands = function (e) {
                            e && Object.keys(e).forEach((function (t) {
                                var n = e[t];
                                if (n) {
                                    if ("string" == typeof n) return this.bindKey(n, t);
                                    "function" == typeof n && (n = {exec: n}), "object" == typeof n && (n.name || (n.name = t), this.addCommand(n))
                                }
                            }), this)
                        }, this.removeCommands = function (e) {
                            Object.keys(e).forEach((function (t) {
                                this.removeCommand(e[t])
                            }), this)
                        }, this.bindKeys = function (e) {
                            Object.keys(e).forEach((function (t) {
                                this.bindKey(t, e[t])
                            }), this)
                        }, this._buildKeyHash = function (e) {
                            this.bindKey(e.bindKey, e)
                        }, this.parseKeys = function (e) {
                            var t = e.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function (e) {
                                return e
                            })), n = t.pop(), r = i[n];
                            if (i.FUNCTION_KEYS[r]) n = i.FUNCTION_KEYS[r].toLowerCase(); else {
                                if (!t.length) return {key: n, hashId: -1};
                                if (1 == t.length && "shift" == t[0]) return {key: n.toUpperCase(), hashId: -1}
                            }
                            for (var o = 0, a = t.length; a--;) {
                                var s = i.KEY_MODS[t[a]];
                                if (null == s) return "undefined" != typeof console && console.error("invalid modifier " + t[a] + " in " + e), !1;
                                o |= s
                            }
                            return {key: n, hashId: o}
                        }, this.findKeyCommand = function (e, t) {
                            var n = o[e] + t;
                            return this.commandKeyBinding[n]
                        }, this.handleKeyboard = function (e, t, n, i) {
                            if (!(i < 0)) {
                                var r = o[t] + n, a = this.commandKeyBinding[r];
                                return e.$keyChain && (e.$keyChain += " " + r, a = this.commandKeyBinding[e.$keyChain] || a), !a || "chainKeys" != a && "chainKeys" != a[a.length - 1] ? (e.$keyChain && (t && 4 != t || 1 != n.length ? (-1 == t || i > 0) && (e.$keyChain = "") : e.$keyChain = e.$keyChain.slice(0, -r.length - 1)), {command: a}) : (e.$keyChain = e.$keyChain || r, {command: "null"})
                            }
                        }, this.getStatusText = function (e, t) {
                            return t.$keyChain || ""
                        }
                    }.call(a.prototype), t.HashHandler = a, t.MultiHashHandler = s
                })), ace.define("ace/commands/command_manager", ["require", "exports", "module", "ace/lib/oop", "ace/keyboard/hash_handler", "ace/lib/event_emitter"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/oop"), r = e("../keyboard/hash_handler").MultiHashHandler,
                        o = e("../lib/event_emitter").EventEmitter, a = function (e, t) {
                            r.call(this, t, e), this.byName = this.commands, this.setDefaultHandler("exec", (function (e) {
                                return e.command.exec(e.editor, e.args || {})
                            }))
                        };
                    i.inherits(a, r), function () {
                        i.implement(this, o), this.exec = function (e, t, n) {
                            if (Array.isArray(e)) {
                                for (var i = e.length; i--;) if (this.exec(e[i], t, n)) return !0;
                                return !1
                            }
                            if ("string" == typeof e && (e = this.commands[e]), !e) return !1;
                            if (t && t.$readOnly && !e.readOnly) return !1;
                            if (0 != this.$checkCommandState && e.isAvailable && !e.isAvailable(t)) return !1;
                            var r = {editor: t, command: e, args: n};
                            return r.returnValue = this._emit("exec", r), this._signal("afterExec", r), !1 !== r.returnValue
                        }, this.toggleRecording = function (e) {
                            if (!this.$inReplay) return e && e._emit("changeStatus"), this.recording ? (this.macro.pop(), this.off("exec", this.$addCommandToMacro), this.macro.length || (this.macro = this.oldMacro), this.recording = !1) : (this.$addCommandToMacro || (this.$addCommandToMacro = function (e) {
                                this.macro.push([e.command, e.args])
                            }.bind(this)), this.oldMacro = this.macro, this.macro = [], this.on("exec", this.$addCommandToMacro), this.recording = !0)
                        }, this.replay = function (e) {
                            if (!this.$inReplay && this.macro) {
                                if (this.recording) return this.toggleRecording(e);
                                try {
                                    this.$inReplay = !0, this.macro.forEach((function (t) {
                                        "string" == typeof t ? this.exec(t, e) : this.exec(t[0], e, t[1])
                                    }), this)
                                } finally {
                                    this.$inReplay = !1
                                }
                            }
                        }, this.trimMacro = function (e) {
                            return e.map((function (e) {
                                return "string" != typeof e[0] && (e[0] = e[0].name), e[1] || (e = e[0]), e
                            }))
                        }
                    }.call(a.prototype), t.CommandManager = a
                })), ace.define("ace/commands/default_commands", ["require", "exports", "module", "ace/lib/lang", "ace/config", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/lang"), r = e("../config"), o = e("../range").Range;

                    function a(e, t) {
                        return {win: e, mac: t}
                    }

                    t.commands = [{
                        name: "showSettingsMenu", bindKey: a("Ctrl-,", "Command-,"), exec: function (e) {
                            r.loadModule("ace/ext/settings_menu", (function (t) {
                                t.init(e), e.showSettingsMenu()
                            }))
                        }, readOnly: !0
                    }, {
                        name: "goToNextError", bindKey: a("Alt-E", "F4"), exec: function (e) {
                            r.loadModule("./ext/error_marker", (function (t) {
                                t.showErrorMarker(e, 1)
                            }))
                        }, scrollIntoView: "animate", readOnly: !0
                    }, {
                        name: "goToPreviousError", bindKey: a("Alt-Shift-E", "Shift-F4"), exec: function (e) {
                            r.loadModule("./ext/error_marker", (function (t) {
                                t.showErrorMarker(e, -1)
                            }))
                        }, scrollIntoView: "animate", readOnly: !0
                    }, {
                        name: "selectall",
                        description: "Select all",
                        bindKey: a("Ctrl-A", "Command-A"),
                        exec: function (e) {
                            e.selectAll()
                        },
                        readOnly: !0
                    }, {
                        name: "centerselection",
                        description: "Center selection",
                        bindKey: a(null, "Ctrl-L"),
                        exec: function (e) {
                            e.centerSelection()
                        },
                        readOnly: !0
                    }, {
                        name: "gotoline",
                        description: "Go to line...",
                        bindKey: a("Ctrl-L", "Command-L"),
                        exec: function (e, t) {
                            "number" != typeof t || isNaN(t) || e.gotoLine(t), e.prompt({$type: "gotoLine"})
                        },
                        readOnly: !0
                    }, {
                        name: "fold", bindKey: a("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), exec: function (e) {
                            e.session.toggleFold(!1)
                        }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0
                    }, {
                        name: "unfold",
                        bindKey: a("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"),
                        exec: function (e) {
                            e.session.toggleFold(!0)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "center",
                        readOnly: !0
                    }, {
                        name: "toggleFoldWidget", bindKey: a("F2", "F2"), exec: function (e) {
                            e.session.toggleFoldWidget()
                        }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0
                    }, {
                        name: "toggleParentFoldWidget", bindKey: a("Alt-F2", "Alt-F2"), exec: function (e) {
                            e.session.toggleFoldWidget(!0)
                        }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0
                    }, {
                        name: "foldall",
                        description: "Fold all",
                        bindKey: a(null, "Ctrl-Command-Option-0"),
                        exec: function (e) {
                            e.session.foldAll()
                        },
                        scrollIntoView: "center",
                        readOnly: !0
                    }, {
                        name: "foldOther",
                        description: "Fold other",
                        bindKey: a("Alt-0", "Command-Option-0"),
                        exec: function (e) {
                            e.session.foldAll(), e.session.unfold(e.selection.getAllRanges())
                        },
                        scrollIntoView: "center",
                        readOnly: !0
                    }, {
                        name: "unfoldall",
                        description: "Unfold all",
                        bindKey: a("Alt-Shift-0", "Command-Option-Shift-0"),
                        exec: function (e) {
                            e.session.unfold()
                        },
                        scrollIntoView: "center",
                        readOnly: !0
                    }, {
                        name: "findnext",
                        description: "Find next",
                        bindKey: a("Ctrl-K", "Command-G"),
                        exec: function (e) {
                            e.findNext()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "center",
                        readOnly: !0
                    }, {
                        name: "findprevious",
                        description: "Find previous",
                        bindKey: a("Ctrl-Shift-K", "Command-Shift-G"),
                        exec: function (e) {
                            e.findPrevious()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "center",
                        readOnly: !0
                    }, {
                        name: "selectOrFindNext",
                        description: "Select or find next",
                        bindKey: a("Alt-K", "Ctrl-G"),
                        exec: function (e) {
                            e.selection.isEmpty() ? e.selection.selectWord() : e.findNext()
                        },
                        readOnly: !0
                    }, {
                        name: "selectOrFindPrevious",
                        description: "Select or find previous",
                        bindKey: a("Alt-Shift-K", "Ctrl-Shift-G"),
                        exec: function (e) {
                            e.selection.isEmpty() ? e.selection.selectWord() : e.findPrevious()
                        },
                        readOnly: !0
                    }, {
                        name: "find", description: "Find", bindKey: a("Ctrl-F", "Command-F"), exec: function (e) {
                            r.loadModule("ace/ext/searchbox", (function (t) {
                                t.Search(e)
                            }))
                        }, readOnly: !0
                    }, {
                        name: "overwrite", description: "Overwrite", bindKey: "Insert", exec: function (e) {
                            e.toggleOverwrite()
                        }, readOnly: !0
                    }, {
                        name: "selecttostart",
                        description: "Select to start",
                        bindKey: a("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"),
                        exec: function (e) {
                            e.getSelection().selectFileStart()
                        },
                        multiSelectAction: "forEach",
                        readOnly: !0,
                        scrollIntoView: "animate",
                        aceCommandGroup: "fileJump"
                    }, {
                        name: "gotostart",
                        description: "Go to start",
                        bindKey: a("Ctrl-Home", "Command-Home|Command-Up"),
                        exec: function (e) {
                            e.navigateFileStart()
                        },
                        multiSelectAction: "forEach",
                        readOnly: !0,
                        scrollIntoView: "animate",
                        aceCommandGroup: "fileJump"
                    }, {
                        name: "selectup",
                        description: "Select up",
                        bindKey: a("Shift-Up", "Shift-Up|Ctrl-Shift-P"),
                        exec: function (e) {
                            e.getSelection().selectUp()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "golineup",
                        description: "Go line up",
                        bindKey: a("Up", "Up|Ctrl-P"),
                        exec: function (e, t) {
                            e.navigateUp(t.times)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selecttoend",
                        description: "Select to end",
                        bindKey: a("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"),
                        exec: function (e) {
                            e.getSelection().selectFileEnd()
                        },
                        multiSelectAction: "forEach",
                        readOnly: !0,
                        scrollIntoView: "animate",
                        aceCommandGroup: "fileJump"
                    }, {
                        name: "gotoend",
                        description: "Go to end",
                        bindKey: a("Ctrl-End", "Command-End|Command-Down"),
                        exec: function (e) {
                            e.navigateFileEnd()
                        },
                        multiSelectAction: "forEach",
                        readOnly: !0,
                        scrollIntoView: "animate",
                        aceCommandGroup: "fileJump"
                    }, {
                        name: "selectdown",
                        description: "Select down",
                        bindKey: a("Shift-Down", "Shift-Down|Ctrl-Shift-N"),
                        exec: function (e) {
                            e.getSelection().selectDown()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "golinedown",
                        description: "Go line down",
                        bindKey: a("Down", "Down|Ctrl-N"),
                        exec: function (e, t) {
                            e.navigateDown(t.times)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectwordleft",
                        description: "Select word left",
                        bindKey: a("Ctrl-Shift-Left", "Option-Shift-Left"),
                        exec: function (e) {
                            e.getSelection().selectWordLeft()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "gotowordleft",
                        description: "Go to word left",
                        bindKey: a("Ctrl-Left", "Option-Left"),
                        exec: function (e) {
                            e.navigateWordLeft()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selecttolinestart",
                        description: "Select to line start",
                        bindKey: a("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"),
                        exec: function (e) {
                            e.getSelection().selectLineStart()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "gotolinestart",
                        description: "Go to line start",
                        bindKey: a("Alt-Left|Home", "Command-Left|Home|Ctrl-A"),
                        exec: function (e) {
                            e.navigateLineStart()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectleft",
                        description: "Select left",
                        bindKey: a("Shift-Left", "Shift-Left|Ctrl-Shift-B"),
                        exec: function (e) {
                            e.getSelection().selectLeft()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "gotoleft",
                        description: "Go to left",
                        bindKey: a("Left", "Left|Ctrl-B"),
                        exec: function (e, t) {
                            e.navigateLeft(t.times)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectwordright",
                        description: "Select word right",
                        bindKey: a("Ctrl-Shift-Right", "Option-Shift-Right"),
                        exec: function (e) {
                            e.getSelection().selectWordRight()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "gotowordright",
                        description: "Go to word right",
                        bindKey: a("Ctrl-Right", "Option-Right"),
                        exec: function (e) {
                            e.navigateWordRight()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selecttolineend",
                        description: "Select to line end",
                        bindKey: a("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"),
                        exec: function (e) {
                            e.getSelection().selectLineEnd()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "gotolineend",
                        description: "Go to line end",
                        bindKey: a("Alt-Right|End", "Command-Right|End|Ctrl-E"),
                        exec: function (e) {
                            e.navigateLineEnd()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectright",
                        description: "Select right",
                        bindKey: a("Shift-Right", "Shift-Right"),
                        exec: function (e) {
                            e.getSelection().selectRight()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "gotoright",
                        description: "Go to right",
                        bindKey: a("Right", "Right|Ctrl-F"),
                        exec: function (e, t) {
                            e.navigateRight(t.times)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectpagedown",
                        description: "Select page down",
                        bindKey: "Shift-PageDown",
                        exec: function (e) {
                            e.selectPageDown()
                        },
                        readOnly: !0
                    }, {
                        name: "pagedown",
                        description: "Page down",
                        bindKey: a(null, "Option-PageDown"),
                        exec: function (e) {
                            e.scrollPageDown()
                        },
                        readOnly: !0
                    }, {
                        name: "gotopagedown",
                        description: "Go to page down",
                        bindKey: a("PageDown", "PageDown|Ctrl-V"),
                        exec: function (e) {
                            e.gotoPageDown()
                        },
                        readOnly: !0
                    }, {
                        name: "selectpageup",
                        description: "Select page up",
                        bindKey: "Shift-PageUp",
                        exec: function (e) {
                            e.selectPageUp()
                        },
                        readOnly: !0
                    }, {
                        name: "pageup", description: "Page up", bindKey: a(null, "Option-PageUp"), exec: function (e) {
                            e.scrollPageUp()
                        }, readOnly: !0
                    }, {
                        name: "gotopageup", description: "Go to page up", bindKey: "PageUp", exec: function (e) {
                            e.gotoPageUp()
                        }, readOnly: !0
                    }, {
                        name: "scrollup", description: "Scroll up", bindKey: a("Ctrl-Up", null), exec: function (e) {
                            e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight)
                        }, readOnly: !0
                    }, {
                        name: "scrolldown",
                        description: "Scroll down",
                        bindKey: a("Ctrl-Down", null),
                        exec: function (e) {
                            e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight)
                        },
                        readOnly: !0
                    }, {
                        name: "selectlinestart",
                        description: "Select line start",
                        bindKey: "Shift-Home",
                        exec: function (e) {
                            e.getSelection().selectLineStart()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectlineend",
                        description: "Select line end",
                        bindKey: "Shift-End",
                        exec: function (e) {
                            e.getSelection().selectLineEnd()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "togglerecording",
                        description: "Toggle recording",
                        bindKey: a("Ctrl-Alt-E", "Command-Option-E"),
                        exec: function (e) {
                            e.commands.toggleRecording(e)
                        },
                        readOnly: !0
                    }, {
                        name: "replaymacro",
                        description: "Replay macro",
                        bindKey: a("Ctrl-Shift-E", "Command-Shift-E"),
                        exec: function (e) {
                            e.commands.replay(e)
                        },
                        readOnly: !0
                    }, {
                        name: "jumptomatching",
                        description: "Jump to matching",
                        bindKey: a("Ctrl-\\|Ctrl-P", "Command-\\"),
                        exec: function (e) {
                            e.jumpToMatching()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "animate",
                        readOnly: !0
                    }, {
                        name: "selecttomatching",
                        description: "Select to matching",
                        bindKey: a("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"),
                        exec: function (e) {
                            e.jumpToMatching(!0)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "animate",
                        readOnly: !0
                    }, {
                        name: "expandToMatching",
                        description: "Expand to matching",
                        bindKey: a("Ctrl-Shift-M", "Ctrl-Shift-M"),
                        exec: function (e) {
                            e.jumpToMatching(!0, !0)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "animate",
                        readOnly: !0
                    }, {
                        name: "passKeysToBrowser",
                        description: "Pass keys to browser",
                        bindKey: a(null, null),
                        exec: function () {
                        },
                        passEvent: !0,
                        readOnly: !0
                    }, {
                        name: "copy", description: "Copy", exec: function (e) {
                        }, readOnly: !0
                    }, {
                        name: "cut", description: "Cut", exec: function (e) {
                            var t = e.$copyWithEmptySelection && e.selection.isEmpty() ? e.selection.getLineRange() : e.selection.getRange();
                            e._emit("cut", t), t.isEmpty() || e.session.remove(t), e.clearSelection()
                        }, scrollIntoView: "cursor", multiSelectAction: "forEach"
                    }, {
                        name: "paste", description: "Paste", exec: function (e, t) {
                            e.$handlePaste(t)
                        }, scrollIntoView: "cursor"
                    }, {
                        name: "removeline",
                        description: "Remove line",
                        bindKey: a("Ctrl-D", "Command-D"),
                        exec: function (e) {
                            e.removeLines()
                        },
                        scrollIntoView: "cursor",
                        multiSelectAction: "forEachLine"
                    }, {
                        name: "duplicateSelection",
                        description: "Duplicate selection",
                        bindKey: a("Ctrl-Shift-D", "Command-Shift-D"),
                        exec: function (e) {
                            e.duplicateSelection()
                        },
                        scrollIntoView: "cursor",
                        multiSelectAction: "forEach"
                    }, {
                        name: "sortlines",
                        description: "Sort lines",
                        bindKey: a("Ctrl-Alt-S", "Command-Alt-S"),
                        exec: function (e) {
                            e.sortLines()
                        },
                        scrollIntoView: "selection",
                        multiSelectAction: "forEachLine"
                    }, {
                        name: "togglecomment",
                        description: "Toggle comment",
                        bindKey: a("Ctrl-/", "Command-/"),
                        exec: function (e) {
                            e.toggleCommentLines()
                        },
                        multiSelectAction: "forEachLine",
                        scrollIntoView: "selectionPart"
                    }, {
                        name: "toggleBlockComment",
                        description: "Toggle block comment",
                        bindKey: a("Ctrl-Shift-/", "Command-Shift-/"),
                        exec: function (e) {
                            e.toggleBlockComment()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "selectionPart"
                    }, {
                        name: "modifyNumberUp",
                        description: "Modify number up",
                        bindKey: a("Ctrl-Shift-Up", "Alt-Shift-Up"),
                        exec: function (e) {
                            e.modifyNumber(1)
                        },
                        scrollIntoView: "cursor",
                        multiSelectAction: "forEach"
                    }, {
                        name: "modifyNumberDown",
                        description: "Modify number down",
                        bindKey: a("Ctrl-Shift-Down", "Alt-Shift-Down"),
                        exec: function (e) {
                            e.modifyNumber(-1)
                        },
                        scrollIntoView: "cursor",
                        multiSelectAction: "forEach"
                    }, {
                        name: "replace",
                        description: "Replace",
                        bindKey: a("Ctrl-H", "Command-Option-F"),
                        exec: function (e) {
                            r.loadModule("ace/ext/searchbox", (function (t) {
                                t.Search(e, !0)
                            }))
                        }
                    }, {
                        name: "undo", description: "Undo", bindKey: a("Ctrl-Z", "Command-Z"), exec: function (e) {
                            e.undo()
                        }
                    }, {
                        name: "redo",
                        description: "Redo",
                        bindKey: a("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"),
                        exec: function (e) {
                            e.redo()
                        }
                    }, {
                        name: "copylinesup",
                        description: "Copy lines up",
                        bindKey: a("Alt-Shift-Up", "Command-Option-Up"),
                        exec: function (e) {
                            e.copyLinesUp()
                        },
                        scrollIntoView: "cursor"
                    }, {
                        name: "movelinesup",
                        description: "Move lines up",
                        bindKey: a("Alt-Up", "Option-Up"),
                        exec: function (e) {
                            e.moveLinesUp()
                        },
                        scrollIntoView: "cursor"
                    }, {
                        name: "copylinesdown",
                        description: "Copy lines down",
                        bindKey: a("Alt-Shift-Down", "Command-Option-Down"),
                        exec: function (e) {
                            e.copyLinesDown()
                        },
                        scrollIntoView: "cursor"
                    }, {
                        name: "movelinesdown",
                        description: "Move lines down",
                        bindKey: a("Alt-Down", "Option-Down"),
                        exec: function (e) {
                            e.moveLinesDown()
                        },
                        scrollIntoView: "cursor"
                    }, {
                        name: "del",
                        description: "Delete",
                        bindKey: a("Delete", "Delete|Ctrl-D|Shift-Delete"),
                        exec: function (e) {
                            e.remove("right")
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "backspace",
                        description: "Backspace",
                        bindKey: a("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),
                        exec: function (e) {
                            e.remove("left")
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "cut_or_delete",
                        description: "Cut or delete",
                        bindKey: a("Shift-Delete", null),
                        exec: function (e) {
                            if (!e.selection.isEmpty()) return !1;
                            e.remove("left")
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "removetolinestart",
                        description: "Remove to line start",
                        bindKey: a("Alt-Backspace", "Command-Backspace"),
                        exec: function (e) {
                            e.removeToLineStart()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "removetolineend",
                        description: "Remove to line end",
                        bindKey: a("Alt-Delete", "Ctrl-K|Command-Delete"),
                        exec: function (e) {
                            e.removeToLineEnd()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "removetolinestarthard",
                        description: "Remove to line start hard",
                        bindKey: a("Ctrl-Shift-Backspace", null),
                        exec: function (e) {
                            var t = e.selection.getRange();
                            t.start.column = 0, e.session.remove(t)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "removetolineendhard",
                        description: "Remove to line end hard",
                        bindKey: a("Ctrl-Shift-Delete", null),
                        exec: function (e) {
                            var t = e.selection.getRange();
                            t.end.column = Number.MAX_VALUE, e.session.remove(t)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "removewordleft",
                        description: "Remove word left",
                        bindKey: a("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"),
                        exec: function (e) {
                            e.removeWordLeft()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "removewordright",
                        description: "Remove word right",
                        bindKey: a("Ctrl-Delete", "Alt-Delete"),
                        exec: function (e) {
                            e.removeWordRight()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "outdent",
                        description: "Outdent",
                        bindKey: a("Shift-Tab", "Shift-Tab"),
                        exec: function (e) {
                            e.blockOutdent()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "selectionPart"
                    }, {
                        name: "indent", description: "Indent", bindKey: a("Tab", "Tab"), exec: function (e) {
                            e.indent()
                        }, multiSelectAction: "forEach", scrollIntoView: "selectionPart"
                    }, {
                        name: "blockoutdent",
                        description: "Block outdent",
                        bindKey: a("Ctrl-[", "Ctrl-["),
                        exec: function (e) {
                            e.blockOutdent()
                        },
                        multiSelectAction: "forEachLine",
                        scrollIntoView: "selectionPart"
                    }, {
                        name: "blockindent",
                        description: "Block indent",
                        bindKey: a("Ctrl-]", "Ctrl-]"),
                        exec: function (e) {
                            e.blockIndent()
                        },
                        multiSelectAction: "forEachLine",
                        scrollIntoView: "selectionPart"
                    }, {
                        name: "insertstring", description: "Insert string", exec: function (e, t) {
                            e.insert(t)
                        }, multiSelectAction: "forEach", scrollIntoView: "cursor"
                    }, {
                        name: "inserttext", description: "Insert text", exec: function (e, t) {
                            e.insert(i.stringRepeat(t.text || "", t.times || 1))
                        }, multiSelectAction: "forEach", scrollIntoView: "cursor"
                    }, {
                        name: "splitline", description: "Split line", bindKey: a(null, "Ctrl-O"), exec: function (e) {
                            e.splitLine()
                        }, multiSelectAction: "forEach", scrollIntoView: "cursor"
                    }, {
                        name: "transposeletters",
                        description: "Transpose letters",
                        bindKey: a("Alt-Shift-X", "Ctrl-T"),
                        exec: function (e) {
                            e.transposeLetters()
                        },
                        multiSelectAction: function (e) {
                            e.transposeSelections(1)
                        },
                        scrollIntoView: "cursor"
                    }, {
                        name: "touppercase",
                        description: "To uppercase",
                        bindKey: a("Ctrl-U", "Ctrl-U"),
                        exec: function (e) {
                            e.toUpperCase()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "tolowercase",
                        description: "To lowercase",
                        bindKey: a("Ctrl-Shift-U", "Ctrl-Shift-U"),
                        exec: function (e) {
                            e.toLowerCase()
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor"
                    }, {
                        name: "autoindent", description: "Auto Indent", bindKey: a(null, null), exec: function (e) {
                            e.autoIndent()
                        }, multiSelectAction: "forEachLine", scrollIntoView: "animate"
                    }, {
                        name: "expandtoline",
                        description: "Expand to line",
                        bindKey: a("Ctrl-Shift-L", "Command-Shift-L"),
                        exec: function (e) {
                            var t = e.selection.getRange();
                            t.start.column = t.end.column = 0, t.end.row++, e.selection.setRange(t, !1)
                        },
                        multiSelectAction: "forEach",
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "joinlines", description: "Join lines", bindKey: a(null, null), exec: function (e) {
                            for (var t = e.selection.isBackwards(), n = t ? e.selection.getSelectionLead() : e.selection.getSelectionAnchor(), r = t ? e.selection.getSelectionAnchor() : e.selection.getSelectionLead(), a = e.session.doc.getLine(n.row).length, s = e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/, " ").length, l = e.session.doc.getLine(n.row), c = n.row + 1; c <= r.row + 1; c++) {
                                var u = i.stringTrimLeft(i.stringTrimRight(e.session.doc.getLine(c)));
                                0 !== u.length && (u = " " + u), l += u
                            }
                            r.row + 1 < e.session.doc.getLength() - 1 && (l += e.session.doc.getNewLineCharacter()), e.clearSelection(), e.session.doc.replace(new o(n.row, 0, r.row + 2, 0), l), s > 0 ? (e.selection.moveCursorTo(n.row, n.column), e.selection.selectTo(n.row, n.column + s)) : (a = e.session.doc.getLine(n.row).length > a ? a + 1 : a, e.selection.moveCursorTo(n.row, a))
                        }, multiSelectAction: "forEach", readOnly: !0
                    }, {
                        name: "invertSelection",
                        description: "Invert selection",
                        bindKey: a(null, null),
                        exec: function (e) {
                            var t = e.session.doc.getLength() - 1, n = e.session.doc.getLine(t).length,
                                i = e.selection.rangeList.ranges, r = [];
                            i.length < 1 && (i = [e.selection.getRange()]);
                            for (var a = 0; a < i.length; a++) a == i.length - 1 && (i[a].end.row === t && i[a].end.column === n || r.push(new o(i[a].end.row, i[a].end.column, t, n))), 0 === a ? 0 === i[a].start.row && 0 === i[a].start.column || r.push(new o(0, 0, i[a].start.row, i[a].start.column)) : r.push(new o(i[a - 1].end.row, i[a - 1].end.column, i[a].start.row, i[a].start.column));
                            for (e.exitMultiSelectMode(), e.clearSelection(), a = 0; a < r.length; a++) e.selection.addRange(r[a], !1)
                        },
                        readOnly: !0,
                        scrollIntoView: "none"
                    }, {
                        name: "addLineAfter", exec: function (e) {
                            e.selection.clearSelection(), e.navigateLineEnd(), e.insert("\n")
                        }, multiSelectAction: "forEach", scrollIntoView: "cursor"
                    }, {
                        name: "addLineBefore", exec: function (e) {
                            e.selection.clearSelection();
                            var t = e.getCursorPosition();
                            e.selection.moveTo(t.row - 1, Number.MAX_VALUE), e.insert("\n"), 0 === t.row && e.navigateUp()
                        }, multiSelectAction: "forEach", scrollIntoView: "cursor"
                    }, {
                        name: "openCommandPallete",
                        description: "Open command pallete",
                        bindKey: a("F1", "F1"),
                        exec: function (e) {
                            e.prompt({$type: "commands"})
                        },
                        readOnly: !0
                    }, {
                        name: "modeSelect",
                        description: "Change language mode...",
                        bindKey: a(null, null),
                        exec: function (e) {
                            e.prompt({$type: "modes"})
                        },
                        readOnly: !0
                    }]
                })), ace.define("ace/editor", ["require", "exports", "module", "ace/lib/fixoldbrowsers", "ace/lib/oop", "ace/lib/dom", "ace/lib/lang", "ace/lib/useragent", "ace/keyboard/textinput", "ace/mouse/mouse_handler", "ace/mouse/fold_handler", "ace/keyboard/keybinding", "ace/edit_session", "ace/search", "ace/range", "ace/lib/event_emitter", "ace/commands/command_manager", "ace/commands/default_commands", "ace/config", "ace/token_iterator", "ace/clipboard"], (function (e, t, n) {
                    "use strict";
                    e("./lib/fixoldbrowsers");
                    var i = e("./lib/oop"), r = e("./lib/dom"), o = e("./lib/lang"), a = e("./lib/useragent"),
                        s = e("./keyboard/textinput").TextInput, l = e("./mouse/mouse_handler").MouseHandler,
                        c = e("./mouse/fold_handler").FoldHandler, u = e("./keyboard/keybinding").KeyBinding,
                        h = e("./edit_session").EditSession, d = e("./search").Search, f = e("./range").Range,
                        g = e("./lib/event_emitter").EventEmitter, p = e("./commands/command_manager").CommandManager,
                        m = e("./commands/default_commands").commands, v = e("./config"),
                        y = e("./token_iterator").TokenIterator, b = e("./clipboard"), C = function (e, t, n) {
                            this.$toDestroy = [];
                            var i = e.getContainerElement();
                            this.container = i, this.renderer = e, this.id = "editor" + ++C.$uid, this.commands = new p(a.isMac ? "mac" : "win", m), "object" == typeof document && (this.textInput = new s(e.getTextAreaContainer(), this), this.renderer.textarea = this.textInput.getElement(), this.$mouseHandler = new l(this), new c(this)), this.keyBinding = new u(this), this.$search = (new d).set({wrap: !0}), this.$historyTracker = this.$historyTracker.bind(this), this.commands.on("exec", this.$historyTracker), this.$initOperationListeners(), this._$emitInputEvent = o.delayedCall(function () {
                                this._signal("input", {}), this.session && this.session.bgTokenizer && this.session.bgTokenizer.scheduleStart()
                            }.bind(this)), this.on("change", (function (e, t) {
                                t._$emitInputEvent.schedule(31)
                            })), this.setSession(t || n && n.session || new h("")), v.resetOptions(this), n && this.setOptions(n), v._signal("editor", this)
                        };
                    C.$uid = 0, function () {
                        i.implement(this, g), this.$initOperationListeners = function () {
                            this.commands.on("exec", this.startOperation.bind(this), !0), this.commands.on("afterExec", this.endOperation.bind(this), !0), this.$opResetTimer = o.delayedCall(this.endOperation.bind(this, !0)), this.on("change", function () {
                                this.curOp || (this.startOperation(), this.curOp.selectionBefore = this.$lastSel), this.curOp.docChanged = !0
                            }.bind(this), !0), this.on("changeSelection", function () {
                                this.curOp || (this.startOperation(), this.curOp.selectionBefore = this.$lastSel), this.curOp.selectionChanged = !0
                            }.bind(this), !0)
                        }, this.curOp = null, this.prevOp = {}, this.startOperation = function (e) {
                            if (this.curOp) {
                                if (!e || this.curOp.command) return;
                                this.prevOp = this.curOp
                            }
                            e || (this.previousCommand = null, e = {}), this.$opResetTimer.schedule(), this.curOp = this.session.curOp = {
                                command: e.command || {},
                                args: e.args,
                                scrollTop: this.renderer.scrollTop
                            }, this.curOp.selectionBefore = this.selection.toJSON()
                        }, this.endOperation = function (e) {
                            if (this.curOp && this.session) {
                                if (e && !1 === e.returnValue || !this.session) return this.curOp = null;
                                if (1 == e && this.curOp.command && "mouse" == this.curOp.command.name) return;
                                if (this._signal("beforeEndOperation"), !this.curOp) return;
                                var t = this.curOp.command, n = t && t.scrollIntoView;
                                if (n) {
                                    switch (n) {
                                        case"center-animate":
                                            n = "animate";
                                        case"center":
                                            this.renderer.scrollCursorIntoView(null, .5);
                                            break;
                                        case"animate":
                                        case"cursor":
                                            this.renderer.scrollCursorIntoView();
                                            break;
                                        case"selectionPart":
                                            var i = this.selection.getRange(), r = this.renderer.layerConfig;
                                            (i.start.row >= r.lastRow || i.end.row <= r.firstRow) && this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead)
                                    }
                                    "animate" == n && this.renderer.animateScrolling(this.curOp.scrollTop)
                                }
                                var o = this.selection.toJSON();
                                this.curOp.selectionAfter = o, this.$lastSel = this.selection.toJSON(), this.session.getUndoManager().addSelection(o), this.prevOp = this.curOp, this.curOp = null
                            }
                        }, this.$mergeableCommands = ["backspace", "del", "insertstring"], this.$historyTracker = function (e) {
                            if (this.$mergeUndoDeltas) {
                                var t = this.prevOp, n = this.$mergeableCommands,
                                    i = t.command && e.command.name == t.command.name;
                                if ("insertstring" == e.command.name) {
                                    var r = e.args;
                                    void 0 === this.mergeNextCommand && (this.mergeNextCommand = !0), i = i && this.mergeNextCommand && (!/\s/.test(r) || /\s/.test(t.args)), this.mergeNextCommand = !0
                                } else i = i && -1 !== n.indexOf(e.command.name);
                                "always" != this.$mergeUndoDeltas && Date.now() - this.sequenceStartTime > 2e3 && (i = !1), i ? this.session.mergeUndoDeltas = !0 : -1 !== n.indexOf(e.command.name) && (this.sequenceStartTime = Date.now())
                            }
                        }, this.setKeyboardHandler = function (e, t) {
                            if (e && "string" == typeof e && "ace" != e) {
                                this.$keybindingId = e;
                                var n = this;
                                v.loadModule(["keybinding", e], (function (i) {
                                    n.$keybindingId == e && n.keyBinding.setKeyboardHandler(i && i.handler), t && t()
                                }))
                            } else this.$keybindingId = null, this.keyBinding.setKeyboardHandler(e), t && t()
                        }, this.getKeyboardHandler = function () {
                            return this.keyBinding.getKeyboardHandler()
                        }, this.setSession = function (e) {
                            if (this.session != e) {
                                this.curOp && this.endOperation(), this.curOp = {};
                                var t = this.session;
                                if (t) {
                                    this.session.off("change", this.$onDocumentChange), this.session.off("changeMode", this.$onChangeMode), this.session.off("tokenizerUpdate", this.$onTokenizerUpdate), this.session.off("changeTabSize", this.$onChangeTabSize), this.session.off("changeWrapLimit", this.$onChangeWrapLimit), this.session.off("changeWrapMode", this.$onChangeWrapMode), this.session.off("changeFold", this.$onChangeFold), this.session.off("changeFrontMarker", this.$onChangeFrontMarker), this.session.off("changeBackMarker", this.$onChangeBackMarker), this.session.off("changeBreakpoint", this.$onChangeBreakpoint), this.session.off("changeAnnotation", this.$onChangeAnnotation), this.session.off("changeOverwrite", this.$onCursorChange), this.session.off("changeScrollTop", this.$onScrollTopChange), this.session.off("changeScrollLeft", this.$onScrollLeftChange);
                                    var n = this.session.getSelection();
                                    n.off("changeCursor", this.$onCursorChange), n.off("changeSelection", this.$onSelectionChange)
                                }
                                this.session = e, e ? (this.$onDocumentChange = this.onDocumentChange.bind(this), e.on("change", this.$onDocumentChange), this.renderer.setSession(e), this.$onChangeMode = this.onChangeMode.bind(this), e.on("changeMode", this.$onChangeMode), this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this), e.on("tokenizerUpdate", this.$onTokenizerUpdate), this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer), e.on("changeTabSize", this.$onChangeTabSize), this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this), e.on("changeWrapLimit", this.$onChangeWrapLimit), this.$onChangeWrapMode = this.onChangeWrapMode.bind(this), e.on("changeWrapMode", this.$onChangeWrapMode), this.$onChangeFold = this.onChangeFold.bind(this), e.on("changeFold", this.$onChangeFold), this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this), this.session.on("changeFrontMarker", this.$onChangeFrontMarker), this.$onChangeBackMarker = this.onChangeBackMarker.bind(this), this.session.on("changeBackMarker", this.$onChangeBackMarker), this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this), this.session.on("changeBreakpoint", this.$onChangeBreakpoint), this.$onChangeAnnotation = this.onChangeAnnotation.bind(this), this.session.on("changeAnnotation", this.$onChangeAnnotation), this.$onCursorChange = this.onCursorChange.bind(this), this.session.on("changeOverwrite", this.$onCursorChange), this.$onScrollTopChange = this.onScrollTopChange.bind(this), this.session.on("changeScrollTop", this.$onScrollTopChange), this.$onScrollLeftChange = this.onScrollLeftChange.bind(this), this.session.on("changeScrollLeft", this.$onScrollLeftChange), this.selection = e.getSelection(), this.selection.on("changeCursor", this.$onCursorChange), this.$onSelectionChange = this.onSelectionChange.bind(this), this.selection.on("changeSelection", this.$onSelectionChange), this.onChangeMode(), this.onCursorChange(), this.onScrollTopChange(), this.onScrollLeftChange(), this.onSelectionChange(), this.onChangeFrontMarker(), this.onChangeBackMarker(), this.onChangeBreakpoint(), this.onChangeAnnotation(), this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(), this.renderer.updateFull()) : (this.selection = null, this.renderer.setSession(e)), this._signal("changeSession", {
                                    session: e,
                                    oldSession: t
                                }), this.curOp = null, t && t._signal("changeEditor", {oldEditor: this}), e && e._signal("changeEditor", {editor: this}), e && e.bgTokenizer && e.bgTokenizer.scheduleStart()
                            }
                        }, this.getSession = function () {
                            return this.session
                        }, this.setValue = function (e, t) {
                            return this.session.doc.setValue(e), t ? 1 == t ? this.navigateFileEnd() : -1 == t && this.navigateFileStart() : this.selectAll(), e
                        }, this.getValue = function () {
                            return this.session.getValue()
                        }, this.getSelection = function () {
                            return this.selection
                        }, this.resize = function (e) {
                            this.renderer.onResize(e)
                        }, this.setTheme = function (e, t) {
                            this.renderer.setTheme(e, t)
                        }, this.getTheme = function () {
                            return this.renderer.getTheme()
                        }, this.setStyle = function (e) {
                            this.renderer.setStyle(e)
                        }, this.unsetStyle = function (e) {
                            this.renderer.unsetStyle(e)
                        }, this.getFontSize = function () {
                            return this.getOption("fontSize") || r.computedStyle(this.container).fontSize
                        }, this.setFontSize = function (e) {
                            this.setOption("fontSize", e)
                        }, this.$highlightBrackets = function () {
                            if (!this.$highlightPending) {
                                var e = this;
                                this.$highlightPending = !0, setTimeout((function () {
                                    e.$highlightPending = !1;
                                    var t = e.session;
                                    if (t && t.bgTokenizer) {
                                        t.$bracketHighlight && (t.$bracketHighlight.markerIds.forEach((function (e) {
                                            t.removeMarker(e)
                                        })), t.$bracketHighlight = null);
                                        var n = t.getMatchingBracketRanges(e.getCursorPosition());
                                        if (!n && t.$mode.getMatching && (n = t.$mode.getMatching(e.session)), n) {
                                            var i = "ace_bracket";
                                            Array.isArray(n) ? 1 == n.length && (i = "ace_error_bracket") : n = [n], 2 == n.length && (0 == f.comparePoints(n[0].end, n[1].start) ? n = [f.fromPoints(n[0].start, n[1].end)] : 0 == f.comparePoints(n[0].start, n[1].end) && (n = [f.fromPoints(n[1].start, n[0].end)])), t.$bracketHighlight = {
                                                ranges: n,
                                                markerIds: n.map((function (e) {
                                                    return t.addMarker(e, i, "text")
                                                }))
                                            }
                                        }
                                    }
                                }), 50)
                            }
                        }, this.$highlightTags = function () {
                            if (!this.$highlightTagPending) {
                                var e = this;
                                this.$highlightTagPending = !0, setTimeout((function () {
                                    e.$highlightTagPending = !1;
                                    var t = e.session;
                                    if (t && t.bgTokenizer) {
                                        var n = e.getCursorPosition(), i = new y(e.session, n.row, n.column),
                                            r = i.getCurrentToken();
                                        if (!r || !/\b(?:tag-open|tag-name)/.test(r.type)) return t.removeMarker(t.$tagHighlight), void (t.$tagHighlight = null);
                                        if (-1 == r.type.indexOf("tag-open") || (r = i.stepForward())) {
                                            var o = r.value, a = 0, s = i.stepBackward();
                                            if ("<" == s.value) do {
                                                s = r, (r = i.stepForward()) && r.value === o && -1 !== r.type.indexOf("tag-name") && ("<" === s.value ? a++ : "</" === s.value && a--)
                                            } while (r && a >= 0); else {
                                                do {
                                                    r = s, s = i.stepBackward(), r && r.value === o && -1 !== r.type.indexOf("tag-name") && ("<" === s.value ? a++ : "</" === s.value && a--)
                                                } while (s && a <= 0);
                                                i.stepForward()
                                            }
                                            if (!r) return t.removeMarker(t.$tagHighlight), void (t.$tagHighlight = null);
                                            var l = i.getCurrentTokenRow(), c = i.getCurrentTokenColumn(),
                                                u = new f(l, c, l, c + r.value.length),
                                                h = t.$backMarkers[t.$tagHighlight];
                                            t.$tagHighlight && null != h && 0 !== u.compareRange(h.range) && (t.removeMarker(t.$tagHighlight), t.$tagHighlight = null), t.$tagHighlight || (t.$tagHighlight = t.addMarker(u, "ace_bracket", "text"))
                                        }
                                    }
                                }), 50)
                            }
                        }, this.focus = function () {
                            var e = this;
                            setTimeout((function () {
                                e.isFocused() || e.textInput.focus()
                            })), this.textInput.focus()
                        }, this.isFocused = function () {
                            return this.textInput.isFocused()
                        }, this.blur = function () {
                            this.textInput.blur()
                        }, this.onFocus = function (e) {
                            this.$isFocused || (this.$isFocused = !0, this.renderer.showCursor(), this.renderer.visualizeFocus(), this._emit("focus", e))
                        }, this.onBlur = function (e) {
                            this.$isFocused && (this.$isFocused = !1, this.renderer.hideCursor(), this.renderer.visualizeBlur(), this._emit("blur", e))
                        }, this.$cursorChange = function () {
                            this.renderer.updateCursor(), this.$highlightBrackets(), this.$highlightTags(), this.$updateHighlightActiveLine()
                        }, this.onDocumentChange = function (e) {
                            var t = this.session.$useWrapMode, n = e.start.row == e.end.row ? e.end.row : 1 / 0;
                            this.renderer.updateLines(e.start.row, n, t), this._signal("change", e), this.$cursorChange()
                        }, this.onTokenizerUpdate = function (e) {
                            var t = e.data;
                            this.renderer.updateLines(t.first, t.last)
                        }, this.onScrollTopChange = function () {
                            this.renderer.scrollToY(this.session.getScrollTop())
                        }, this.onScrollLeftChange = function () {
                            this.renderer.scrollToX(this.session.getScrollLeft())
                        }, this.onCursorChange = function () {
                            this.$cursorChange(), this._signal("changeSelection")
                        }, this.$updateHighlightActiveLine = function () {
                            var e, t = this.getSession();
                            if (this.$highlightActiveLine && ("line" == this.$selectionStyle && this.selection.isMultiLine() || (e = this.getCursorPosition()), this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty() && (e = !1), !this.renderer.$maxLines || 1 !== this.session.getLength() || this.renderer.$minLines > 1 || (e = !1)), t.$highlightLineMarker && !e) t.removeMarker(t.$highlightLineMarker.id), t.$highlightLineMarker = null; else if (!t.$highlightLineMarker && e) {
                                var n = new f(e.row, e.column, e.row, 1 / 0);
                                n.id = t.addMarker(n, "ace_active-line", "screenLine"), t.$highlightLineMarker = n
                            } else e && (t.$highlightLineMarker.start.row = e.row, t.$highlightLineMarker.end.row = e.row, t.$highlightLineMarker.start.column = e.column, t._signal("changeBackMarker"))
                        }, this.onSelectionChange = function (e) {
                            var t = this.session;
                            if (t.$selectionMarker && t.removeMarker(t.$selectionMarker), t.$selectionMarker = null, this.selection.isEmpty()) this.$updateHighlightActiveLine(); else {
                                var n = this.selection.getRange(), i = this.getSelectionStyle();
                                t.$selectionMarker = t.addMarker(n, "ace_selection", i)
                            }
                            var r = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();
                            this.session.highlight(r), this._signal("changeSelection")
                        }, this.$getSelectionHighLightRegexp = function () {
                            var e = this.session, t = this.getSelectionRange();
                            if (!t.isEmpty() && !t.isMultiLine()) {
                                var n = t.start.column, i = t.end.column, r = e.getLine(t.start.row),
                                    o = r.substring(n, i);
                                if (!(o.length > 5e3) && /[\w\d]/.test(o)) {
                                    var a = this.$search.$assembleRegExp({wholeWord: !0, caseSensitive: !0, needle: o}),
                                        s = r.substring(n - 1, i + 1);
                                    if (a.test(s)) return a
                                }
                            }
                        }, this.onChangeFrontMarker = function () {
                            this.renderer.updateFrontMarkers()
                        }, this.onChangeBackMarker = function () {
                            this.renderer.updateBackMarkers()
                        }, this.onChangeBreakpoint = function () {
                            this.renderer.updateBreakpoints()
                        }, this.onChangeAnnotation = function () {
                            this.renderer.setAnnotations(this.session.getAnnotations())
                        }, this.onChangeMode = function (e) {
                            this.renderer.updateText(), this._emit("changeMode", e)
                        }, this.onChangeWrapLimit = function () {
                            this.renderer.updateFull()
                        }, this.onChangeWrapMode = function () {
                            this.renderer.onResize(!0)
                        }, this.onChangeFold = function () {
                            this.$updateHighlightActiveLine(), this.renderer.updateFull()
                        }, this.getSelectedText = function () {
                            return this.session.getTextRange(this.getSelectionRange())
                        }, this.getCopyText = function () {
                            var e = this.getSelectedText(), t = this.session.doc.getNewLineCharacter(), n = !1;
                            if (!e && this.$copyWithEmptySelection) {
                                n = !0;
                                for (var i = this.selection.getAllRanges(), r = 0; r < i.length; r++) {
                                    var o = i[r];
                                    r && i[r - 1].start.row == o.start.row || (e += this.session.getLine(o.start.row) + t)
                                }
                            }
                            var a = {text: e};
                            return this._signal("copy", a), b.lineMode = n ? a.text : "", a.text
                        }, this.onCopy = function () {
                            this.commands.exec("copy", this)
                        }, this.onCut = function () {
                            this.commands.exec("cut", this)
                        }, this.onPaste = function (e, t) {
                            var n = {text: e, event: t};
                            this.commands.exec("paste", this, n)
                        }, this.$handlePaste = function (e) {
                            "string" == typeof e && (e = {text: e}), this._signal("paste", e);
                            var t = e.text, n = t == b.lineMode, i = this.session;
                            if (!this.inMultiSelectMode || this.inVirtualSelectionMode) n ? i.insert({
                                row: this.selection.lead.row,
                                column: 0
                            }, t) : this.insert(t); else if (n) this.selection.rangeList.ranges.forEach((function (e) {
                                i.insert({row: e.start.row, column: 0}, t)
                            })); else {
                                var r = t.split(/\r\n|\r|\n/), o = this.selection.rangeList.ranges,
                                    a = !(2 != r.length || r[0] && r[1]);
                                if (r.length != o.length || a) return this.commands.exec("insertstring", this, t);
                                for (var s = o.length; s--;) {
                                    var l = o[s];
                                    l.isEmpty() || i.remove(l), i.insert(l.start, r[s])
                                }
                            }
                        }, this.execCommand = function (e, t) {
                            return this.commands.exec(e, this, t)
                        }, this.insert = function (e, t) {
                            var n = this.session, i = n.getMode(), r = this.getCursorPosition();
                            if (this.getBehavioursEnabled() && !t) {
                                var o = i.transformAction(n.getState(r.row), "insertion", this, n, e);
                                o && (e !== o.text && (this.inVirtualSelectionMode || (this.session.mergeUndoDeltas = !1, this.mergeNextCommand = !1)), e = o.text)
                            }
                            if ("\t" == e && (e = this.session.getTabString()), this.selection.isEmpty()) this.session.getOverwrite() && -1 == e.indexOf("\n") && ((a = new f.fromPoints(r, r)).end.column += e.length, this.session.remove(a)); else {
                                var a = this.getSelectionRange();
                                r = this.session.remove(a), this.clearSelection()
                            }
                            if ("\n" == e || "\r\n" == e) {
                                var s = n.getLine(r.row);
                                if (r.column > s.search(/\S|$/)) {
                                    var l = s.substr(r.column).search(/\S|$/);
                                    n.doc.removeInLine(r.row, r.column, r.column + l)
                                }
                            }
                            this.clearSelection();
                            var c = r.column, u = n.getState(r.row),
                                h = (s = n.getLine(r.row), i.checkOutdent(u, s, e));
                            if (n.insert(r, e), o && o.selection && (2 == o.selection.length ? this.selection.setSelectionRange(new f(r.row, c + o.selection[0], r.row, c + o.selection[1])) : this.selection.setSelectionRange(new f(r.row + o.selection[0], o.selection[1], r.row + o.selection[2], o.selection[3]))), this.$enableAutoIndent) {
                                if (n.getDocument().isNewLine(e)) {
                                    var d = i.getNextLineIndent(u, s.slice(0, r.column), n.getTabString());
                                    n.insert({row: r.row + 1, column: 0}, d)
                                }
                                h && i.autoOutdent(u, n, r.row)
                            }
                        }, this.autoIndent = function () {
                            var e, t, n = this.session, i = n.getMode();
                            if (this.selection.isEmpty()) e = 0, t = n.doc.getLength() - 1; else {
                                var r = this.getSelectionRange();
                                e = r.start.row, t = r.end.row
                            }
                            for (var o, a, s, l = "", c = "", u = "", h = n.getTabString(), d = e; d <= t; d++) d > 0 && (l = n.getState(d - 1), c = n.getLine(d - 1), u = i.getNextLineIndent(l, c, h)), o = n.getLine(d), u !== (a = i.$getIndent(o)) && (a.length > 0 && (s = new f(d, 0, d, a.length), n.remove(s)), u.length > 0 && n.insert({
                                row: d,
                                column: 0
                            }, u)), i.autoOutdent(l, n, d)
                        }, this.onTextInput = function (e, t) {
                            if (!t) return this.keyBinding.onTextInput(e);
                            this.startOperation({command: {name: "insertstring"}});
                            var n = this.applyComposition.bind(this, e, t);
                            this.selection.rangeCount ? this.forEachSelection(n) : n(), this.endOperation()
                        }, this.applyComposition = function (e, t) {
                            var n;
                            (t.extendLeft || t.extendRight) && ((n = this.selection.getRange()).start.column -= t.extendLeft, n.end.column += t.extendRight, n.start.column < 0 && (n.start.row--, n.start.column += this.session.getLine(n.start.row).length + 1), this.selection.setRange(n), e || n.isEmpty() || this.remove()), !e && this.selection.isEmpty() || this.insert(e, !0), (t.restoreStart || t.restoreEnd) && ((n = this.selection.getRange()).start.column -= t.restoreStart, n.end.column -= t.restoreEnd, this.selection.setRange(n))
                        }, this.onCommandKey = function (e, t, n) {
                            return this.keyBinding.onCommandKey(e, t, n)
                        }, this.setOverwrite = function (e) {
                            this.session.setOverwrite(e)
                        }, this.getOverwrite = function () {
                            return this.session.getOverwrite()
                        }, this.toggleOverwrite = function () {
                            this.session.toggleOverwrite()
                        }, this.setScrollSpeed = function (e) {
                            this.setOption("scrollSpeed", e)
                        }, this.getScrollSpeed = function () {
                            return this.getOption("scrollSpeed")
                        }, this.setDragDelay = function (e) {
                            this.setOption("dragDelay", e)
                        }, this.getDragDelay = function () {
                            return this.getOption("dragDelay")
                        }, this.setSelectionStyle = function (e) {
                            this.setOption("selectionStyle", e)
                        }, this.getSelectionStyle = function () {
                            return this.getOption("selectionStyle")
                        }, this.setHighlightActiveLine = function (e) {
                            this.setOption("highlightActiveLine", e)
                        }, this.getHighlightActiveLine = function () {
                            return this.getOption("highlightActiveLine")
                        }, this.setHighlightGutterLine = function (e) {
                            this.setOption("highlightGutterLine", e)
                        }, this.getHighlightGutterLine = function () {
                            return this.getOption("highlightGutterLine")
                        }, this.setHighlightSelectedWord = function (e) {
                            this.setOption("highlightSelectedWord", e)
                        }, this.getHighlightSelectedWord = function () {
                            return this.$highlightSelectedWord
                        }, this.setAnimatedScroll = function (e) {
                            this.renderer.setAnimatedScroll(e)
                        }, this.getAnimatedScroll = function () {
                            return this.renderer.getAnimatedScroll()
                        }, this.setShowInvisibles = function (e) {
                            this.renderer.setShowInvisibles(e)
                        }, this.getShowInvisibles = function () {
                            return this.renderer.getShowInvisibles()
                        }, this.setDisplayIndentGuides = function (e) {
                            this.renderer.setDisplayIndentGuides(e)
                        }, this.getDisplayIndentGuides = function () {
                            return this.renderer.getDisplayIndentGuides()
                        }, this.setShowPrintMargin = function (e) {
                            this.renderer.setShowPrintMargin(e)
                        }, this.getShowPrintMargin = function () {
                            return this.renderer.getShowPrintMargin()
                        }, this.setPrintMarginColumn = function (e) {
                            this.renderer.setPrintMarginColumn(e)
                        }, this.getPrintMarginColumn = function () {
                            return this.renderer.getPrintMarginColumn()
                        }, this.setReadOnly = function (e) {
                            this.setOption("readOnly", e)
                        }, this.getReadOnly = function () {
                            return this.getOption("readOnly")
                        }, this.setBehavioursEnabled = function (e) {
                            this.setOption("behavioursEnabled", e)
                        }, this.getBehavioursEnabled = function () {
                            return this.getOption("behavioursEnabled")
                        }, this.setWrapBehavioursEnabled = function (e) {
                            this.setOption("wrapBehavioursEnabled", e)
                        }, this.getWrapBehavioursEnabled = function () {
                            return this.getOption("wrapBehavioursEnabled")
                        }, this.setShowFoldWidgets = function (e) {
                            this.setOption("showFoldWidgets", e)
                        }, this.getShowFoldWidgets = function () {
                            return this.getOption("showFoldWidgets")
                        }, this.setFadeFoldWidgets = function (e) {
                            this.setOption("fadeFoldWidgets", e)
                        }, this.getFadeFoldWidgets = function () {
                            return this.getOption("fadeFoldWidgets")
                        }, this.remove = function (e) {
                            this.selection.isEmpty() && ("left" == e ? this.selection.selectLeft() : this.selection.selectRight());
                            var t = this.getSelectionRange();
                            if (this.getBehavioursEnabled()) {
                                var n = this.session, i = n.getState(t.start.row),
                                    r = n.getMode().transformAction(i, "deletion", this, n, t);
                                if (0 === t.end.column) {
                                    var o = n.getTextRange(t);
                                    if ("\n" == o[o.length - 1]) {
                                        var a = n.getLine(t.end.row);
                                        /^\s+$/.test(a) && (t.end.column = a.length)
                                    }
                                }
                                r && (t = r)
                            }
                            this.session.remove(t), this.clearSelection()
                        }, this.removeWordRight = function () {
                            this.selection.isEmpty() && this.selection.selectWordRight(), this.session.remove(this.getSelectionRange()), this.clearSelection()
                        }, this.removeWordLeft = function () {
                            this.selection.isEmpty() && this.selection.selectWordLeft(), this.session.remove(this.getSelectionRange()), this.clearSelection()
                        }, this.removeToLineStart = function () {
                            this.selection.isEmpty() && this.selection.selectLineStart(), this.selection.isEmpty() && this.selection.selectLeft(), this.session.remove(this.getSelectionRange()), this.clearSelection()
                        }, this.removeToLineEnd = function () {
                            this.selection.isEmpty() && this.selection.selectLineEnd();
                            var e = this.getSelectionRange();
                            e.start.column == e.end.column && e.start.row == e.end.row && (e.end.column = 0, e.end.row++), this.session.remove(e), this.clearSelection()
                        }, this.splitLine = function () {
                            this.selection.isEmpty() || (this.session.remove(this.getSelectionRange()), this.clearSelection());
                            var e = this.getCursorPosition();
                            this.insert("\n"), this.moveCursorToPosition(e)
                        }, this.transposeLetters = function () {
                            if (this.selection.isEmpty()) {
                                var e = this.getCursorPosition(), t = e.column;
                                if (0 !== t) {
                                    var n, i, r = this.session.getLine(e.row);
                                    t < r.length ? (n = r.charAt(t) + r.charAt(t - 1), i = new f(e.row, t - 1, e.row, t + 1)) : (n = r.charAt(t - 1) + r.charAt(t - 2), i = new f(e.row, t - 2, e.row, t)), this.session.replace(i, n), this.session.selection.moveToPosition(i.end)
                                }
                            }
                        }, this.toLowerCase = function () {
                            var e = this.getSelectionRange();
                            this.selection.isEmpty() && this.selection.selectWord();
                            var t = this.getSelectionRange(), n = this.session.getTextRange(t);
                            this.session.replace(t, n.toLowerCase()), this.selection.setSelectionRange(e)
                        },this.toUpperCase = function () {
                            var e = this.getSelectionRange();
                            this.selection.isEmpty() && this.selection.selectWord();
                            var t = this.getSelectionRange(), n = this.session.getTextRange(t);
                            this.session.replace(t, n.toUpperCase()), this.selection.setSelectionRange(e)
                        },this.indent = function () {
                            var e = this.session, t = this.getSelectionRange();
                            if (!(t.start.row < t.end.row)) {
                                if (t.start.column < t.end.column) {
                                    var n = e.getTextRange(t);
                                    if (!/^\s+$/.test(n)) return u = this.$getSelectedRows(), void e.indentRows(u.first, u.last, "\t")
                                }
                                var i = e.getLine(t.start.row), r = t.start, a = e.getTabSize(),
                                    s = e.documentToScreenColumn(r.row, r.column);
                                if (this.session.getUseSoftTabs()) var l = a - s % a, c = o.stringRepeat(" ", l); else {
                                    for (l = s % a; " " == i[t.start.column - 1] && l;) t.start.column--, l--;
                                    this.selection.setSelectionRange(t), c = "\t"
                                }
                                return this.insert(c)
                            }
                            var u = this.$getSelectedRows();
                            e.indentRows(u.first, u.last, "\t")
                        },this.blockIndent = function () {
                            var e = this.$getSelectedRows();
                            this.session.indentRows(e.first, e.last, "\t")
                        },this.blockOutdent = function () {
                            var e = this.session.getSelection();
                            this.session.outdentRows(e.getRange())
                        },this.sortLines = function () {
                            for (var e = this.$getSelectedRows(), t = this.session, n = [], i = e.first; i <= e.last; i++) n.push(t.getLine(i));
                            n.sort((function (e, t) {
                                return e.toLowerCase() < t.toLowerCase() ? -1 : e.toLowerCase() > t.toLowerCase() ? 1 : 0
                            }));
                            var r = new f(0, 0, 0, 0);
                            for (i = e.first; i <= e.last; i++) {
                                var o = t.getLine(i);
                                r.start.row = i, r.end.row = i, r.end.column = o.length, t.replace(r, n[i - e.first])
                            }
                        },this.toggleCommentLines = function () {
                            var e = this.session.getState(this.getCursorPosition().row), t = this.$getSelectedRows();
                            this.session.getMode().toggleCommentLines(e, this.session, t.first, t.last)
                        },this.toggleBlockComment = function () {
                            var e = this.getCursorPosition(), t = this.session.getState(e.row),
                                n = this.getSelectionRange();
                            this.session.getMode().toggleBlockComment(t, this.session, n, e)
                        },this.getNumberAt = function (e, t) {
                            var n = /[\-]?[0-9]+(?:\.[0-9]+)?/g;
                            n.lastIndex = 0;
                            for (var i = this.session.getLine(e); n.lastIndex < t;) {
                                var r = n.exec(i);
                                if (r.index <= t && r.index + r[0].length >= t) return {
                                    value: r[0],
                                    start: r.index,
                                    end: r.index + r[0].length
                                }
                            }
                            return null
                        },this.modifyNumber = function (e) {
                            var t = this.selection.getCursor().row, n = this.selection.getCursor().column,
                                i = new f(t, n - 1, t, n), r = this.session.getTextRange(i);
                            if (!isNaN(parseFloat(r)) && isFinite(r)) {
                                var o = this.getNumberAt(t, n);
                                if (o) {
                                    var a = o.value.indexOf(".") >= 0 ? o.start + o.value.indexOf(".") + 1 : o.end,
                                        s = o.start + o.value.length - a, l = parseFloat(o.value);
                                    l *= Math.pow(10, s), a !== o.end && n < a ? e *= Math.pow(10, o.end - n - 1) : e *= Math.pow(10, o.end - n), l += e;
                                    var c = (l /= Math.pow(10, s)).toFixed(s), u = new f(t, o.start, t, o.end);
                                    this.session.replace(u, c), this.moveCursorTo(t, Math.max(o.start + 1, n + c.length - o.value.length))
                                }
                            } else this.toggleWord()
                        },this.$toggleWordPairs = [["first", "last"], ["true", "false"], ["yes", "no"], ["width", "height"], ["top", "bottom"], ["right", "left"], ["on", "off"], ["x", "y"], ["get", "set"], ["max", "min"], ["horizontal", "vertical"], ["show", "hide"], ["add", "remove"], ["up", "down"], ["before", "after"], ["even", "odd"], ["in", "out"], ["inside", "outside"], ["next", "previous"], ["increase", "decrease"], ["attach", "detach"], ["&&", "||"], ["==", "!="]],this.toggleWord = function () {
                            var e = this.selection.getCursor().row, t = this.selection.getCursor().column;
                            this.selection.selectWord();
                            var n = this.getSelectedText(), i = this.selection.getWordRange().start.column,
                                r = n.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, "$1 ").split(/\s/), a = t - i - 1;
                            a < 0 && (a = 0);
                            var s = 0, l = 0, c = this;
                            n.match(/[A-Za-z0-9_]+/) && r.forEach((function (t, r) {
                                l = s + t.length, a >= s && a <= l && (n = t, c.selection.clearSelection(), c.moveCursorTo(e, s + i), c.selection.selectTo(e, l + i)), s = l
                            }));
                            for (var u, h = this.$toggleWordPairs, d = 0; d < h.length; d++) for (var f = h[d], g = 0; g <= 1; g++) {
                                var p = +!g, m = n.match(new RegExp("^\\s?_?(" + o.escapeRegExp(f[g]) + ")\\s?$", "i"));
                                m && n.match(new RegExp("([_]|^|\\s)(" + o.escapeRegExp(m[1]) + ")($|\\s)", "g")) && (u = n.replace(new RegExp(o.escapeRegExp(f[g]), "i"), (function (e) {
                                    var t = f[p];
                                    return e.toUpperCase() == e ? t = t.toUpperCase() : e.charAt(0).toUpperCase() == e.charAt(0) && (t = t.substr(0, 0) + f[p].charAt(0).toUpperCase() + t.substr(1)), t
                                })), this.insert(u), u = "")
                            }
                        },this.removeLines = function () {
                            var e = this.$getSelectedRows();
                            this.session.removeFullLines(e.first, e.last), this.clearSelection()
                        },this.duplicateSelection = function () {
                            var e = this.selection, t = this.session, n = e.getRange(), i = e.isBackwards();
                            if (n.isEmpty()) {
                                var r = n.start.row;
                                t.duplicateLines(r, r)
                            } else {
                                var o = i ? n.start : n.end, a = t.insert(o, t.getTextRange(n), !1);
                                n.start = o, n.end = a, e.setSelectionRange(n, i)
                            }
                        },this.moveLinesDown = function () {
                            this.$moveLines(1, !1)
                        },this.moveLinesUp = function () {
                            this.$moveLines(-1, !1)
                        },this.moveText = function (e, t, n) {
                            return this.session.moveText(e, t, n)
                        },this.copyLinesUp = function () {
                            this.$moveLines(-1, !0)
                        },this.copyLinesDown = function () {
                            this.$moveLines(1, !0)
                        },this.$moveLines = function (e, t) {
                            var n, i, r = this.selection;
                            if (!r.inMultiSelectMode || this.inVirtualSelectionMode) {
                                var o = r.toOrientedRange();
                                n = this.$getSelectedRows(o), i = this.session.$moveLines(n.first, n.last, t ? 0 : e), t && -1 == e && (i = 0), o.moveBy(i, 0), r.fromOrientedRange(o)
                            } else {
                                var a = r.rangeList.ranges;
                                r.rangeList.detach(this.session), this.inVirtualSelectionMode = !0;
                                for (var s = 0, l = 0, c = a.length, u = 0; u < c; u++) {
                                    var h = u;
                                    a[u].moveBy(s, 0);
                                    for (var d = (n = this.$getSelectedRows(a[u])).first, f = n.last; ++u < c;) {
                                        l && a[u].moveBy(l, 0);
                                        var g = this.$getSelectedRows(a[u]);
                                        if (t && g.first != f) break;
                                        if (!t && g.first > f + 1) break;
                                        f = g.last
                                    }
                                    for (u--, s = this.session.$moveLines(d, f, t ? 0 : e), t && -1 == e && (h = u + 1); h <= u;) a[h].moveBy(s, 0), h++;
                                    t || (s = 0), l += s
                                }
                                r.fromOrientedRange(r.ranges[0]), r.rangeList.attach(this.session), this.inVirtualSelectionMode = !1
                            }
                        },this.$getSelectedRows = function (e) {
                            return e = (e || this.getSelectionRange()).collapseRows(), {
                                first: this.session.getRowFoldStart(e.start.row),
                                last: this.session.getRowFoldEnd(e.end.row)
                            }
                        },this.onCompositionStart = function (e) {
                            this.renderer.showComposition(e)
                        },this.onCompositionUpdate = function (e) {
                            this.renderer.setCompositionText(e)
                        },this.onCompositionEnd = function () {
                            this.renderer.hideComposition()
                        },this.getFirstVisibleRow = function () {
                            return this.renderer.getFirstVisibleRow()
                        },this.getLastVisibleRow = function () {
                            return this.renderer.getLastVisibleRow()
                        },this.isRowVisible = function (e) {
                            return e >= this.getFirstVisibleRow() && e <= this.getLastVisibleRow()
                        },this.isRowFullyVisible = function (e) {
                            return e >= this.renderer.getFirstFullyVisibleRow() && e <= this.renderer.getLastFullyVisibleRow()
                        },this.$getVisibleRowCount = function () {
                            return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1
                        },this.$moveByPage = function (e, t) {
                            var n = this.renderer, i = this.renderer.layerConfig,
                                r = e * Math.floor(i.height / i.lineHeight);
                            !0 === t ? this.selection.$moveSelection((function () {
                                this.moveCursorBy(r, 0)
                            })) : !1 === t && (this.selection.moveCursorBy(r, 0), this.selection.clearSelection());
                            var o = n.scrollTop;
                            n.scrollBy(0, r * i.lineHeight), null != t && n.scrollCursorIntoView(null, .5), n.animateScrolling(o)
                        },this.selectPageDown = function () {
                            this.$moveByPage(1, !0)
                        },this.selectPageUp = function () {
                            this.$moveByPage(-1, !0)
                        },this.gotoPageDown = function () {
                            this.$moveByPage(1, !1)
                        },this.gotoPageUp = function () {
                            this.$moveByPage(-1, !1)
                        },this.scrollPageDown = function () {
                            this.$moveByPage(1)
                        },this.scrollPageUp = function () {
                            this.$moveByPage(-1)
                        },this.scrollToRow = function (e) {
                            this.renderer.scrollToRow(e)
                        },this.scrollToLine = function (e, t, n, i) {
                            this.renderer.scrollToLine(e, t, n, i)
                        },this.centerSelection = function () {
                            var e = this.getSelectionRange(), t = {
                                row: Math.floor(e.start.row + (e.end.row - e.start.row) / 2),
                                column: Math.floor(e.start.column + (e.end.column - e.start.column) / 2)
                            };
                            this.renderer.alignCursor(t, .5)
                        },this.getCursorPosition = function () {
                            return this.selection.getCursor()
                        },this.getCursorPositionScreen = function () {
                            return this.session.documentToScreenPosition(this.getCursorPosition())
                        },this.getSelectionRange = function () {
                            return this.selection.getRange()
                        },this.selectAll = function () {
                            this.selection.selectAll()
                        },this.clearSelection = function () {
                            this.selection.clearSelection()
                        },this.moveCursorTo = function (e, t) {
                            this.selection.moveCursorTo(e, t)
                        },this.moveCursorToPosition = function (e) {
                            this.selection.moveCursorToPosition(e)
                        },this.jumpToMatching = function (e, t) {
                            var n = this.getCursorPosition(), i = new y(this.session, n.row, n.column),
                                r = i.getCurrentToken(), o = r || i.stepForward();
                            if (o) {
                                var a, s, l = !1, c = {}, u = n.column - o.start,
                                    h = {")": "(", "(": "(", "]": "[", "[": "[", "{": "{", "}": "{"};
                                do {
                                    if (o.value.match(/[{}()\[\]]/g)) {
                                        for (; u < o.value.length && !l; u++) if (h[o.value[u]]) switch (s = h[o.value[u]] + "." + o.type.replace("rparen", "lparen"), isNaN(c[s]) && (c[s] = 0), o.value[u]) {
                                            case"(":
                                            case"[":
                                            case"{":
                                                c[s]++;
                                                break;
                                            case")":
                                            case"]":
                                            case"}":
                                                c[s]--, -1 === c[s] && (a = "bracket", l = !0)
                                        }
                                    } else -1 !== o.type.indexOf("tag-name") && (isNaN(c[o.value]) && (c[o.value] = 0), "<" === r.value ? c[o.value]++ : "</" === r.value && c[o.value]--, -1 === c[o.value] && (a = "tag", l = !0));
                                    l || (r = o, o = i.stepForward(), u = 0)
                                } while (o && !l);
                                if (a) {
                                    var d, g;
                                    if ("bracket" === a) (d = this.session.getBracketRange(n)) || (g = (d = new f(i.getCurrentTokenRow(), i.getCurrentTokenColumn() + u - 1, i.getCurrentTokenRow(), i.getCurrentTokenColumn() + u - 1)).start, (t || g.row === n.row && Math.abs(g.column - n.column) < 2) && (d = this.session.getBracketRange(g))); else if ("tag" === a) {
                                        if (!o || -1 === o.type.indexOf("tag-name")) return;
                                        var p = o.value;
                                        if (0 === (d = new f(i.getCurrentTokenRow(), i.getCurrentTokenColumn() - 2, i.getCurrentTokenRow(), i.getCurrentTokenColumn() - 2)).compare(n.row, n.column)) {
                                            l = !1;
                                            do {
                                                o = r, (r = i.stepBackward()) && (-1 !== r.type.indexOf("tag-close") && d.setEnd(i.getCurrentTokenRow(), i.getCurrentTokenColumn() + 1), o.value === p && -1 !== o.type.indexOf("tag-name") && ("<" === r.value ? c[p]++ : "</" === r.value && c[p]--, 0 === c[p] && (l = !0)))
                                            } while (r && !l)
                                        }
                                        o && o.type.indexOf("tag-name") && (g = d.start).row == n.row && Math.abs(g.column - n.column) < 2 && (g = d.end)
                                    }
                                    (g = d && d.cursor || g) && (e ? d && t ? this.selection.setRange(d) : d && d.isEqual(this.getSelectionRange()) ? this.clearSelection() : this.selection.selectTo(g.row, g.column) : this.selection.moveTo(g.row, g.column))
                                }
                            }
                        },this.gotoLine = function (e, t, n) {
                            this.selection.clearSelection(), this.session.unfold({
                                row: e - 1,
                                column: t || 0
                            }), this.exitMultiSelectMode && this.exitMultiSelectMode(), this.moveCursorTo(e - 1, t || 0), this.isRowFullyVisible(e - 1) || this.scrollToLine(e - 1, !0, n)
                        },this.navigateTo = function (e, t) {
                            this.selection.moveTo(e, t)
                        },this.navigateUp = function (e) {
                            if (this.selection.isMultiLine() && !this.selection.isBackwards()) {
                                var t = this.selection.anchor.getPosition();
                                return this.moveCursorToPosition(t)
                            }
                            this.selection.clearSelection(), this.selection.moveCursorBy(-e || -1, 0)
                        },this.navigateDown = function (e) {
                            if (this.selection.isMultiLine() && this.selection.isBackwards()) {
                                var t = this.selection.anchor.getPosition();
                                return this.moveCursorToPosition(t)
                            }
                            this.selection.clearSelection(), this.selection.moveCursorBy(e || 1, 0)
                        },this.navigateLeft = function (e) {
                            if (this.selection.isEmpty()) for (e = e || 1; e--;) this.selection.moveCursorLeft(); else {
                                var t = this.getSelectionRange().start;
                                this.moveCursorToPosition(t)
                            }
                            this.clearSelection()
                        },this.navigateRight = function (e) {
                            if (this.selection.isEmpty()) for (e = e || 1; e--;) this.selection.moveCursorRight(); else {
                                var t = this.getSelectionRange().end;
                                this.moveCursorToPosition(t)
                            }
                            this.clearSelection()
                        },this.navigateLineStart = function () {
                            this.selection.moveCursorLineStart(), this.clearSelection()
                        },this.navigateLineEnd = function () {
                            this.selection.moveCursorLineEnd(), this.clearSelection()
                        },this.navigateFileEnd = function () {
                            this.selection.moveCursorFileEnd(), this.clearSelection()
                        },this.navigateFileStart = function () {
                            this.selection.moveCursorFileStart(), this.clearSelection()
                        },this.navigateWordRight = function () {
                            this.selection.moveCursorWordRight(), this.clearSelection()
                        },this.navigateWordLeft = function () {
                            this.selection.moveCursorWordLeft(), this.clearSelection()
                        },this.replace = function (e, t) {
                            t && this.$search.set(t);
                            var n = this.$search.find(this.session), i = 0;
                            return n ? (this.$tryReplace(n, e) && (i = 1), this.selection.setSelectionRange(n), this.renderer.scrollSelectionIntoView(n.start, n.end), i) : i
                        },this.replaceAll = function (e, t) {
                            t && this.$search.set(t);
                            var n = this.$search.findAll(this.session), i = 0;
                            if (!n.length) return i;
                            var r = this.getSelectionRange();
                            this.selection.moveTo(0, 0);
                            for (var o = n.length - 1; o >= 0; --o) this.$tryReplace(n[o], e) && i++;
                            return this.selection.setSelectionRange(r), i
                        },this.$tryReplace = function (e, t) {
                            var n = this.session.getTextRange(e);
                            return null !== (t = this.$search.replace(n, t)) ? (e.end = this.session.replace(e, t), e) : null
                        },this.getLastSearchOptions = function () {
                            return this.$search.getOptions()
                        },this.find = function (e, t, n) {
                            t || (t = {}), "string" == typeof e || e instanceof RegExp ? t.needle = e : "object" == typeof e && i.mixin(t, e);
                            var r = this.selection.getRange();
                            null == t.needle && ((e = this.session.getTextRange(r) || this.$search.$options.needle) || (r = this.session.getWordRange(r.start.row, r.start.column), e = this.session.getTextRange(r)), this.$search.set({needle: e})), this.$search.set(t), t.start || this.$search.set({start: r});
                            var o = this.$search.find(this.session);
                            return t.preventScroll ? o : o ? (this.revealRange(o, n), o) : (t.backwards ? r.start = r.end : r.end = r.start, void this.selection.setRange(r))
                        },this.findNext = function (e, t) {
                            this.find({skipCurrent: !0, backwards: !1}, e, t)
                        },this.findPrevious = function (e, t) {
                            this.find(e, {skipCurrent: !0, backwards: !0}, t)
                        },this.revealRange = function (e, t) {
                            this.session.unfold(e), this.selection.setSelectionRange(e);
                            var n = this.renderer.scrollTop;
                            this.renderer.scrollSelectionIntoView(e.start, e.end, .5), !1 !== t && this.renderer.animateScrolling(n)
                        },this.undo = function () {
                            this.session.getUndoManager().undo(this.session), this.renderer.scrollCursorIntoView(null, .5)
                        },this.redo = function () {
                            this.session.getUndoManager().redo(this.session), this.renderer.scrollCursorIntoView(null, .5)
                        },this.destroy = function () {
                            this.$toDestroy && (this.$toDestroy.forEach((function (e) {
                                e.destroy()
                            })), this.$toDestroy = null), this.renderer.destroy(), this._signal("destroy", this), this.session && this.session.destroy(), this._$emitInputEvent && this._$emitInputEvent.cancel(), this.removeAllListeners()
                        },this.setAutoScrollEditorIntoView = function (e) {
                            if (e) {
                                var t, n = this, i = !1;
                                this.$scrollAnchor || (this.$scrollAnchor = document.createElement("div"));
                                var r = this.$scrollAnchor;
                                r.style.cssText = "position:absolute", this.container.insertBefore(r, this.container.firstChild);
                                var o = this.on("changeSelection", (function () {
                                    i = !0
                                })), a = this.renderer.on("beforeRender", (function () {
                                    i && (t = n.renderer.container.getBoundingClientRect())
                                })), s = this.renderer.on("afterRender", (function () {
                                    if (i && t && (n.isFocused() || n.searchBox && n.searchBox.isFocused())) {
                                        var e = n.renderer, o = e.$cursorLayer.$pixelPos, a = e.layerConfig,
                                            s = o.top - a.offset;
                                        null != (i = o.top >= 0 && s + t.top < 0 || !(o.top < a.height && o.top + t.top + a.lineHeight > window.innerHeight) && null) && (r.style.top = s + "px", r.style.left = o.left + "px", r.style.height = a.lineHeight + "px", r.scrollIntoView(i)), i = t = null
                                    }
                                }));
                                this.setAutoScrollEditorIntoView = function (e) {
                                    e || (delete this.setAutoScrollEditorIntoView, this.off("changeSelection", o), this.renderer.off("afterRender", s), this.renderer.off("beforeRender", a))
                                }
                            }
                        },this.$resetCursorStyle = function () {
                            var e = this.$cursorStyle || "ace", t = this.renderer.$cursorLayer;
                            t && (t.setSmoothBlinking(/smooth/.test(e)), t.isBlinking = !this.$readOnly && "wide" != e, r.setCssClass(t.element, "ace_slim-cursors", /slim/.test(e)))
                        },this.prompt = function (e, t, n) {
                            var i = this;
                            v.loadModule("./ext/prompt", (function (r) {
                                r.prompt(i, e, t, n)
                            }))
                        }
                    }.call(C.prototype), v.defineOptions(C.prototype, "editor", {
                        selectionStyle: {
                            set: function (e) {
                                this.onSelectionChange(), this._signal("changeSelectionStyle", {data: e})
                            }, initialValue: "line"
                        },
                        highlightActiveLine: {
                            set: function () {
                                this.$updateHighlightActiveLine()
                            }, initialValue: !0
                        },
                        highlightSelectedWord: {
                            set: function (e) {
                                this.$onSelectionChange()
                            }, initialValue: !0
                        },
                        readOnly: {
                            set: function (e) {
                                this.textInput.setReadOnly(e), this.$resetCursorStyle()
                            }, initialValue: !1
                        },
                        copyWithEmptySelection: {
                            set: function (e) {
                                this.textInput.setCopyWithEmptySelection(e)
                            }, initialValue: !1
                        },
                        cursorStyle: {
                            set: function (e) {
                                this.$resetCursorStyle()
                            }, values: ["ace", "slim", "smooth", "wide"], initialValue: "ace"
                        },
                        mergeUndoDeltas: {values: [!1, !0, "always"], initialValue: !0},
                        behavioursEnabled: {initialValue: !0},
                        wrapBehavioursEnabled: {initialValue: !0},
                        enableAutoIndent: {initialValue: !0},
                        autoScrollEditorIntoView: {
                            set: function (e) {
                                this.setAutoScrollEditorIntoView(e)
                            }
                        },
                        keyboardHandler: {
                            set: function (e) {
                                this.setKeyboardHandler(e)
                            }, get: function () {
                                return this.$keybindingId
                            }, handlesSet: !0
                        },
                        value: {
                            set: function (e) {
                                this.session.setValue(e)
                            }, get: function () {
                                return this.getValue()
                            }, handlesSet: !0, hidden: !0
                        },
                        session: {
                            set: function (e) {
                                this.setSession(e)
                            }, get: function () {
                                return this.session
                            }, handlesSet: !0, hidden: !0
                        },
                        showLineNumbers: {
                            set: function (e) {
                                this.renderer.$gutterLayer.setShowLineNumbers(e), this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER), e && this.$relativeLineNumbers ? w.attach(this) : w.detach(this)
                            }, initialValue: !0
                        },
                        relativeLineNumbers: {
                            set: function (e) {
                                this.$showLineNumbers && e ? w.attach(this) : w.detach(this)
                            }
                        },
                        placeholder: {
                            set: function (e) {
                                this.$updatePlaceholder || (this.$updatePlaceholder = function () {
                                    var e = this.session && (this.renderer.$composition || this.getValue());
                                    if (e && this.renderer.placeholderNode) this.renderer.off("afterRender", this.$updatePlaceholder), r.removeCssClass(this.container, "ace_hasPlaceholder"), this.renderer.placeholderNode.remove(), this.renderer.placeholderNode = null; else if (e || this.renderer.placeholderNode) !e && this.renderer.placeholderNode && (this.renderer.placeholderNode.textContent = this.$placeholder || ""); else {
                                        this.renderer.on("afterRender", this.$updatePlaceholder), r.addCssClass(this.container, "ace_hasPlaceholder");
                                        var t = r.createElement("div");
                                        t.className = "ace_placeholder", t.textContent = this.$placeholder || "", this.renderer.placeholderNode = t, this.renderer.content.appendChild(this.renderer.placeholderNode)
                                    }
                                }.bind(this), this.on("input", this.$updatePlaceholder)), this.$updatePlaceholder()
                            }
                        },
                        hScrollBarAlwaysVisible: "renderer",
                        vScrollBarAlwaysVisible: "renderer",
                        highlightGutterLine: "renderer",
                        animatedScroll: "renderer",
                        showInvisibles: "renderer",
                        showPrintMargin: "renderer",
                        printMarginColumn: "renderer",
                        printMargin: "renderer",
                        fadeFoldWidgets: "renderer",
                        showFoldWidgets: "renderer",
                        displayIndentGuides: "renderer",
                        showGutter: "renderer",
                        fontSize: "renderer",
                        fontFamily: "renderer",
                        maxLines: "renderer",
                        minLines: "renderer",
                        scrollPastEnd: "renderer",
                        fixedWidthGutter: "renderer",
                        theme: "renderer",
                        hasCssTransforms: "renderer",
                        maxPixelHeight: "renderer",
                        useTextareaForIME: "renderer",
                        scrollSpeed: "$mouseHandler",
                        dragDelay: "$mouseHandler",
                        dragEnabled: "$mouseHandler",
                        focusTimeout: "$mouseHandler",
                        tooltipFollowsMouse: "$mouseHandler",
                        firstLineNumber: "session",
                        overwrite: "session",
                        newLineMode: "session",
                        useWorker: "session",
                        useSoftTabs: "session",
                        navigateWithinSoftTabs: "session",
                        tabSize: "session",
                        wrap: "session",
                        indentedSoftWrap: "session",
                        foldStyle: "session",
                        mode: "session"
                    });
                    var w = {
                        getText: function (e, t) {
                            return (Math.abs(e.selection.lead.row - t) || t + 1 + (t < 9 ? "·" : "")) + ""
                        }, getWidth: function (e, t, n) {
                            return Math.max(t.toString().length, (n.lastRow + 1).toString().length, 2) * n.characterWidth
                        }, update: function (e, t) {
                            t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)
                        }, attach: function (e) {
                            e.renderer.$gutterLayer.$renderer = this, e.on("changeSelection", this.update), this.update(null, e)
                        }, detach: function (e) {
                            e.renderer.$gutterLayer.$renderer == this && (e.renderer.$gutterLayer.$renderer = null), e.off("changeSelection", this.update), this.update(null, e)
                        }
                    };
                    t.Editor = C
                })), ace.define("ace/undomanager", ["require", "exports", "module", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = function () {
                        this.$maxRev = 0, this.$fromUndo = !1, this.reset()
                    };
                    (function () {
                        this.addSession = function (e) {
                            this.$session = e
                        }, this.add = function (e, t, n) {
                            this.$fromUndo || e != this.$lastDelta && (this.$keepRedoStack || (this.$redoStack.length = 0), !1 !== t && this.lastDeltas || (this.lastDeltas = [], this.$undoStack.push(this.lastDeltas), e.id = this.$rev = ++this.$maxRev), "remove" != e.action && "insert" != e.action || (this.$lastDelta = e), this.lastDeltas.push(e))
                        }, this.addSelection = function (e, t) {
                            this.selections.push({value: e, rev: t || this.$rev})
                        }, this.startNewGroup = function () {
                            return this.lastDeltas = null, this.$rev
                        }, this.markIgnored = function (e, t) {
                            null == t && (t = this.$rev + 1);
                            for (var n = this.$undoStack, i = n.length; i--;) {
                                var r = n[i][0];
                                if (r.id <= e) break;
                                r.id < t && (r.ignore = !0)
                            }
                            this.lastDeltas = null
                        }, this.getSelection = function (e, t) {
                            for (var n = this.selections, i = n.length; i--;) {
                                var r = n[i];
                                if (r.rev < e) return t && (r = n[i + 1]), r
                            }
                        }, this.getRevision = function () {
                            return this.$rev
                        }, this.getDeltas = function (e, t) {
                            null == t && (t = this.$rev + 1);
                            for (var n = this.$undoStack, i = null, r = 0, o = n.length; o--;) {
                                var a = n[o][0];
                                if (a.id < t && !i && (i = o + 1), a.id <= e) {
                                    r = o + 1;
                                    break
                                }
                            }
                            return n.slice(r, i)
                        }, this.getChangedRanges = function (e, t) {
                            null == t && (t = this.$rev + 1)
                        }, this.getChangedLines = function (e, t) {
                            null == t && (t = this.$rev + 1)
                        }, this.undo = function (e, t) {
                            this.lastDeltas = null;
                            var n = this.$undoStack;
                            if (function (e, t) {
                                for (var n = t; n--;) {
                                    var i = e[n];
                                    if (i && !i[0].ignore) {
                                        for (; n < t - 1;) {
                                            var r = u(e[n], e[n + 1]);
                                            e[n] = r[0], e[n + 1] = r[1], n++
                                        }
                                        return !0
                                    }
                                }
                            }(n, n.length)) {
                                e || (e = this.$session), this.$redoStackBaseRev !== this.$rev && this.$redoStack.length && (this.$redoStack = []), this.$fromUndo = !0;
                                var i = n.pop(), r = null;
                                return i && (r = e.undoChanges(i, t), this.$redoStack.push(i), this.$syncRev()), this.$fromUndo = !1, r
                            }
                        }, this.redo = function (e, t) {
                            if (this.lastDeltas = null, e || (e = this.$session), this.$fromUndo = !0, this.$redoStackBaseRev != this.$rev) {
                                var n = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);
                                !function (e, t) {
                                    for (var n = 0; n < t.length; n++) for (var i = t[n], r = 0; r < i.length; r++) p(e, i[r])
                                }(this.$redoStack, n), this.$redoStackBaseRev = this.$rev, this.$redoStack.forEach((function (e) {
                                    e[0].id = ++this.$maxRev
                                }), this)
                            }
                            var i = this.$redoStack.pop(), r = null;
                            return i && (r = e.redoChanges(i, t), this.$undoStack.push(i), this.$syncRev()), this.$fromUndo = !1, r
                        }, this.$syncRev = function () {
                            var e = this.$undoStack, t = e[e.length - 1], n = t && t[0].id || 0;
                            this.$redoStackBaseRev = n, this.$rev = n
                        }, this.reset = function () {
                            this.lastDeltas = null, this.$lastDelta = null, this.$undoStack = [], this.$redoStack = [], this.$rev = 0, this.mark = 0, this.$redoStackBaseRev = this.$rev, this.selections = []
                        }, this.canUndo = function () {
                            return this.$undoStack.length > 0
                        }, this.canRedo = function () {
                            return this.$redoStack.length > 0
                        }, this.bookmark = function (e) {
                            null == e && (e = this.$rev), this.mark = e
                        }, this.isAtBookmark = function () {
                            return this.$rev === this.mark
                        }, this.toJSON = function () {
                        }, this.fromJSON = function () {
                        }, this.hasUndo = this.canUndo, this.hasRedo = this.canRedo, this.isClean = this.isAtBookmark, this.markClean = this.bookmark, this.$prettyPrint = function (e) {
                            return e ? s(e) : s(this.$undoStack) + "\n---\n" + s(this.$redoStack)
                        }
                    }).call(i.prototype);
                    var r = e("./range").Range, o = r.comparePoints;

                    function a(e) {
                        return {row: e.row, column: e.column}
                    }

                    function s(e) {
                        if (e = e || this, Array.isArray(e)) return e.map(s).join("\n");
                        var t = "";
                        return e.action ? (t = "insert" == e.action ? "+" : "-", t += "[" + e.lines + "]") : e.value && (t = Array.isArray(e.value) ? e.value.map(l).join("\n") : l(e.value)), e.start && (t += l(e)), (e.id || e.rev) && (t += "\t(" + (e.id || e.rev) + ")"), t
                    }

                    function l(e) {
                        return e.start.row + ":" + e.start.column + "=>" + e.end.row + ":" + e.end.column
                    }

                    function c(e, t) {
                        var n = "insert" == e.action, i = "insert" == t.action;
                        if (n && i) if (o(t.start, e.end) >= 0) d(t, e, -1); else {
                            if (!(o(t.start, e.start) <= 0)) return null;
                            d(e, t, 1)
                        } else if (n && !i) if (o(t.start, e.end) >= 0) d(t, e, -1); else {
                            if (!(o(t.end, e.start) <= 0)) return null;
                            d(e, t, -1)
                        } else if (!n && i) if (o(t.start, e.start) >= 0) d(t, e, 1); else {
                            if (!(o(t.start, e.start) <= 0)) return null;
                            d(e, t, 1)
                        } else if (!n && !i) if (o(t.start, e.start) >= 0) d(t, e, 1); else {
                            if (!(o(t.end, e.start) <= 0)) return null;
                            d(e, t, -1)
                        }
                        return [t, e]
                    }

                    function u(e, t) {
                        for (var n = e.length; n--;) for (var i = 0; i < t.length; i++) if (!c(e[n], t[i])) {
                            for (; n < e.length;) {
                                for (; i--;) c(t[i], e[n]);
                                i = t.length, n++
                            }
                            return [e, t]
                        }
                        return e.selectionBefore = t.selectionBefore = e.selectionAfter = t.selectionAfter = null, [t, e]
                    }

                    function h(e, t) {
                        var n = "insert" == e.action, i = "insert" == t.action;
                        if (n && i) o(e.start, t.start) < 0 ? d(t, e, 1) : d(e, t, 1); else if (n && !i) o(e.start, t.end) >= 0 ? d(e, t, -1) : (o(e.start, t.start) <= 0 || d(e, r.fromPoints(t.start, e.start), -1), d(t, e, 1)); else if (!n && i) o(t.start, e.end) >= 0 ? d(t, e, -1) : (o(t.start, e.start) <= 0 || d(t, r.fromPoints(e.start, t.start), -1), d(e, t, 1)); else if (!n && !i) if (o(t.start, e.end) >= 0) d(t, e, -1); else {
                            var a, s;
                            if (!(o(t.end, e.start) <= 0)) return o(e.start, t.start) < 0 && (a = e, e = g(e, t.start)), o(e.end, t.end) > 0 && (s = g(e, t.end)), f(t.end, e.start, e.end, -1), s && !a && (e.lines = s.lines, e.start = s.start, e.end = s.end, s = e), [t, a, s].filter(Boolean);
                            d(e, t, -1)
                        }
                        return [t, e]
                    }

                    function d(e, t, n) {
                        f(e.start, t.start, t.end, n), f(e.end, t.start, t.end, n)
                    }

                    function f(e, t, n, i) {
                        e.row == (1 == i ? t : n).row && (e.column += i * (n.column - t.column)), e.row += i * (n.row - t.row)
                    }

                    function g(e, t) {
                        var n = e.lines, i = e.end;
                        e.end = a(t);
                        var r = e.end.row - e.start.row, o = n.splice(r, n.length),
                            s = r ? t.column : t.column - e.start.column;
                        return n.push(o[0].substring(0, s)), o[0] = o[0].substr(s), {
                            start: a(t),
                            end: i,
                            lines: o,
                            action: e.action
                        }
                    }

                    function p(e, t) {
                        t = function (e) {
                            return {start: a(e.start), end: a(e.end), action: e.action, lines: e.lines.slice()}
                        }(t);
                        for (var n = e.length; n--;) {
                            for (var i = e[n], r = 0; r < i.length; r++) {
                                var o = h(i[r], t);
                                t = o[0], 2 != o.length && (o[2] ? (i.splice(r + 1, 1, o[1], o[2]), r++) : o[1] || (i.splice(r, 1), r--))
                            }
                            i.length || e.splice(n, 1)
                        }
                        return e
                    }

                    r.comparePoints, t.UndoManager = i
                })), ace.define("ace/layer/lines", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom"), r = function (e, t) {
                        this.element = e, this.canvasHeight = t || 5e5, this.element.style.height = 2 * this.canvasHeight + "px", this.cells = [], this.cellCache = [], this.$offsetCoefficient = 0
                    };
                    (function () {
                        this.moveContainer = function (e) {
                            i.translate(this.element, 0, -e.firstRowScreen * e.lineHeight % this.canvasHeight - e.offset * this.$offsetCoefficient)
                        }, this.pageChanged = function (e, t) {
                            return Math.floor(e.firstRowScreen * e.lineHeight / this.canvasHeight) !== Math.floor(t.firstRowScreen * t.lineHeight / this.canvasHeight)
                        }, this.computeLineTop = function (e, t, n) {
                            var i = t.firstRowScreen * t.lineHeight, r = Math.floor(i / this.canvasHeight);
                            return n.documentToScreenRow(e, 0) * t.lineHeight - r * this.canvasHeight
                        }, this.computeLineHeight = function (e, t, n) {
                            return t.lineHeight * n.getRowLineCount(e)
                        }, this.getLength = function () {
                            return this.cells.length
                        }, this.get = function (e) {
                            return this.cells[e]
                        }, this.shift = function () {
                            this.$cacheCell(this.cells.shift())
                        }, this.pop = function () {
                            this.$cacheCell(this.cells.pop())
                        }, this.push = function (e) {
                            if (Array.isArray(e)) {
                                this.cells.push.apply(this.cells, e);
                                for (var t = i.createFragment(this.element), n = 0; n < e.length; n++) t.appendChild(e[n].element);
                                this.element.appendChild(t)
                            } else this.cells.push(e), this.element.appendChild(e.element)
                        }, this.unshift = function (e) {
                            if (Array.isArray(e)) {
                                this.cells.unshift.apply(this.cells, e);
                                for (var t = i.createFragment(this.element), n = 0; n < e.length; n++) t.appendChild(e[n].element);
                                this.element.firstChild ? this.element.insertBefore(t, this.element.firstChild) : this.element.appendChild(t)
                            } else this.cells.unshift(e), this.element.insertAdjacentElement("afterbegin", e.element)
                        }, this.last = function () {
                            return this.cells.length ? this.cells[this.cells.length - 1] : null
                        }, this.$cacheCell = function (e) {
                            e && (e.element.remove(), this.cellCache.push(e))
                        }, this.createCell = function (e, t, n, r) {
                            var o = this.cellCache.pop();
                            if (!o) {
                                var a = i.createElement("div");
                                r && r(a), this.element.appendChild(a), o = {element: a, text: "", row: e}
                            }
                            return o.row = e, o
                        }
                    }).call(r.prototype), t.Lines = r
                })), ace.define("ace/layer/gutter", ["require", "exports", "module", "ace/lib/dom", "ace/lib/oop", "ace/lib/lang", "ace/lib/event_emitter", "ace/layer/lines"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom"), r = e("../lib/oop"), o = e("../lib/lang"),
                        a = e("../lib/event_emitter").EventEmitter, s = e("./lines").Lines, l = function (e) {
                            this.element = i.createElement("div"), this.element.className = "ace_layer ace_gutter-layer", e.appendChild(this.element), this.setShowFoldWidgets(this.$showFoldWidgets), this.gutterWidth = 0, this.$annotations = [], this.$updateAnnotations = this.$updateAnnotations.bind(this), this.$lines = new s(this.element), this.$lines.$offsetCoefficient = 1
                        };

                    function c(e) {
                        var t = document.createTextNode("");
                        e.appendChild(t);
                        var n = i.createElement("span");
                        return e.appendChild(n), e
                    }

                    (function () {
                        r.implement(this, a), this.setSession = function (e) {
                            this.session && this.session.off("change", this.$updateAnnotations), this.session = e, e && e.on("change", this.$updateAnnotations)
                        }, this.addGutterDecoration = function (e, t) {
                            window.console && console.warn && console.warn("deprecated use session.addGutterDecoration"), this.session.addGutterDecoration(e, t)
                        }, this.removeGutterDecoration = function (e, t) {
                            window.console && console.warn && console.warn("deprecated use session.removeGutterDecoration"), this.session.removeGutterDecoration(e, t)
                        }, this.setAnnotations = function (e) {
                            this.$annotations = [];
                            for (var t = 0; t < e.length; t++) {
                                var n = e[t], i = n.row, r = this.$annotations[i];
                                r || (r = this.$annotations[i] = {text: []});
                                var a = n.text;
                                a = a ? o.escapeHTML(a) : n.html || "", -1 === r.text.indexOf(a) && r.text.push(a);
                                var s = n.type;
                                "error" == s ? r.className = " ace_error" : "warning" == s && " ace_error" != r.className ? r.className = " ace_warning" : "info" != s || r.className || (r.className = " ace_info")
                            }
                        }, this.$updateAnnotations = function (e) {
                            if (this.$annotations.length) {
                                var t = e.start.row, n = e.end.row - t;
                                if (0 === n) ; else if ("remove" == e.action) this.$annotations.splice(t, n + 1, null); else {
                                    var i = new Array(n + 1);
                                    i.unshift(t, 1), this.$annotations.splice.apply(this.$annotations, i)
                                }
                            }
                        }, this.update = function (e) {
                            this.config = e;
                            var t = this.session, n = e.firstRow,
                                i = Math.min(e.lastRow + e.gutterOffset, t.getLength() - 1);
                            this.oldLastRow = i, this.config = e, this.$lines.moveContainer(e), this.$updateCursorRow();
                            for (var r = t.getNextFoldLine(n), o = r ? r.start.row : 1 / 0, a = null, s = -1, l = n; ;) {
                                if (l > o && (l = r.end.row + 1, o = (r = t.getNextFoldLine(l, r)) ? r.start.row : 1 / 0), l > i) {
                                    for (; this.$lines.getLength() > s + 1;) this.$lines.pop();
                                    break
                                }
                                (a = this.$lines.get(++s)) ? a.row = l : (a = this.$lines.createCell(l, e, this.session, c), this.$lines.push(a)), this.$renderCell(a, e, r, l), l++
                            }
                            this._signal("afterRender"), this.$updateGutterWidth(e)
                        }, this.$updateGutterWidth = function (e) {
                            var t = this.session, n = t.gutterRenderer || this.$renderer, i = t.$firstLineNumber,
                                r = this.$lines.last() ? this.$lines.last().text : "";
                            (this.$fixedWidth || t.$useWrapMode) && (r = t.getLength() + i - 1);
                            var o = n ? n.getWidth(t, r, e) : r.toString().length * e.characterWidth,
                                a = this.$padding || this.$computePadding();
                            (o += a.left + a.right) === this.gutterWidth || isNaN(o) || (this.gutterWidth = o, this.element.parentNode.style.width = this.element.style.width = Math.ceil(this.gutterWidth) + "px", this._signal("changeGutterWidth", o))
                        }, this.$updateCursorRow = function () {
                            if (this.$highlightGutterLine) {
                                var e = this.session.selection.getCursor();
                                this.$cursorRow !== e.row && (this.$cursorRow = e.row)
                            }
                        }, this.updateLineHighlight = function () {
                            if (this.$highlightGutterLine) {
                                var e = this.session.selection.cursor.row;
                                if (this.$cursorRow = e, !this.$cursorCell || this.$cursorCell.row != e) {
                                    this.$cursorCell && (this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""));
                                    var t = this.$lines.cells;
                                    this.$cursorCell = null;
                                    for (var n = 0; n < t.length; n++) {
                                        var i = t[n];
                                        if (i.row >= this.$cursorRow) {
                                            if (i.row > this.$cursorRow) {
                                                var r = this.session.getFoldLine(this.$cursorRow);
                                                if (!(n > 0 && r && r.start.row == t[n - 1].row)) break;
                                                i = t[n - 1]
                                            }
                                            i.element.className = "ace_gutter-active-line " + i.element.className, this.$cursorCell = i;
                                            break
                                        }
                                    }
                                }
                            }
                        }, this.scrollLines = function (e) {
                            var t = this.config;
                            if (this.config = e, this.$updateCursorRow(), this.$lines.pageChanged(t, e)) return this.update(e);
                            this.$lines.moveContainer(e);
                            var n = Math.min(e.lastRow + e.gutterOffset, this.session.getLength() - 1),
                                i = this.oldLastRow;
                            if (this.oldLastRow = n, !t || i < e.firstRow) return this.update(e);
                            if (n < t.firstRow) return this.update(e);
                            if (t.firstRow < e.firstRow) for (var r = this.session.getFoldedRowCount(t.firstRow, e.firstRow - 1); r > 0; r--) this.$lines.shift();
                            if (i > n) for (r = this.session.getFoldedRowCount(n + 1, i); r > 0; r--) this.$lines.pop();
                            e.firstRow < t.firstRow && this.$lines.unshift(this.$renderLines(e, e.firstRow, t.firstRow - 1)), n > i && this.$lines.push(this.$renderLines(e, i + 1, n)), this.updateLineHighlight(), this._signal("afterRender"), this.$updateGutterWidth(e)
                        }, this.$renderLines = function (e, t, n) {
                            for (var i = [], r = t, o = this.session.getNextFoldLine(r), a = o ? o.start.row : 1 / 0; r > a && (r = o.end.row + 1, a = (o = this.session.getNextFoldLine(r, o)) ? o.start.row : 1 / 0), !(r > n);) {
                                var s = this.$lines.createCell(r, e, this.session, c);
                                this.$renderCell(s, e, o, r), i.push(s), r++
                            }
                            return i
                        }, this.$renderCell = function (e, t, n, r) {
                            var o = e.element, a = this.session, s = o.childNodes[0], l = o.childNodes[1],
                                c = a.$firstLineNumber, u = a.$breakpoints, h = a.$decorations,
                                d = a.gutterRenderer || this.$renderer, f = this.$showFoldWidgets && a.foldWidgets,
                                g = n ? n.start.row : Number.MAX_VALUE, p = "ace_gutter-cell ";
                            if (this.$highlightGutterLine && (r == this.$cursorRow || n && r < this.$cursorRow && r >= g && this.$cursorRow <= n.end.row) && (p += "ace_gutter-active-line ", this.$cursorCell != e && (this.$cursorCell && (this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", "")), this.$cursorCell = e)), u[r] && (p += u[r]), h[r] && (p += h[r]), this.$annotations[r] && (p += this.$annotations[r].className), o.className != p && (o.className = p), f) {
                                var m = f[r];
                                null == m && (m = f[r] = a.getFoldWidget(r))
                            }
                            if (m) {
                                p = "ace_fold-widget ace_" + m, "start" == m && r == g && r < n.end.row ? p += " ace_closed" : p += " ace_open", l.className != p && (l.className = p);
                                var v = t.lineHeight + "px";
                                i.setStyle(l.style, "height", v), i.setStyle(l.style, "display", "inline-block")
                            } else l && i.setStyle(l.style, "display", "none");
                            var y = (d ? d.getText(a, r) : r + c).toString();
                            return y !== s.data && (s.data = y), i.setStyle(e.element.style, "height", this.$lines.computeLineHeight(r, t, a) + "px"), i.setStyle(e.element.style, "top", this.$lines.computeLineTop(r, t, a) + "px"), e.text = y, e
                        }, this.$fixedWidth = !1, this.$highlightGutterLine = !0, this.$renderer = "", this.setHighlightGutterLine = function (e) {
                            this.$highlightGutterLine = e
                        }, this.$showLineNumbers = !0, this.$renderer = "", this.setShowLineNumbers = function (e) {
                            this.$renderer = !e && {
                                getWidth: function () {
                                    return 0
                                }, getText: function () {
                                    return ""
                                }
                            }
                        }, this.getShowLineNumbers = function () {
                            return this.$showLineNumbers
                        }, this.$showFoldWidgets = !0, this.setShowFoldWidgets = function (e) {
                            e ? i.addCssClass(this.element, "ace_folding-enabled") : i.removeCssClass(this.element, "ace_folding-enabled"), this.$showFoldWidgets = e, this.$padding = null
                        }, this.getShowFoldWidgets = function () {
                            return this.$showFoldWidgets
                        }, this.$computePadding = function () {
                            if (!this.element.firstChild) return {left: 0, right: 0};
                            var e = i.computedStyle(this.element.firstChild);
                            return this.$padding = {}, this.$padding.left = (parseInt(e.borderLeftWidth) || 0) + (parseInt(e.paddingLeft) || 0) + 1, this.$padding.right = (parseInt(e.borderRightWidth) || 0) + (parseInt(e.paddingRight) || 0), this.$padding
                        }, this.getRegion = function (e) {
                            var t = this.$padding || this.$computePadding(), n = this.element.getBoundingClientRect();
                            return e.x < t.left + n.left ? "markers" : this.$showFoldWidgets && e.x > n.right - t.right ? "foldWidgets" : void 0
                        }
                    }).call(l.prototype), t.Gutter = l
                })), ace.define("ace/layer/marker", ["require", "exports", "module", "ace/range", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("../range").Range, r = e("../lib/dom"), o = function (e) {
                        this.element = r.createElement("div"), this.element.className = "ace_layer ace_marker-layer", e.appendChild(this.element)
                    };
                    (function () {
                        this.$padding = 0, this.setPadding = function (e) {
                            this.$padding = e
                        }, this.setSession = function (e) {
                            this.session = e
                        }, this.setMarkers = function (e) {
                            this.markers = e
                        }, this.elt = function (e, t) {
                            var n = -1 != this.i && this.element.childNodes[this.i];
                            n ? this.i++ : (n = document.createElement("div"), this.element.appendChild(n), this.i = -1), n.style.cssText = t, n.className = e
                        }, this.update = function (e) {
                            if (e) {
                                var t;
                                for (var n in this.config = e, this.i = 0, this.markers) {
                                    var i = this.markers[n];
                                    if (i.range) {
                                        var r = i.range.clipRows(e.firstRow, e.lastRow);
                                        if (!r.isEmpty()) if (r = r.toScreenRange(this.session), i.renderer) {
                                            var o = this.$getTop(r.start.row, e),
                                                a = this.$padding + r.start.column * e.characterWidth;
                                            i.renderer(t, r, a, o, e)
                                        } else "fullLine" == i.type ? this.drawFullLineMarker(t, r, i.clazz, e) : "screenLine" == i.type ? this.drawScreenLineMarker(t, r, i.clazz, e) : r.isMultiLine() ? "text" == i.type ? this.drawTextMarker(t, r, i.clazz, e) : this.drawMultiLineMarker(t, r, i.clazz, e) : this.drawSingleLineMarker(t, r, i.clazz + " ace_start ace_br15", e)
                                    } else i.update(t, this, this.session, e)
                                }
                                if (-1 != this.i) for (; this.i < this.element.childElementCount;) this.element.removeChild(this.element.lastChild)
                            }
                        }, this.$getTop = function (e, t) {
                            return (e - t.firstRowScreen) * t.lineHeight
                        }, this.drawTextMarker = function (e, t, n, r, o) {
                            for (var a = this.session, s = t.start.row, l = t.end.row, c = s, u = 0, h = 0, d = a.getScreenLastRowColumn(c), f = new i(c, t.start.column, c, h); c <= l; c++) f.start.row = f.end.row = c, f.start.column = c == s ? t.start.column : a.getRowWrapIndent(c), f.end.column = d, u = h, h = d, d = c + 1 < l ? a.getScreenLastRowColumn(c + 1) : c == l ? 0 : t.end.column, this.drawSingleLineMarker(e, f, n + (c == s ? " ace_start" : "") + " ace_br" + ((c == s || c == s + 1 && t.start.column ? 1 : 0) | (u < h ? 2 : 0) | (h > d ? 4 : 0) | (c == l ? 8 : 0)), r, c == l ? 0 : 1, o)
                        }, this.drawMultiLineMarker = function (e, t, n, i, r) {
                            var o = this.$padding, a = i.lineHeight, s = this.$getTop(t.start.row, i),
                                l = o + t.start.column * i.characterWidth;
                            if (r = r || "", this.session.$bidiHandler.isBidiRow(t.start.row) ? ((c = t.clone()).end.row = c.start.row, c.end.column = this.session.getLine(c.start.row).length, this.drawBidiSingleLineMarker(e, c, n + " ace_br1 ace_start", i, null, r)) : this.elt(n + " ace_br1 ace_start", "height:" + a + "px;right:0;top:" + s + "px;left:" + l + "px;" + (r || "")), this.session.$bidiHandler.isBidiRow(t.end.row)) {
                                var c;
                                (c = t.clone()).start.row = c.end.row, c.start.column = 0, this.drawBidiSingleLineMarker(e, c, n + " ace_br12", i, null, r)
                            } else {
                                s = this.$getTop(t.end.row, i);
                                var u = t.end.column * i.characterWidth;
                                this.elt(n + " ace_br12", "height:" + a + "px;width:" + u + "px;top:" + s + "px;left:" + o + "px;" + (r || ""))
                            }
                            if (!((a = (t.end.row - t.start.row - 1) * i.lineHeight) <= 0)) {
                                s = this.$getTop(t.start.row + 1, i);
                                var h = (t.start.column ? 1 : 0) | (t.end.column ? 0 : 8);
                                this.elt(n + (h ? " ace_br" + h : ""), "height:" + a + "px;right:0;top:" + s + "px;left:" + o + "px;" + (r || ""))
                            }
                        }, this.drawSingleLineMarker = function (e, t, n, i, r, o) {
                            if (this.session.$bidiHandler.isBidiRow(t.start.row)) return this.drawBidiSingleLineMarker(e, t, n, i, r, o);
                            var a = i.lineHeight, s = (t.end.column + (r || 0) - t.start.column) * i.characterWidth,
                                l = this.$getTop(t.start.row, i), c = this.$padding + t.start.column * i.characterWidth;
                            this.elt(n, "height:" + a + "px;width:" + s + "px;top:" + l + "px;left:" + c + "px;" + (o || ""))
                        }, this.drawBidiSingleLineMarker = function (e, t, n, i, r, o) {
                            var a = i.lineHeight, s = this.$getTop(t.start.row, i), l = this.$padding;
                            this.session.$bidiHandler.getSelections(t.start.column, t.end.column).forEach((function (e) {
                                this.elt(n, "height:" + a + "px;width:" + e.width + (r || 0) + "px;top:" + s + "px;left:" + (l + e.left) + "px;" + (o || ""))
                            }), this)
                        }, this.drawFullLineMarker = function (e, t, n, i, r) {
                            var o = this.$getTop(t.start.row, i), a = i.lineHeight;
                            t.start.row != t.end.row && (a += this.$getTop(t.end.row, i) - o), this.elt(n, "height:" + a + "px;top:" + o + "px;left:0;right:0;" + (r || ""))
                        }, this.drawScreenLineMarker = function (e, t, n, i, r) {
                            var o = this.$getTop(t.start.row, i), a = i.lineHeight;
                            this.elt(n, "height:" + a + "px;top:" + o + "px;left:0;right:0;" + (r || ""))
                        }
                    }).call(o.prototype), t.Marker = o
                })), ace.define("ace/layer/text", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/lib/lang", "ace/layer/lines", "ace/lib/event_emitter"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/oop"), r = e("../lib/dom"), o = e("../lib/lang"), a = e("./lines").Lines,
                        s = e("../lib/event_emitter").EventEmitter, l = function (e) {
                            this.dom = r, this.element = this.dom.createElement("div"), this.element.className = "ace_layer ace_text-layer", e.appendChild(this.element), this.$updateEolChar = this.$updateEolChar.bind(this), this.$lines = new a(this.element)
                        };
                    (function () {
                        i.implement(this, s), this.EOF_CHAR = "¶", this.EOL_CHAR_LF = "¬", this.EOL_CHAR_CRLF = "¤", this.EOL_CHAR = this.EOL_CHAR_LF, this.TAB_CHAR = "—", this.SPACE_CHAR = "·", this.$padding = 0, this.MAX_LINE_LENGTH = 1e4, this.$updateEolChar = function () {
                            var e = this.session.doc,
                                t = "\n" == e.getNewLineCharacter() && "windows" != e.getNewLineMode() ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;
                            if (this.EOL_CHAR != t) return this.EOL_CHAR = t, !0
                        }, this.setPadding = function (e) {
                            this.$padding = e, this.element.style.margin = "0 " + e + "px"
                        }, this.getLineHeight = function () {
                            return this.$fontMetrics.$characterSize.height || 0
                        }, this.getCharacterWidth = function () {
                            return this.$fontMetrics.$characterSize.width || 0
                        }, this.$setFontMetrics = function (e) {
                            this.$fontMetrics = e, this.$fontMetrics.on("changeCharacterSize", function (e) {
                                this._signal("changeCharacterSize", e)
                            }.bind(this)), this.$pollSizeChanges()
                        }, this.checkForSizeChanges = function () {
                            this.$fontMetrics.checkForSizeChanges()
                        }, this.$pollSizeChanges = function () {
                            return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges()
                        }, this.setSession = function (e) {
                            this.session = e, e && this.$computeTabString()
                        }, this.showInvisibles = !1, this.showSpaces = !1, this.showTabs = !1, this.showEOL = !1, this.setShowInvisibles = function (e) {
                            return this.showInvisibles != e && (this.showInvisibles = e, "string" == typeof e ? (this.showSpaces = /tab/i.test(e), this.showTabs = /space/i.test(e), this.showEOL = /eol/i.test(e)) : this.showSpaces = this.showTabs = this.showEOL = e, this.$computeTabString(), !0)
                        }, this.displayIndentGuides = !0, this.setDisplayIndentGuides = function (e) {
                            return this.displayIndentGuides != e && (this.displayIndentGuides = e, this.$computeTabString(), !0)
                        }, this.$tabStrings = [], this.onChangeTabSize = this.$computeTabString = function () {
                            var e = this.session.getTabSize();
                            this.tabSize = e;
                            for (var t = this.$tabStrings = [0], n = 1; n < e + 1; n++) this.showTabs ? ((i = this.dom.createElement("span")).className = "ace_invisible ace_invisible_tab", i.textContent = o.stringRepeat(this.TAB_CHAR, n), t.push(i)) : t.push(this.dom.createTextNode(o.stringRepeat(" ", n), this.element));
                            if (this.displayIndentGuides) {
                                this.$indentGuideRe = /\s\S| \t|\t |\s$/;
                                var i, r = this.showSpaces ? " ace_invisible ace_invisible_space" : "",
                                    a = this.showSpaces ? o.stringRepeat(this.SPACE_CHAR, this.tabSize) : o.stringRepeat(" ", this.tabSize),
                                    s = this.showTabs ? " ace_invisible ace_invisible_tab" : "",
                                    l = this.showTabs ? o.stringRepeat(this.TAB_CHAR, this.tabSize) : a;
                                (i = this.dom.createElement("span")).className = "ace_indent-guide" + r, i.textContent = a, this.$tabStrings[" "] = i, (i = this.dom.createElement("span")).className = "ace_indent-guide" + s, i.textContent = l, this.$tabStrings["\t"] = i
                            }
                        }, this.updateLines = function (e, t, n) {
                            if (this.config.lastRow != e.lastRow || this.config.firstRow != e.firstRow) return this.update(e);
                            this.config = e;
                            for (var i = Math.max(t, e.firstRow), r = Math.min(n, e.lastRow), o = this.element.childNodes, a = 0, s = e.firstRow; s < i; s++) {
                                if (l = this.session.getFoldLine(s)) {
                                    if (l.containsRow(i)) {
                                        i = l.start.row;
                                        break
                                    }
                                    s = l.end.row
                                }
                                a++
                            }
                            for (var l, c = !1, u = (s = i, (l = this.session.getNextFoldLine(s)) ? l.start.row : 1 / 0); s > u && (s = l.end.row + 1, u = (l = this.session.getNextFoldLine(s, l)) ? l.start.row : 1 / 0), !(s > r);) {
                                var h = o[a++];
                                if (h) {
                                    this.dom.removeChildren(h), this.$renderLine(h, s, s == u && l), c && (h.style.top = this.$lines.computeLineTop(s, e, this.session) + "px");
                                    var d = e.lineHeight * this.session.getRowLength(s) + "px";
                                    h.style.height != d && (c = !0, h.style.height = d)
                                }
                                s++
                            }
                            if (c) for (; a < this.$lines.cells.length;) {
                                var f = this.$lines.cells[a++];
                                f.element.style.top = this.$lines.computeLineTop(f.row, e, this.session) + "px"
                            }
                        }, this.scrollLines = function (e) {
                            var t = this.config;
                            if (this.config = e, this.$lines.pageChanged(t, e)) return this.update(e);
                            this.$lines.moveContainer(e);
                            var n = e.lastRow, i = t ? t.lastRow : -1;
                            if (!t || i < e.firstRow) return this.update(e);
                            if (n < t.firstRow) return this.update(e);
                            if (!t || t.lastRow < e.firstRow) return this.update(e);
                            if (e.lastRow < t.firstRow) return this.update(e);
                            if (t.firstRow < e.firstRow) for (var r = this.session.getFoldedRowCount(t.firstRow, e.firstRow - 1); r > 0; r--) this.$lines.shift();
                            if (t.lastRow > e.lastRow) for (r = this.session.getFoldedRowCount(e.lastRow + 1, t.lastRow); r > 0; r--) this.$lines.pop();
                            e.firstRow < t.firstRow && this.$lines.unshift(this.$renderLinesFragment(e, e.firstRow, t.firstRow - 1)), e.lastRow > t.lastRow && this.$lines.push(this.$renderLinesFragment(e, t.lastRow + 1, e.lastRow))
                        }, this.$renderLinesFragment = function (e, t, n) {
                            for (var i = [], o = t, a = this.session.getNextFoldLine(o), s = a ? a.start.row : 1 / 0; o > s && (o = a.end.row + 1, s = (a = this.session.getNextFoldLine(o, a)) ? a.start.row : 1 / 0), !(o > n);) {
                                var l = this.$lines.createCell(o, e, this.session), c = l.element;
                                this.dom.removeChildren(c), r.setStyle(c.style, "height", this.$lines.computeLineHeight(o, e, this.session) + "px"), r.setStyle(c.style, "top", this.$lines.computeLineTop(o, e, this.session) + "px"), this.$renderLine(c, o, o == s && a), this.$useLineGroups() ? c.className = "ace_line_group" : c.className = "ace_line", i.push(l), o++
                            }
                            return i
                        }, this.update = function (e) {
                            this.$lines.moveContainer(e), this.config = e;
                            for (var t = e.firstRow, n = e.lastRow, i = this.$lines; i.getLength();) i.pop();
                            i.push(this.$renderLinesFragment(e, t, n))
                        }, this.$textToken = {
                            text: !0,
                            rparen: !0,
                            lparen: !0
                        }, this.$renderToken = function (e, t, n, i) {
                            for (var r, a = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g, s = this.dom.createFragment(this.element), l = 0; r = a.exec(i);) {
                                var c = r[1], u = r[2], h = r[3], d = r[4], f = r[5];
                                if (this.showSpaces || !u) {
                                    var g = l != r.index ? i.slice(l, r.index) : "";
                                    if (l = r.index + r[0].length, g && s.appendChild(this.dom.createTextNode(g, this.element)), c) {
                                        var p = this.session.getScreenTabSize(t + r.index);
                                        s.appendChild(this.$tabStrings[p].cloneNode(!0)), t += p - 1
                                    } else u ? this.showSpaces ? ((v = this.dom.createElement("span")).className = "ace_invisible ace_invisible_space", v.textContent = o.stringRepeat(this.SPACE_CHAR, u.length), s.appendChild(v)) : s.appendChild(this.com.createTextNode(u, this.element)) : h ? ((v = this.dom.createElement("span")).className = "ace_invisible ace_invisible_space ace_invalid", v.textContent = o.stringRepeat(this.SPACE_CHAR, h.length), s.appendChild(v)) : d ? (t += 1, (v = this.dom.createElement("span")).style.width = 2 * this.config.characterWidth + "px", v.className = this.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk", v.textContent = this.showSpaces ? this.SPACE_CHAR : d, s.appendChild(v)) : f && (t += 1, (v = this.dom.createElement("span")).style.width = 2 * this.config.characterWidth + "px", v.className = "ace_cjk", v.textContent = f, s.appendChild(v))
                                }
                            }
                            if (s.appendChild(this.dom.createTextNode(l ? i.slice(l) : i, this.element)), this.$textToken[n.type]) e.appendChild(s); else {
                                var m = "ace_" + n.type.replace(/\./g, " ace_"), v = this.dom.createElement("span");
                                "fold" == n.type && (v.style.width = n.value.length * this.config.characterWidth + "px"), v.className = m, v.appendChild(s), e.appendChild(v)
                            }
                            return t + i.length
                        }, this.renderIndentGuide = function (e, t, n) {
                            var i = t.search(this.$indentGuideRe);
                            if (i <= 0 || i >= n) return t;
                            if (" " == t[0]) {
                                for (var r = (i -= i % this.tabSize) / this.tabSize, o = 0; o < r; o++) e.appendChild(this.$tabStrings[" "].cloneNode(!0));
                                return t.substr(i)
                            }
                            if ("\t" == t[0]) {
                                for (o = 0; o < i; o++) e.appendChild(this.$tabStrings["\t"].cloneNode(!0));
                                return t.substr(i)
                            }
                            return t
                        }, this.$createLineElement = function (e) {
                            var t = this.dom.createElement("div");
                            return t.className = "ace_line", t.style.height = this.config.lineHeight + "px", t
                        }, this.$renderWrappedLine = function (e, t, n) {
                            var i = 0, r = 0, a = n[0], s = 0, l = this.$createLineElement();
                            e.appendChild(l);
                            for (var c = 0; c < t.length; c++) {
                                var u = t[c], h = u.value;
                                if (0 == c && this.displayIndentGuides) {
                                    if (i = h.length, !(h = this.renderIndentGuide(l, h, a))) continue;
                                    i -= h.length
                                }
                                if (i + h.length < a) s = this.$renderToken(l, s, u, h), i += h.length; else {
                                    for (; i + h.length >= a;) s = this.$renderToken(l, s, u, h.substring(0, a - i)), h = h.substring(a - i), i = a, l = this.$createLineElement(), e.appendChild(l), l.appendChild(this.dom.createTextNode(o.stringRepeat(" ", n.indent), this.element)), s = 0, a = n[++r] || Number.MAX_VALUE;
                                    0 != h.length && (i += h.length, s = this.$renderToken(l, s, u, h))
                                }
                            }
                            n[n.length - 1] > this.MAX_LINE_LENGTH && this.$renderOverflowMessage(l, s, null, "", !0)
                        }, this.$renderSimpleLine = function (e, t) {
                            var n = 0, i = t[0], r = i.value;
                            this.displayIndentGuides && (r = this.renderIndentGuide(e, r)), r && (n = this.$renderToken(e, n, i, r));
                            for (var o = 1; o < t.length; o++) {
                                if (n + (r = (i = t[o]).value).length > this.MAX_LINE_LENGTH) return this.$renderOverflowMessage(e, n, i, r);
                                n = this.$renderToken(e, n, i, r)
                            }
                        }, this.$renderOverflowMessage = function (e, t, n, i, r) {
                            n && this.$renderToken(e, t, n, i.slice(0, this.MAX_LINE_LENGTH - t));
                            var o = this.dom.createElement("span");
                            o.className = "ace_inline_button ace_keyword ace_toggle_wrap", o.textContent = r ? "<hide>" : "<click to see more...>", e.appendChild(o)
                        }, this.$renderLine = function (e, t, n) {
                            if (n || 0 == n || (n = this.session.getFoldLine(t)), n) var i = this.$getFoldLineTokens(t, n); else i = this.session.getTokens(t);
                            var r = e;
                            if (i.length) {
                                var o = this.session.getRowSplitData(t);
                                o && o.length ? (this.$renderWrappedLine(e, i, o), r = e.lastChild) : (r = e, this.$useLineGroups() && (r = this.$createLineElement(), e.appendChild(r)), this.$renderSimpleLine(r, i))
                            } else this.$useLineGroups() && (r = this.$createLineElement(), e.appendChild(r));
                            if (this.showEOL && r) {
                                n && (t = n.end.row);
                                var a = this.dom.createElement("span");
                                a.className = "ace_invisible ace_invisible_eol", a.textContent = t == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR, r.appendChild(a)
                            }
                        }, this.$getFoldLineTokens = function (e, t) {
                            var n = this.session, i = [], r = n.getTokens(e);
                            return t.walk((function (e, t, o, a, s) {
                                null != e ? i.push({
                                    type: "fold",
                                    value: e
                                }) : (s && (r = n.getTokens(t)), r.length && function (e, t, n) {
                                    for (var r = 0, o = 0; o + e[r].value.length < t;) if (o += e[r].value.length, ++r == e.length) return;
                                    for (o != t && ((a = e[r].value.substring(t - o)).length > n - t && (a = a.substring(0, n - t)), i.push({
                                        type: e[r].type,
                                        value: a
                                    }), o = t + a.length, r += 1); o < n && r < e.length;) {
                                        var a;
                                        (a = e[r].value).length + o > n ? i.push({
                                            type: e[r].type,
                                            value: a.substring(0, n - o)
                                        }) : i.push(e[r]), o += a.length, r += 1
                                    }
                                }(r, a, o))
                            }), t.end.row, this.session.getLine(t.end.row).length), i
                        }, this.$useLineGroups = function () {
                            return this.session.getUseWrapMode()
                        }, this.destroy = function () {
                        }
                    }).call(l.prototype), t.Text = l
                })), ace.define("ace/layer/cursor", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom"), r = function (e) {
                        this.element = i.createElement("div"), this.element.className = "ace_layer ace_cursor-layer", e.appendChild(this.element), this.isVisible = !1, this.isBlinking = !0, this.blinkInterval = 1e3, this.smoothBlinking = !1, this.cursors = [], this.cursor = this.addCursor(), i.addCssClass(this.element, "ace_hidden-cursors"), this.$updateCursors = this.$updateOpacity.bind(this)
                    };
                    (function () {
                        this.$updateOpacity = function (e) {
                            for (var t = this.cursors, n = t.length; n--;) i.setStyle(t[n].style, "opacity", e ? "" : "0")
                        }, this.$startCssAnimation = function () {
                            for (var e = this.cursors, t = e.length; t--;) e[t].style.animationDuration = this.blinkInterval + "ms";
                            setTimeout(function () {
                                i.addCssClass(this.element, "ace_animate-blinking")
                            }.bind(this))
                        }, this.$stopCssAnimation = function () {
                            i.removeCssClass(this.element, "ace_animate-blinking")
                        }, this.$padding = 0, this.setPadding = function (e) {
                            this.$padding = e
                        }, this.setSession = function (e) {
                            this.session = e
                        }, this.setBlinking = function (e) {
                            e != this.isBlinking && (this.isBlinking = e, this.restartTimer())
                        }, this.setBlinkInterval = function (e) {
                            e != this.blinkInterval && (this.blinkInterval = e, this.restartTimer())
                        }, this.setSmoothBlinking = function (e) {
                            e != this.smoothBlinking && (this.smoothBlinking = e, i.setCssClass(this.element, "ace_smooth-blinking", e), this.$updateCursors(!0), this.restartTimer())
                        }, this.addCursor = function () {
                            var e = i.createElement("div");
                            return e.className = "ace_cursor", this.element.appendChild(e), this.cursors.push(e), e
                        }, this.removeCursor = function () {
                            if (this.cursors.length > 1) {
                                var e = this.cursors.pop();
                                return e.parentNode.removeChild(e), e
                            }
                        }, this.hideCursor = function () {
                            this.isVisible = !1, i.addCssClass(this.element, "ace_hidden-cursors"), this.restartTimer()
                        }, this.showCursor = function () {
                            this.isVisible = !0, i.removeCssClass(this.element, "ace_hidden-cursors"), this.restartTimer()
                        }, this.restartTimer = function () {
                            var e = this.$updateCursors;
                            if (clearInterval(this.intervalId), clearTimeout(this.timeoutId), this.$stopCssAnimation(), this.smoothBlinking && i.removeCssClass(this.element, "ace_smooth-blinking"), e(!0), this.isBlinking && this.blinkInterval && this.isVisible) if (this.smoothBlinking && setTimeout(function () {
                                i.addCssClass(this.element, "ace_smooth-blinking")
                            }.bind(this)), i.HAS_CSS_ANIMATION) this.$startCssAnimation(); else {
                                var t = function () {
                                    this.timeoutId = setTimeout((function () {
                                        e(!1)
                                    }), .6 * this.blinkInterval)
                                }.bind(this);
                                this.intervalId = setInterval((function () {
                                    e(!0), t()
                                }), this.blinkInterval), t()
                            } else this.$stopCssAnimation()
                        }, this.getPixelPosition = function (e, t) {
                            if (!this.config || !this.session) return {left: 0, top: 0};
                            e || (e = this.session.selection.getCursor());
                            var n = this.session.documentToScreenPosition(e);
                            return {
                                left: this.$padding + (this.session.$bidiHandler.isBidiRow(n.row, e.row) ? this.session.$bidiHandler.getPosLeft(n.column) : n.column * this.config.characterWidth),
                                top: (n.row - (t ? this.config.firstRowScreen : 0)) * this.config.lineHeight
                            }
                        }, this.isCursorInView = function (e, t) {
                            return e.top >= 0 && e.top < t.maxHeight
                        }, this.update = function (e) {
                            this.config = e;
                            var t = this.session.$selectionMarkers, n = 0, r = 0;
                            void 0 !== t && 0 !== t.length || (t = [{cursor: null}]), n = 0;
                            for (var o = t.length; n < o; n++) {
                                var a = this.getPixelPosition(t[n].cursor, !0);
                                if (!((a.top > e.height + e.offset || a.top < 0) && n > 1)) {
                                    var s = this.cursors[r++] || this.addCursor(), l = s.style;
                                    this.drawCursor ? this.drawCursor(s, a, e, t[n], this.session) : this.isCursorInView(a, e) ? (i.setStyle(l, "display", "block"), i.translate(s, a.left, a.top), i.setStyle(l, "width", Math.round(e.characterWidth) + "px"), i.setStyle(l, "height", e.lineHeight + "px")) : i.setStyle(l, "display", "none")
                                }
                            }
                            for (; this.cursors.length > r;) this.removeCursor();
                            var c = this.session.getOverwrite();
                            this.$setOverwrite(c), this.$pixelPos = a, this.restartTimer()
                        }, this.drawCursor = null, this.$setOverwrite = function (e) {
                            e != this.overwrite && (this.overwrite = e, e ? i.addCssClass(this.element, "ace_overwrite-cursors") : i.removeCssClass(this.element, "ace_overwrite-cursors"))
                        }, this.destroy = function () {
                            clearInterval(this.intervalId), clearTimeout(this.timeoutId)
                        }
                    }).call(r.prototype), t.Cursor = r
                })), ace.define("ace/scrollbar", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/lib/event", "ace/lib/event_emitter"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./lib/dom"), o = e("./lib/event"),
                        a = e("./lib/event_emitter").EventEmitter, s = function (e) {
                            this.element = r.createElement("div"), this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix, this.inner = r.createElement("div"), this.inner.className = "ace_scrollbar-inner", this.inner.textContent = " ", this.element.appendChild(this.inner), e.appendChild(this.element), this.setVisible(!1), this.skipEvent = !1, o.addListener(this.element, "scroll", this.onScroll.bind(this)), o.addListener(this.element, "mousedown", o.preventDefault)
                        };
                    (function () {
                        i.implement(this, a), this.setVisible = function (e) {
                            this.element.style.display = e ? "" : "none", this.isVisible = e, this.coeff = 1
                        }
                    }).call(s.prototype);
                    var l = function (e, t) {
                        s.call(this, e), this.scrollTop = 0, this.scrollHeight = 0, t.$scrollbarWidth = this.width = r.scrollbarWidth(e.ownerDocument), this.inner.style.width = this.element.style.width = (this.width || 15) + 5 + "px", this.$minWidth = 0
                    };
                    i.inherits(l, s), function () {
                        this.classSuffix = "-v", this.onScroll = function () {
                            if (!this.skipEvent) {
                                if (this.scrollTop = this.element.scrollTop, 1 != this.coeff) {
                                    var e = this.element.clientHeight / this.scrollHeight;
                                    this.scrollTop = this.scrollTop * (1 - e) / (this.coeff - e)
                                }
                                this._emit("scroll", {data: this.scrollTop})
                            }
                            this.skipEvent = !1
                        }, this.getWidth = function () {
                            return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0)
                        }, this.setHeight = function (e) {
                            this.element.style.height = e + "px"
                        }, this.setInnerHeight = this.setScrollHeight = function (e) {
                            this.scrollHeight = e, e > 32768 ? (this.coeff = 32768 / e, e = 32768) : 1 != this.coeff && (this.coeff = 1), this.inner.style.height = e + "px"
                        }, this.setScrollTop = function (e) {
                            this.scrollTop != e && (this.skipEvent = !0, this.scrollTop = e, this.element.scrollTop = e * this.coeff)
                        }
                    }.call(l.prototype);
                    var c = function (e, t) {
                        s.call(this, e), this.scrollLeft = 0, this.height = t.$scrollbarWidth, this.inner.style.height = this.element.style.height = (this.height || 15) + 5 + "px"
                    };
                    i.inherits(c, s), function () {
                        this.classSuffix = "-h", this.onScroll = function () {
                            this.skipEvent || (this.scrollLeft = this.element.scrollLeft, this._emit("scroll", {data: this.scrollLeft})), this.skipEvent = !1
                        }, this.getHeight = function () {
                            return this.isVisible ? this.height : 0
                        }, this.setWidth = function (e) {
                            this.element.style.width = e + "px"
                        }, this.setInnerWidth = function (e) {
                            this.inner.style.width = e + "px"
                        }, this.setScrollWidth = function (e) {
                            this.inner.style.width = e + "px"
                        }, this.setScrollLeft = function (e) {
                            this.scrollLeft != e && (this.skipEvent = !0, this.scrollLeft = this.element.scrollLeft = e)
                        }
                    }.call(c.prototype), t.ScrollBar = l, t.ScrollBarV = l, t.ScrollBarH = c, t.VScrollBar = l, t.HScrollBar = c
                })), ace.define("ace/renderloop", ["require", "exports", "module", "ace/lib/event"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/event"), r = function (e, t) {
                        this.onRender = e, this.pending = !1, this.changes = 0, this.$recursionLimit = 2, this.window = t || window;
                        var n = this;
                        this._flush = function (e) {
                            n.pending = !1;
                            var t = n.changes;
                            if (t && (i.blockIdle(100), n.changes = 0, n.onRender(t)), n.changes) {
                                if (n.$recursionLimit-- < 0) return;
                                n.schedule()
                            } else n.$recursionLimit = 2
                        }
                    };
                    (function () {
                        this.schedule = function (e) {
                            this.changes = this.changes | e, this.changes && !this.pending && (i.nextFrame(this._flush), this.pending = !0)
                        }, this.clear = function (e) {
                            var t = this.changes;
                            return this.changes = 0, t
                        }
                    }).call(r.prototype), t.RenderLoop = r
                })), ace.define("ace/layer/font_metrics", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/lib/lang", "ace/lib/event", "ace/lib/useragent", "ace/lib/event_emitter"], (function (e, t, n) {
                    var i = e("../lib/oop"), r = e("../lib/dom"), o = e("../lib/lang"), a = e("../lib/event"),
                        s = e("../lib/useragent"), l = e("../lib/event_emitter").EventEmitter,
                        c = "function" == typeof ResizeObserver, u = 200, h = t.FontMetrics = function (e) {
                            this.el = r.createElement("div"), this.$setMeasureNodeStyles(this.el.style, !0), this.$main = r.createElement("div"), this.$setMeasureNodeStyles(this.$main.style), this.$measureNode = r.createElement("div"), this.$setMeasureNodeStyles(this.$measureNode.style), this.el.appendChild(this.$main), this.el.appendChild(this.$measureNode), e.appendChild(this.el), this.$measureNode.textContent = o.stringRepeat("X", 256), this.$characterSize = {
                                width: 0,
                                height: 0
                            }, c ? this.$addObserver() : this.checkForSizeChanges()
                        };
                    (function () {
                        i.implement(this, l), this.$characterSize = {
                            width: 0,
                            height: 0
                        }, this.$setMeasureNodeStyles = function (e, t) {
                            e.width = e.height = "auto", e.left = e.top = "0px", e.visibility = "hidden", e.position = "absolute", e.whiteSpace = "pre", s.isIE < 8 ? e["font-family"] = "inherit" : e.font = "inherit", e.overflow = t ? "hidden" : "visible"
                        }, this.checkForSizeChanges = function (e) {
                            if (void 0 === e && (e = this.$measureSizes()), e && (this.$characterSize.width !== e.width || this.$characterSize.height !== e.height)) {
                                this.$measureNode.style.fontWeight = "bold";
                                var t = this.$measureSizes();
                                this.$measureNode.style.fontWeight = "", this.$characterSize = e, this.charSizes = Object.create(null), this.allowBoldFonts = t && t.width === e.width && t.height === e.height, this._emit("changeCharacterSize", {data: e})
                            }
                        }, this.$addObserver = function () {
                            var e = this;
                            this.$observer = new window.ResizeObserver((function (t) {
                                e.checkForSizeChanges()
                            })), this.$observer.observe(this.$measureNode)
                        }, this.$pollSizeChanges = function () {
                            if (this.$pollSizeChangesTimer || this.$observer) return this.$pollSizeChangesTimer;
                            var e = this;
                            return this.$pollSizeChangesTimer = a.onIdle((function t() {
                                e.checkForSizeChanges(), a.onIdle(t, 500)
                            }), 500)
                        }, this.setPolling = function (e) {
                            e ? this.$pollSizeChanges() : this.$pollSizeChangesTimer && (clearInterval(this.$pollSizeChangesTimer), this.$pollSizeChangesTimer = 0)
                        }, this.$measureSizes = function (e) {
                            var t = {
                                height: (e || this.$measureNode).clientHeight,
                                width: (e || this.$measureNode).clientWidth / 256
                            };
                            return 0 === t.width || 0 === t.height ? null : t
                        }, this.$measureCharWidth = function (e) {
                            return this.$main.textContent = o.stringRepeat(e, 256), this.$main.getBoundingClientRect().width / 256
                        }, this.getCharacterWidth = function (e) {
                            var t = this.charSizes[e];
                            return void 0 === t && (t = this.charSizes[e] = this.$measureCharWidth(e) / this.$characterSize.width), t
                        }, this.destroy = function () {
                            clearInterval(this.$pollSizeChangesTimer), this.$observer && this.$observer.disconnect(), this.el && this.el.parentNode && this.el.parentNode.removeChild(this.el)
                        }, this.$getZoom = function e(t) {
                            return t ? (window.getComputedStyle(t).zoom || 1) * e(t.parentElement) : 1
                        }, this.$initTransformMeasureNodes = function () {
                            var e = function (e, t) {
                                return ["div", {style: "position: absolute;top:" + e + "px;left:" + t + "px;"}]
                            };
                            this.els = r.buildDom([e(0, 0), e(u, 0), e(0, u), e(u, u)], this.el)
                        }, this.transformCoordinates = function (e, t) {
                            function n(e, t, n) {
                                var i = e[1] * t[0] - e[0] * t[1];
                                return [(-t[1] * n[0] + t[0] * n[1]) / i, (+e[1] * n[0] - e[0] * n[1]) / i]
                            }

                            function i(e, t) {
                                return [e[0] - t[0], e[1] - t[1]]
                            }

                            function r(e, t) {
                                return [e[0] + t[0], e[1] + t[1]]
                            }

                            function o(e, t) {
                                return [e * t[0], e * t[1]]
                            }

                            function a(e) {
                                var t = e.getBoundingClientRect();
                                return [t.left, t.top]
                            }

                            e && (e = o(1 / this.$getZoom(this.el), e)), this.els || this.$initTransformMeasureNodes();
                            var s = a(this.els[0]), l = a(this.els[1]), c = a(this.els[2]), h = a(this.els[3]),
                                d = n(i(h, l), i(h, c), i(r(l, c), r(h, s))), f = o(1 + d[0], i(l, s)),
                                g = o(1 + d[1], i(c, s));
                            if (t) {
                                var p = t, m = d[0] * p[0] / u + d[1] * p[1] / u + 1, v = r(o(p[0], f), o(p[1], g));
                                return r(o(1 / m / u, v), s)
                            }
                            var y = i(e, s), b = n(i(f, o(d[0], y)), i(g, o(d[1], y)), y);
                            return o(u, b)
                        }
                    }).call(h.prototype)
                })), ace.define("ace/virtual_renderer", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/config", "ace/layer/gutter", "ace/layer/marker", "ace/layer/text", "ace/layer/cursor", "ace/scrollbar", "ace/scrollbar", "ace/renderloop", "ace/layer/font_metrics", "ace/lib/event_emitter", "ace/lib/useragent"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/oop"), r = e("./lib/dom"), o = e("./config"), a = e("./layer/gutter").Gutter,
                        s = e("./layer/marker").Marker, l = e("./layer/text").Text, c = e("./layer/cursor").Cursor,
                        u = e("./scrollbar").HScrollBar, h = e("./scrollbar").VScrollBar,
                        d = e("./renderloop").RenderLoop, f = e("./layer/font_metrics").FontMetrics,
                        g = e("./lib/event_emitter").EventEmitter,
                        p = '.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;padding: 0;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;font-variant-ligatures: no-common-ligatures;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_error_bracket {position: absolute;border-bottom: 1px solid #DE5555;border-radius: 0;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);transform-origin: left;white-space: pre;opacity: 0.7;margin: 0 10px;}',
                        m = e("./lib/useragent"), v = m.isIE;
                    r.importCssString(p, "ace_editor.css");
                    var y = function (e, t) {
                        var n = this;
                        this.container = e || r.createElement("div"), r.addCssClass(this.container, "ace_editor"), r.HI_DPI && r.addCssClass(this.container, "ace_hidpi"), this.setTheme(t), this.$gutter = r.createElement("div"), this.$gutter.className = "ace_gutter", this.container.appendChild(this.$gutter), this.$gutter.setAttribute("aria-hidden", !0), this.scroller = r.createElement("div"), this.scroller.className = "ace_scroller", this.container.appendChild(this.scroller), this.content = r.createElement("div"), this.content.className = "ace_content", this.scroller.appendChild(this.content), this.$gutterLayer = new a(this.$gutter), this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)), this.$markerBack = new s(this.content);
                        var i = this.$textLayer = new l(this.content);
                        this.canvas = i.element, this.$markerFront = new s(this.content), this.$cursorLayer = new c(this.content), this.$horizScroll = !1, this.$vScroll = !1, this.scrollBar = this.scrollBarV = new h(this.container, this), this.scrollBarH = new u(this.container, this), this.scrollBarV.on("scroll", (function (e) {
                            n.$scrollAnimation || n.session.setScrollTop(e.data - n.scrollMargin.top)
                        })), this.scrollBarH.on("scroll", (function (e) {
                            n.$scrollAnimation || n.session.setScrollLeft(e.data - n.scrollMargin.left)
                        })), this.scrollTop = 0, this.scrollLeft = 0, this.cursorPos = {
                            row: 0,
                            column: 0
                        }, this.$fontMetrics = new f(this.container), this.$textLayer.$setFontMetrics(this.$fontMetrics), this.$textLayer.on("changeCharacterSize", (function (e) {
                            n.updateCharacterSize(), n.onResize(!0, n.gutterWidth, n.$size.width, n.$size.height), n._signal("changeCharacterSize", e)
                        })), this.$size = {
                            width: 0,
                            height: 0,
                            scrollerHeight: 0,
                            scrollerWidth: 0,
                            $dirty: !0
                        }, this.layerConfig = {
                            width: 1,
                            padding: 0,
                            firstRow: 0,
                            firstRowScreen: 0,
                            lastRow: 0,
                            lineHeight: 0,
                            characterWidth: 0,
                            minHeight: 1,
                            maxHeight: 1,
                            offset: 0,
                            height: 1,
                            gutterOffset: 1
                        }, this.scrollMargin = {
                            left: 0,
                            right: 0,
                            top: 0,
                            bottom: 0,
                            v: 0,
                            h: 0
                        }, this.margin = {
                            left: 0,
                            right: 0,
                            top: 0,
                            bottom: 0,
                            v: 0,
                            h: 0
                        }, this.$keepTextAreaAtCursor = !m.isIOS, this.$loop = new d(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView), this.$loop.schedule(this.CHANGE_FULL), this.updateCharacterSize(), this.setPadding(4), o.resetOptions(this), o._signal("renderer", this)
                    };
                    (function () {
                        this.CHANGE_CURSOR = 1, this.CHANGE_MARKER = 2, this.CHANGE_GUTTER = 4, this.CHANGE_SCROLL = 8, this.CHANGE_LINES = 16, this.CHANGE_TEXT = 32, this.CHANGE_SIZE = 64, this.CHANGE_MARKER_BACK = 128, this.CHANGE_MARKER_FRONT = 256, this.CHANGE_FULL = 512, this.CHANGE_H_SCROLL = 1024, i.implement(this, g), this.updateCharacterSize = function () {
                            this.$textLayer.allowBoldFonts != this.$allowBoldFonts && (this.$allowBoldFonts = this.$textLayer.allowBoldFonts, this.setStyle("ace_nobold", !this.$allowBoldFonts)), this.layerConfig.characterWidth = this.characterWidth = this.$textLayer.getCharacterWidth(), this.layerConfig.lineHeight = this.lineHeight = this.$textLayer.getLineHeight(), this.$updatePrintMargin(), r.setStyle(this.scroller.style, "line-height", this.lineHeight + "px")
                        }, this.setSession = function (e) {
                            this.session && this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode), this.session = e, e && this.scrollMargin.top && e.getScrollTop() <= 0 && e.setScrollTop(-this.scrollMargin.top), this.$cursorLayer.setSession(e), this.$markerBack.setSession(e), this.$markerFront.setSession(e), this.$gutterLayer.setSession(e), this.$textLayer.setSession(e), e && (this.$loop.schedule(this.CHANGE_FULL), this.session.$setFontMetrics(this.$fontMetrics), this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null, this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this), this.onChangeNewLineMode(), this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode))
                        }, this.updateLines = function (e, t, n) {
                            if (void 0 === t && (t = 1 / 0), this.$changedLines ? (this.$changedLines.firstRow > e && (this.$changedLines.firstRow = e), this.$changedLines.lastRow < t && (this.$changedLines.lastRow = t)) : this.$changedLines = {
                                firstRow: e,
                                lastRow: t
                            }, this.$changedLines.lastRow < this.layerConfig.firstRow) {
                                if (!n) return;
                                this.$changedLines.lastRow = this.layerConfig.lastRow
                            }
                            this.$changedLines.firstRow > this.layerConfig.lastRow || this.$loop.schedule(this.CHANGE_LINES)
                        }, this.onChangeNewLineMode = function () {
                            this.$loop.schedule(this.CHANGE_TEXT), this.$textLayer.$updateEolChar(), this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)
                        }, this.onChangeTabSize = function () {
                            this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER), this.$textLayer.onChangeTabSize()
                        }, this.updateText = function () {
                            this.$loop.schedule(this.CHANGE_TEXT)
                        }, this.updateFull = function (e) {
                            e ? this.$renderChanges(this.CHANGE_FULL, !0) : this.$loop.schedule(this.CHANGE_FULL)
                        }, this.updateFontSize = function () {
                            this.$textLayer.checkForSizeChanges()
                        }, this.$changes = 0, this.$updateSizeAsync = function () {
                            this.$loop.pending ? this.$size.$dirty = !0 : this.onResize()
                        }, this.onResize = function (e, t, n, i) {
                            if (!(this.resizing > 2)) {
                                this.resizing > 0 ? this.resizing++ : this.resizing = e ? 1 : 0;
                                var r = this.container;
                                i || (i = r.clientHeight || r.scrollHeight), n || (n = r.clientWidth || r.scrollWidth);
                                var o = this.$updateCachedSize(e, t, n, i);
                                if (!this.$size.scrollerHeight || !n && !i) return this.resizing = 0;
                                e && (this.$gutterLayer.$padding = null), e ? this.$renderChanges(o | this.$changes, !0) : this.$loop.schedule(o | this.$changes), this.resizing && (this.resizing = 0), this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null
                            }
                        }, this.$updateCachedSize = function (e, t, n, i) {
                            i -= this.$extraHeight || 0;
                            var o = 0, a = this.$size, s = {
                                width: a.width,
                                height: a.height,
                                scrollerHeight: a.scrollerHeight,
                                scrollerWidth: a.scrollerWidth
                            };
                            if (i && (e || a.height != i) && (a.height = i, o |= this.CHANGE_SIZE, a.scrollerHeight = a.height, this.$horizScroll && (a.scrollerHeight -= this.scrollBarH.getHeight()), this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px", o |= this.CHANGE_SCROLL), n && (e || a.width != n)) {
                                o |= this.CHANGE_SIZE, a.width = n, null == t && (t = this.$showGutter ? this.$gutter.offsetWidth : 0), this.gutterWidth = t, r.setStyle(this.scrollBarH.element.style, "left", t + "px"), r.setStyle(this.scroller.style, "left", t + this.margin.left + "px"), a.scrollerWidth = Math.max(0, n - t - this.scrollBarV.getWidth() - this.margin.h), r.setStyle(this.$gutter.style, "left", this.margin.left + "px");
                                var l = this.scrollBarV.getWidth() + "px";
                                r.setStyle(this.scrollBarH.element.style, "right", l), r.setStyle(this.scroller.style, "right", l), r.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()), (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || e) && (o |= this.CHANGE_FULL)
                            }
                            return a.$dirty = !n || !i, o && this._signal("resize", s), o
                        }, this.onGutterResize = function (e) {
                            var t = this.$showGutter ? e : 0;
                            t != this.gutterWidth && (this.$changes |= this.$updateCachedSize(!0, t, this.$size.width, this.$size.height)), this.session.getUseWrapMode() && this.adjustWrapLimit() || this.$size.$dirty ? this.$loop.schedule(this.CHANGE_FULL) : this.$computeLayerConfig()
                        }, this.adjustWrapLimit = function () {
                            var e = this.$size.scrollerWidth - 2 * this.$padding,
                                t = Math.floor(e / this.characterWidth);
                            return this.session.adjustWrapLimit(t, this.$showPrintMargin && this.$printMarginColumn)
                        }, this.setAnimatedScroll = function (e) {
                            this.setOption("animatedScroll", e)
                        }, this.getAnimatedScroll = function () {
                            return this.$animatedScroll
                        }, this.setShowInvisibles = function (e) {
                            this.setOption("showInvisibles", e), this.session.$bidiHandler.setShowInvisibles(e)
                        }, this.getShowInvisibles = function () {
                            return this.getOption("showInvisibles")
                        }, this.getDisplayIndentGuides = function () {
                            return this.getOption("displayIndentGuides")
                        }, this.setDisplayIndentGuides = function (e) {
                            this.setOption("displayIndentGuides", e)
                        }, this.setShowPrintMargin = function (e) {
                            this.setOption("showPrintMargin", e)
                        }, this.getShowPrintMargin = function () {
                            return this.getOption("showPrintMargin")
                        }, this.setPrintMarginColumn = function (e) {
                            this.setOption("printMarginColumn", e)
                        }, this.getPrintMarginColumn = function () {
                            return this.getOption("printMarginColumn")
                        }, this.getShowGutter = function () {
                            return this.getOption("showGutter")
                        }, this.setShowGutter = function (e) {
                            return this.setOption("showGutter", e)
                        }, this.getFadeFoldWidgets = function () {
                            return this.getOption("fadeFoldWidgets")
                        }, this.setFadeFoldWidgets = function (e) {
                            this.setOption("fadeFoldWidgets", e)
                        }, this.setHighlightGutterLine = function (e) {
                            this.setOption("highlightGutterLine", e)
                        }, this.getHighlightGutterLine = function () {
                            return this.getOption("highlightGutterLine")
                        }, this.$updatePrintMargin = function () {
                            if (this.$showPrintMargin || this.$printMarginEl) {
                                if (!this.$printMarginEl) {
                                    var e = r.createElement("div");
                                    e.className = "ace_layer ace_print-margin-layer", this.$printMarginEl = r.createElement("div"), this.$printMarginEl.className = "ace_print-margin", e.appendChild(this.$printMarginEl), this.content.insertBefore(e, this.content.firstChild)
                                }
                                var t = this.$printMarginEl.style;
                                t.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px", t.visibility = this.$showPrintMargin ? "visible" : "hidden", this.session && -1 == this.session.$wrap && this.adjustWrapLimit()
                            }
                        }, this.getContainerElement = function () {
                            return this.container
                        }, this.getMouseEventTarget = function () {
                            return this.scroller
                        }, this.getTextAreaContainer = function () {
                            return this.container
                        }, this.$moveTextAreaToCursor = function () {
                            if (!this.$isMousePressed) {
                                var e = this.textarea.style, t = this.$composition;
                                if (this.$keepTextAreaAtCursor || t) {
                                    var n = this.$cursorLayer.$pixelPos;
                                    if (n) {
                                        t && t.markerRange && (n = this.$cursorLayer.getPixelPosition(t.markerRange.start, !0));
                                        var i = this.layerConfig, o = n.top, a = n.left;
                                        o -= i.offset;
                                        var s = t && t.useTextareaForIME ? this.lineHeight : v ? 0 : 1;
                                        if (o < 0 || o > i.height - s) r.translate(this.textarea, 0, 0); else {
                                            var l = 1, c = this.$size.height - s;
                                            if (t) if (t.useTextareaForIME) {
                                                var u = this.textarea.value;
                                                l = this.characterWidth * this.session.$getStringScreenWidth(u)[0]
                                            } else o += this.lineHeight + 2; else o += this.lineHeight;
                                            (a -= this.scrollLeft) > this.$size.scrollerWidth - l && (a = this.$size.scrollerWidth - l), a += this.gutterWidth + this.margin.left, r.setStyle(e, "height", s + "px"), r.setStyle(e, "width", l + "px"), r.translate(this.textarea, Math.min(a, this.$size.scrollerWidth - l), Math.min(o, c))
                                        }
                                    }
                                } else r.translate(this.textarea, -100, 0)
                            }
                        }, this.getFirstVisibleRow = function () {
                            return this.layerConfig.firstRow
                        }, this.getFirstFullyVisibleRow = function () {
                            return this.layerConfig.firstRow + (0 === this.layerConfig.offset ? 0 : 1)
                        }, this.getLastFullyVisibleRow = function () {
                            var e = this.layerConfig, t = e.lastRow;
                            return this.session.documentToScreenRow(t, 0) * e.lineHeight - this.session.getScrollTop() > e.height - e.lineHeight ? t - 1 : t
                        }, this.getLastVisibleRow = function () {
                            return this.layerConfig.lastRow
                        }, this.$padding = null, this.setPadding = function (e) {
                            this.$padding = e, this.$textLayer.setPadding(e), this.$cursorLayer.setPadding(e), this.$markerFront.setPadding(e), this.$markerBack.setPadding(e), this.$loop.schedule(this.CHANGE_FULL), this.$updatePrintMargin()
                        }, this.setScrollMargin = function (e, t, n, i) {
                            var r = this.scrollMargin;
                            r.top = 0 | e, r.bottom = 0 | t, r.right = 0 | i, r.left = 0 | n, r.v = r.top + r.bottom, r.h = r.left + r.right, r.top && this.scrollTop <= 0 && this.session && this.session.setScrollTop(-r.top), this.updateFull()
                        }, this.setMargin = function (e, t, n, i) {
                            var r = this.margin;
                            r.top = 0 | e, r.bottom = 0 | t, r.right = 0 | i, r.left = 0 | n, r.v = r.top + r.bottom, r.h = r.left + r.right, this.$updateCachedSize(!0, this.gutterWidth, this.$size.width, this.$size.height), this.updateFull()
                        }, this.getHScrollBarAlwaysVisible = function () {
                            return this.$hScrollBarAlwaysVisible
                        }, this.setHScrollBarAlwaysVisible = function (e) {
                            this.setOption("hScrollBarAlwaysVisible", e)
                        }, this.getVScrollBarAlwaysVisible = function () {
                            return this.$vScrollBarAlwaysVisible
                        }, this.setVScrollBarAlwaysVisible = function (e) {
                            this.setOption("vScrollBarAlwaysVisible", e)
                        }, this.$updateScrollBarV = function () {
                            var e = this.layerConfig.maxHeight, t = this.$size.scrollerHeight;
                            !this.$maxLines && this.$scrollPastEnd && (e -= (t - this.lineHeight) * this.$scrollPastEnd, this.scrollTop > e - t && (e = this.scrollTop + t, this.scrollBarV.scrollTop = null)), this.scrollBarV.setScrollHeight(e + this.scrollMargin.v), this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top)
                        }, this.$updateScrollBarH = function () {
                            this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h), this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left)
                        }, this.$frozen = !1, this.freeze = function () {
                            this.$frozen = !0
                        }, this.unfreeze = function () {
                            this.$frozen = !1
                        }, this.$renderChanges = function (e, t) {
                            if (this.$changes && (e |= this.$changes, this.$changes = 0), this.session && this.container.offsetWidth && !this.$frozen && (e || t)) {
                                if (this.$size.$dirty) return this.$changes |= e, this.onResize(!0);
                                this.lineHeight || this.$textLayer.checkForSizeChanges(), this._signal("beforeRender", e), this.session && this.session.$bidiHandler && this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);
                                var n = this.layerConfig;
                                if (e & this.CHANGE_FULL || e & this.CHANGE_SIZE || e & this.CHANGE_TEXT || e & this.CHANGE_LINES || e & this.CHANGE_SCROLL || e & this.CHANGE_H_SCROLL) {
                                    if (e |= this.$computeLayerConfig() | this.$loop.clear(), n.firstRow != this.layerConfig.firstRow && n.firstRowScreen == this.layerConfig.firstRowScreen) {
                                        var i = this.scrollTop + (n.firstRow - this.layerConfig.firstRow) * this.lineHeight;
                                        i > 0 && (this.scrollTop = i, e |= this.CHANGE_SCROLL, e |= this.$computeLayerConfig() | this.$loop.clear())
                                    }
                                    n = this.layerConfig, this.$updateScrollBarV(), e & this.CHANGE_H_SCROLL && this.$updateScrollBarH(), r.translate(this.content, -this.scrollLeft, -n.offset);
                                    var o = n.width + 2 * this.$padding + "px", a = n.minHeight + "px";
                                    r.setStyle(this.content.style, "width", o), r.setStyle(this.content.style, "height", a)
                                }
                                if (e & this.CHANGE_H_SCROLL && (r.translate(this.content, -this.scrollLeft, -n.offset), this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"), e & this.CHANGE_FULL) return this.$changedLines = null, this.$textLayer.update(n), this.$showGutter && this.$gutterLayer.update(n), this.$markerBack.update(n), this.$markerFront.update(n), this.$cursorLayer.update(n), this.$moveTextAreaToCursor(), void this._signal("afterRender", e);
                                if (e & this.CHANGE_SCROLL) return this.$changedLines = null, e & this.CHANGE_TEXT || e & this.CHANGE_LINES ? this.$textLayer.update(n) : this.$textLayer.scrollLines(n), this.$showGutter && (e & this.CHANGE_GUTTER || e & this.CHANGE_LINES ? this.$gutterLayer.update(n) : this.$gutterLayer.scrollLines(n)), this.$markerBack.update(n), this.$markerFront.update(n), this.$cursorLayer.update(n), this.$moveTextAreaToCursor(), void this._signal("afterRender", e);
                                e & this.CHANGE_TEXT ? (this.$changedLines = null, this.$textLayer.update(n), this.$showGutter && this.$gutterLayer.update(n)) : e & this.CHANGE_LINES ? (this.$updateLines() || e & this.CHANGE_GUTTER && this.$showGutter) && this.$gutterLayer.update(n) : e & this.CHANGE_TEXT || e & this.CHANGE_GUTTER ? this.$showGutter && this.$gutterLayer.update(n) : e & this.CHANGE_CURSOR && this.$highlightGutterLine && this.$gutterLayer.updateLineHighlight(n), e & this.CHANGE_CURSOR && (this.$cursorLayer.update(n), this.$moveTextAreaToCursor()), e & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT) && this.$markerFront.update(n), e & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK) && this.$markerBack.update(n), this._signal("afterRender", e)
                            } else this.$changes |= e
                        }, this.$autosize = function () {
                            var e = this.session.getScreenLength() * this.lineHeight,
                                t = this.$maxLines * this.lineHeight,
                                n = Math.min(t, Math.max((this.$minLines || 1) * this.lineHeight, e)) + this.scrollMargin.v + (this.$extraHeight || 0);
                            this.$horizScroll && (n += this.scrollBarH.getHeight()), this.$maxPixelHeight && n > this.$maxPixelHeight && (n = this.$maxPixelHeight);
                            var i = !(n <= 2 * this.lineHeight) && e > t;
                            if (n != this.desiredHeight || this.$size.height != this.desiredHeight || i != this.$vScroll) {
                                i != this.$vScroll && (this.$vScroll = i, this.scrollBarV.setVisible(i));
                                var r = this.container.clientWidth;
                                this.container.style.height = n + "px", this.$updateCachedSize(!0, this.$gutterWidth, r, n), this.desiredHeight = n, this._signal("autosize")
                            }
                        }, this.$computeLayerConfig = function () {
                            var e = this.session, t = this.$size, n = t.height <= 2 * this.lineHeight,
                                i = this.session.getScreenLength() * this.lineHeight, r = this.$getLongestLine(),
                                o = !n && (this.$hScrollBarAlwaysVisible || t.scrollerWidth - r - 2 * this.$padding < 0),
                                a = this.$horizScroll !== o;
                            a && (this.$horizScroll = o, this.scrollBarH.setVisible(o));
                            var s = this.$vScroll;
                            this.$maxLines && this.lineHeight > 1 && this.$autosize();
                            var l = t.scrollerHeight + this.lineHeight,
                                c = !this.$maxLines && this.$scrollPastEnd ? (t.scrollerHeight - this.lineHeight) * this.$scrollPastEnd : 0;
                            i += c;
                            var u = this.scrollMargin;
                            this.session.setScrollTop(Math.max(-u.top, Math.min(this.scrollTop, i - t.scrollerHeight + u.bottom))), this.session.setScrollLeft(Math.max(-u.left, Math.min(this.scrollLeft, r + 2 * this.$padding - t.scrollerWidth + u.right)));
                            var h = !n && (this.$vScrollBarAlwaysVisible || t.scrollerHeight - i + c < 0 || this.scrollTop > u.top),
                                d = s !== h;
                            d && (this.$vScroll = h, this.scrollBarV.setVisible(h));
                            var f, g, p = this.scrollTop % this.lineHeight, m = Math.ceil(l / this.lineHeight) - 1,
                                v = Math.max(0, Math.round((this.scrollTop - p) / this.lineHeight)), y = v + m,
                                b = this.lineHeight;
                            v = e.screenToDocumentRow(v, 0);
                            var C = e.getFoldLine(v);
                            C && (v = C.start.row), f = e.documentToScreenRow(v, 0), g = e.getRowLength(v) * b, y = Math.min(e.screenToDocumentRow(y, 0), e.getLength() - 1), l = t.scrollerHeight + e.getRowLength(y) * b + g, p = this.scrollTop - f * b;
                            var w = 0;
                            return (this.layerConfig.width != r || a) && (w = this.CHANGE_H_SCROLL), (a || d) && (w |= this.$updateCachedSize(!0, this.gutterWidth, t.width, t.height), this._signal("scrollbarVisibilityChanged"), d && (r = this.$getLongestLine())), this.layerConfig = {
                                width: r,
                                padding: this.$padding,
                                firstRow: v,
                                firstRowScreen: f,
                                lastRow: y,
                                lineHeight: b,
                                characterWidth: this.characterWidth,
                                minHeight: l,
                                maxHeight: i,
                                offset: p,
                                gutterOffset: b ? Math.max(0, Math.ceil((p + t.height - t.scrollerHeight) / b)) : 0,
                                height: this.$size.scrollerHeight
                            }, this.session.$bidiHandler && this.session.$bidiHandler.setContentWidth(r - this.$padding), w
                        }, this.$updateLines = function () {
                            if (this.$changedLines) {
                                var e = this.$changedLines.firstRow, t = this.$changedLines.lastRow;
                                this.$changedLines = null;
                                var n = this.layerConfig;
                                if (!(e > n.lastRow + 1 || t < n.firstRow)) return t === 1 / 0 ? (this.$showGutter && this.$gutterLayer.update(n), void this.$textLayer.update(n)) : (this.$textLayer.updateLines(n, e, t), !0)
                            }
                        }, this.$getLongestLine = function () {
                            var e = this.session.getScreenWidth();
                            return this.showInvisibles && !this.session.$useWrapMode && (e += 1), this.$textLayer && e > this.$textLayer.MAX_LINE_LENGTH && (e = this.$textLayer.MAX_LINE_LENGTH + 30), Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(e * this.characterWidth))
                        }, this.updateFrontMarkers = function () {
                            this.$markerFront.setMarkers(this.session.getMarkers(!0)), this.$loop.schedule(this.CHANGE_MARKER_FRONT)
                        }, this.updateBackMarkers = function () {
                            this.$markerBack.setMarkers(this.session.getMarkers()), this.$loop.schedule(this.CHANGE_MARKER_BACK)
                        }, this.addGutterDecoration = function (e, t) {
                            this.$gutterLayer.addGutterDecoration(e, t)
                        }, this.removeGutterDecoration = function (e, t) {
                            this.$gutterLayer.removeGutterDecoration(e, t)
                        }, this.updateBreakpoints = function (e) {
                            this.$loop.schedule(this.CHANGE_GUTTER)
                        }, this.setAnnotations = function (e) {
                            this.$gutterLayer.setAnnotations(e), this.$loop.schedule(this.CHANGE_GUTTER)
                        }, this.updateCursor = function () {
                            this.$loop.schedule(this.CHANGE_CURSOR)
                        }, this.hideCursor = function () {
                            this.$cursorLayer.hideCursor()
                        }, this.showCursor = function () {
                            this.$cursorLayer.showCursor()
                        }, this.scrollSelectionIntoView = function (e, t, n) {
                            this.scrollCursorIntoView(e, n), this.scrollCursorIntoView(t, n)
                        }, this.scrollCursorIntoView = function (e, t, n) {
                            if (0 !== this.$size.scrollerHeight) {
                                var i = this.$cursorLayer.getPixelPosition(e), r = i.left, o = i.top,
                                    a = n && n.top || 0, s = n && n.bottom || 0,
                                    l = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;
                                l + a > o ? (t && l + a > o + this.lineHeight && (o -= t * this.$size.scrollerHeight), 0 === o && (o = -this.scrollMargin.top), this.session.setScrollTop(o)) : l + this.$size.scrollerHeight - s < o + this.lineHeight && (t && l + this.$size.scrollerHeight - s < o - this.lineHeight && (o += t * this.$size.scrollerHeight), this.session.setScrollTop(o + this.lineHeight + s - this.$size.scrollerHeight));
                                var c = this.scrollLeft;
                                c > r ? (r < this.$padding + 2 * this.layerConfig.characterWidth && (r = -this.scrollMargin.left), this.session.setScrollLeft(r)) : c + this.$size.scrollerWidth < r + this.characterWidth ? this.session.setScrollLeft(Math.round(r + this.characterWidth - this.$size.scrollerWidth)) : c <= this.$padding && r - c < this.characterWidth && this.session.setScrollLeft(0)
                            }
                        }, this.getScrollTop = function () {
                            return this.session.getScrollTop()
                        }, this.getScrollLeft = function () {
                            return this.session.getScrollLeft()
                        }, this.getScrollTopRow = function () {
                            return this.scrollTop / this.lineHeight
                        }, this.getScrollBottomRow = function () {
                            return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1)
                        }, this.scrollToRow = function (e) {
                            this.session.setScrollTop(e * this.lineHeight)
                        }, this.alignCursor = function (e, t) {
                            "number" == typeof e && (e = {row: e, column: 0});
                            var n = this.$cursorLayer.getPixelPosition(e),
                                i = this.$size.scrollerHeight - this.lineHeight, r = n.top - i * (t || 0);
                            return this.session.setScrollTop(r), r
                        }, this.STEPS = 8, this.$calcSteps = function (e, t) {
                            var n, i, r = 0, o = this.STEPS, a = [];
                            for (r = 0; r < o; ++r) a.push((n = r / this.STEPS, i = e, (t - e) * (Math.pow(n - 1, 3) + 1) + i));
                            return a
                        }, this.scrollToLine = function (e, t, n, i) {
                            var r = this.$cursorLayer.getPixelPosition({row: e, column: 0}).top;
                            t && (r -= this.$size.scrollerHeight / 2);
                            var o = this.scrollTop;
                            this.session.setScrollTop(r), !1 !== n && this.animateScrolling(o, i)
                        }, this.animateScrolling = function (e, t) {
                            var n = this.scrollTop;
                            if (this.$animatedScroll) {
                                var i = this;
                                if (e != n) {
                                    if (this.$scrollAnimation) {
                                        var r = this.$scrollAnimation.steps;
                                        if (r.length && (e = r[0]) == n) return
                                    }
                                    var o = i.$calcSteps(e, n);
                                    this.$scrollAnimation = {
                                        from: e,
                                        to: n,
                                        steps: o
                                    }, clearInterval(this.$timer), i.session.setScrollTop(o.shift()), i.session.$scrollTop = n, this.$timer = setInterval((function () {
                                        if (!i.session) return clearInterval(i.$timer);
                                        o.length ? (i.session.setScrollTop(o.shift()), i.session.$scrollTop = n) : null != n ? (i.session.$scrollTop = -1, i.session.setScrollTop(n), n = null) : (i.$timer = clearInterval(i.$timer), i.$scrollAnimation = null, t && t())
                                    }), 10)
                                }
                            }
                        }, this.scrollToY = function (e) {
                            this.scrollTop !== e && (this.$loop.schedule(this.CHANGE_SCROLL), this.scrollTop = e)
                        }, this.scrollToX = function (e) {
                            this.scrollLeft !== e && (this.scrollLeft = e), this.$loop.schedule(this.CHANGE_H_SCROLL)
                        }, this.scrollTo = function (e, t) {
                            this.session.setScrollTop(t), this.session.setScrollLeft(t)
                        }, this.scrollBy = function (e, t) {
                            t && this.session.setScrollTop(this.session.getScrollTop() + t), e && this.session.setScrollLeft(this.session.getScrollLeft() + e)
                        }, this.isScrollableBy = function (e, t) {
                            return t < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top || t > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom || e < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left || e > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - this.layerConfig.width < -1 + this.scrollMargin.right || void 0
                        }, this.pixelToScreenCoordinates = function (e, t) {
                            var n;
                            if (this.$hasCssTransforms) {
                                n = {top: 0, left: 0};
                                var i = this.$fontMetrics.transformCoordinates([e, t]);
                                e = i[1] - this.gutterWidth - this.margin.left, t = i[0]
                            } else n = this.scroller.getBoundingClientRect();
                            var r = e + this.scrollLeft - n.left - this.$padding, o = r / this.characterWidth,
                                a = Math.floor((t + this.scrollTop - n.top) / this.lineHeight),
                                s = this.$blockCursor ? Math.floor(o) : Math.round(o);
                            return {row: a, column: s, side: o - s > 0 ? 1 : -1, offsetX: r}
                        }, this.screenToTextCoordinates = function (e, t) {
                            var n;
                            if (this.$hasCssTransforms) {
                                n = {top: 0, left: 0};
                                var i = this.$fontMetrics.transformCoordinates([e, t]);
                                e = i[1] - this.gutterWidth - this.margin.left, t = i[0]
                            } else n = this.scroller.getBoundingClientRect();
                            var r = e + this.scrollLeft - n.left - this.$padding, o = r / this.characterWidth,
                                a = this.$blockCursor ? Math.floor(o) : Math.round(o),
                                s = Math.floor((t + this.scrollTop - n.top) / this.lineHeight);
                            return this.session.screenToDocumentPosition(s, Math.max(a, 0), r)
                        }, this.textToScreenCoordinates = function (e, t) {
                            var n = this.scroller.getBoundingClientRect(),
                                i = this.session.documentToScreenPosition(e, t),
                                r = this.$padding + (this.session.$bidiHandler.isBidiRow(i.row, e) ? this.session.$bidiHandler.getPosLeft(i.column) : Math.round(i.column * this.characterWidth)),
                                o = i.row * this.lineHeight;
                            return {pageX: n.left + r - this.scrollLeft, pageY: n.top + o - this.scrollTop}
                        }, this.visualizeFocus = function () {
                            r.addCssClass(this.container, "ace_focus")
                        }, this.visualizeBlur = function () {
                            r.removeCssClass(this.container, "ace_focus")
                        }, this.showComposition = function (e) {
                            this.$composition = e, e.cssText || (e.cssText = this.textarea.style.cssText), null == e.useTextareaForIME && (e.useTextareaForIME = this.$useTextareaForIME), this.$useTextareaForIME ? (r.addCssClass(this.textarea, "ace_composition"), this.textarea.style.cssText = "", this.$moveTextAreaToCursor(), this.$cursorLayer.element.style.display = "none") : e.markerId = this.session.addMarker(e.markerRange, "ace_composition_marker", "text")
                        },this.setCompositionText = function (e) {
                            var t = this.session.selection.cursor;
                            this.addToken(e, "composition_placeholder", t.row, t.column), this.$moveTextAreaToCursor()
                        },this.hideComposition = function () {
                            if (this.$composition) {
                                this.$composition.markerId && this.session.removeMarker(this.$composition.markerId), r.removeCssClass(this.textarea, "ace_composition"), this.textarea.style.cssText = this.$composition.cssText;
                                var e = this.session.selection.cursor;
                                this.removeExtraToken(e.row, e.column), this.$composition = null, this.$cursorLayer.element.style.display = ""
                            }
                        },this.addToken = function (e, t, n, i) {
                            var r = this.session;
                            r.bgTokenizer.lines[n] = null;
                            var o = {type: t, value: e}, a = r.getTokens(n);
                            if (null == i) a.push(o); else for (var s = 0, l = 0; l < a.length; l++) {
                                var c = a[l];
                                if (i <= (s += c.value.length)) {
                                    var u = c.value.length - (s - i), h = c.value.slice(0, u), d = c.value.slice(u);
                                    a.splice(l, 1, {type: c.type, value: h}, o, {type: c.type, value: d});
                                    break
                                }
                            }
                            this.updateLines(n, n)
                        },this.removeExtraToken = function (e, t) {
                            this.updateLines(e, e)
                        },this.setTheme = function (e, t) {
                            var n = this;
                            if (this.$themeId = e, n._dispatchEvent("themeChange", {theme: e}), e && "string" != typeof e) a(e); else {
                                var i = e || this.$options.theme.initialValue;
                                o.loadModule(["theme", i], a)
                            }

                            function a(i) {
                                if (n.$themeId != e) return t && t();
                                if (!i || !i.cssClass) throw new Error("couldn't load module " + e + " or it didn't call define");
                                i.$id && (n.$themeId = i.$id), r.importCssString(i.cssText, i.cssClass, n.container), n.theme && r.removeCssClass(n.container, n.theme.cssClass);
                                var o = "padding" in i ? i.padding : "padding" in (n.theme || {}) ? 4 : n.$padding;
                                n.$padding && o != n.$padding && n.setPadding(o), n.$theme = i.cssClass, n.theme = i, r.addCssClass(n.container, i.cssClass), r.setCssClass(n.container, "ace_dark", i.isDark), n.$size && (n.$size.width = 0, n.$updateSizeAsync()), n._dispatchEvent("themeLoaded", {theme: i}), t && t()
                            }
                        },this.getTheme = function () {
                            return this.$themeId
                        },this.setStyle = function (e, t) {
                            r.setCssClass(this.container, e, !1 !== t)
                        },this.unsetStyle = function (e) {
                            r.removeCssClass(this.container, e)
                        },this.setCursorStyle = function (e) {
                            r.setStyle(this.scroller.style, "cursor", e)
                        },this.setMouseCursor = function (e) {
                            r.setStyle(this.scroller.style, "cursor", e)
                        },this.attachToShadowRoot = function () {
                            r.importCssString(p, "ace_editor.css", this.container)
                        },this.destroy = function () {
                            this.freeze(), this.$fontMetrics.destroy(), this.$cursorLayer.destroy(), this.removeAllListeners(), this.container.textContent = ""
                        }
                    }).call(y.prototype), o.defineOptions(y.prototype, "renderer", {
                        animatedScroll: {initialValue: !1}, showInvisibles: {
                            set: function (e) {
                                this.$textLayer.setShowInvisibles(e) && this.$loop.schedule(this.CHANGE_TEXT)
                            }, initialValue: !1
                        }, showPrintMargin: {
                            set: function () {
                                this.$updatePrintMargin()
                            }, initialValue: !0
                        }, printMarginColumn: {
                            set: function () {
                                this.$updatePrintMargin()
                            }, initialValue: 80
                        }, printMargin: {
                            set: function (e) {
                                "number" == typeof e && (this.$printMarginColumn = e), this.$showPrintMargin = !!e, this.$updatePrintMargin()
                            }, get: function () {
                                return this.$showPrintMargin && this.$printMarginColumn
                            }
                        }, showGutter: {
                            set: function (e) {
                                this.$gutter.style.display = e ? "block" : "none", this.$loop.schedule(this.CHANGE_FULL), this.onGutterResize()
                            }, initialValue: !0
                        }, fadeFoldWidgets: {
                            set: function (e) {
                                r.setCssClass(this.$gutter, "ace_fade-fold-widgets", e)
                            }, initialValue: !1
                        }, showFoldWidgets: {
                            set: function (e) {
                                this.$gutterLayer.setShowFoldWidgets(e), this.$loop.schedule(this.CHANGE_GUTTER)
                            }, initialValue: !0
                        }, displayIndentGuides: {
                            set: function (e) {
                                this.$textLayer.setDisplayIndentGuides(e) && this.$loop.schedule(this.CHANGE_TEXT)
                            }, initialValue: !0
                        }, highlightGutterLine: {
                            set: function (e) {
                                this.$gutterLayer.setHighlightGutterLine(e), this.$loop.schedule(this.CHANGE_GUTTER)
                            }, initialValue: !0
                        }, hScrollBarAlwaysVisible: {
                            set: function (e) {
                                this.$hScrollBarAlwaysVisible && this.$horizScroll || this.$loop.schedule(this.CHANGE_SCROLL)
                            }, initialValue: !1
                        }, vScrollBarAlwaysVisible: {
                            set: function (e) {
                                this.$vScrollBarAlwaysVisible && this.$vScroll || this.$loop.schedule(this.CHANGE_SCROLL)
                            }, initialValue: !1
                        }, fontSize: {
                            set: function (e) {
                                "number" == typeof e && (e += "px"), this.container.style.fontSize = e, this.updateFontSize()
                            }, initialValue: 12
                        }, fontFamily: {
                            set: function (e) {
                                this.container.style.fontFamily = e, this.updateFontSize()
                            }
                        }, maxLines: {
                            set: function (e) {
                                this.updateFull()
                            }
                        }, minLines: {
                            set: function (e) {
                                this.$minLines < 562949953421311 || (this.$minLines = 0), this.updateFull()
                            }
                        }, maxPixelHeight: {
                            set: function (e) {
                                this.updateFull()
                            }, initialValue: 0
                        }, scrollPastEnd: {
                            set: function (e) {
                                e = +e || 0, this.$scrollPastEnd != e && (this.$scrollPastEnd = e, this.$loop.schedule(this.CHANGE_SCROLL))
                            }, initialValue: 0, handlesSet: !0
                        }, fixedWidthGutter: {
                            set: function (e) {
                                this.$gutterLayer.$fixedWidth = !!e, this.$loop.schedule(this.CHANGE_GUTTER)
                            }
                        }, theme: {
                            set: function (e) {
                                this.setTheme(e)
                            }, get: function () {
                                return this.$themeId || this.theme
                            }, initialValue: "./theme/textmate", handlesSet: !0
                        }, hasCssTransforms: {}, useTextareaForIME: {initialValue: !m.isMobile && !m.isIE}
                    }), t.VirtualRenderer = y
                })), ace.define("ace/worker/worker_client", ["require", "exports", "module", "ace/lib/oop", "ace/lib/net", "ace/lib/event_emitter", "ace/config"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/oop"), r = e("../lib/net"), o = e("../lib/event_emitter").EventEmitter,
                        a = e("../config");

                    function s(e) {
                        if ("undefined" == typeof Worker) return {
                            postMessage: function () {
                            }, terminate: function () {
                            }
                        };
                        if (a.get("loadWorkerFromBlob")) {
                            var t = function (e) {
                                var t = "importScripts('" + r.qualifyURL(e) + "');";
                                try {
                                    return new Blob([t], {type: "application/javascript"})
                                } catch (e) {
                                    var n = new (window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder);
                                    return n.append(t), n.getBlob("application/javascript")
                                }
                            }(e), n = (window.URL || window.webkitURL).createObjectURL(t);
                            return new Worker(n)
                        }
                        return new Worker(e)
                    }

                    var l = function (e) {
                        e.postMessage || (e = this.$createWorkerFromOldConfig.apply(this, arguments)), this.$worker = e, this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this), this.changeListener = this.changeListener.bind(this), this.onMessage = this.onMessage.bind(this), this.callbackId = 1, this.callbacks = {}, this.$worker.onmessage = this.onMessage
                    };
                    (function () {
                        i.implement(this, o), this.$createWorkerFromOldConfig = function (t, n, i, r, o) {
                            if (e.nameToUrl && !e.toUrl && (e.toUrl = e.nameToUrl), a.get("packaged") || !e.toUrl) r = r || a.moduleUrl(n, "worker"); else {
                                var l = this.$normalizePath;
                                r = r || l(e.toUrl("ace/worker/worker.js", null, "_"));
                                var c = {};
                                t.forEach((function (t) {
                                    c[t] = l(e.toUrl(t, null, "_").replace(/(\.js)?(\?.*)?$/, ""))
                                }))
                            }
                            return this.$worker = s(r), o && this.send("importScripts", o), this.$worker.postMessage({
                                init: !0,
                                tlns: c,
                                module: n,
                                classname: i
                            }), this.$worker
                        }, this.onMessage = function (e) {
                            var t = e.data;
                            switch (t.type) {
                                case"event":
                                    this._signal(t.name, {data: t.data});
                                    break;
                                case"call":
                                    var n = this.callbacks[t.id];
                                    n && (n(t.data), delete this.callbacks[t.id]);
                                    break;
                                case"error":
                                    this.reportError(t.data);
                                    break;
                                case"log":
                                    window.console && console.log && console.log.apply(console, t.data)
                            }
                        }, this.reportError = function (e) {
                            window.console && console.error && console.error(e)
                        }, this.$normalizePath = function (e) {
                            return r.qualifyURL(e)
                        }, this.terminate = function () {
                            this._signal("terminate", {}), this.deltaQueue = null, this.$worker.terminate(), this.$worker = null, this.$doc && this.$doc.off("change", this.changeListener), this.$doc = null
                        }, this.send = function (e, t) {
                            this.$worker.postMessage({command: e, args: t})
                        }, this.call = function (e, t, n) {
                            if (n) {
                                var i = this.callbackId++;
                                this.callbacks[i] = n, t.push(i)
                            }
                            this.send(e, t)
                        }, this.emit = function (e, t) {
                            try {
                                t.data && t.data.err && (t.data.err = {
                                    message: t.data.err.message,
                                    stack: t.data.err.stack,
                                    code: t.data.err.code
                                }), this.$worker.postMessage({event: e, data: {data: t.data}})
                            } catch (e) {
                                console.error(e.stack)
                            }
                        }, this.attachToDocument = function (e) {
                            this.$doc && this.terminate(), this.$doc = e, this.call("setValue", [e.getValue()]), e.on("change", this.changeListener)
                        }, this.changeListener = function (e) {
                            this.deltaQueue || (this.deltaQueue = [], setTimeout(this.$sendDeltaQueue, 0)), "insert" == e.action ? this.deltaQueue.push(e.start, e.lines) : this.deltaQueue.push(e.start, e.end)
                        }, this.$sendDeltaQueue = function () {
                            var e = this.deltaQueue;
                            e && (this.deltaQueue = null, e.length > 50 && e.length > this.$doc.getLength() >> 1 ? this.call("setValue", [this.$doc.getValue()]) : this.emit("change", {data: e}))
                        }
                    }).call(l.prototype), t.UIWorkerClient = function (e, t, n) {
                        var i = null, r = !1, s = Object.create(o), c = [], u = new l({
                            messageBuffer: c, terminate: function () {
                            }, postMessage: function (e) {
                                c.push(e), i && (r ? setTimeout(h) : h())
                            }
                        });
                        u.setEmitSync = function (e) {
                            r = e
                        };
                        var h = function () {
                            var e = c.shift();
                            e.command ? i[e.command].apply(i, e.args) : e.event && s._signal(e.event, e.data)
                        };
                        return s.postMessage = function (e) {
                            u.onMessage({data: e})
                        }, s.callback = function (e, t) {
                            this.postMessage({type: "call", id: t, data: e})
                        }, s.emit = function (e, t) {
                            this.postMessage({type: "event", name: e, data: t})
                        }, a.loadModule(["worker", t], (function (e) {
                            for (i = new e[n](s); c.length;) h()
                        })), u
                    }, t.WorkerClient = l, t.createWorker = s
                })), ace.define("ace/placeholder", ["require", "exports", "module", "ace/range", "ace/lib/event_emitter", "ace/lib/oop"], (function (e, t, n) {
                    "use strict";
                    var i = e("./range").Range, r = e("./lib/event_emitter").EventEmitter, o = e("./lib/oop"),
                        a = function (e, t, n, i, r, o) {
                            var a = this;
                            this.length = t, this.session = e, this.doc = e.getDocument(), this.mainClass = r, this.othersClass = o, this.$onUpdate = this.onUpdate.bind(this), this.doc.on("change", this.$onUpdate), this.$others = i, this.$onCursorChange = function () {
                                setTimeout((function () {
                                    a.onCursorChange()
                                }))
                            }, this.$pos = n;
                            var s = e.getUndoManager().$undoStack || e.getUndoManager().$undostack || {length: -1};
                            this.$undoStackDepth = s.length, this.setup(), e.selection.on("changeCursor", this.$onCursorChange)
                        };
                    (function () {
                        o.implement(this, r), this.setup = function () {
                            var e = this, t = this.doc, n = this.session;
                            this.selectionBefore = n.selection.toJSON(), n.selection.inMultiSelectMode && n.selection.toSingleRange(), this.pos = t.createAnchor(this.$pos.row, this.$pos.column);
                            var r = this.pos;
                            r.$insertRight = !0, r.detach(), r.markerId = n.addMarker(new i(r.row, r.column, r.row, r.column + this.length), this.mainClass, null, !1), this.others = [], this.$others.forEach((function (n) {
                                var i = t.createAnchor(n.row, n.column);
                                i.$insertRight = !0, i.detach(), e.others.push(i)
                            })), n.setUndoSelect(!1)
                        }, this.showOtherMarkers = function () {
                            if (!this.othersActive) {
                                var e = this.session, t = this;
                                this.othersActive = !0, this.others.forEach((function (n) {
                                    n.markerId = e.addMarker(new i(n.row, n.column, n.row, n.column + t.length), t.othersClass, null, !1)
                                }))
                            }
                        }, this.hideOtherMarkers = function () {
                            if (this.othersActive) {
                                this.othersActive = !1;
                                for (var e = 0; e < this.others.length; e++) this.session.removeMarker(this.others[e].markerId)
                            }
                        }, this.onUpdate = function (e) {
                            if (this.$updating) return this.updateAnchors(e);
                            var t = e;
                            if (t.start.row === t.end.row && t.start.row === this.pos.row) {
                                this.$updating = !0;
                                var n = "insert" === e.action ? t.end.column - t.start.column : t.start.column - t.end.column,
                                    r = t.start.column >= this.pos.column && t.start.column <= this.pos.column + this.length + 1,
                                    o = t.start.column - this.pos.column;
                                if (this.updateAnchors(e), r && (this.length += n), r && !this.session.$fromUndo) if ("insert" === e.action) for (var a = this.others.length - 1; a >= 0; a--) {
                                    var s = {row: (l = this.others[a]).row, column: l.column + o};
                                    this.doc.insertMergedLines(s, e.lines)
                                } else if ("remove" === e.action) for (a = this.others.length - 1; a >= 0; a--) {
                                    var l;
                                    s = {
                                        row: (l = this.others[a]).row,
                                        column: l.column + o
                                    }, this.doc.remove(new i(s.row, s.column, s.row, s.column - n))
                                }
                                this.$updating = !1, this.updateMarkers()
                            }
                        }, this.updateAnchors = function (e) {
                            this.pos.onChange(e);
                            for (var t = this.others.length; t--;) this.others[t].onChange(e);
                            this.updateMarkers()
                        }, this.updateMarkers = function () {
                            if (!this.$updating) {
                                var e = this, t = this.session, n = function (n, r) {
                                    t.removeMarker(n.markerId), n.markerId = t.addMarker(new i(n.row, n.column, n.row, n.column + e.length), r, null, !1)
                                };
                                n(this.pos, this.mainClass);
                                for (var r = this.others.length; r--;) n(this.others[r], this.othersClass)
                            }
                        }, this.onCursorChange = function (e) {
                            if (!this.$updating && this.session) {
                                var t = this.session.selection.getCursor();
                                t.row === this.pos.row && t.column >= this.pos.column && t.column <= this.pos.column + this.length ? (this.showOtherMarkers(), this._emit("cursorEnter", e)) : (this.hideOtherMarkers(), this._emit("cursorLeave", e))
                            }
                        }, this.detach = function () {
                            this.session.removeMarker(this.pos && this.pos.markerId), this.hideOtherMarkers(), this.doc.off("change", this.$onUpdate), this.session.selection.off("changeCursor", this.$onCursorChange), this.session.setUndoSelect(!0), this.session = null
                        }, this.cancel = function () {
                            if (-1 !== this.$undoStackDepth) {
                                for (var e = this.session.getUndoManager(), t = (e.$undoStack || e.$undostack).length - this.$undoStackDepth, n = 0; n < t; n++) e.undo(this.session, !0);
                                this.selectionBefore && this.session.selection.fromJSON(this.selectionBefore)
                            }
                        }
                    }).call(a.prototype), t.PlaceHolder = a
                })), ace.define("ace/mouse/multi_select_handler", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent"], (function (e, t, n) {
                    var i = e("../lib/event"), r = e("../lib/useragent");

                    function o(e, t) {
                        return e.row == t.row && e.column == t.column
                    }

                    t.onMouseDown = function (e) {
                        var t = e.domEvent, n = t.altKey, a = t.shiftKey, s = t.ctrlKey, l = e.getAccelKey(),
                            c = e.getButton();
                        if (s && r.isMac && (c = t.button), e.editor.inMultiSelectMode && 2 == c) e.editor.textInput.onContextMenu(e.domEvent); else if (s || n || l) {
                            if (0 === c) {
                                var u, h = e.editor, d = h.selection, f = h.inMultiSelectMode,
                                    g = e.getDocumentPosition(), p = d.getCursor(),
                                    m = e.inSelection() || d.isEmpty() && o(g, p), v = e.x, y = e.y, b = h.session,
                                    C = h.renderer.pixelToScreenCoordinates(v, y), w = C;
                                if (h.$mouseHandler.$enableJumpToDef) s && n || l && n ? u = a ? "block" : "add" : n && h.$blockSelectEnabled && (u = "block"); else if (l && !n) {
                                    if (u = "add", !f && a) return
                                } else n && h.$blockSelectEnabled && (u = "block");
                                if (u && r.isMac && t.ctrlKey && h.$mouseHandler.cancelContextMenu(), "add" == u) {
                                    if (!f && m) return;
                                    if (!f) {
                                        var I = d.toOrientedRange();
                                        h.addSelectionMarker(I)
                                    }
                                    var x = d.rangeList.rangeAtPoint(g);
                                    h.inVirtualSelectionMode = !0, a && (x = null, I = d.ranges[0] || I, h.removeSelectionMarker(I)), h.once("mouseup", (function () {
                                        var e = d.toOrientedRange();
                                        x && e.isEmpty() && o(x.cursor, e.cursor) ? d.substractPoint(e.cursor) : (a ? d.substractPoint(I.cursor) : I && (h.removeSelectionMarker(I), d.addRange(I)), d.addRange(e)), h.inVirtualSelectionMode = !1
                                    }))
                                } else if ("block" == u) {
                                    var A;
                                    e.stop(), h.inVirtualSelectionMode = !0;
                                    var _ = [], S = function () {
                                        var e = h.renderer.pixelToScreenCoordinates(v, y),
                                            t = b.screenToDocumentPosition(e.row, e.column, e.offsetX);
                                        o(w, e) && o(t, d.lead) || (w = e, h.selection.moveToPosition(t), h.renderer.scrollCursorIntoView(), h.removeSelectionMarkers(_), _ = d.rectangularRangeBlock(w, C), h.$mouseHandler.$clickSelection && 1 == _.length && _[0].isEmpty() && (_[0] = h.$mouseHandler.$clickSelection.clone()), _.forEach(h.addSelectionMarker, h), h.updateSelectionMarkers())
                                    };
                                    f && !l ? d.toSingleRange() : !f && l && (A = d.toOrientedRange(), h.addSelectionMarker(A)), a ? C = b.documentToScreenPosition(d.lead) : d.moveToPosition(g), w = {
                                        row: -1,
                                        column: -1
                                    };
                                    var k = S;
                                    i.capture(h.container, (function (e) {
                                        v = e.clientX, y = e.clientY
                                    }), (function (e) {
                                        S(), clearInterval(L), h.removeSelectionMarkers(_), _.length || (_ = [d.toOrientedRange()]), A && (h.removeSelectionMarker(A), d.toSingleRange(A));
                                        for (var t = 0; t < _.length; t++) d.addRange(_[t]);
                                        h.inVirtualSelectionMode = !1, h.$mouseHandler.$clickSelection = null
                                    }));
                                    var L = setInterval((function () {
                                        k()
                                    }), 20);
                                    return e.preventDefault()
                                }
                            }
                        } else 0 === c && e.editor.inMultiSelectMode && e.editor.exitMultiSelectMode()
                    }
                })), ace.define("ace/commands/multi_select_commands", ["require", "exports", "module", "ace/keyboard/hash_handler"], (function (e, t, n) {
                    t.defaultCommands = [{
                        name: "addCursorAbove", description: "Add cursor above", exec: function (e) {
                            e.selectMoreLines(-1)
                        }, bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"}, scrollIntoView: "cursor", readOnly: !0
                    }, {
                        name: "addCursorBelow", description: "Add cursor below", exec: function (e) {
                            e.selectMoreLines(1)
                        }, bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"}, scrollIntoView: "cursor", readOnly: !0
                    }, {
                        name: "addCursorAboveSkipCurrent",
                        description: "Add cursor above (skip current)",
                        exec: function (e) {
                            e.selectMoreLines(-1, !0)
                        },
                        bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"},
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "addCursorBelowSkipCurrent",
                        description: "Add cursor below (skip current)",
                        exec: function (e) {
                            e.selectMoreLines(1, !0)
                        },
                        bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"},
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectMoreBefore", description: "Select more before", exec: function (e) {
                            e.selectMore(-1)
                        }, bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"}, scrollIntoView: "cursor", readOnly: !0
                    }, {
                        name: "selectMoreAfter",
                        description: "Select more after",
                        exec: function (e) {
                            e.selectMore(1)
                        },
                        bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"},
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectNextBefore",
                        description: "Select next before",
                        exec: function (e) {
                            e.selectMore(-1, !0)
                        },
                        bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"},
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "selectNextAfter",
                        description: "Select next after",
                        exec: function (e) {
                            e.selectMore(1, !0)
                        },
                        bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"},
                        scrollIntoView: "cursor",
                        readOnly: !0
                    }, {
                        name: "toggleSplitSelectionIntoLines", description: "Split into lines", exec: function (e) {
                            e.multiSelect.rangeCount > 1 ? e.multiSelect.joinSelections() : e.multiSelect.splitIntoLines()
                        }, bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"}, readOnly: !0
                    }, {
                        name: "splitSelectionIntoLines", description: "Split into lines", exec: function (e) {
                            e.multiSelect.splitIntoLines()
                        }, readOnly: !0
                    }, {
                        name: "alignCursors", description: "Align cursors", exec: function (e) {
                            e.alignCursors()
                        }, bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"}, scrollIntoView: "cursor"
                    }, {
                        name: "findAll", description: "Find all", exec: function (e) {
                            e.findAll()
                        }, bindKey: {win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G"}, scrollIntoView: "cursor", readOnly: !0
                    }], t.multiSelectCommands = [{
                        name: "singleSelection",
                        description: "Single selection",
                        bindKey: "esc",
                        exec: function (e) {
                            e.exitMultiSelectMode()
                        },
                        scrollIntoView: "cursor",
                        readOnly: !0,
                        isAvailable: function (e) {
                            return e && e.inMultiSelectMode
                        }
                    }];
                    var i = e("../keyboard/hash_handler").HashHandler;
                    t.keyboardHandler = new i(t.multiSelectCommands)
                })), ace.define("ace/multi_select", ["require", "exports", "module", "ace/range_list", "ace/range", "ace/selection", "ace/mouse/multi_select_handler", "ace/lib/event", "ace/lib/lang", "ace/commands/multi_select_commands", "ace/search", "ace/edit_session", "ace/editor", "ace/config"], (function (e, t, n) {
                    var i = e("./range_list").RangeList, r = e("./range").Range, o = e("./selection").Selection,
                        a = e("./mouse/multi_select_handler").onMouseDown, s = e("./lib/event"), l = e("./lib/lang"),
                        c = e("./commands/multi_select_commands");
                    t.commands = c.defaultCommands.concat(c.multiSelectCommands);
                    var u = new (0, e("./search").Search), h = e("./edit_session").EditSession;
                    (function () {
                        this.getSelectionMarkers = function () {
                            return this.$selectionMarkers
                        }
                    }).call(h.prototype), function () {
                        this.ranges = null, this.rangeList = null, this.addRange = function (e, t) {
                            if (e) {
                                if (!this.inMultiSelectMode && 0 === this.rangeCount) {
                                    var n = this.toOrientedRange();
                                    if (this.rangeList.add(n), this.rangeList.add(e), 2 != this.rangeList.ranges.length) return this.rangeList.removeAll(), t || this.fromOrientedRange(e);
                                    this.rangeList.removeAll(), this.rangeList.add(n), this.$onAddRange(n)
                                }
                                e.cursor || (e.cursor = e.end);
                                var i = this.rangeList.add(e);
                                return this.$onAddRange(e), i.length && this.$onRemoveRange(i), this.rangeCount > 1 && !this.inMultiSelectMode && (this._signal("multiSelect"), this.inMultiSelectMode = !0, this.session.$undoSelect = !1, this.rangeList.attach(this.session)), t || this.fromOrientedRange(e)
                            }
                        }, this.toSingleRange = function (e) {
                            e = e || this.ranges[0];
                            var t = this.rangeList.removeAll();
                            t.length && this.$onRemoveRange(t), e && this.fromOrientedRange(e)
                        }, this.substractPoint = function (e) {
                            var t = this.rangeList.substractPoint(e);
                            if (t) return this.$onRemoveRange(t), t[0]
                        }, this.mergeOverlappingRanges = function () {
                            var e = this.rangeList.merge();
                            e.length && this.$onRemoveRange(e)
                        }, this.$onAddRange = function (e) {
                            this.rangeCount = this.rangeList.ranges.length, this.ranges.unshift(e), this._signal("addRange", {range: e})
                        }, this.$onRemoveRange = function (e) {
                            if (this.rangeCount = this.rangeList.ranges.length, 1 == this.rangeCount && this.inMultiSelectMode) {
                                var t = this.rangeList.ranges.pop();
                                e.push(t), this.rangeCount = 0
                            }
                            for (var n = e.length; n--;) {
                                var i = this.ranges.indexOf(e[n]);
                                this.ranges.splice(i, 1)
                            }
                            this._signal("removeRange", {ranges: e}), 0 === this.rangeCount && this.inMultiSelectMode && (this.inMultiSelectMode = !1, this._signal("singleSelect"), this.session.$undoSelect = !0, this.rangeList.detach(this.session)), (t = t || this.ranges[0]) && !t.isEqual(this.getRange()) && this.fromOrientedRange(t)
                        }, this.$initRangeList = function () {
                            this.rangeList || (this.rangeList = new i, this.ranges = [], this.rangeCount = 0)
                        }, this.getAllRanges = function () {
                            return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]
                        }, this.splitIntoLines = function () {
                            for (var e = this.ranges.length ? this.ranges : [this.getRange()], t = [], n = 0; n < e.length; n++) {
                                var i = e[n], o = i.start.row, a = i.end.row;
                                if (o === a) t.push(i.clone()); else {
                                    for (t.push(new r(o, i.start.column, o, this.session.getLine(o).length)); ++o < a;) t.push(this.getLineRange(o, !0));
                                    t.push(new r(a, 0, a, i.end.column))
                                }
                                0 != n || this.isBackwards() || (t = t.reverse())
                            }
                            for (this.toSingleRange(), n = t.length; n--;) this.addRange(t[n])
                        }, this.joinSelections = function () {
                            var e = this.rangeList.ranges, t = e[e.length - 1], n = r.fromPoints(e[0].start, t.end);
                            this.toSingleRange(), this.setSelectionRange(n, t.cursor == t.start)
                        }, this.toggleBlockSelection = function () {
                            if (this.rangeCount > 1) {
                                var e = this.rangeList.ranges, t = e[e.length - 1], n = r.fromPoints(e[0].start, t.end);
                                this.toSingleRange(), this.setSelectionRange(n, t.cursor == t.start)
                            } else {
                                var i = this.session.documentToScreenPosition(this.cursor),
                                    o = this.session.documentToScreenPosition(this.anchor);
                                this.rectangularRangeBlock(i, o).forEach(this.addRange, this)
                            }
                        }, this.rectangularRangeBlock = function (e, t, n) {
                            var i = [], o = e.column < t.column;
                            if (o) var a = e.column, s = t.column, l = e.offsetX,
                                c = t.offsetX; else a = t.column, s = e.column, l = t.offsetX, c = e.offsetX;
                            var u, h, d, f = e.row < t.row;
                            if (f) var g = e.row, p = t.row; else g = t.row, p = e.row;
                            a < 0 && (a = 0), g < 0 && (g = 0), g == p && (n = !0);
                            for (var m = g; m <= p; m++) {
                                var v = r.fromPoints(this.session.screenToDocumentPosition(m, a, l), this.session.screenToDocumentPosition(m, s, c));
                                if (v.isEmpty()) {
                                    if (u && (h = v.end, d = u, h.row == d.row && h.column == d.column)) break;
                                    u = v.end
                                }
                                v.cursor = o ? v.start : v.end, i.push(v)
                            }
                            if (f && i.reverse(), !n) {
                                for (var y = i.length - 1; i[y].isEmpty() && y > 0;) y--;
                                if (y > 0) for (var b = 0; i[b].isEmpty();) b++;
                                for (var C = y; C >= b; C--) i[C].isEmpty() && i.splice(C, 1)
                            }
                            return i
                        }
                    }.call(o.prototype);
                    var d = e("./editor").Editor;

                    function f(e) {
                        e.$multiselectOnSessionChange || (e.$onAddRange = e.$onAddRange.bind(e), e.$onRemoveRange = e.$onRemoveRange.bind(e), e.$onMultiSelect = e.$onMultiSelect.bind(e), e.$onSingleSelect = e.$onSingleSelect.bind(e), e.$multiselectOnSessionChange = t.onSessionChange.bind(e), e.$checkMultiselectChange = e.$checkMultiselectChange.bind(e), e.$multiselectOnSessionChange(e), e.on("changeSession", e.$multiselectOnSessionChange), e.on("mousedown", a), e.commands.addCommands(c.defaultCommands), function (e) {
                            if (e.textInput) {
                                var t = e.textInput.getElement(), n = !1;
                                s.addListener(t, "keydown", (function (t) {
                                    var r = 18 == t.keyCode && !(t.ctrlKey || t.shiftKey || t.metaKey);
                                    e.$blockSelectEnabled && r ? n || (e.renderer.setMouseCursor("crosshair"), n = !0) : n && i()
                                }), e), s.addListener(t, "keyup", i, e), s.addListener(t, "blur", i, e)
                            }

                            function i(t) {
                                n && (e.renderer.setMouseCursor(""), n = !1)
                            }
                        }(e))
                    }

                    (function () {
                        this.updateSelectionMarkers = function () {
                            this.renderer.updateCursor(), this.renderer.updateBackMarkers()
                        }, this.addSelectionMarker = function (e) {
                            e.cursor || (e.cursor = e.end);
                            var t = this.getSelectionStyle();
                            return e.marker = this.session.addMarker(e, "ace_selection", t), this.session.$selectionMarkers.push(e), this.session.selectionMarkerCount = this.session.$selectionMarkers.length, e
                        }, this.removeSelectionMarker = function (e) {
                            if (e.marker) {
                                this.session.removeMarker(e.marker);
                                var t = this.session.$selectionMarkers.indexOf(e);
                                -1 != t && this.session.$selectionMarkers.splice(t, 1), this.session.selectionMarkerCount = this.session.$selectionMarkers.length
                            }
                        }, this.removeSelectionMarkers = function (e) {
                            for (var t = this.session.$selectionMarkers, n = e.length; n--;) {
                                var i = e[n];
                                if (i.marker) {
                                    this.session.removeMarker(i.marker);
                                    var r = t.indexOf(i);
                                    -1 != r && t.splice(r, 1)
                                }
                            }
                            this.session.selectionMarkerCount = t.length
                        }, this.$onAddRange = function (e) {
                            this.addSelectionMarker(e.range), this.renderer.updateCursor(), this.renderer.updateBackMarkers()
                        }, this.$onRemoveRange = function (e) {
                            this.removeSelectionMarkers(e.ranges), this.renderer.updateCursor(), this.renderer.updateBackMarkers()
                        }, this.$onMultiSelect = function (e) {
                            this.inMultiSelectMode || (this.inMultiSelectMode = !0, this.setStyle("ace_multiselect"), this.keyBinding.addKeyboardHandler(c.keyboardHandler), this.commands.setDefaultHandler("exec", this.$onMultiSelectExec), this.renderer.updateCursor(), this.renderer.updateBackMarkers())
                        }, this.$onSingleSelect = function (e) {
                            this.session.multiSelect.inVirtualMode || (this.inMultiSelectMode = !1, this.unsetStyle("ace_multiselect"), this.keyBinding.removeKeyboardHandler(c.keyboardHandler), this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec), this.renderer.updateCursor(), this.renderer.updateBackMarkers(), this._emit("changeSelection"))
                        }, this.$onMultiSelectExec = function (e) {
                            var t = e.command, n = e.editor;
                            if (n.multiSelect) {
                                if (t.multiSelectAction) "forEach" == t.multiSelectAction ? i = n.forEachSelection(t, e.args) : "forEachLine" == t.multiSelectAction ? i = n.forEachSelection(t, e.args, !0) : "single" == t.multiSelectAction ? (n.exitMultiSelectMode(), i = t.exec(n, e.args || {})) : i = t.multiSelectAction(n, e.args || {}); else {
                                    var i = t.exec(n, e.args || {});
                                    n.multiSelect.addRange(n.multiSelect.toOrientedRange()), n.multiSelect.mergeOverlappingRanges()
                                }
                                return i
                            }
                        }, this.forEachSelection = function (e, t, n) {
                            if (!this.inVirtualSelectionMode) {
                                var i, r = n && n.keepOrder, a = 1 == n || n && n.$byLines, s = this.session,
                                    l = this.selection, c = l.rangeList, u = (r ? l : c).ranges;
                                if (!u.length) return e.exec ? e.exec(this, t || {}) : e(this, t || {});
                                var h = l._eventRegistry;
                                l._eventRegistry = {};
                                var d = new o(s);
                                this.inVirtualSelectionMode = !0;
                                for (var f = u.length; f--;) {
                                    if (a) for (; f > 0 && u[f].start.row == u[f - 1].end.row;) f--;
                                    d.fromOrientedRange(u[f]), d.index = f, this.selection = s.selection = d;
                                    var g = e.exec ? e.exec(this, t || {}) : e(this, t || {});
                                    i || void 0 === g || (i = g), d.toOrientedRange(u[f])
                                }
                                d.detach(), this.selection = s.selection = l, this.inVirtualSelectionMode = !1, l._eventRegistry = h, l.mergeOverlappingRanges(), l.ranges[0] && l.fromOrientedRange(l.ranges[0]);
                                var p = this.renderer.$scrollAnimation;
                                return this.onCursorChange(), this.onSelectionChange(), p && p.from == p.to && this.renderer.animateScrolling(p.from), i
                            }
                        }, this.exitMultiSelectMode = function () {
                            this.inMultiSelectMode && !this.inVirtualSelectionMode && this.multiSelect.toSingleRange()
                        }, this.getSelectedText = function () {
                            var e = "";
                            if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {
                                for (var t = this.multiSelect.rangeList.ranges, n = [], i = 0; i < t.length; i++) n.push(this.session.getTextRange(t[i]));
                                var r = this.session.getDocument().getNewLineCharacter();
                                (e = n.join(r)).length == (n.length - 1) * r.length && (e = "")
                            } else this.selection.isEmpty() || (e = this.session.getTextRange(this.getSelectionRange()));
                            return e
                        }, this.$checkMultiselectChange = function (e, t) {
                            if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {
                                var n = this.multiSelect.ranges[0];
                                if (this.multiSelect.isEmpty() && t == this.multiSelect.anchor) return;
                                var i = t == this.multiSelect.anchor ? n.cursor == n.start ? n.end : n.start : n.cursor;
                                i.row != t.row || this.session.$clipPositionToDocument(i.row, i.column).column != t.column ? this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()) : this.multiSelect.mergeOverlappingRanges()
                            }
                        }, this.findAll = function (e, t, n) {
                            if ((t = t || {}).needle = e || t.needle, null == t.needle) {
                                var i = this.selection.isEmpty() ? this.selection.getWordRange() : this.selection.getRange();
                                t.needle = this.session.getTextRange(i)
                            }
                            this.$search.set(t);
                            var r = this.$search.findAll(this.session);
                            if (!r.length) return 0;
                            var o = this.multiSelect;
                            n || o.toSingleRange(r[0]);
                            for (var a = r.length; a--;) o.addRange(r[a], !0);
                            return i && o.rangeList.rangeAtPoint(i.start) && o.addRange(i, !0), r.length
                        }, this.selectMoreLines = function (e, t) {
                            var n = this.selection.toOrientedRange(), i = n.cursor == n.end,
                                o = this.session.documentToScreenPosition(n.cursor);
                            this.selection.$desiredColumn && (o.column = this.selection.$desiredColumn);
                            var a, s = this.session.screenToDocumentPosition(o.row + e, o.column);
                            if (n.isEmpty()) c = s; else var l = this.session.documentToScreenPosition(i ? n.end : n.start),
                                c = this.session.screenToDocumentPosition(l.row + e, l.column);
                            if (i ? (a = r.fromPoints(s, c)).cursor = a.start : (a = r.fromPoints(c, s)).cursor = a.end, a.desiredColumn = o.column, this.selection.inMultiSelectMode) {
                                if (t) var u = n.cursor
                            } else this.selection.addRange(n);
                            this.selection.addRange(a), u && this.selection.substractPoint(u)
                        }, this.transposeSelections = function (e) {
                            for (var t = this.session, n = t.multiSelect, i = n.ranges, r = i.length; r--;) if ((s = i[r]).isEmpty()) {
                                var o = t.getWordRange(s.start.row, s.start.column);
                                s.start.row = o.start.row, s.start.column = o.start.column, s.end.row = o.end.row, s.end.column = o.end.column
                            }
                            n.mergeOverlappingRanges();
                            var a = [];
                            for (r = i.length; r--;) {
                                var s = i[r];
                                a.unshift(t.getTextRange(s))
                            }
                            for (e < 0 ? a.unshift(a.pop()) : a.push(a.shift()), r = i.length; r--;) o = (s = i[r]).clone(), t.replace(s, a[r]), s.start.row = o.start.row, s.start.column = o.start.column;
                            n.fromOrientedRange(n.ranges[0])
                        }, this.selectMore = function (e, t, n) {
                            var i = this.session, r = i.multiSelect.toOrientedRange();
                            if (!r.isEmpty() || ((r = i.getWordRange(r.start.row, r.start.column)).cursor = -1 == e ? r.start : r.end, this.multiSelect.addRange(r), !n)) {
                                var o = i.getTextRange(r), a = function (e, t, n) {
                                    return u.$options.wrap = !0, u.$options.needle = t, u.$options.backwards = -1 == n, u.find(e)
                                }(i, o, e);
                                a && (a.cursor = -1 == e ? a.start : a.end, this.session.unfold(a), this.multiSelect.addRange(a), this.renderer.scrollCursorIntoView(null, .5)), t && this.multiSelect.substractPoint(r.cursor)
                            }
                        }, this.alignCursors = function () {
                            var e = this.session, t = e.multiSelect, n = t.ranges, i = -1, o = n.filter((function (e) {
                                if (e.cursor.row == i) return !0;
                                i = e.cursor.row
                            }));
                            if (n.length && o.length != n.length - 1) {
                                o.forEach((function (e) {
                                    t.substractPoint(e.cursor)
                                }));
                                var a = 0, s = 1 / 0, c = n.map((function (t) {
                                    var n = t.cursor, i = e.getLine(n.row).substr(n.column).search(/\S/g);
                                    return -1 == i && (i = 0), n.column > a && (a = n.column), i < s && (s = i), i
                                }));
                                n.forEach((function (t, n) {
                                    var i = t.cursor, o = a - i.column, u = c[n] - s;
                                    o > u ? e.insert(i, l.stringRepeat(" ", o - u)) : e.remove(new r(i.row, i.column, i.row, i.column - o + u)), t.start.column = t.end.column = a, t.start.row = t.end.row = i.row, t.cursor = t.end
                                })), t.fromOrientedRange(n[0]), this.renderer.updateCursor(), this.renderer.updateBackMarkers()
                            } else {
                                var u = this.selection.getRange(), h = u.start.row, d = u.end.row, f = h == d;
                                if (f) {
                                    var g, p = this.session.getLength();
                                    do {
                                        g = this.session.getLine(d)
                                    } while (/[=:]/.test(g) && ++d < p);
                                    do {
                                        g = this.session.getLine(h)
                                    } while (/[=:]/.test(g) && --h > 0);
                                    h < 0 && (h = 0), d >= p && (d = p - 1)
                                }
                                var m = this.session.removeFullLines(h, d);
                                m = this.$reAlignText(m, f), this.session.insert({
                                    row: h,
                                    column: 0
                                }, m.join("\n") + "\n"), f || (u.start.column = 0, u.end.column = m[m.length - 1].length), this.selection.setRange(u)
                            }
                        }, this.$reAlignText = function (e, t) {
                            var n, i, r, o = !0, a = !0;
                            return e.map((function (e) {
                                var t = e.match(/(\s*)(.*?)(\s*)([=:].*)/);
                                return t ? null == n ? (n = t[1].length, i = t[2].length, r = t[3].length, t) : (n + i + r != t[1].length + t[2].length + t[3].length && (a = !1), n != t[1].length && (o = !1), n > t[1].length && (n = t[1].length), i < t[2].length && (i = t[2].length), r > t[3].length && (r = t[3].length), t) : [e]
                            })).map(t ? c : o ? a ? function (e) {
                                return e[2] ? s(n + i - e[2].length) + e[2] + s(r) + e[4].replace(/^([=:])\s+/, "$1 ") : e[0]
                            } : c : function (e) {
                                return e[2] ? s(n) + e[2] + s(r) + e[4].replace(/^([=:])\s+/, "$1 ") : e[0]
                            });

                            function s(e) {
                                return l.stringRepeat(" ", e)
                            }

                            function c(e) {
                                return e[2] ? s(n) + e[2] + s(i - e[2].length + r) + e[4].replace(/^([=:])\s+/, "$1 ") : e[0]
                            }
                        }
                    }).call(d.prototype), t.onSessionChange = function (e) {
                        var t = e.session;
                        t && !t.multiSelect && (t.$selectionMarkers = [], t.selection.$initRangeList(), t.multiSelect = t.selection), this.multiSelect = t && t.multiSelect;
                        var n = e.oldSession;
                        n && (n.multiSelect.off("addRange", this.$onAddRange), n.multiSelect.off("removeRange", this.$onRemoveRange), n.multiSelect.off("multiSelect", this.$onMultiSelect), n.multiSelect.off("singleSelect", this.$onSingleSelect), n.multiSelect.lead.off("change", this.$checkMultiselectChange), n.multiSelect.anchor.off("change", this.$checkMultiselectChange)), t && (t.multiSelect.on("addRange", this.$onAddRange), t.multiSelect.on("removeRange", this.$onRemoveRange), t.multiSelect.on("multiSelect", this.$onMultiSelect), t.multiSelect.on("singleSelect", this.$onSingleSelect), t.multiSelect.lead.on("change", this.$checkMultiselectChange), t.multiSelect.anchor.on("change", this.$checkMultiselectChange)), t && this.inMultiSelectMode != t.selection.inMultiSelectMode && (t.selection.inMultiSelectMode ? this.$onMultiSelect() : this.$onSingleSelect())
                    }, t.MultiSelect = f, e("./config").defineOptions(d.prototype, "editor", {
                        enableMultiselect: {
                            set: function (e) {
                                f(this), e ? (this.on("changeSession", this.$multiselectOnSessionChange), this.on("mousedown", a)) : (this.off("changeSession", this.$multiselectOnSessionChange), this.off("mousedown", a))
                            }, value: !0
                        }, enableBlockSelect: {
                            set: function (e) {
                                this.$blockSelectEnabled = e
                            }, value: !0
                        }
                    })
                })), ace.define("ace/mode/folding/fold_mode", ["require", "exports", "module", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../../range").Range, r = t.FoldMode = function () {
                    };
                    (function () {
                        this.foldingStartMarker = null, this.foldingStopMarker = null, this.getFoldWidget = function (e, t, n) {
                            var i = e.getLine(n);
                            return this.foldingStartMarker.test(i) ? "start" : "markbeginend" == t && this.foldingStopMarker && this.foldingStopMarker.test(i) ? "end" : ""
                        }, this.getFoldWidgetRange = function (e, t, n) {
                            return null
                        }, this.indentationBlock = function (e, t, n) {
                            var r = /\S/, o = e.getLine(t), a = o.search(r);
                            if (-1 != a) {
                                for (var s = n || o.length, l = e.getLength(), c = t, u = t; ++t < l;) {
                                    var h = e.getLine(t).search(r);
                                    if (-1 != h) {
                                        if (h <= a) {
                                            var d = e.getTokenAt(t, 0);
                                            if (!d || "string" !== d.type) break
                                        }
                                        u = t
                                    }
                                }
                                if (u > c) {
                                    var f = e.getLine(u).length;
                                    return new i(c, s, u, f)
                                }
                            }
                        }, this.openingBracketBlock = function (e, t, n, r, o) {
                            var a = {row: n, column: r + 1}, s = e.$findClosingBracket(t, a, o);
                            if (s) {
                                var l = e.foldWidgets[s.row];
                                return null == l && (l = e.getFoldWidget(s.row)), "start" == l && s.row > a.row && (s.row--, s.column = e.getLine(s.row).length), i.fromPoints(a, s)
                            }
                        }, this.closingBracketBlock = function (e, t, n, r, o) {
                            var a = {row: n, column: r}, s = e.$findOpeningBracket(t, a);
                            if (s) return s.column++, a.column--, i.fromPoints(s, a)
                        }
                    }).call(r.prototype)
                })), ace.define("ace/theme/textmate", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    t.isDark = !1, t.cssClass = "ace-tm", t.cssText = '.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}', t.$id = "ace/theme/textmate", e("../lib/dom").importCssString(t.cssText, t.cssClass)
                })), ace.define("ace/line_widgets", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                    "use strict";
                    var i = e("./lib/dom");

                    function r(e) {
                        this.session = e, this.session.widgetManager = this, this.session.getRowLength = this.getRowLength, this.session.$getWidgetScreenLength = this.$getWidgetScreenLength, this.updateOnChange = this.updateOnChange.bind(this), this.renderWidgets = this.renderWidgets.bind(this), this.measureWidgets = this.measureWidgets.bind(this), this.session._changedWidgets = [], this.$onChangeEditor = this.$onChangeEditor.bind(this), this.session.on("change", this.updateOnChange), this.session.on("changeFold", this.updateOnFold), this.session.on("changeEditor", this.$onChangeEditor)
                    }

                    (function () {
                        this.getRowLength = function (e) {
                            var t;
                            return t = this.lineWidgets && this.lineWidgets[e] && this.lineWidgets[e].rowCount || 0, this.$useWrapMode && this.$wrapData[e] ? this.$wrapData[e].length + 1 + t : 1 + t
                        }, this.$getWidgetScreenLength = function () {
                            var e = 0;
                            return this.lineWidgets.forEach((function (t) {
                                t && t.rowCount && !t.hidden && (e += t.rowCount)
                            })), e
                        }, this.$onChangeEditor = function (e) {
                            this.attach(e.editor)
                        }, this.attach = function (e) {
                            e && e.widgetManager && e.widgetManager != this && e.widgetManager.detach(), this.editor != e && (this.detach(), this.editor = e, e && (e.widgetManager = this, e.renderer.on("beforeRender", this.measureWidgets), e.renderer.on("afterRender", this.renderWidgets)))
                        }, this.detach = function (e) {
                            var t = this.editor;
                            if (t) {
                                this.editor = null, t.widgetManager = null, t.renderer.off("beforeRender", this.measureWidgets), t.renderer.off("afterRender", this.renderWidgets);
                                var n = this.session.lineWidgets;
                                n && n.forEach((function (e) {
                                    e && e.el && e.el.parentNode && (e._inDocument = !1, e.el.parentNode.removeChild(e.el))
                                }))
                            }
                        }, this.updateOnFold = function (e, t) {
                            var n = t.lineWidgets;
                            if (n && e.action) {
                                for (var i = e.data, r = i.start.row, o = i.end.row, a = "add" == e.action, s = r + 1; s < o; s++) n[s] && (n[s].hidden = a);
                                n[o] && (a ? n[r] ? n[o].hidden = a : n[r] = n[o] : (n[r] == n[o] && (n[r] = void 0), n[o].hidden = a))
                            }
                        }, this.updateOnChange = function (e) {
                            var t = this.session.lineWidgets;
                            if (t) {
                                var n = e.start.row, i = e.end.row - n;
                                if (0 === i) ; else if ("remove" == e.action) {
                                    var r = t.splice(n + 1, i);
                                    !t[n] && r[r.length - 1] && (t[n] = r.pop()), r.forEach((function (e) {
                                        e && this.removeLineWidget(e)
                                    }), this), this.$updateRows()
                                } else {
                                    var o = new Array(i);
                                    t[n] && null != t[n].column && e.start.column > t[n].column && n++, o.unshift(n, 0), t.splice.apply(t, o), this.$updateRows()
                                }
                            }
                        }, this.$updateRows = function () {
                            var e = this.session.lineWidgets;
                            if (e) {
                                var t = !0;
                                e.forEach((function (e, n) {
                                    if (e) for (t = !1, e.row = n; e.$oldWidget;) e.$oldWidget.row = n, e = e.$oldWidget
                                })), t && (this.session.lineWidgets = null)
                            }
                        }, this.$registerLineWidget = function (e) {
                            this.session.lineWidgets || (this.session.lineWidgets = new Array(this.session.getLength()));
                            var t = this.session.lineWidgets[e.row];
                            return t && (e.$oldWidget = t, t.el && t.el.parentNode && (t.el.parentNode.removeChild(t.el), t._inDocument = !1)), this.session.lineWidgets[e.row] = e, e
                        }, this.addLineWidget = function (e) {
                            if (this.$registerLineWidget(e), e.session = this.session, !this.editor) return e;
                            var t = this.editor.renderer;
                            e.html && !e.el && (e.el = i.createElement("div"), e.el.innerHTML = e.html), e.el && (i.addCssClass(e.el, "ace_lineWidgetContainer"), e.el.style.position = "absolute", e.el.style.zIndex = 5, t.container.appendChild(e.el), e._inDocument = !0, e.coverGutter || (e.el.style.zIndex = 3), null == e.pixelHeight && (e.pixelHeight = e.el.offsetHeight)), null == e.rowCount && (e.rowCount = e.pixelHeight / t.layerConfig.lineHeight);
                            var n = this.session.getFoldAt(e.row, 0);
                            if (e.$fold = n, n) {
                                var r = this.session.lineWidgets;
                                e.row != n.end.row || r[n.start.row] ? e.hidden = !0 : r[n.start.row] = e
                            }
                            return this.session._emit("changeFold", {data: {start: {row: e.row}}}), this.$updateRows(), this.renderWidgets(null, t), this.onWidgetChanged(e), e
                        }, this.removeLineWidget = function (e) {
                            if (e._inDocument = !1, e.session = null, e.el && e.el.parentNode && e.el.parentNode.removeChild(e.el), e.editor && e.editor.destroy) try {
                                e.editor.destroy()
                            } catch (e) {
                            }
                            if (this.session.lineWidgets) {
                                var t = this.session.lineWidgets[e.row];
                                if (t == e) this.session.lineWidgets[e.row] = e.$oldWidget, e.$oldWidget && this.onWidgetChanged(e.$oldWidget); else for (; t;) {
                                    if (t.$oldWidget == e) {
                                        t.$oldWidget = e.$oldWidget;
                                        break
                                    }
                                    t = t.$oldWidget
                                }
                            }
                            this.session._emit("changeFold", {data: {start: {row: e.row}}}), this.$updateRows()
                        }, this.getWidgetsAtRow = function (e) {
                            for (var t = this.session.lineWidgets, n = t && t[e], i = []; n;) i.push(n), n = n.$oldWidget;
                            return i
                        }, this.onWidgetChanged = function (e) {
                            this.session._changedWidgets.push(e), this.editor && this.editor.renderer.updateFull()
                        }, this.measureWidgets = function (e, t) {
                            var n = this.session._changedWidgets, i = t.layerConfig;
                            if (n && n.length) {
                                for (var r = 1 / 0, o = 0; o < n.length; o++) {
                                    var a = n[o];
                                    if (a && a.el && a.session == this.session) {
                                        if (!a._inDocument) {
                                            if (this.session.lineWidgets[a.row] != a) continue;
                                            a._inDocument = !0, t.container.appendChild(a.el)
                                        }
                                        a.h = a.el.offsetHeight, a.fixedWidth || (a.w = a.el.offsetWidth, a.screenWidth = Math.ceil(a.w / i.characterWidth));
                                        var s = a.h / i.lineHeight;
                                        a.coverLine && (s -= this.session.getRowLineCount(a.row)) < 0 && (s = 0), a.rowCount != s && (a.rowCount = s, a.row < r && (r = a.row))
                                    }
                                }
                                r != 1 / 0 && (this.session._emit("changeFold", {data: {start: {row: r}}}), this.session.lineWidgetWidth = null), this.session._changedWidgets = []
                            }
                        }, this.renderWidgets = function (e, t) {
                            var n = t.layerConfig, i = this.session.lineWidgets;
                            if (i) {
                                for (var r = Math.min(this.firstRow, n.firstRow), o = Math.max(this.lastRow, n.lastRow, i.length); r > 0 && !i[r];) r--;
                                this.firstRow = n.firstRow, this.lastRow = n.lastRow, t.$cursorLayer.config = n;
                                for (var a = r; a <= o; a++) {
                                    var s = i[a];
                                    if (s && s.el) if (s.hidden) s.el.style.top = -100 - (s.pixelHeight || 0) + "px"; else {
                                        s._inDocument || (s._inDocument = !0, t.container.appendChild(s.el));
                                        var l = t.$cursorLayer.getPixelPosition({row: a, column: 0}, !0).top;
                                        s.coverLine || (l += n.lineHeight * this.session.getRowLineCount(s.row)), s.el.style.top = l - n.offset + "px";
                                        var c = s.coverGutter ? 0 : t.gutterWidth;
                                        s.fixedWidth || (c -= t.scrollLeft), s.el.style.left = c + "px", s.fullWidth && s.screenWidth && (s.el.style.minWidth = n.width + 2 * n.padding + "px"), s.fixedWidth ? s.el.style.right = t.scrollBar.getWidth() + "px" : s.el.style.right = ""
                                    }
                                }
                            }
                        }
                    }).call(r.prototype), t.LineWidgets = r
                })), ace.define("ace/ext/error_marker", ["require", "exports", "module", "ace/line_widgets", "ace/lib/dom", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../line_widgets").LineWidgets, r = e("../lib/dom"), o = e("../range").Range;
                    t.showErrorMarker = function (e, t) {
                        var n = e.session;
                        n.widgetManager || (n.widgetManager = new i(n), n.widgetManager.attach(e));
                        var a = e.getCursorPosition(), s = a.row,
                            l = n.widgetManager.getWidgetsAtRow(s).filter((function (e) {
                                return "errorMarker" == e.type
                            }))[0];
                        l ? l.destroy() : s -= t;
                        var c, u = function (e, t, n) {
                            var i = e.getAnnotations().sort(o.comparePoints);
                            if (i.length) {
                                var r = function (e, t, n) {
                                    for (var i = 0, r = e.length - 1; i <= r;) {
                                        var o = i + r >> 1, a = n(t, e[o]);
                                        if (a > 0) i = o + 1; else {
                                            if (!(a < 0)) return o;
                                            r = o - 1
                                        }
                                    }
                                    return -(i + 1)
                                }(i, {row: t, column: -1}, o.comparePoints);
                                r < 0 && (r = -r - 1), r >= i.length ? r = n > 0 ? 0 : i.length - 1 : 0 === r && n < 0 && (r = i.length - 1);
                                var a = i[r];
                                if (a && n) {
                                    if (a.row === t) {
                                        do {
                                            a = i[r += n]
                                        } while (a && a.row === t);
                                        if (!a) return i.slice()
                                    }
                                    var s = [];
                                    t = a.row;
                                    do {
                                        s[n < 0 ? "unshift" : "push"](a), a = i[r += n]
                                    } while (a && a.row == t);
                                    return s.length && s
                                }
                            }
                        }(n, s, t);
                        if (u) {
                            var h = u[0];
                            a.column = (h.pos && "number" != typeof h.column ? h.pos.sc : h.column) || 0, a.row = h.row, c = e.renderer.$gutterLayer.$annotations[a.row]
                        } else {
                            if (l) return;
                            c = {text: ["Looks good!"], className: "ace_ok"}
                        }
                        e.session.unfold(a.row), e.selection.moveToPosition(a);
                        var d = {
                            row: a.row,
                            fixedWidth: !0,
                            coverGutter: !0,
                            el: r.createElement("div"),
                            type: "errorMarker"
                        }, f = d.el.appendChild(r.createElement("div")), g = d.el.appendChild(r.createElement("div"));
                        g.className = "error_widget_arrow " + c.className;
                        var p = e.renderer.$cursorLayer.getPixelPosition(a).left;
                        g.style.left = p + e.renderer.gutterWidth - 5 + "px", d.el.className = "error_widget_wrapper", f.className = "error_widget " + c.className, f.innerHTML = c.text.join("<br>"), f.appendChild(r.createElement("div"));
                        var m = function (e, t, n) {
                            if (0 === t && ("esc" === n || "return" === n)) return d.destroy(), {command: "null"}
                        };
                        d.destroy = function () {
                            e.$mouseHandler.isMousePressed || (e.keyBinding.removeKeyboardHandler(m), n.widgetManager.removeLineWidget(d), e.off("changeSelection", d.destroy), e.off("changeSession", d.destroy), e.off("mouseup", d.destroy), e.off("change", d.destroy))
                        }, e.keyBinding.addKeyboardHandler(m), e.on("changeSelection", d.destroy), e.on("changeSession", d.destroy), e.on("mouseup", d.destroy), e.on("change", d.destroy), e.session.widgetManager.addLineWidget(d), d.el.onmousedown = e.focus.bind(e), e.renderer.scrollCursorIntoView(null, .5, {bottom: d.el.offsetHeight})
                    }, r.importCssString("    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }", "")
                })), ace.define("ace/ace", ["require", "exports", "module", "ace/lib/fixoldbrowsers", "ace/lib/dom", "ace/lib/event", "ace/range", "ace/editor", "ace/edit_session", "ace/undomanager", "ace/virtual_renderer", "ace/worker/worker_client", "ace/keyboard/hash_handler", "ace/placeholder", "ace/multi_select", "ace/mode/folding/fold_mode", "ace/theme/textmate", "ace/ext/error_marker", "ace/config"], (function (e, t, i) {
                    "use strict";
                    e("./lib/fixoldbrowsers");
                    var r = e("./lib/dom"), o = e("./lib/event"), a = e("./range").Range, s = e("./editor").Editor,
                        l = e("./edit_session").EditSession, c = e("./undomanager").UndoManager,
                        u = e("./virtual_renderer").VirtualRenderer;
                    e("./worker/worker_client"), e("./keyboard/hash_handler"), e("./placeholder"), e("./multi_select"), e("./mode/folding/fold_mode"), e("./theme/textmate"), e("./ext/error_marker"), t.config = e("./config"), t.require = e, t.define = n(23), t.edit = function (e, n) {
                        if ("string" == typeof e) {
                            var i = e;
                            if (!(e = document.getElementById(i))) throw new Error("ace.edit can't find div #" + i)
                        }
                        if (e && e.env && e.env.editor instanceof s) return e.env.editor;
                        var a = "";
                        if (e && /input|textarea/i.test(e.tagName)) {
                            var l = e;
                            a = l.value, e = r.createElement("pre"), l.parentNode.replaceChild(e, l)
                        } else e && (a = e.textContent, e.innerHTML = "");
                        var c = t.createEditSession(a), h = new s(new u(e), c, n),
                            d = {document: c, editor: h, onResize: h.resize.bind(h, null)};
                        return l && (d.textarea = l), o.addListener(window, "resize", d.onResize), h.on("destroy", (function () {
                            o.removeListener(window, "resize", d.onResize), d.editor.container.env = null
                        })), h.container.env = h.env = d, h
                    }, t.createEditSession = function (e, t) {
                        var n = new l(e, t);
                        return n.setUndoManager(new c), n
                    }, t.Range = a, t.Editor = s, t.EditSession = l, t.UndoManager = c, t.VirtualRenderer = u, t.version = t.config.version
                })), ace.require(["ace/ace"], (function (t) {
                    for (var n in t && (t.config.init(!0), t.define = ace.define), window.ace || (window.ace = t), t) t.hasOwnProperty(n) && (window.ace[n] = t[n]);
                    window.ace.default = window.ace, e && (e.exports = window.ace)
                }))
            }).call(this, n(16)(e))
        }, function (e, t, n) {
            (function (e) {
                ace.define("ace/mode/json_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/oop"), r = e("./text_highlight_rules").TextHighlightRules, o = function () {
                        this.$rules = {
                            start: [{
                                token: "variable",
                                regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'
                            }, {token: "string", regex: '"', next: "string"}, {
                                token: "constant.numeric",
                                regex: "0[xX][0-9a-fA-F]+\\b"
                            }, {
                                token: "constant.numeric",
                                regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
                            }, {token: "constant.language.boolean", regex: "(?:true|false)\\b"}, {
                                token: "text",
                                regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
                            }, {token: "comment", regex: "\\/\\/.*$"}, {
                                token: "comment.start",
                                regex: "\\/\\*",
                                next: "comment"
                            }, {token: "paren.lparen", regex: "[[({]"}, {
                                token: "paren.rparen",
                                regex: "[\\])}]"
                            }, {token: "text", regex: "\\s+"}],
                            string: [{
                                token: "constant.language.escape",
                                regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/
                            }, {token: "string", regex: '"|$', next: "start"}, {defaultToken: "string"}],
                            comment: [{token: "comment.end", regex: "\\*\\/", next: "start"}, {defaultToken: "comment"}]
                        }
                    };
                    i.inherits(o, r), t.JsonHighlightRules = o
                })), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], (function (e, t, n) {
                    "use strict";
                    var i = e("../range").Range, r = function () {
                    };
                    (function () {
                        this.checkOutdent = function (e, t) {
                            return !!/^\s+$/.test(e) && /^\s*\}/.test(t)
                        }, this.autoOutdent = function (e, t) {
                            var n = e.getLine(t).match(/^(\s*\})/);
                            if (!n) return 0;
                            var r = n[1].length, o = e.findMatchingBracket({row: t, column: r});
                            if (!o || o.row == t) return 0;
                            var a = this.$getIndent(e.getLine(o.row));
                            e.replace(new i(t, 0, t, r - 1), a)
                        }, this.$getIndent = function (e) {
                            return e.match(/^\s*/)[0]
                        }
                    }).call(r.prototype), t.MatchingBraceOutdent = r
                })), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], (function (e, t, n) {
                    "use strict";
                    var i = e("../../lib/oop"), r = e("../../range").Range, o = e("./fold_mode").FoldMode,
                        a = t.FoldMode = function (e) {
                            e && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + e.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + e.end)))
                        };
                    i.inherits(a, o), function () {
                        this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/, this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/, this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/, this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/, this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/, this._getFoldWidgetBase = this.getFoldWidget, this.getFoldWidget = function (e, t, n) {
                            var i = e.getLine(n);
                            if (this.singleLineBlockCommentRe.test(i) && !this.startRegionRe.test(i) && !this.tripleStarBlockCommentRe.test(i)) return "";
                            var r = this._getFoldWidgetBase(e, t, n);
                            return !r && this.startRegionRe.test(i) ? "start" : r
                        }, this.getFoldWidgetRange = function (e, t, n, i) {
                            var r, o = e.getLine(n);
                            if (this.startRegionRe.test(o)) return this.getCommentRegionBlock(e, o, n);
                            if (r = o.match(this.foldingStartMarker)) {
                                var a = r.index;
                                if (r[1]) return this.openingBracketBlock(e, r[1], n, a);
                                var s = e.getCommentFoldRange(n, a + r[0].length, 1);
                                return s && !s.isMultiLine() && (i ? s = this.getSectionRange(e, n) : "all" != t && (s = null)), s
                            }
                            return "markbegin" !== t && (r = o.match(this.foldingStopMarker)) ? (a = r.index + r[0].length, r[1] ? this.closingBracketBlock(e, r[1], n, a) : e.getCommentFoldRange(n, a, -1)) : void 0
                        }, this.getSectionRange = function (e, t) {
                            for (var n = e.getLine(t), i = n.search(/\S/), o = t, a = n.length, s = t += 1, l = e.getLength(); ++t < l;) {
                                var c = (n = e.getLine(t)).search(/\S/);
                                if (-1 !== c) {
                                    if (i > c) break;
                                    var u = this.getFoldWidgetRange(e, "all", t);
                                    if (u) {
                                        if (u.start.row <= o) break;
                                        if (u.isMultiLine()) t = u.end.row; else if (i == c) break
                                    }
                                    s = t
                                }
                            }
                            return new r(o, a, s, e.getLine(s).length)
                        }, this.getCommentRegionBlock = function (e, t, n) {
                            for (var i = t.search(/\s*$/), o = e.getLength(), a = n, s = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/, l = 1; ++n < o;) {
                                t = e.getLine(n);
                                var c = s.exec(t);
                                if (c && (c[1] ? l-- : l++, !l)) break
                            }
                            if (n > a) return new r(a, i, n, t.length)
                        }
                    }.call(a.prototype)
                })), ace.define("ace/mode/json", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/json_highlight_rules", "ace/mode/matching_brace_outdent", "ace/mode/behaviour/cstyle", "ace/mode/folding/cstyle", "ace/worker/worker_client"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/oop"), r = e("./text").Mode, o = e("./json_highlight_rules").JsonHighlightRules,
                        a = e("./matching_brace_outdent").MatchingBraceOutdent,
                        s = e("./behaviour/cstyle").CstyleBehaviour, l = e("./folding/cstyle").FoldMode,
                        c = e("../worker/worker_client").WorkerClient, u = function () {
                            this.HighlightRules = o, this.$outdent = new a, this.$behaviour = new s, this.foldingRules = new l
                        };
                    i.inherits(u, r), function () {
                        this.lineCommentStart = "//", this.blockComment = {
                            start: "/*",
                            end: "*/"
                        }, this.getNextLineIndent = function (e, t, n) {
                            var i = this.$getIndent(t);
                            return "start" == e && t.match(/^.*[\{\(\[]\s*$/) && (i += n), i
                        }, this.checkOutdent = function (e, t, n) {
                            return this.$outdent.checkOutdent(t, n)
                        }, this.autoOutdent = function (e, t, n) {
                            this.$outdent.autoOutdent(t, n)
                        }, this.createWorker = function (e) {
                            var t = new c(["ace"], "ace/mode/json_worker", "JsonWorker");
                            return t.attachToDocument(e.getDocument()), t.on("annotate", (function (t) {
                                e.setAnnotations(t.data)
                            })), t.on("terminate", (function () {
                                e.clearAnnotations()
                            })), t
                        }, this.$id = "ace/mode/json"
                    }.call(u.prototype), t.Mode = u
                })), ace.require(["ace/mode/json"], (function (t) {
                    e && (e.exports = t)
                }))
            }).call(this, n(16)(e))
        }, function (e, t, n) {
            (function (e) {
                ace.define("ace/ext/searchbox", ["require", "exports", "module", "ace/lib/dom", "ace/lib/lang", "ace/lib/event", "ace/keyboard/hash_handler", "ace/lib/keys"], (function (e, t, n) {
                    "use strict";
                    var i = e("../lib/dom"), r = e("../lib/lang"), o = e("../lib/event"),
                        a = '.ace_search {background-color: #ddd;color: #666;border: 1px solid #cbcbcb;border-top: 0 none;overflow: hidden;margin: 0;padding: 4px 6px 0 4px;position: absolute;top: 0;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {margin: 0 20px 4px 0;overflow: hidden;line-height: 1.9;}.ace_replace_form {margin-right: 0;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {border-radius: 3px 0 0 3px;background-color: white;color: black;border: 1px solid #cbcbcb;border-right: 0 none;outline: 0;padding: 0;font-size: inherit;margin: 0;line-height: inherit;padding: 0 6px;min-width: 17em;vertical-align: top;min-height: 1.8em;box-sizing: content-box;}.ace_searchbtn {border: 1px solid #cbcbcb;line-height: inherit;display: inline-block;padding: 0 6px;background: #fff;border-right: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;margin: 0;position: relative;color: #666;}.ace_searchbtn:last-child {border-radius: 0 3px 3px 0;border-right: 1px solid #cbcbcb;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn:hover {background-color: #eef1f6;}.ace_searchbtn.prev, .ace_searchbtn.next {padding: 0px 0.7em}.ace_searchbtn.prev:after, .ace_searchbtn.next:after {content: "";border: solid 2px #888;width: 0.5em;height: 0.5em;border-width:  2px 0 0 2px;display:inline-block;transform: rotate(-45deg);}.ace_searchbtn.next:after {border-width: 0 2px 2px 0 ;}.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;font: 16px/16px Arial;padding: 0;height: 14px;width: 14px;top: 9px;right: 7px;position: absolute;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;box-sizing:    border-box!important;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;clear: both;}.ace_search_counter {float: left;font-family: arial;padding: 0 8px;}',
                        s = e("../keyboard/hash_handler").HashHandler, l = e("../lib/keys");
                    i.importCssString(a, "ace_searchbox");
                    var c = function (e, t, n) {
                        var r = i.createElement("div");
                        i.buildDom(["div", {class: "ace_search right"}, ["span", {
                            action: "hide",
                            class: "ace_searchbtn_close"
                        }], ["div", {class: "ace_search_form"}, ["input", {
                            class: "ace_search_field",
                            placeholder: "Search for",
                            spellcheck: "false"
                        }], ["span", {
                            action: "findPrev",
                            class: "ace_searchbtn prev"
                        }, "​"], ["span", {
                            action: "findNext",
                            class: "ace_searchbtn next"
                        }, "​"], ["span", {
                            action: "findAll",
                            class: "ace_searchbtn",
                            title: "Alt-Enter"
                        }, "All"]], ["div", {class: "ace_replace_form"}, ["input", {
                            class: "ace_search_field",
                            placeholder: "Replace with",
                            spellcheck: "false"
                        }], ["span", {
                            action: "replaceAndFindNext",
                            class: "ace_searchbtn"
                        }, "Replace"], ["span", {
                            action: "replaceAll",
                            class: "ace_searchbtn"
                        }, "All"]], ["div", {class: "ace_search_options"}, ["span", {
                            action: "toggleReplace",
                            class: "ace_button",
                            title: "Toggle Replace mode",
                            style: "float:left;margin-top:-2px;padding:0 5px;"
                        }, "+"], ["span", {class: "ace_search_counter"}], ["span", {
                            action: "toggleRegexpMode",
                            class: "ace_button",
                            title: "RegExp Search"
                        }, ".*"], ["span", {
                            action: "toggleCaseSensitive",
                            class: "ace_button",
                            title: "CaseSensitive Search"
                        }, "Aa"], ["span", {
                            action: "toggleWholeWords",
                            class: "ace_button",
                            title: "Whole Word Search"
                        }, "\\b"], ["span", {
                            action: "searchInSelection",
                            class: "ace_button",
                            title: "Search In Selection"
                        }, "S"]]], r), this.element = r.firstChild, this.setSession = this.setSession.bind(this), this.$init(), this.setEditor(e), i.importCssString(a, "ace_searchbox", e.container)
                    };
                    (function () {
                        this.setEditor = function (e) {
                            e.searchBox = this, e.renderer.scroller.appendChild(this.element), this.editor = e
                        }, this.setSession = function (e) {
                            this.searchRange = null, this.$syncOptions(!0)
                        }, this.$initElements = function (e) {
                            this.searchBox = e.querySelector(".ace_search_form"), this.replaceBox = e.querySelector(".ace_replace_form"), this.searchOption = e.querySelector("[action=searchInSelection]"), this.replaceOption = e.querySelector("[action=toggleReplace]"), this.regExpOption = e.querySelector("[action=toggleRegexpMode]"), this.caseSensitiveOption = e.querySelector("[action=toggleCaseSensitive]"), this.wholeWordOption = e.querySelector("[action=toggleWholeWords]"), this.searchInput = this.searchBox.querySelector(".ace_search_field"), this.replaceInput = this.replaceBox.querySelector(".ace_search_field"), this.searchCounter = e.querySelector(".ace_search_counter")
                        }, this.$init = function () {
                            var e = this.element;
                            this.$initElements(e);
                            var t = this;
                            o.addListener(e, "mousedown", (function (e) {
                                setTimeout((function () {
                                    t.activeInput.focus()
                                }), 0), o.stopPropagation(e)
                            })), o.addListener(e, "click", (function (e) {
                                var n = (e.target || e.srcElement).getAttribute("action");
                                n && t[n] ? t[n]() : t.$searchBarKb.commands[n] && t.$searchBarKb.commands[n].exec(t), o.stopPropagation(e)
                            })), o.addCommandKeyListener(e, (function (e, n, i) {
                                var r = l.keyCodeToString(i), a = t.$searchBarKb.findKeyCommand(n, r);
                                a && a.exec && (a.exec(t), o.stopEvent(e))
                            })), this.$onChange = r.delayedCall((function () {
                                t.find(!1, !1)
                            })), o.addListener(this.searchInput, "input", (function () {
                                t.$onChange.schedule(20)
                            })), o.addListener(this.searchInput, "focus", (function () {
                                t.activeInput = t.searchInput, t.searchInput.value && t.highlight()
                            })), o.addListener(this.replaceInput, "focus", (function () {
                                t.activeInput = t.replaceInput, t.searchInput.value && t.highlight()
                            }))
                        }, this.$closeSearchBarKb = new s([{
                            bindKey: "Esc", name: "closeSearchBar", exec: function (e) {
                                e.searchBox.hide()
                            }
                        }]), this.$searchBarKb = new s, this.$searchBarKb.bindKeys({
                            "Ctrl-f|Command-f": function (e) {
                                var t = e.isReplace = !e.isReplace;
                                e.replaceBox.style.display = t ? "" : "none", e.replaceOption.checked = !1, e.$syncOptions(), e.searchInput.focus()
                            }, "Ctrl-H|Command-Option-F": function (e) {
                                e.editor.getReadOnly() || (e.replaceOption.checked = !0, e.$syncOptions(), e.replaceInput.focus())
                            }, "Ctrl-G|Command-G": function (e) {
                                e.findNext()
                            }, "Ctrl-Shift-G|Command-Shift-G": function (e) {
                                e.findPrev()
                            }, esc: function (e) {
                                setTimeout((function () {
                                    e.hide()
                                }))
                            }, Return: function (e) {
                                e.activeInput == e.replaceInput && e.replace(), e.findNext()
                            }, "Shift-Return": function (e) {
                                e.activeInput == e.replaceInput && e.replace(), e.findPrev()
                            }, "Alt-Return": function (e) {
                                e.activeInput == e.replaceInput && e.replaceAll(), e.findAll()
                            }, Tab: function (e) {
                                (e.activeInput == e.replaceInput ? e.searchInput : e.replaceInput).focus()
                            }
                        }), this.$searchBarKb.addCommands([{
                            name: "toggleRegexpMode",
                            bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"},
                            exec: function (e) {
                                e.regExpOption.checked = !e.regExpOption.checked, e.$syncOptions()
                            }
                        }, {
                            name: "toggleCaseSensitive",
                            bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"},
                            exec: function (e) {
                                e.caseSensitiveOption.checked = !e.caseSensitiveOption.checked, e.$syncOptions()
                            }
                        }, {
                            name: "toggleWholeWords",
                            bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"},
                            exec: function (e) {
                                e.wholeWordOption.checked = !e.wholeWordOption.checked, e.$syncOptions()
                            }
                        }, {
                            name: "toggleReplace", exec: function (e) {
                                e.replaceOption.checked = !e.replaceOption.checked, e.$syncOptions()
                            }
                        }, {
                            name: "searchInSelection", exec: function (e) {
                                e.searchOption.checked = !e.searchRange, e.setSearchRange(e.searchOption.checked && e.editor.getSelectionRange()), e.$syncOptions()
                            }
                        }]), this.setSearchRange = function (e) {
                            this.searchRange = e, e ? this.searchRangeMarker = this.editor.session.addMarker(e, "ace_active-line") : this.searchRangeMarker && (this.editor.session.removeMarker(this.searchRangeMarker), this.searchRangeMarker = null)
                        }, this.$syncOptions = function (e) {
                            i.setCssClass(this.replaceOption, "checked", this.searchRange), i.setCssClass(this.searchOption, "checked", this.searchOption.checked), this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+", i.setCssClass(this.regExpOption, "checked", this.regExpOption.checked), i.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked), i.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked);
                            var t = this.editor.getReadOnly();
                            this.replaceOption.style.display = t ? "none" : "", this.replaceBox.style.display = this.replaceOption.checked && !t ? "" : "none", this.find(!1, !1, e)
                        }, this.highlight = function (e) {
                            this.editor.session.highlight(e || this.editor.$search.$options.re), this.editor.renderer.updateBackMarkers()
                        }, this.find = function (e, t, n) {
                            var r = !this.editor.find(this.searchInput.value, {
                                skipCurrent: e,
                                backwards: t,
                                wrap: !0,
                                regExp: this.regExpOption.checked,
                                caseSensitive: this.caseSensitiveOption.checked,
                                wholeWord: this.wholeWordOption.checked,
                                preventScroll: n,
                                range: this.searchRange
                            }) && this.searchInput.value;
                            i.setCssClass(this.searchBox, "ace_nomatch", r), this.editor._emit("findSearchBox", {match: !r}), this.highlight(), this.updateCounter()
                        }, this.updateCounter = function () {
                            var e = this.editor, t = e.$search.$options.re, n = 0, i = 0;
                            if (t) {
                                var r = this.searchRange ? e.session.getTextRange(this.searchRange) : e.getValue(),
                                    o = e.session.doc.positionToIndex(e.selection.anchor);
                                this.searchRange && (o -= e.session.doc.positionToIndex(this.searchRange.start));
                                for (var a, s = t.lastIndex = 0; (a = t.exec(r)) && (n++, (s = a.index) <= o && i++, !(n > 999)) && (a[0] || (t.lastIndex = s += 1, !(s >= r.length)));) ;
                            }
                            this.searchCounter.textContent = i + " of " + (n > 999 ? "999+" : n)
                        }, this.findNext = function () {
                            this.find(!0, !1)
                        }, this.findPrev = function () {
                            this.find(!0, !0)
                        }, this.findAll = function () {
                            var e = !this.editor.findAll(this.searchInput.value, {
                                regExp: this.regExpOption.checked,
                                caseSensitive: this.caseSensitiveOption.checked,
                                wholeWord: this.wholeWordOption.checked
                            }) && this.searchInput.value;
                            i.setCssClass(this.searchBox, "ace_nomatch", e), this.editor._emit("findSearchBox", {match: !e}), this.highlight(), this.hide()
                        }, this.replace = function () {
                            this.editor.getReadOnly() || this.editor.replace(this.replaceInput.value)
                        }, this.replaceAndFindNext = function () {
                            this.editor.getReadOnly() || (this.editor.replace(this.replaceInput.value), this.findNext())
                        }, this.replaceAll = function () {
                            this.editor.getReadOnly() || this.editor.replaceAll(this.replaceInput.value)
                        }, this.hide = function () {
                            this.active = !1, this.setSearchRange(null), this.editor.off("changeSession", this.setSession), this.element.style.display = "none", this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb), this.editor.focus()
                        }, this.show = function (e, t) {
                            this.active = !0, this.editor.on("changeSession", this.setSession), this.element.style.display = "", this.replaceOption.checked = t, e && (this.searchInput.value = e), this.searchInput.focus(), this.searchInput.select(), this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb), this.$syncOptions(!0)
                        }, this.isFocused = function () {
                            var e = document.activeElement;
                            return e == this.searchInput || e == this.replaceInput
                        }
                    }).call(c.prototype), t.SearchBox = c, t.Search = function (e, t) {
                        (e.searchBox || new c(e)).show(e.session.getTextRange(), t)
                    }
                })), ace.require(["ace/ext/searchbox"], (function (t) {
                    e && (e.exports = t)
                }))
            }).call(this, n(16)(e))
        }, function (e, t) {
            e.exports = "data:application/javascript;base64,[encoded data, 97164 characters]"
        }, function (e, t, n) {
            /*!
 * vanilla-picker v2.10.1
 * https://vanilla-picker.js.org
 *
 * Copyright 2017-2019 Andreas Borgen (https://github.com/Sphinxxxx), Adam Brooks (https://github.com/dissimulate)
 * Released under the ISC license.
 */
            e.exports = function () {
                "use strict";
                var e = function (e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }, t = function () {
                    function e(e, t) {
                        for (var n = 0; n < t.length; n++) {
                            var i = t[n];
                            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                        }
                    }

                    return function (t, n, i) {
                        return n && e(t.prototype, n), i && e(t, i), t
                    }
                }(), n = function (e, t) {
                    if (Array.isArray(e)) return e;
                    if (Symbol.iterator in Object(e)) return function (e, t) {
                        var n = [], i = !0, r = !1, o = void 0;
                        try {
                            for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
                        } catch (e) {
                            r = !0, o = e
                        } finally {
                            try {
                                !i && s.return && s.return()
                            } finally {
                                if (r) throw o
                            }
                        }
                        return n
                    }(e, t);
                    throw new TypeError("Invalid attempt to destructure non-iterable instance")
                };
                String.prototype.startsWith = String.prototype.startsWith || function (e) {
                    return 0 === this.indexOf(e)
                }, String.prototype.padStart = String.prototype.padStart || function (e, t) {
                    for (var n = this; n.length < e;) n = t + n;
                    return n
                };
                var i = {
                    cb: "0f8ff",
                    tqw: "aebd7",
                    q: "-ffff",
                    qmrn: "7fffd4",
                    zr: "0ffff",
                    bg: "5f5dc",
                    bsq: "e4c4",
                    bck: "---",
                    nch: "ebcd",
                    b: "--ff",
                    bvt: "8a2be2",
                    brwn: "a52a2a",
                    brw: "deb887",
                    ctb: "5f9ea0",
                    hrt: "7fff-",
                    chcT: "d2691e",
                    cr: "7f50",
                    rnw: "6495ed",
                    crns: "8dc",
                    crms: "dc143c",
                    cn: "-ffff",
                    Db: "--8b",
                    Dcn: "-8b8b",
                    Dgnr: "b8860b",
                    Dgr: "a9a9a9",
                    Dgrn: "-64-",
                    Dkhk: "bdb76b",
                    Dmgn: "8b-8b",
                    Dvgr: "556b2f",
                    Drng: "8c-",
                    Drch: "9932cc",
                    Dr: "8b--",
                    Dsmn: "e9967a",
                    Dsgr: "8fbc8f",
                    DsTb: "483d8b",
                    DsTg: "2f4f4f",
                    Dtrq: "-ced1",
                    Dvt: "94-d3",
                    ppnk: "1493",
                    pskb: "-bfff",
                    mgr: "696969",
                    grb: "1e90ff",
                    rbrc: "b22222",
                    rwht: "af0",
                    stg: "228b22",
                    chs: "-ff",
                    gnsb: "dcdcdc",
                    st: "8f8ff",
                    g: "d7-",
                    gnr: "daa520",
                    gr: "808080",
                    grn: "-8-0",
                    grnw: "adff2f",
                    hnw: "0fff0",
                    htpn: "69b4",
                    nnr: "cd5c5c",
                    ng: "4b-82",
                    vr: "0",
                    khk: "0e68c",
                    vnr: "e6e6fa",
                    nrb: "0f5",
                    wngr: "7cfc-",
                    mnch: "acd",
                    Lb: "add8e6",
                    Lcr: "08080",
                    Lcn: "e0ffff",
                    Lgnr: "afad2",
                    Lgr: "d3d3d3",
                    Lgrn: "90ee90",
                    Lpnk: "b6c1",
                    Lsmn: "a07a",
                    Lsgr: "20b2aa",
                    Lskb: "87cefa",
                    LsTg: "778899",
                    Lstb: "b0c4de",
                    Lw: "e0",
                    m: "-ff-",
                    mgrn: "32cd32",
                    nn: "af0e6",
                    mgnt: "-ff",
                    mrn: "8--0",
                    mqm: "66cdaa",
                    mmb: "--cd",
                    mmrc: "ba55d3",
                    mmpr: "9370db",
                    msg: "3cb371",
                    mmsT: "7b68ee",
                    "": "-fa9a",
                    mtr: "48d1cc",
                    mmvt: "c71585",
                    mnLb: "191970",
                    ntc: "5fffa",
                    mstr: "e4e1",
                    mccs: "e4b5",
                    vjw: "dead",
                    nv: "--80",
                    c: "df5e6",
                    v: "808-0",
                    vrb: "6b8e23",
                    rng: "a5-",
                    rngr: "45-",
                    rch: "da70d6",
                    pgnr: "eee8aa",
                    pgrn: "98fb98",
                    ptrq: "afeeee",
                    pvtr: "db7093",
                    ppwh: "efd5",
                    pchp: "dab9",
                    pr: "cd853f",
                    pnk: "c0cb",
                    pm: "dda0dd",
                    pwrb: "b0e0e6",
                    prp: "8-080",
                    cc: "663399",
                    r: "--",
                    sbr: "bc8f8f",
                    rb: "4169e1",
                    sbrw: "8b4513",
                    smn: "a8072",
                    nbr: "4a460",
                    sgrn: "2e8b57",
                    ssh: "5ee",
                    snn: "a0522d",
                    svr: "c0c0c0",
                    skb: "87ceeb",
                    sTb: "6a5acd",
                    sTgr: "708090",
                    snw: "afa",
                    n: "-ff7f",
                    stb: "4682b4",
                    tn: "d2b48c",
                    t: "-8080",
                    thst: "d8bfd8",
                    tmT: "6347",
                    trqs: "40e0d0",
                    vt: "ee82ee",
                    whT: "5deb3",
                    wht: "",
                    hts: "5f5f5",
                    w: "-",
                    wgrn: "9acd32"
                };

                function r(e) {
                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
                        n = t > 0 ? e.toFixed(t).replace(/0+$/, "").replace(/\.$/, "") : e.toString();
                    return n || "0"
                }

                var o = function () {
                    function o(t, i, r, a) {
                        e(this, o);
                        var s = this;
                        if (void 0 === t) ; else if (Array.isArray(t)) this.rgba = t; else if (void 0 === r) {
                            var l = t && "" + t;
                            l && function (e) {
                                if (e.startsWith("hsl")) {
                                    var t = e.match(/([\-\d\.e]+)/g).map(Number), i = n(t, 4), r = i[0], a = i[1],
                                        l = i[2], c = i[3];
                                    void 0 === c && (c = 1), r /= 360, a /= 100, l /= 100, s.hsla = [r, a, l, c]
                                } else if (e.startsWith("rgb")) {
                                    var u = e.match(/([\-\d\.e]+)/g).map(Number), h = n(u, 4), d = h[0], f = h[1],
                                        g = h[2], p = h[3];
                                    void 0 === p && (p = 1), s.rgba = [d, f, g, p]
                                } else e.startsWith("#") ? s.rgba = o.hexToRgb(e) : s.rgba = o.nameToRgb(e) || o.hexToRgb(e)
                            }(l.toLowerCase())
                        } else this.rgba = [t, i, r, void 0 === a ? 1 : a]
                    }

                    return t(o, [{
                        key: "printRGB", value: function (e) {
                            var t = (e ? this.rgba : this.rgba.slice(0, 3)).map((function (e, t) {
                                return r(e, 3 === t ? 3 : 0)
                            }));
                            return e ? "rgba(" + t + ")" : "rgb(" + t + ")"
                        }
                    }, {
                        key: "printHSL", value: function (e) {
                            var t = [360, 100, 100, 1], n = ["", "%", "%", ""],
                                i = (e ? this.hsla : this.hsla.slice(0, 3)).map((function (e, i) {
                                    return r(e * t[i], 3 === i ? 3 : 1) + n[i]
                                }));
                            return e ? "hsla(" + i + ")" : "hsl(" + i + ")"
                        }
                    }, {
                        key: "printHex", value: function (e) {
                            var t = this.hex;
                            return e ? t : t.substring(0, 7)
                        }
                    }, {
                        key: "rgba", get: function () {
                            if (this._rgba) return this._rgba;
                            if (!this._hsla) throw new Error("No color is set");
                            return this._rgba = o.hslToRgb(this._hsla)
                        }, set: function (e) {
                            3 === e.length && (e[3] = 1), this._rgba = e, this._hsla = null
                        }
                    }, {
                        key: "rgbString", get: function () {
                            return this.printRGB()
                        }
                    }, {
                        key: "rgbaString", get: function () {
                            return this.printRGB(!0)
                        }
                    }, {
                        key: "hsla", get: function () {
                            if (this._hsla) return this._hsla;
                            if (!this._rgba) throw new Error("No color is set");
                            return this._hsla = o.rgbToHsl(this._rgba)
                        }, set: function (e) {
                            3 === e.length && (e[3] = 1), this._hsla = e, this._rgba = null
                        }
                    }, {
                        key: "hslString", get: function () {
                            return this.printHSL()
                        }
                    }, {
                        key: "hslaString", get: function () {
                            return this.printHSL(!0)
                        }
                    }, {
                        key: "hex", get: function () {
                            return "#" + this.rgba.map((function (e, t) {
                                return t < 3 ? e.toString(16) : Math.round(255 * e).toString(16)
                            })).map((function (e) {
                                return e.padStart(2, "0")
                            })).join("")
                        }, set: function (e) {
                            this.rgba = o.hexToRgb(e)
                        }
                    }], [{
                        key: "hexToRgb", value: function (e) {
                            var t = (e.startsWith("#") ? e.slice(1) : e).replace(/^(\w{3})$/, "$1F").replace(/^(\w)(\w)(\w)(\w)$/, "$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/, "$1FF");
                            if (!t.match(/^([0-9a-fA-F]{8})$/)) throw new Error("Unknown hex color; " + e);
                            var n = t.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map((function (e) {
                                return parseInt(e, 16)
                            }));
                            return n[3] = n[3] / 255, n
                        }
                    }, {
                        key: "nameToRgb", value: function (e) {
                            var t = e.toLowerCase().replace("at", "T").replace(/[aeiouyldf]/g, "").replace("ght", "L").replace("rk", "D").slice(-5, 4),
                                n = i[t];
                            return void 0 === n ? n : o.hexToRgb(n.replace(/\-/g, "00").padStart(6, "f"))
                        }
                    }, {
                        key: "rgbToHsl", value: function (e) {
                            var t = n(e, 4), i = t[0], r = t[1], o = t[2], a = t[3];
                            i /= 255, r /= 255, o /= 255;
                            var s = Math.max(i, r, o), l = Math.min(i, r, o), c = void 0, u = void 0, h = (s + l) / 2;
                            if (s === l) c = u = 0; else {
                                var d = s - l;
                                switch (u = h > .5 ? d / (2 - s - l) : d / (s + l), s) {
                                    case i:
                                        c = (r - o) / d + (r < o ? 6 : 0);
                                        break;
                                    case r:
                                        c = (o - i) / d + 2;
                                        break;
                                    case o:
                                        c = (i - r) / d + 4
                                }
                                c /= 6
                            }
                            return [c, u, h, a]
                        }
                    }, {
                        key: "hslToRgb", value: function (e) {
                            var t = n(e, 4), i = t[0], r = t[1], o = t[2], a = t[3], s = void 0, l = void 0, c = void 0;
                            if (0 === r) s = l = c = o; else {
                                var u = function (e, t, n) {
                                    return n < 0 && (n += 1), n > 1 && (n -= 1), n < 1 / 6 ? e + 6 * (t - e) * n : n < .5 ? t : n < 2 / 3 ? e + (t - e) * (2 / 3 - n) * 6 : e
                                }, h = o < .5 ? o * (1 + r) : o + r - o * r, d = 2 * o - h;
                                s = u(d, h, i + 1 / 3), l = u(d, h, i), c = u(d, h, i - 1 / 3)
                            }
                            var f = [255 * s, 255 * l, 255 * c].map(Math.round);
                            return f[3] = a, f
                        }
                    }]), o
                }(), a = function () {
                    function n() {
                        e(this, n), this._events = []
                    }

                    return t(n, [{
                        key: "add", value: function (e, t, n) {
                            e.addEventListener(t, n, !1), this._events.push({target: e, type: t, handler: n})
                        }
                    }, {
                        key: "remove", value: function (e, t, i) {
                            this._events = this._events.filter((function (r) {
                                var o = !0;
                                return e && e !== r.target && (o = !1), t && t !== r.type && (o = !1), i && i !== r.handler && (o = !1), o && n._doRemove(r.target, r.type, r.handler), !o
                            }))
                        }
                    }, {
                        key: "destroy", value: function () {
                            this._events.forEach((function (e) {
                                return n._doRemove(e.target, e.type, e.handler)
                            })), this._events = []
                        }
                    }], [{
                        key: "_doRemove", value: function (e, t, n) {
                            e.removeEventListener(t, n, !1)
                        }
                    }]), n
                }();

                function s(e, t, n) {
                    var i = !1;

                    function r(e, t, n) {
                        return Math.max(t, Math.min(e, n))
                    }

                    function o(e, o, a) {
                        if (a && (i = !0), i) {
                            e.preventDefault();
                            var s = t.getBoundingClientRect(), l = s.width, c = s.height, u = o.clientX, h = o.clientY,
                                d = r(u - s.left, 0, l), f = r(h - s.top, 0, c);
                            n(d / l, f / c)
                        }
                    }

                    function a(e, t) {
                        1 === (void 0 === e.buttons ? e.which : e.buttons) ? o(e, e, t) : i = !1
                    }

                    function s(e, t) {
                        1 === e.touches.length ? o(e, e.touches[0], t) : i = !1
                    }

                    e.add(t, "mousedown", (function (e) {
                        a(e, !0)
                    })), e.add(t, "touchstart", (function (e) {
                        s(e, !0)
                    })), e.add(window, "mousemove", a), e.add(t, "touchmove", s), e.add(window, "mouseup", (function (e) {
                        i = !1
                    })), e.add(t, "touchend", (function (e) {
                        i = !1
                    })), e.add(t, "touchcancel", (function (e) {
                        i = !1
                    }))
                }

                function l(e, t) {
                    return (t || document).querySelector(e)
                }

                function c(e) {
                    e.preventDefault(), e.stopPropagation()
                }

                function u(e, t, n, i, r) {
                    e.add(t, "keydown", (function (e) {
                        n.indexOf(e.key) >= 0 && (r && c(e), i(e))
                    }))
                }

                var h = document.createElement("style");
                return h.textContent = ".picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{position:absolute;z-index:-1;opacity:0}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:stretch;align-items:stretch;font-size:10px;width:25em;padding:.5em}.layout_default.picker_wrapper input,.layout_default.picker_wrapper button{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper::before{content:'';display:block;width:100%;height:0;-webkit-box-ordinal-group:2;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{-webkit-box-flex:1;flex:1 1 auto}.layout_default .picker_sl::before{content:'';display:block;padding-bottom:100%}.layout_default .picker_editor{-webkit-box-ordinal-group:2;order:1;width:6.5rem}.layout_default .picker_editor input{width:100%;height:100%}.layout_default .picker_sample{-webkit-box-ordinal-group:2;order:1;-webkit-box-flex:1;flex:1 1 auto}.layout_default .picker_done,.layout_default .picker_cancel{-webkit-box-ordinal-group:2;order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{box-sizing:border-box;border:none;box-shadow:0 0 0 1px silver;outline:none}.picker_wrapper button:focus,.picker_wrapper button:active,.picker_wrapper input:focus,.picker_wrapper input:active{box-shadow:0 0 2px 1px dodgerblue}.picker_wrapper button{padding:.4em .6em;cursor:pointer;background-color:whitesmoke;background-image:-webkit-gradient(linear, left bottom, left top, from(gainsboro), to(transparent));background-image:-webkit-linear-gradient(bottom, gainsboro, transparent);background-image:linear-gradient(0deg, gainsboro, transparent)}.picker_wrapper button:active{background-image:-webkit-gradient(linear, left bottom, left top, from(transparent), to(gainsboro));background-image:-webkit-linear-gradient(bottom, transparent, gainsboro);background-image:linear-gradient(0deg, transparent, gainsboro)}.picker_wrapper button:hover{background-color:white}.picker_selector{position:absolute;z-index:1;display:block;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border:2px solid white;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:-webkit-gradient(linear, left top, right top, from(red), color-stop(yellow), color-stop(lime), color-stop(cyan), color-stop(blue), color-stop(magenta), to(red));background-image:-webkit-linear-gradient(left, red, yellow, lime, cyan, blue, magenta, red);background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:-webkit-gradient(linear, left top, left bottom, from(white), color-stop(50%, rgba(255,255,255,0))),-webkit-gradient(linear, left bottom, left top, from(black), color-stop(50%, rgba(0,0,0,0))),-webkit-gradient(linear, left top, right top, from(gray), to(rgba(128,128,128,0)));background-image:-webkit-linear-gradient(top, white, rgba(255,255,255,0) 50%),-webkit-linear-gradient(bottom, black, rgba(0,0,0,0) 50%),-webkit-linear-gradient(left, gray, rgba(128,128,128,0));background-image:linear-gradient(180deg, white, rgba(255,255,255,0) 50%),linear-gradient(0deg, black, rgba(0,0,0,0) 50%),linear-gradient(90deg, gray, rgba(128,128,128,0))}.picker_alpha,.picker_sample{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Cpath d='M1,0H0V1H2V2H1' fill='lightgrey'/%3E%3C/svg%3E\") left top/contain white;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample::before{content:'';position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,0.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:\"\";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;-webkit-transform:rotate(90deg) scale(1, -1);transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}", document.documentElement.firstElementChild.appendChild(h), function () {
                    function n(t) {
                        e(this, n), this.settings = {
                            popup: "right",
                            layout: "default",
                            alpha: !0,
                            editor: !0,
                            editorFormat: "hex",
                            cancelButton: !1,
                            defaultColor: "#0cf"
                        }, this._events = new a, this.onChange = null, this.onDone = null, this.onOpen = null, this.onClose = null, this.setOptions(t)
                    }

                    return t(n, [{
                        key: "setOptions", value: function (e) {
                            var t = this;
                            if (e) {
                                var n = this.settings;
                                if (e instanceof HTMLElement) n.parent = e; else {
                                    n.parent && e.parent && n.parent !== e.parent && (this._events.remove(n.parent), this._popupInited = !1), function (e, t, n) {
                                        for (var i in e) n && n.indexOf(i) >= 0 || (t[i] = e[i])
                                    }(e, n), e.onChange && (this.onChange = e.onChange), e.onDone && (this.onDone = e.onDone), e.onOpen && (this.onOpen = e.onOpen), e.onClose && (this.onClose = e.onClose);
                                    var i = e.color || e.colour;
                                    i && this._setColor(i)
                                }
                                var r = n.parent;
                                if (r && n.popup && !this._popupInited) {
                                    var o = function (e) {
                                        return t.openHandler(e)
                                    };
                                    this._events.add(r, "click", o), u(this._events, r, [" ", "Spacebar", "Enter"], o), this._popupInited = !0
                                } else e.parent && !n.popup && this.show()
                            }
                        }
                    }, {
                        key: "openHandler", value: function (e) {
                            if (this.show()) {
                                e && e.preventDefault(), this.settings.parent.style.pointerEvents = "none";
                                var t = e && "keydown" === e.type ? this._domEdit : this.domElement;
                                setTimeout((function () {
                                    return t.focus()
                                }), 100), this.onOpen && this.onOpen(this.colour)
                            }
                        }
                    }, {
                        key: "closeHandler", value: function (e) {
                            var t = e && e.type, n = !1;
                            if (e) if ("mousedown" === t || "focusin" === t) {
                                var i = (this.__containedEvent || 0) + 100;
                                e.timeStamp > i && (n = !0)
                            } else c(e), n = !0; else n = !0;
                            n && this.hide() && (this.settings.parent.style.pointerEvents = "", "mousedown" !== t && this.settings.parent.focus(), this.onClose && this.onClose(this.colour))
                        }
                    }, {
                        key: "movePopup", value: function (e, t) {
                            this.closeHandler(), this.setOptions(e), t && this.openHandler()
                        }
                    }, {
                        key: "setColor", value: function (e, t) {
                            this._setColor(e, {silent: t})
                        }
                    }, {
                        key: "_setColor", value: function (e, t) {
                            if ("string" == typeof e && (e = e.trim()), e) {
                                t = t || {};
                                var n = void 0;
                                try {
                                    n = new o(e)
                                } catch (e) {
                                    if (t.failSilently) return;
                                    throw e
                                }
                                if (!this.settings.alpha) {
                                    var i = n.hsla;
                                    i[3] = 1, n.hsla = i
                                }
                                this.colour = this.color = n, this._setHSLA(null, null, null, null, t)
                            }
                        }
                    }, {
                        key: "setColour", value: function (e, t) {
                            this.setColor(e, t)
                        }
                    }, {
                        key: "show", value: function () {
                            if (!this.settings.parent) return !1;
                            if (this.domElement) {
                                var e = this._toggleDOM(!0);
                                return this._setPosition(), e
                            }
                            var t, n,
                                i = this.settings.template || '<div class="picker_wrapper" tabindex="-1"><div class="picker_arrow"></div><div class="picker_hue picker_slider"><div class="picker_selector"></div></div><div class="picker_sl"><div class="picker_selector"></div></div><div class="picker_alpha picker_slider"><div class="picker_selector"></div></div><div class="picker_editor"><input aria-label="Type a color name or hex value"/></div><div class="picker_sample"></div><div class="picker_done"><button>Ok</button></div><div class="picker_cancel"><button>Cancel</button></div></div>',
                                r = (t = i, (n = document.createElement("div")).innerHTML = t, n.firstElementChild);
                            return this.domElement = r, this._domH = l(".picker_hue", r), this._domSL = l(".picker_sl", r), this._domA = l(".picker_alpha", r), this._domEdit = l(".picker_editor input", r), this._domSample = l(".picker_sample", r), this._domOkay = l(".picker_done button", r), this._domCancel = l(".picker_cancel button", r), r.classList.add("layout_" + this.settings.layout), this.settings.alpha || r.classList.add("no_alpha"), this.settings.editor || r.classList.add("no_editor"), this.settings.cancelButton || r.classList.add("no_cancel"), this._ifPopup((function () {
                                return r.classList.add("popup")
                            })), this._setPosition(), this.colour ? this._updateUI() : this._setColor(this.settings.defaultColor), this._bindEvents(), !0
                        }
                    }, {
                        key: "hide", value: function () {
                            return this._toggleDOM(!1)
                        }
                    }, {
                        key: "destroy", value: function () {
                            this._events.destroy(), this.domElement && this.settings.parent.removeChild(this.domElement)
                        }
                    }, {
                        key: "_bindEvents", value: function () {
                            var e = this, t = this, n = this.domElement, i = this._events;

                            function r(e, t, n) {
                                i.add(e, t, n)
                            }

                            r(n, "click", (function (e) {
                                return e.preventDefault()
                            })), s(i, this._domH, (function (e, n) {
                                return t._setHSLA(e)
                            })), s(i, this._domSL, (function (e, n) {
                                return t._setHSLA(null, e, 1 - n)
                            })), this.settings.alpha && s(i, this._domA, (function (e, n) {
                                return t._setHSLA(null, null, null, 1 - n)
                            }));
                            var o = this._domEdit;
                            r(o, "input", (function (e) {
                                t._setColor(this.value, {fromEditor: !0, failSilently: !0})
                            })), r(o, "focus", (function (e) {
                                this.selectionStart === this.selectionEnd && this.select()
                            })), this._ifPopup((function () {
                                var t = function (t) {
                                    return e.closeHandler(t)
                                };
                                r(window, "mousedown", t), r(window, "focusin", t), u(i, n, ["Esc", "Escape"], t);
                                var o = function (t) {
                                    e.__containedEvent = t.timeStamp
                                };
                                r(n, "mousedown", o), r(n, "focusin", o), r(e._domCancel, "click", t)
                            }));
                            var a = function (t) {
                                e._ifPopup((function () {
                                    return e.closeHandler(t)
                                })), e.onDone && e.onDone(e.colour)
                            };
                            r(this._domOkay, "click", a), u(i, n, ["Enter"], a)
                        }
                    }, {
                        key: "_setPosition", value: function () {
                            var e = this.settings.parent, t = this.domElement;
                            e !== t.parentNode && e.appendChild(t), this._ifPopup((function (n) {
                                "static" === getComputedStyle(e).position && (e.style.position = "relative");
                                var i = !0 === n ? "popup_right" : "popup_" + n;
                                ["popup_top", "popup_bottom", "popup_left", "popup_right"].forEach((function (e) {
                                    e === i ? t.classList.add(e) : t.classList.remove(e)
                                })), t.classList.add(i)
                            }))
                        }
                    }, {
                        key: "_setHSLA", value: function (e, t, n, i, r) {
                            r = r || {};
                            var o = this.colour, a = o.hsla;
                            [e, t, n, i].forEach((function (e, t) {
                                (e || 0 === e) && (a[t] = e)
                            })), o.hsla = a, this._updateUI(r), this.onChange && !r.silent && this.onChange(o)
                        }
                    }, {
                        key: "_updateUI", value: function (e) {
                            if (this.domElement) {
                                e = e || {};
                                var t = this.colour, n = t.hsla, i = "hsl(" + 360 * n[0] + ", 100%, 50%)",
                                    r = t.hslString, o = t.hslaString, a = this._domH, s = this._domSL, c = this._domA,
                                    u = l(".picker_selector", a), h = l(".picker_selector", s),
                                    d = l(".picker_selector", c);
                                b(0, u, n[0]), this._domSL.style.backgroundColor = this._domH.style.color = i, b(0, h, n[1]), C(0, h, 1 - n[2]), s.style.color = r, C(0, d, 1 - n[3]);
                                var f = r, g = f.replace("hsl", "hsla").replace(")", ", 0)"),
                                    p = "linear-gradient(" + [f, g] + ")";
                                if (this._domA.style.backgroundImage = p + ", url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Cpath d='M1,0H0V1H2V2H1' fill='lightgrey'/%3E%3C/svg%3E\")", !e.fromEditor) {
                                    var m = this.settings.editorFormat, v = this.settings.alpha, y = void 0;
                                    switch (m) {
                                        case"rgb":
                                            y = t.printRGB(v);
                                            break;
                                        case"hsl":
                                            y = t.printHSL(v);
                                            break;
                                        default:
                                            y = t.printHex(v)
                                    }
                                    this._domEdit.value = y
                                }
                                this._domSample.style.color = o
                            }

                            function b(e, t, n) {
                                t.style.left = 100 * n + "%"
                            }

                            function C(e, t, n) {
                                t.style.top = 100 * n + "%"
                            }
                        }
                    }, {
                        key: "_ifPopup", value: function (e, t) {
                            this.settings.parent && this.settings.popup ? e && e(this.settings.popup) : t && t()
                        }
                    }, {
                        key: "_toggleDOM", value: function (e) {
                            var t = this.domElement;
                            if (!t) return !1;
                            var n = e ? "" : "none", i = t.style.display !== n;
                            return i && (t.style.display = n), i
                        }
                    }], [{
                        key: "StyleElement", get: function () {
                            return h
                        }
                    }]), n
                }()
            }()
        }, function (e, t) {
            window.ace.define("ace/theme/jsoneditor", ["require", "exports", "module", "ace/lib/dom"], (function (e, t, n) {
                t.isDark = !1, t.cssClass = "ace-jsoneditor", t.cssText = '.ace-jsoneditor .ace_gutter {\nbackground: #ebebeb;\ncolor: #333\n}\n\n.ace-jsoneditor.ace_editor {\nfont-family: "dejavu sans mono", "droid sans mono", consolas, monaco, "lucida console", "courier new", courier, monospace, sans-serif;\nline-height: 1.3;\nbackground-color: #fff;\n}\n.ace-jsoneditor .ace_print-margin {\nwidth: 1px;\nbackground: #e8e8e8\n}\n.ace-jsoneditor .ace_scroller {\nbackground-color: #FFFFFF\n}\n.ace-jsoneditor .ace_text-layer {\ncolor: gray\n}\n.ace-jsoneditor .ace_variable {\ncolor: #1a1a1a\n}\n.ace-jsoneditor .ace_cursor {\nborder-left: 2px solid #000000\n}\n.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\nborder-left: 0px;\nborder-bottom: 1px solid #000000\n}\n.ace-jsoneditor .ace_marker-layer .ace_selection {\nbackground: lightgray\n}\n.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\nbox-shadow: 0 0 3px 0px #FFFFFF;\nborder-radius: 2px\n}\n.ace-jsoneditor .ace_marker-layer .ace_step {\nbackground: rgb(255, 255, 0)\n}\n.ace-jsoneditor .ace_marker-layer .ace_bracket {\nmargin: -1px 0 0 -1px;\nborder: 1px solid #BFBFBF\n}\n.ace-jsoneditor .ace_marker-layer .ace_active-line {\nbackground: #FFFBD1\n}\n.ace-jsoneditor .ace_gutter-active-line {\nbackground-color : #dcdcdc\n}\n.ace-jsoneditor .ace_marker-layer .ace_selected-word {\nborder: 1px solid lightgray\n}\n.ace-jsoneditor .ace_invisible {\ncolor: #BFBFBF\n}\n.ace-jsoneditor .ace_keyword,\n.ace-jsoneditor .ace_meta,\n.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\ncolor: #AF956F\n}\n.ace-jsoneditor .ace_keyword.ace_operator {\ncolor: #484848\n}\n.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\ncolor: #96DC5F\n}\n.ace-jsoneditor .ace_constant.ace_language {\ncolor: darkorange\n}\n.ace-jsoneditor .ace_constant.ace_numeric {\ncolor: red\n}\n.ace-jsoneditor .ace_constant.ace_character.ace_entity {\ncolor: #BF78CC\n}\n.ace-jsoneditor .ace_invalid {\ncolor: #FFFFFF;\nbackground-color: #FF002A;\n}\n.ace-jsoneditor .ace_fold {\nbackground-color: #AF956F;\nborder-color: #000000\n}\n.ace-jsoneditor .ace_storage,\n.ace-jsoneditor .ace_support.ace_class,\n.ace-jsoneditor .ace_support.ace_function,\n.ace-jsoneditor .ace_support.ace_other,\n.ace-jsoneditor .ace_support.ace_type {\ncolor: #C52727\n}\n.ace-jsoneditor .ace_string {\ncolor: green\n}\n.ace-jsoneditor .ace_comment {\ncolor: #BCC8BA\n}\n.ace-jsoneditor .ace_entity.ace_name.ace_tag,\n.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\ncolor: #606060\n}\n.ace-jsoneditor .ace_markup.ace_underline {\ntext-decoration: underline\n}\n.ace-jsoneditor .ace_indent-guide {\nbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\n}', e("../lib/dom").importCssString(t.cssText, t.cssClass)
            }))
        }, function (e, t, n) {
            t.tryRequireAjv = function () {
                try {
                    return n(44)
                } catch (e) {
                }
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(45), r = n(17), o = n(49), a = n(25), s = n(26), l = n(50), c = n(51), u = n(72), h = n(7);
            e.exports = v, v.prototype.validate = function (e, t) {
                var n;
                if ("string" == typeof e) {
                    if (!(n = this.getSchema(e))) throw new Error('no schema with key or ref "' + e + '"')
                } else {
                    var i = this._addSchema(e);
                    n = i.validate || this._compile(i)
                }
                var r = n(t);
                return !0 !== n.$async && (this.errors = n.errors), r
            }, v.prototype.compile = function (e, t) {
                var n = this._addSchema(e, void 0, t);
                return n.validate || this._compile(n)
            }, v.prototype.addSchema = function (e, t, n, i) {
                if (Array.isArray(e)) {
                    for (var o = 0; o < e.length; o++) this.addSchema(e[o], void 0, n, i);
                    return this
                }
                var a = this._getId(e);
                if (void 0 !== a && "string" != typeof a) throw new Error("schema id must be string");
                return x(this, t = r.normalizeId(t || a)), this._schemas[t] = this._addSchema(e, n, i, !0), this
            }, v.prototype.addMetaSchema = function (e, t, n) {
                return this.addSchema(e, t, n, !0), this
            }, v.prototype.validateSchema = function (e, t) {
                var n = e.$schema;
                if (void 0 !== n && "string" != typeof n) throw new Error("$schema must be a string");
                if (!(n = n || this._opts.defaultMeta || function (e) {
                    var t = e._opts.meta;
                    return e._opts.defaultMeta = "object" == typeof t ? e._getId(t) || t : e.getSchema(g) ? g : void 0, e._opts.defaultMeta
                }(this))) return this.logger.warn("meta-schema not available"), this.errors = null, !0;
                var i = this.validate(n, e);
                if (!i && t) {
                    var r = "schema is invalid: " + this.errorsText();
                    if ("log" != this._opts.validateSchema) throw new Error(r);
                    this.logger.error(r)
                }
                return i
            }, v.prototype.getSchema = function (e) {
                var t = y(this, e);
                switch (typeof t) {
                    case"object":
                        return t.validate || this._compile(t);
                    case"string":
                        return this.getSchema(t);
                    case"undefined":
                        return function (e, t) {
                            var n = r.schema.call(e, {schema: {}}, t);
                            if (n) {
                                var o = n.schema, s = n.root, l = n.baseId, c = i.call(e, o, s, void 0, l);
                                return e._fragments[t] = new a({
                                    ref: t,
                                    fragment: !0,
                                    schema: o,
                                    root: s,
                                    baseId: l,
                                    validate: c
                                }), c
                            }
                        }(this, e)
                }
            }, v.prototype.removeSchema = function (e) {
                if (e instanceof RegExp) return b(this, this._schemas, e), b(this, this._refs, e), this;
                switch (typeof e) {
                    case"undefined":
                        return b(this, this._schemas), b(this, this._refs), this._cache.clear(), this;
                    case"string":
                        var t = y(this, e);
                        return t && this._cache.del(t.cacheKey), delete this._schemas[e], delete this._refs[e], this;
                    case"object":
                        var n = this._opts.serialize, i = n ? n(e) : e;
                        this._cache.del(i);
                        var o = this._getId(e);
                        o && (o = r.normalizeId(o), delete this._schemas[o], delete this._refs[o])
                }
                return this
            }, v.prototype.addFormat = function (e, t) {
                return "string" == typeof t && (t = new RegExp(t)), this._formats[e] = t, this
            }, v.prototype.errorsText = function (e, t) {
                if (!(e = e || this.errors)) return "No errors";
                for (var n = void 0 === (t = t || {}).separator ? ", " : t.separator, i = void 0 === t.dataVar ? "data" : t.dataVar, r = "", o = 0; o < e.length; o++) {
                    var a = e[o];
                    a && (r += i + a.dataPath + " " + a.message + n)
                }
                return r.slice(0, -n.length)
            }, v.prototype._addSchema = function (e, t, n, i) {
                if ("object" != typeof e && "boolean" != typeof e) throw new Error("schema should be object or boolean");
                var o = this._opts.serialize, s = o ? o(e) : e, l = this._cache.get(s);
                if (l) return l;
                i = i || !1 !== this._opts.addUsedSchema;
                var c = r.normalizeId(this._getId(e));
                c && i && x(this, c);
                var u, h = !1 !== this._opts.validateSchema && !t;
                h && !(u = c && c == r.normalizeId(e.$schema)) && this.validateSchema(e, !0);
                var d = r.ids.call(this, e), f = new a({id: c, schema: e, localRefs: d, cacheKey: s, meta: n});
                return "#" != c[0] && i && (this._refs[c] = f), this._cache.put(s, f), h && u && this.validateSchema(e, !0), f
            }, v.prototype._compile = function (e, t) {
                if (e.compiling) return e.validate = o, o.schema = e.schema, o.errors = null, o.root = t || o, !0 === e.schema.$async && (o.$async = !0), o;
                var n, r;
                e.compiling = !0, e.meta && (n = this._opts, this._opts = this._metaOpts);
                try {
                    r = i.call(this, e.schema, t, e.localRefs)
                } catch (t) {
                    throw delete e.validate, t
                } finally {
                    e.compiling = !1, e.meta && (this._opts = n)
                }
                return e.validate = r, e.refs = r.refs, e.refVal = r.refVal, e.root = r.root, r;

                function o() {
                    var t = e.validate, n = t.apply(this, arguments);
                    return o.errors = t.errors, n
                }
            }, v.prototype.compileAsync = n(73);
            var d = n(74);
            v.prototype.addKeyword = d.add, v.prototype.getKeyword = d.get, v.prototype.removeKeyword = d.remove, v.prototype.validateKeyword = d.validate;
            var f = n(19);
            v.ValidationError = f.Validation, v.MissingRefError = f.MissingRef, v.$dataMetaSchema = u;
            var g = "http://json-schema.org/draft-07/schema",
                p = ["removeAdditional", "useDefaults", "coerceTypes", "strictDefaults"], m = ["/properties"];

            function v(e) {
                if (!(this instanceof v)) return new v(e);
                e = this._opts = h.copy(e) || {}, function (e) {
                    var t = e._opts.logger;
                    if (!1 === t) e.logger = {log: A, warn: A, error: A}; else {
                        if (void 0 === t && (t = console), !("object" == typeof t && t.log && t.warn && t.error)) throw new Error("logger must implement log, warn and error methods");
                        e.logger = t
                    }
                }(this), this._schemas = {}, this._refs = {}, this._fragments = {}, this._formats = l(e.format), this._cache = e.cache || new o, this._loadingSchemas = {}, this._compilations = [], this.RULES = c(), this._getId = function (e) {
                    switch (e.schemaId) {
                        case"auto":
                            return I;
                        case"id":
                            return C;
                        default:
                            return w
                    }
                }(e), e.loopRequired = e.loopRequired || 1 / 0, "property" == e.errorDataPath && (e._errorDataPathProperty = !0), void 0 === e.serialize && (e.serialize = s), this._metaOpts = function (e) {
                    for (var t = h.copy(e._opts), n = 0; n < p.length; n++) delete t[p[n]];
                    return t
                }(this), e.formats && function (e) {
                    for (var t in e._opts.formats) {
                        var n = e._opts.formats[t];
                        e.addFormat(t, n)
                    }
                }(this), e.keywords && function (e) {
                    for (var t in e._opts.keywords) {
                        var n = e._opts.keywords[t];
                        e.addKeyword(t, n)
                    }
                }(this), function (e) {
                    var t;
                    if (e._opts.$data && (t = n(77), e.addMetaSchema(t, t.$id, !0)), !1 !== e._opts.meta) {
                        var i = n(32);
                        e._opts.$data && (i = u(i, m)), e.addMetaSchema(i, g, !0), e._refs["http://json-schema.org/schema"] = g
                    }
                }(this), "object" == typeof e.meta && this.addMetaSchema(e.meta), e.nullable && this.addKeyword("nullable", {metaSchema: {type: "boolean"}}), function (e) {
                    var t = e._opts.schemas;
                    if (t) if (Array.isArray(t)) e.addSchema(t); else for (var n in t) e.addSchema(t[n], n)
                }(this)
            }

            function y(e, t) {
                return t = r.normalizeId(t), e._schemas[t] || e._refs[t] || e._fragments[t]
            }

            function b(e, t, n) {
                for (var i in t) {
                    var r = t[i];
                    r.meta || n && !n.test(i) || (e._cache.del(r.cacheKey), delete t[i])
                }
            }

            function C(e) {
                return e.$id && this.logger.warn("schema $id ignored", e.$id), e.id
            }

            function w(e) {
                return e.id && this.logger.warn("schema id ignored", e.id), e.$id
            }

            function I(e) {
                if (e.$id && e.id && e.$id != e.id) throw new Error("schema $id is different from id");
                return e.$id || e.id
            }

            function x(e, t) {
                if (e._schemas[t] || e._refs[t]) throw new Error('schema with key or id "' + t + '" already exists')
            }

            function A() {
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(17), r = n(7), o = n(19), a = n(26), s = n(27), l = r.ucs2length, c = n(18), u = o.Validation;

            function h(e, t, n) {
                var i = f.call(this, e, t, n);
                return i >= 0 ? {
                    index: i,
                    compiling: !0
                } : (i = this._compilations.length, this._compilations[i] = {schema: e, root: t, baseId: n}, {
                    index: i,
                    compiling: !1
                })
            }

            function d(e, t, n) {
                var i = f.call(this, e, t, n);
                i >= 0 && this._compilations.splice(i, 1)
            }

            function f(e, t, n) {
                for (var i = 0; i < this._compilations.length; i++) {
                    var r = this._compilations[i];
                    if (r.schema == e && r.root == t && r.baseId == n) return i
                }
                return -1
            }

            function g(e, t) {
                return "var pattern" + e + " = new RegExp(" + r.toQuotedString(t[e]) + ");"
            }

            function p(e) {
                return "var default" + e + " = defaults[" + e + "];"
            }

            function m(e, t) {
                return void 0 === t[e] ? "" : "var refVal" + e + " = refVal[" + e + "];"
            }

            function v(e) {
                return "var customRule" + e + " = customRules[" + e + "];"
            }

            function y(e, t) {
                if (!e.length) return "";
                for (var n = "", i = 0; i < e.length; i++) n += t(i, e);
                return n
            }

            e.exports = function e(t, n, f, b) {
                var C = this, w = this._opts, I = [void 0], x = {}, A = [], _ = {}, S = [], k = {}, L = [];
                n = n || {schema: t, refVal: I, refs: x};
                var T = h.call(this, t, n, b), O = this._compilations[T.index];
                if (T.compiling) return O.callValidate = function e() {
                    var t = O.validate, n = t.apply(this, arguments);
                    return e.errors = t.errors, n
                };
                var R = this._formats, E = this.RULES;
                try {
                    var P = N(t, n, f, b);
                    O.validate = P;
                    var M = O.callValidate;
                    return M && (M.schema = P.schema, M.errors = null, M.refs = P.refs, M.refVal = P.refVal, M.root = P.root, M.$async = P.$async, w.sourceCode && (M.source = P.source)), P
                } finally {
                    d.call(this, t, n, b)
                }

                function N(t, a, h, d) {
                    var f = !a || a && a.schema == t;
                    if (a.schema != n.schema) return e.call(C, t, a, h, d);
                    var b, _ = !0 === t.$async, k = s({
                        isTop: !0,
                        schema: t,
                        isRoot: f,
                        baseId: d,
                        root: a,
                        schemaPath: "",
                        errSchemaPath: "#",
                        errorPath: '""',
                        MissingRefError: o.MissingRef,
                        RULES: E,
                        validate: s,
                        util: r,
                        resolve: i,
                        resolveRef: D,
                        usePattern: F,
                        useDefault: H,
                        useCustomRule: W,
                        opts: w,
                        formats: R,
                        logger: C.logger,
                        self: C
                    });
                    k = y(I, m) + y(A, g) + y(S, p) + y(L, v) + k, w.processCode && (k = w.processCode(k));
                    try {
                        b = new Function("self", "RULES", "formats", "root", "refVal", "defaults", "customRules", "equal", "ucs2length", "ValidationError", k)(C, E, R, n, I, S, L, c, l, u), I[0] = b
                    } catch (e) {
                        throw C.logger.error("Error compiling schema, function code:", k), e
                    }
                    return b.schema = t, b.errors = null, b.refs = x, b.refVal = I, b.root = f ? b : a, _ && (b.$async = !0), !0 === w.sourceCode && (b.source = {
                        code: k,
                        patterns: A,
                        defaults: S
                    }), b
                }

                function D(t, r, o) {
                    r = i.url(t, r);
                    var a, s, l = x[r];
                    if (void 0 !== l) return j(a = I[l], s = "refVal[" + l + "]");
                    if (!o && n.refs) {
                        var c = n.refs[r];
                        if (void 0 !== c) return j(a = n.refVal[c], s = B(r, a))
                    }
                    s = B(r);
                    var u = i.call(C, N, n, r);
                    if (void 0 === u) {
                        var h = f && f[r];
                        h && (u = i.inlineRef(h, w.inlineRefs) ? h : e.call(C, h, n, f, t))
                    }
                    if (void 0 !== u) return function (e, t) {
                        var n = x[e];
                        I[n] = t
                    }(r, u), j(u, s);
                    !function (e) {
                        delete x[e]
                    }(r)
                }

                function B(e, t) {
                    var n = I.length;
                    return I[n] = t, x[e] = n, "refVal" + n
                }

                function j(e, t) {
                    return "object" == typeof e || "boolean" == typeof e ? {code: t, schema: e, inline: !0} : {
                        code: t,
                        $async: e && !!e.$async
                    }
                }

                function F(e) {
                    var t = _[e];
                    return void 0 === t && (t = _[e] = A.length, A[t] = e), "pattern" + t
                }

                function H(e) {
                    switch (typeof e) {
                        case"boolean":
                        case"number":
                            return "" + e;
                        case"string":
                            return r.toQuotedString(e);
                        case"object":
                            if (null === e) return "null";
                            var t = a(e), n = k[t];
                            return void 0 === n && (n = k[t] = S.length, S[n] = e), "default" + n
                    }
                }

                function W(e, t, n, i) {
                    if (!1 !== C._opts.validateSchema) {
                        var r = e.definition.dependencies;
                        if (r && !r.every((function (e) {
                            return Object.prototype.hasOwnProperty.call(n, e)
                        }))) throw new Error("parent schema must have all required keywords: " + r.join(","));
                        var o = e.definition.validateSchema;
                        if (o && !o(t)) {
                            var a = "keyword schema is invalid: " + C.errorsText(o.errors);
                            if ("log" != C._opts.validateSchema) throw new Error(a);
                            C.logger.error(a)
                        }
                    }
                    var s, l = e.definition.compile, c = e.definition.inline, u = e.definition.macro;
                    if (l) s = l.call(C, t, n, i); else if (u) s = u.call(C, t, n, i), !1 !== w.validateSchema && C.validateSchema(s, !0); else if (c) s = c.call(C, i, e.keyword, t, n); else if (!(s = e.definition.validate)) return;
                    if (void 0 === s) throw new Error('custom keyword "' + e.keyword + '"failed to compile');
                    var h = L.length;
                    return L[h] = s, {code: "customRule" + h, validate: s}
                }
            }
        }, function (e, t, n) {
            /** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
            !function (e) {
                "use strict";

                function t() {
                    for (var e = arguments.length, t = Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                    if (t.length > 1) {
                        t[0] = t[0].slice(0, -1);
                        for (var i = t.length - 1, r = 1; r < i; ++r) t[r] = t[r].slice(1, -1);
                        return t[i] = t[i].slice(1), t.join("")
                    }
                    return t[0]
                }

                function n(e) {
                    return "(?:" + e + ")"
                }

                function i(e) {
                    return void 0 === e ? "undefined" : null === e ? "null" : Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()
                }

                function r(e) {
                    return e.toUpperCase()
                }

                function o(e) {
                    var i = t("[0-9]", "[A-Fa-f]"),
                        r = n(n("%[EFef]" + i + "%" + i + i + "%" + i + i) + "|" + n("%[89A-Fa-f]" + i + "%" + i + i) + "|" + n("%" + i + i)),
                        o = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", a = t("[\\:\\/\\?\\#\\[\\]\\@]", o),
                        s = e ? "[\\uE000-\\uF8FF]" : "[]",
                        l = t("[A-Za-z]", "[0-9]", "[\\-\\.\\_\\~]", e ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]"),
                        c = n("[A-Za-z]" + t("[A-Za-z]", "[0-9]", "[\\+\\-\\.]") + "*"),
                        u = n(n(r + "|" + t(l, o, "[\\:]")) + "*"),
                        h = (n(n("25[0-5]") + "|" + n("2[0-4][0-9]") + "|" + n("1[0-9][0-9]") + "|" + n("[1-9][0-9]") + "|[0-9]"), n(n("25[0-5]") + "|" + n("2[0-4][0-9]") + "|" + n("1[0-9][0-9]") + "|" + n("0?[1-9][0-9]") + "|0?0?[0-9]")),
                        d = n(h + "\\." + h + "\\." + h + "\\." + h), f = n(i + "{1,4}"),
                        g = n(n(f + "\\:" + f) + "|" + d), p = n(n(f + "\\:") + "{6}" + g),
                        m = n("\\:\\:" + n(f + "\\:") + "{5}" + g), v = n(n(f) + "?\\:\\:" + n(f + "\\:") + "{4}" + g),
                        y = n(n(n(f + "\\:") + "{0,1}" + f) + "?\\:\\:" + n(f + "\\:") + "{3}" + g),
                        b = n(n(n(f + "\\:") + "{0,2}" + f) + "?\\:\\:" + n(f + "\\:") + "{2}" + g),
                        C = n(n(n(f + "\\:") + "{0,3}" + f) + "?\\:\\:" + f + "\\:" + g),
                        w = n(n(n(f + "\\:") + "{0,4}" + f) + "?\\:\\:" + g),
                        I = n(n(n(f + "\\:") + "{0,5}" + f) + "?\\:\\:" + f),
                        x = n(n(n(f + "\\:") + "{0,6}" + f) + "?\\:\\:"), A = n([p, m, v, y, b, C, w, I, x].join("|")),
                        _ = n(n(l + "|" + r) + "+"),
                        S = (n(A + "\\%25" + _), n(A + n("\\%25|\\%(?!" + i + "{2})") + _)),
                        k = n("[vV]" + i + "+\\." + t(l, o, "[\\:]") + "+"),
                        L = n("\\[" + n(S + "|" + A + "|" + k) + "\\]"), T = n(n(r + "|" + t(l, o)) + "*"),
                        O = n(L + "|" + d + "(?!" + T + ")|" + T), R = n("[0-9]*"),
                        E = n(n(u + "@") + "?" + O + n("\\:" + R) + "?"), P = n(r + "|" + t(l, o, "[\\:\\@]")),
                        M = n(P + "*"), N = n(P + "+"), D = n(n(r + "|" + t(l, o, "[\\@]")) + "+"),
                        B = n(n("\\/" + M) + "*"), j = n("\\/" + n(N + B) + "?"), F = n(D + B), H = n(N + B),
                        W = "(?!" + P + ")",
                        V = (n(B + "|" + j + "|" + F + "|" + H + "|" + W), n(n(P + "|" + t("[\\/\\?]", s)) + "*")),
                        G = n(n(P + "|[\\/\\?]") + "*"), z = n(n("\\/\\/" + E + B) + "|" + j + "|" + H + "|" + W),
                        Z = n(c + "\\:" + z + n("\\?" + V) + "?" + n("\\#" + G) + "?"),
                        $ = n(n("\\/\\/" + E + B) + "|" + j + "|" + F + "|" + W),
                        K = n($ + n("\\?" + V) + "?" + n("\\#" + G) + "?");
                    return n(Z + "|" + K), n(c + "\\:" + z + n("\\?" + V) + "?"), n(n("\\/\\/(" + n("(" + u + ")@") + "?(" + O + ")" + n("\\:(" + R + ")") + "?)") + "?(" + B + "|" + j + "|" + H + "|" + W + ")"), n("\\?(" + V + ")"), n("\\#(" + G + ")"), n(n("\\/\\/(" + n("(" + u + ")@") + "?(" + O + ")" + n("\\:(" + R + ")") + "?)") + "?(" + B + "|" + j + "|" + F + "|" + W + ")"), n("\\?(" + V + ")"), n("\\#(" + G + ")"), n(n("\\/\\/(" + n("(" + u + ")@") + "?(" + O + ")" + n("\\:(" + R + ")") + "?)") + "?(" + B + "|" + j + "|" + H + "|" + W + ")"), n("\\?(" + V + ")"), n("\\#(" + G + ")"), n("(" + u + ")@"), n("\\:(" + R + ")"), {
                        NOT_SCHEME: new RegExp(t("[^]", "[A-Za-z]", "[0-9]", "[\\+\\-\\.]"), "g"),
                        NOT_USERINFO: new RegExp(t("[^\\%\\:]", l, o), "g"),
                        NOT_HOST: new RegExp(t("[^\\%\\[\\]\\:]", l, o), "g"),
                        NOT_PATH: new RegExp(t("[^\\%\\/\\:\\@]", l, o), "g"),
                        NOT_PATH_NOSCHEME: new RegExp(t("[^\\%\\/\\@]", l, o), "g"),
                        NOT_QUERY: new RegExp(t("[^\\%]", l, o, "[\\:\\@\\/\\?]", s), "g"),
                        NOT_FRAGMENT: new RegExp(t("[^\\%]", l, o, "[\\:\\@\\/\\?]"), "g"),
                        ESCAPE: new RegExp(t("[^]", l, o), "g"),
                        UNRESERVED: new RegExp(l, "g"),
                        OTHER_CHARS: new RegExp(t("[^\\%]", l, a), "g"),
                        PCT_ENCODED: new RegExp(r, "g"),
                        IPV4ADDRESS: new RegExp("^(" + d + ")$"),
                        IPV6ADDRESS: new RegExp("^\\[?(" + A + ")" + n(n("\\%25|\\%(?!" + i + "{2})") + "(" + _ + ")") + "?\\]?$")
                    }
                }

                var a = o(!1), s = o(!0), l = function (e, t) {
                    if (Array.isArray(e)) return e;
                    if (Symbol.iterator in Object(e)) return function (e, t) {
                        var n = [], i = !0, r = !1, o = void 0;
                        try {
                            for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
                        } catch (e) {
                            r = !0, o = e
                        } finally {
                            try {
                                !i && s.return && s.return()
                            } finally {
                                if (r) throw o
                            }
                        }
                        return n
                    }(e, t);
                    throw new TypeError("Invalid attempt to destructure non-iterable instance")
                }, c = 2147483647, u = /^xn--/, h = /[^\0-\x7E]/, d = /[\x2E\u3002\uFF0E\uFF61]/g, f = {
                    overflow: "Overflow: input needs wider integers to process",
                    "not-basic": "Illegal input >= 0x80 (not a basic code point)",
                    "invalid-input": "Invalid input"
                }, g = Math.floor, p = String.fromCharCode;

                function m(e) {
                    throw new RangeError(f[e])
                }

                function v(e, t) {
                    var n = e.split("@"), i = "";
                    n.length > 1 && (i = n[0] + "@", e = n[1]);
                    var r = function (e, t) {
                        for (var n = [], i = e.length; i--;) n[i] = t(e[i]);
                        return n
                    }((e = e.replace(d, ".")).split("."), t).join(".");
                    return i + r
                }

                function y(e) {
                    for (var t = [], n = 0, i = e.length; n < i;) {
                        var r = e.charCodeAt(n++);
                        if (r >= 55296 && r <= 56319 && n < i) {
                            var o = e.charCodeAt(n++);
                            56320 == (64512 & o) ? t.push(((1023 & r) << 10) + (1023 & o) + 65536) : (t.push(r), n--)
                        } else t.push(r)
                    }
                    return t
                }

                var b = function (e, t) {
                    return e + 22 + 75 * (e < 26) - ((0 != t) << 5)
                }, C = function (e, t, n) {
                    var i = 0;
                    for (e = n ? g(e / 700) : e >> 1, e += g(e / t); e > 455; i += 36) e = g(e / 35);
                    return g(i + 36 * e / (e + 38))
                }, w = function (e) {
                    var t, n = [], i = e.length, r = 0, o = 128, a = 72, s = e.lastIndexOf("-");
                    s < 0 && (s = 0);
                    for (var l = 0; l < s; ++l) e.charCodeAt(l) >= 128 && m("not-basic"), n.push(e.charCodeAt(l));
                    for (var u = s > 0 ? s + 1 : 0; u < i;) {
                        for (var h = r, d = 1, f = 36; ; f += 36) {
                            u >= i && m("invalid-input");
                            var p = (t = e.charCodeAt(u++)) - 48 < 10 ? t - 22 : t - 65 < 26 ? t - 65 : t - 97 < 26 ? t - 97 : 36;
                            (p >= 36 || p > g((c - r) / d)) && m("overflow"), r += p * d;
                            var v = f <= a ? 1 : f >= a + 26 ? 26 : f - a;
                            if (p < v) break;
                            var y = 36 - v;
                            d > g(c / y) && m("overflow"), d *= y
                        }
                        var b = n.length + 1;
                        a = C(r - h, b, 0 == h), g(r / b) > c - o && m("overflow"), o += g(r / b), r %= b, n.splice(r++, 0, o)
                    }
                    return String.fromCodePoint.apply(String, n)
                }, I = function (e) {
                    var t = [], n = (e = y(e)).length, i = 128, r = 0, o = 72, a = !0, s = !1, l = void 0;
                    try {
                        for (var u, h = e[Symbol.iterator](); !(a = (u = h.next()).done); a = !0) {
                            var d = u.value;
                            d < 128 && t.push(p(d))
                        }
                    } catch (e) {
                        s = !0, l = e
                    } finally {
                        try {
                            !a && h.return && h.return()
                        } finally {
                            if (s) throw l
                        }
                    }
                    var f = t.length, v = f;
                    for (f && t.push("-"); v < n;) {
                        var w = c, I = !0, x = !1, A = void 0;
                        try {
                            for (var _, S = e[Symbol.iterator](); !(I = (_ = S.next()).done); I = !0) {
                                var k = _.value;
                                k >= i && k < w && (w = k)
                            }
                        } catch (e) {
                            x = !0, A = e
                        } finally {
                            try {
                                !I && S.return && S.return()
                            } finally {
                                if (x) throw A
                            }
                        }
                        var L = v + 1;
                        w - i > g((c - r) / L) && m("overflow"), r += (w - i) * L, i = w;
                        var T = !0, O = !1, R = void 0;
                        try {
                            for (var E, P = e[Symbol.iterator](); !(T = (E = P.next()).done); T = !0) {
                                var M = E.value;
                                if (M < i && ++r > c && m("overflow"), M == i) {
                                    for (var N = r, D = 36; ; D += 36) {
                                        var B = D <= o ? 1 : D >= o + 26 ? 26 : D - o;
                                        if (N < B) break;
                                        var j = N - B, F = 36 - B;
                                        t.push(p(b(B + j % F, 0))), N = g(j / F)
                                    }
                                    t.push(p(b(N, 0))), o = C(r, L, v == f), r = 0, ++v
                                }
                            }
                        } catch (e) {
                            O = !0, R = e
                        } finally {
                            try {
                                !T && P.return && P.return()
                            } finally {
                                if (O) throw R
                            }
                        }
                        ++r, ++i
                    }
                    return t.join("")
                }, x = function (e) {
                    return v(e, (function (e) {
                        return h.test(e) ? "xn--" + I(e) : e
                    }))
                }, A = function (e) {
                    return v(e, (function (e) {
                        return u.test(e) ? w(e.slice(4).toLowerCase()) : e
                    }))
                }, _ = {};

                function S(e) {
                    var t = e.charCodeAt(0);
                    return t < 16 ? "%0" + t.toString(16).toUpperCase() : t < 128 ? "%" + t.toString(16).toUpperCase() : t < 2048 ? "%" + (t >> 6 | 192).toString(16).toUpperCase() + "%" + (63 & t | 128).toString(16).toUpperCase() : "%" + (t >> 12 | 224).toString(16).toUpperCase() + "%" + (t >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (63 & t | 128).toString(16).toUpperCase()
                }

                function k(e) {
                    for (var t = "", n = 0, i = e.length; n < i;) {
                        var r = parseInt(e.substr(n + 1, 2), 16);
                        if (r < 128) t += String.fromCharCode(r), n += 3; else if (r >= 194 && r < 224) {
                            if (i - n >= 6) {
                                var o = parseInt(e.substr(n + 4, 2), 16);
                                t += String.fromCharCode((31 & r) << 6 | 63 & o)
                            } else t += e.substr(n, 6);
                            n += 6
                        } else if (r >= 224) {
                            if (i - n >= 9) {
                                var a = parseInt(e.substr(n + 4, 2), 16), s = parseInt(e.substr(n + 7, 2), 16);
                                t += String.fromCharCode((15 & r) << 12 | (63 & a) << 6 | 63 & s)
                            } else t += e.substr(n, 9);
                            n += 9
                        } else t += e.substr(n, 3), n += 3
                    }
                    return t
                }

                function L(e, t) {
                    function n(e) {
                        var n = k(e);
                        return n.match(t.UNRESERVED) ? n : e
                    }

                    return e.scheme && (e.scheme = String(e.scheme).replace(t.PCT_ENCODED, n).toLowerCase().replace(t.NOT_SCHEME, "")), void 0 !== e.userinfo && (e.userinfo = String(e.userinfo).replace(t.PCT_ENCODED, n).replace(t.NOT_USERINFO, S).replace(t.PCT_ENCODED, r)), void 0 !== e.host && (e.host = String(e.host).replace(t.PCT_ENCODED, n).toLowerCase().replace(t.NOT_HOST, S).replace(t.PCT_ENCODED, r)), void 0 !== e.path && (e.path = String(e.path).replace(t.PCT_ENCODED, n).replace(e.scheme ? t.NOT_PATH : t.NOT_PATH_NOSCHEME, S).replace(t.PCT_ENCODED, r)), void 0 !== e.query && (e.query = String(e.query).replace(t.PCT_ENCODED, n).replace(t.NOT_QUERY, S).replace(t.PCT_ENCODED, r)), void 0 !== e.fragment && (e.fragment = String(e.fragment).replace(t.PCT_ENCODED, n).replace(t.NOT_FRAGMENT, S).replace(t.PCT_ENCODED, r)), e
                }

                function T(e) {
                    return e.replace(/^0*(.*)/, "$1") || "0"
                }

                function O(e, t) {
                    var n = e.match(t.IPV4ADDRESS) || [], i = l(n, 2)[1];
                    return i ? i.split(".").map(T).join(".") : e
                }

                function R(e, t) {
                    var n = e.match(t.IPV6ADDRESS) || [], i = l(n, 3), r = i[1], o = i[2];
                    if (r) {
                        for (var a = r.toLowerCase().split("::").reverse(), s = l(a, 2), c = s[0], u = s[1], h = u ? u.split(":").map(T) : [], d = c.split(":").map(T), f = t.IPV4ADDRESS.test(d[d.length - 1]), g = f ? 7 : 8, p = d.length - g, m = Array(g), v = 0; v < g; ++v) m[v] = h[v] || d[p + v] || "";
                        f && (m[g - 1] = O(m[g - 1], t));
                        var y = m.reduce((function (e, t, n) {
                            if (!t || "0" === t) {
                                var i = e[e.length - 1];
                                i && i.index + i.length === n ? i.length++ : e.push({index: n, length: 1})
                            }
                            return e
                        }), []).sort((function (e, t) {
                            return t.length - e.length
                        }))[0], b = void 0;
                        if (y && y.length > 1) {
                            var C = m.slice(0, y.index), w = m.slice(y.index + y.length);
                            b = C.join(":") + "::" + w.join(":")
                        } else b = m.join(":");
                        return o && (b += "%" + o), b
                    }
                    return e
                }

                var E = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,
                    P = void 0 === "".match(/(){0}/)[1];

                function M(e) {
                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = {},
                        i = !1 !== t.iri ? s : a;
                    "suffix" === t.reference && (e = (t.scheme ? t.scheme + ":" : "") + "//" + e);
                    var r = e.match(E);
                    if (r) {
                        P ? (n.scheme = r[1], n.userinfo = r[3], n.host = r[4], n.port = parseInt(r[5], 10), n.path = r[6] || "", n.query = r[7], n.fragment = r[8], isNaN(n.port) && (n.port = r[5])) : (n.scheme = r[1] || void 0, n.userinfo = -1 !== e.indexOf("@") ? r[3] : void 0, n.host = -1 !== e.indexOf("//") ? r[4] : void 0, n.port = parseInt(r[5], 10), n.path = r[6] || "", n.query = -1 !== e.indexOf("?") ? r[7] : void 0, n.fragment = -1 !== e.indexOf("#") ? r[8] : void 0, isNaN(n.port) && (n.port = e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? r[4] : void 0)), n.host && (n.host = R(O(n.host, i), i)), void 0 !== n.scheme || void 0 !== n.userinfo || void 0 !== n.host || void 0 !== n.port || n.path || void 0 !== n.query ? void 0 === n.scheme ? n.reference = "relative" : void 0 === n.fragment ? n.reference = "absolute" : n.reference = "uri" : n.reference = "same-document", t.reference && "suffix" !== t.reference && t.reference !== n.reference && (n.error = n.error || "URI is not a " + t.reference + " reference.");
                        var o = _[(t.scheme || n.scheme || "").toLowerCase()];
                        if (t.unicodeSupport || o && o.unicodeSupport) L(n, i); else {
                            if (n.host && (t.domainHost || o && o.domainHost)) try {
                                n.host = x(n.host.replace(i.PCT_ENCODED, k).toLowerCase())
                            } catch (e) {
                                n.error = n.error || "Host's domain name can not be converted to ASCII via punycode: " + e
                            }
                            L(n, a)
                        }
                        o && o.parse && o.parse(n, t)
                    } else n.error = n.error || "URI can not be parsed.";
                    return n
                }

                function N(e, t) {
                    var n = !1 !== t.iri ? s : a, i = [];
                    return void 0 !== e.userinfo && (i.push(e.userinfo), i.push("@")), void 0 !== e.host && i.push(R(O(String(e.host), n), n).replace(n.IPV6ADDRESS, (function (e, t, n) {
                        return "[" + t + (n ? "%25" + n : "") + "]"
                    }))), "number" == typeof e.port && (i.push(":"), i.push(e.port.toString(10))), i.length ? i.join("") : void 0
                }

                var D = /^\.\.?\//, B = /^\/\.(\/|$)/, j = /^\/\.\.(\/|$)/, F = /^\/?(?:.|\n)*?(?=\/|$)/;

                function H(e) {
                    for (var t = []; e.length;) if (e.match(D)) e = e.replace(D, ""); else if (e.match(B)) e = e.replace(B, "/"); else if (e.match(j)) e = e.replace(j, "/"), t.pop(); else if ("." === e || ".." === e) e = ""; else {
                        var n = e.match(F);
                        if (!n) throw new Error("Unexpected dot segment condition");
                        var i = n[0];
                        e = e.slice(i.length), t.push(i)
                    }
                    return t.join("")
                }

                function W(e) {
                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = t.iri ? s : a,
                        i = [], r = _[(t.scheme || e.scheme || "").toLowerCase()];
                    if (r && r.serialize && r.serialize(e, t), e.host) if (n.IPV6ADDRESS.test(e.host)) ; else if (t.domainHost || r && r.domainHost) try {
                        e.host = t.iri ? A(e.host) : x(e.host.replace(n.PCT_ENCODED, k).toLowerCase())
                    } catch (n) {
                        e.error = e.error || "Host's domain name can not be converted to " + (t.iri ? "Unicode" : "ASCII") + " via punycode: " + n
                    }
                    L(e, n), "suffix" !== t.reference && e.scheme && (i.push(e.scheme), i.push(":"));
                    var o = N(e, t);
                    if (void 0 !== o && ("suffix" !== t.reference && i.push("//"), i.push(o), e.path && "/" !== e.path.charAt(0) && i.push("/")), void 0 !== e.path) {
                        var l = e.path;
                        t.absolutePath || r && r.absolutePath || (l = H(l)), void 0 === o && (l = l.replace(/^\/\//, "/%2F")), i.push(l)
                    }
                    return void 0 !== e.query && (i.push("?"), i.push(e.query)), void 0 !== e.fragment && (i.push("#"), i.push(e.fragment)), i.join("")
                }

                function V(e, t) {
                    var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, i = arguments[3],
                        r = {};
                    return i || (e = M(W(e, n), n), t = M(W(t, n), n)), !(n = n || {}).tolerant && t.scheme ? (r.scheme = t.scheme, r.userinfo = t.userinfo, r.host = t.host, r.port = t.port, r.path = H(t.path || ""), r.query = t.query) : (void 0 !== t.userinfo || void 0 !== t.host || void 0 !== t.port ? (r.userinfo = t.userinfo, r.host = t.host, r.port = t.port, r.path = H(t.path || ""), r.query = t.query) : (t.path ? ("/" === t.path.charAt(0) ? r.path = H(t.path) : (void 0 === e.userinfo && void 0 === e.host && void 0 === e.port || e.path ? e.path ? r.path = e.path.slice(0, e.path.lastIndexOf("/") + 1) + t.path : r.path = t.path : r.path = "/" + t.path, r.path = H(r.path)), r.query = t.query) : (r.path = e.path, void 0 !== t.query ? r.query = t.query : r.query = e.query), r.userinfo = e.userinfo, r.host = e.host, r.port = e.port), r.scheme = e.scheme), r.fragment = t.fragment, r
                }

                function G(e, t) {
                    return e && e.toString().replace(t && t.iri ? s.PCT_ENCODED : a.PCT_ENCODED, k)
                }

                var z = {
                        scheme: "http", domainHost: !0, parse: function (e, t) {
                            return e.host || (e.error = e.error || "HTTP URIs must have a host."), e
                        }, serialize: function (e, t) {
                            return e.port !== ("https" !== String(e.scheme).toLowerCase() ? 80 : 443) && "" !== e.port || (e.port = void 0), e.path || (e.path = "/"), e
                        }
                    }, Z = {scheme: "https", domainHost: z.domainHost, parse: z.parse, serialize: z.serialize}, $ = {},
                    K = "[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",
                    X = "[0-9A-Fa-f]",
                    Y = n(n("%[EFef]" + X + "%" + X + X + "%" + X + X) + "|" + n("%[89A-Fa-f]" + X + "%" + X + X) + "|" + n("%" + X + X)),
                    U = t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]", '[\\"\\\\]'),
                    J = new RegExp(K, "g"), q = new RegExp(Y, "g"),
                    Q = new RegExp(t("[^]", "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]", "[\\.]", '[\\"]', U), "g"),
                    ee = new RegExp(t("[^]", K, "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"), "g"), te = ee;

                function ne(e) {
                    var t = k(e);
                    return t.match(J) ? t : e
                }

                var ie = {
                    scheme: "mailto", parse: function (e, t) {
                        var n = e, i = n.to = n.path ? n.path.split(",") : [];
                        if (n.path = void 0, n.query) {
                            for (var r = !1, o = {}, a = n.query.split("&"), s = 0, l = a.length; s < l; ++s) {
                                var c = a[s].split("=");
                                switch (c[0]) {
                                    case"to":
                                        for (var u = c[1].split(","), h = 0, d = u.length; h < d; ++h) i.push(u[h]);
                                        break;
                                    case"subject":
                                        n.subject = G(c[1], t);
                                        break;
                                    case"body":
                                        n.body = G(c[1], t);
                                        break;
                                    default:
                                        r = !0, o[G(c[0], t)] = G(c[1], t)
                                }
                            }
                            r && (n.headers = o)
                        }
                        n.query = void 0;
                        for (var f = 0, g = i.length; f < g; ++f) {
                            var p = i[f].split("@");
                            if (p[0] = G(p[0]), t.unicodeSupport) p[1] = G(p[1], t).toLowerCase(); else try {
                                p[1] = x(G(p[1], t).toLowerCase())
                            } catch (e) {
                                n.error = n.error || "Email address's domain name can not be converted to ASCII via punycode: " + e
                            }
                            i[f] = p.join("@")
                        }
                        return n
                    }, serialize: function (e, t) {
                        var n, i = e,
                            o = null != (n = e.to) ? n instanceof Array ? n : "number" != typeof n.length || n.split || n.setInterval || n.call ? [n] : Array.prototype.slice.call(n) : [];
                        if (o) {
                            for (var a = 0, s = o.length; a < s; ++a) {
                                var l = String(o[a]), c = l.lastIndexOf("@"),
                                    u = l.slice(0, c).replace(q, ne).replace(q, r).replace(Q, S), h = l.slice(c + 1);
                                try {
                                    h = t.iri ? A(h) : x(G(h, t).toLowerCase())
                                } catch (e) {
                                    i.error = i.error || "Email address's domain name can not be converted to " + (t.iri ? "Unicode" : "ASCII") + " via punycode: " + e
                                }
                                o[a] = u + "@" + h
                            }
                            i.path = o.join(",")
                        }
                        var d = e.headers = e.headers || {};
                        e.subject && (d.subject = e.subject), e.body && (d.body = e.body);
                        var f = [];
                        for (var g in d) d[g] !== $[g] && f.push(g.replace(q, ne).replace(q, r).replace(ee, S) + "=" + d[g].replace(q, ne).replace(q, r).replace(te, S));
                        return f.length && (i.query = f.join("&")), i
                    }
                }, re = /^([^\:]+)\:(.*)/, oe = {
                    scheme: "urn", parse: function (e, t) {
                        var n = e.path && e.path.match(re), i = e;
                        if (n) {
                            var r = t.scheme || i.scheme || "urn", o = n[1].toLowerCase(), a = n[2],
                                s = r + ":" + (t.nid || o), l = _[s];
                            i.nid = o, i.nss = a, i.path = void 0, l && (i = l.parse(i, t))
                        } else i.error = i.error || "URN can not be parsed.";
                        return i
                    }, serialize: function (e, t) {
                        var n = t.scheme || e.scheme || "urn", i = e.nid, r = n + ":" + (t.nid || i), o = _[r];
                        o && (e = o.serialize(e, t));
                        var a = e, s = e.nss;
                        return a.path = (i || t.nid) + ":" + s, a
                    }
                }, ae = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/, se = {
                    scheme: "urn:uuid", parse: function (e, t) {
                        var n = e;
                        return n.uuid = n.nss, n.nss = void 0, t.tolerant || n.uuid && n.uuid.match(ae) || (n.error = n.error || "UUID is not valid."), n
                    }, serialize: function (e, t) {
                        var n = e;
                        return n.nss = (e.uuid || "").toLowerCase(), n
                    }
                };
                _[z.scheme] = z, _[Z.scheme] = Z, _[ie.scheme] = ie, _[oe.scheme] = oe, _[se.scheme] = se, e.SCHEMES = _, e.pctEncChar = S, e.pctDecChars = k, e.parse = M, e.removeDotSegments = H, e.serialize = W, e.resolveComponents = V, e.resolve = function (e, t, n) {
                    var i = function (e, t) {
                        var n = e;
                        if (t) for (var i in t) n[i] = t[i];
                        return n
                    }({scheme: "null"}, n);
                    return W(V(M(e, i), M(t, i), i, !0), i)
                }, e.normalize = function (e, t) {
                    return "string" == typeof e ? e = W(M(e, t), t) : "object" === i(e) && (e = M(W(e, t), t)), e
                }, e.equal = function (e, t, n) {
                    return "string" == typeof e ? e = W(M(e, n), n) : "object" === i(e) && (e = W(e, n)), "string" == typeof t ? t = W(M(t, n), n) : "object" === i(t) && (t = W(t, n)), e === t
                }, e.escapeComponent = function (e, t) {
                    return e && e.toString().replace(t && t.iri ? s.ESCAPE : a.ESCAPE, S)
                }, e.unescapeComponent = G, Object.defineProperty(e, "__esModule", {value: !0})
            }(t)
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e) {
                for (var t, n = 0, i = e.length, r = 0; r < i;) n++, (t = e.charCodeAt(r++)) >= 55296 && t <= 56319 && r < i && 56320 == (64512 & (t = e.charCodeAt(r))) && r++;
                return n
            }
        }, function (e, t, n) {
            "use strict";
            var i = e.exports = function (e, t, n) {
                "function" == typeof t && (n = t, t = {}), function e(t, n, r, o, a, s, l, c, u, h) {
                    if (o && "object" == typeof o && !Array.isArray(o)) {
                        for (var d in n(o, a, s, l, c, u, h), o) {
                            var f = o[d];
                            if (Array.isArray(f)) {
                                if (d in i.arrayKeywords) for (var g = 0; g < f.length; g++) e(t, n, r, f[g], a + "/" + d + "/" + g, s, a, d, o, g)
                            } else if (d in i.propsKeywords) {
                                if (f && "object" == typeof f) for (var p in f) e(t, n, r, f[p], a + "/" + d + "/" + p.replace(/~/g, "~0").replace(/\//g, "~1"), s, a, d, o, p)
                            } else (d in i.keywords || t.allKeys && !(d in i.skipKeywords)) && e(t, n, r, f, a + "/" + d, s, a, d, o)
                        }
                        r(o, a, s, l, c, u, h)
                    }
                }(t, "function" == typeof (n = t.cb || n) ? n : n.pre || function () {
                }, n.post || function () {
                }, e, "", e)
            };
            i.keywords = {
                additionalItems: !0,
                items: !0,
                contains: !0,
                additionalProperties: !0,
                propertyNames: !0,
                not: !0
            }, i.arrayKeywords = {items: !0, allOf: !0, anyOf: !0, oneOf: !0}, i.propsKeywords = {
                definitions: !0,
                properties: !0,
                patternProperties: !0,
                dependencies: !0
            }, i.skipKeywords = {
                default: !0,
                enum: !0,
                const: !0,
                required: !0,
                maximum: !0,
                minimum: !0,
                exclusiveMaximum: !0,
                exclusiveMinimum: !0,
                multipleOf: !0,
                maxLength: !0,
                minLength: !0,
                pattern: !0,
                format: !0,
                maxItems: !0,
                minItems: !0,
                uniqueItems: !0,
                maxProperties: !0,
                minProperties: !0
            }
        }, function (e, t, n) {
            "use strict";
            var i = e.exports = function () {
                this._cache = {}
            };
            i.prototype.put = function (e, t) {
                this._cache[e] = t
            }, i.prototype.get = function (e) {
                return this._cache[e]
            }, i.prototype.del = function (e) {
                delete this._cache[e]
            }, i.prototype.clear = function () {
                this._cache = {}
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(7), r = /^(\d\d\d\d)-(\d\d)-(\d\d)$/, o = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
                a = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,
                s = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,
                l = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,
                c = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,
                u = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,
                h = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i, d = /^(?:\/(?:[^~/]|~0|~1)*)*$/,
                f = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,
                g = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;

            function p(e) {
                return e = "full" == e ? "full" : "fast", i.copy(p[e])
            }

            function m(e) {
                var t = e.match(r);
                if (!t) return !1;
                var n = +t[1], i = +t[2], a = +t[3];
                return i >= 1 && i <= 12 && a >= 1 && a <= (2 == i && function (e) {
                    return e % 4 == 0 && (e % 100 != 0 || e % 400 == 0)
                }(n) ? 29 : o[i])
            }

            function v(e, t) {
                var n = e.match(a);
                if (!n) return !1;
                var i = n[1], r = n[2], o = n[3], s = n[5];
                return (i <= 23 && r <= 59 && o <= 59 || 23 == i && 59 == r && 60 == o) && (!t || s)
            }

            e.exports = p, p.fast = {
                date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,
                time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,
                "date-time": /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,
                uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,
                "uri-reference": /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
                "uri-template": c,
                url: u,
                email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,
                hostname: s,
                ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
                ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
                regex: w,
                uuid: h,
                "json-pointer": d,
                "json-pointer-uri-fragment": f,
                "relative-json-pointer": g
            }, p.full = {
                date: m,
                time: v,
                "date-time": function (e) {
                    var t = e.split(y);
                    return 2 == t.length && m(t[0]) && v(t[1], !0)
                },
                uri: function (e) {
                    return b.test(e) && l.test(e)
                },
                "uri-reference": /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,
                "uri-template": c,
                url: u,
                email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
                hostname: s,
                ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
                ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
                regex: w,
                uuid: h,
                "json-pointer": d,
                "json-pointer-uri-fragment": f,
                "relative-json-pointer": g
            };
            var y = /t|\s/i, b = /\/|:/, C = /[^\\]\\Z/;

            function w(e) {
                if (C.test(e)) return !1;
                try {
                    return new RegExp(e), !0
                } catch (e) {
                    return !1
                }
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(52), r = n(7).toHash;
            e.exports = function () {
                var e = [{
                        type: "number",
                        rules: [{maximum: ["exclusiveMaximum"]}, {minimum: ["exclusiveMinimum"]}, "multipleOf", "format"]
                    }, {type: "string", rules: ["maxLength", "minLength", "pattern", "format"]}, {
                        type: "array",
                        rules: ["maxItems", "minItems", "items", "contains", "uniqueItems"]
                    }, {
                        type: "object",
                        rules: ["maxProperties", "minProperties", "required", "dependencies", "propertyNames", {properties: ["additionalProperties", "patternProperties"]}]
                    }, {rules: ["$ref", "const", "enum", "not", "anyOf", "oneOf", "allOf", "if"]}],
                    t = ["type", "$comment"];
                return e.all = r(t), e.types = r(["number", "integer", "string", "array", "object", "boolean", "null"]), e.forEach((function (n) {
                    n.rules = n.rules.map((function (n) {
                        var r;
                        if ("object" == typeof n) {
                            var o = Object.keys(n)[0];
                            r = n[o], n = o, r.forEach((function (n) {
                                t.push(n), e.all[n] = !0
                            }))
                        }
                        return t.push(n), e.all[n] = {keyword: n, code: i[n], implements: r}
                    })), e.all.$comment = {keyword: "$comment", code: i.$comment}, n.type && (e.types[n.type] = n)
                })), e.keywords = r(t.concat(["$schema", "$id", "id", "$data", "$async", "title", "description", "default", "definitions", "examples", "readOnly", "writeOnly", "contentMediaType", "contentEncoding", "additionalItems", "then", "else"])), e.custom = {}, e
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = {
                $ref: n(53),
                allOf: n(54),
                anyOf: n(55),
                $comment: n(56),
                const: n(57),
                contains: n(58),
                dependencies: n(59),
                enum: n(60),
                format: n(61),
                if: n(62),
                items: n(63),
                maximum: n(28),
                minimum: n(28),
                maxItems: n(29),
                minItems: n(29),
                maxLength: n(30),
                minLength: n(30),
                maxProperties: n(31),
                minProperties: n(31),
                multipleOf: n(64),
                not: n(65),
                oneOf: n(66),
                pattern: n(67),
                properties: n(68),
                propertyNames: n(69),
                required: n(70),
                uniqueItems: n(71),
                validate: n(27)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r, o = " ", a = e.level, s = e.dataLevel, l = e.schema[t], c = e.errSchemaPath + "/" + t,
                    u = !e.opts.allErrors, h = "data" + (s || ""), d = "valid" + a;
                if ("#" == l || "#/" == l) e.isRoot ? (i = e.async, r = "validate") : (i = !0 === e.root.schema.$async, r = "root.refVal[0]"); else {
                    var f = e.resolveRef(e.baseId, l, e.isRoot);
                    if (void 0 === f) {
                        var g = e.MissingRefError.message(e.baseId, l);
                        if ("fail" == e.opts.missingRefs) {
                            e.logger.error(g), (y = y || []).push(o), o = "", !1 !== e.createErrors ? (o += " { keyword: '$ref' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { ref: '" + e.util.escapeQuotes(l) + "' } ", !1 !== e.opts.messages && (o += " , message: 'can\\'t resolve reference " + e.util.escapeQuotes(l) + "' "), e.opts.verbose && (o += " , schema: " + e.util.toQuotedString(l) + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), o += " } ") : o += " {} ";
                            var p = o;
                            o = y.pop(), !e.compositeRule && u ? e.async ? o += " throw new ValidationError([" + p + "]); " : o += " validate.errors = [" + p + "]; return false; " : o += " var err = " + p + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", u && (o += " if (false) { ")
                        } else {
                            if ("ignore" != e.opts.missingRefs) throw new e.MissingRefError(e.baseId, l, g);
                            e.logger.warn(g), u && (o += " if (true) { ")
                        }
                    } else if (f.inline) {
                        var m = e.util.copy(e);
                        m.level++;
                        var v = "valid" + m.level;
                        m.schema = f.schema, m.schemaPath = "", m.errSchemaPath = l, o += " " + e.validate(m).replace(/validate\.schema/g, f.code) + " ", u && (o += " if (" + v + ") { ")
                    } else i = !0 === f.$async || e.async && !1 !== f.$async, r = f.code
                }
                if (r) {
                    var y;
                    (y = y || []).push(o), o = "", e.opts.passContext ? o += " " + r + ".call(this, " : o += " " + r + "( ", o += " " + h + ", (dataPath || '')", '""' != e.errorPath && (o += " + " + e.errorPath);
                    var b = o += " , " + (s ? "data" + (s - 1 || "") : "parentData") + " , " + (s ? e.dataPathArr[s] : "parentDataProperty") + ", rootData)  ";
                    if (o = y.pop(), i) {
                        if (!e.async) throw new Error("async schema referenced by sync schema");
                        u && (o += " var " + d + "; "), o += " try { await " + b + "; ", u && (o += " " + d + " = true; "), o += " } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ", u && (o += " " + d + " = false; "), o += " } ", u && (o += " if (" + d + ") { ")
                    } else o += " if (!" + b + ") { if (vErrors === null) vErrors = " + r + ".errors; else vErrors = vErrors.concat(" + r + ".errors); errors = vErrors.length; } ", u && (o += " else { ")
                }
                return o
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.schema[t], o = e.schemaPath + e.util.getProperty(t), a = e.errSchemaPath + "/" + t,
                    s = !e.opts.allErrors, l = e.util.copy(e), c = "";
                l.level++;
                var u = "valid" + l.level, h = l.baseId, d = !0, f = r;
                if (f) for (var g, p = -1, m = f.length - 1; p < m;) g = f[p += 1], (e.opts.strictKeywords ? "object" == typeof g && Object.keys(g).length > 0 : e.util.schemaHasRules(g, e.RULES.all)) && (d = !1, l.schema = g, l.schemaPath = o + "[" + p + "]", l.errSchemaPath = a + "/" + p, i += "  " + e.validate(l) + " ", l.baseId = h, s && (i += " if (" + u + ") { ", c += "}"));
                return s && (i += d ? " if (true) { " : " " + c.slice(0, -1) + " "), i = e.util.cleanUpCode(i)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = "errs__" + r, f = e.util.copy(e), g = "";
                f.level++;
                var p = "valid" + f.level;
                if (a.every((function (t) {
                    return e.opts.strictKeywords ? "object" == typeof t && Object.keys(t).length > 0 : e.util.schemaHasRules(t, e.RULES.all)
                }))) {
                    var m = f.baseId;
                    i += " var " + d + " = errors; var " + h + " = false;  ";
                    var v = e.compositeRule;
                    e.compositeRule = f.compositeRule = !0;
                    var y = a;
                    if (y) for (var b, C = -1, w = y.length - 1; C < w;) b = y[C += 1], f.schema = b, f.schemaPath = s + "[" + C + "]", f.errSchemaPath = l + "/" + C, i += "  " + e.validate(f) + " ", f.baseId = m, i += " " + h + " = " + h + " || " + p + "; if (!" + h + ") { ", g += "}";
                    e.compositeRule = f.compositeRule = v, i += " " + g + " if (!" + h + ") {   var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'anyOf' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: {} ", !1 !== e.opts.messages && (i += " , message: 'should match some schema in anyOf' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !e.compositeRule && c && (e.async ? i += " throw new ValidationError(vErrors); " : i += " validate.errors = vErrors; return false; "), i += " } else {  errors = " + d + "; if (vErrors !== null) { if (" + d + ") vErrors.length = " + d + "; else vErrors = null; } ", e.opts.allErrors && (i += " } "), i = e.util.cleanUpCode(i)
                } else c && (i += " if (true) { ");
                return i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.schema[t], o = e.errSchemaPath + "/" + t,
                    a = (e.opts.allErrors, e.util.toQuotedString(r));
                return !0 === e.opts.$comment ? i += " console.log(" + a + ");" : "function" == typeof e.opts.$comment && (i += " self._opts.$comment(" + a + ", " + e.util.toQuotedString(o) + ", validate.root.schema);"), i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = e.opts.$data && a && a.$data;
                d && (i += " var schema" + r + " = " + e.util.getData(a.$data, o, e.dataPathArr) + "; "), d || (i += " var schema" + r + " = validate.schema" + s + ";"), i += "var " + h + " = equal(" + u + ", schema" + r + "); if (!" + h + ") {   ";
                var f = f || [];
                f.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'const' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { allowedValue: schema" + r + " } ", !1 !== e.opts.messages && (i += " , message: 'should be equal to constant' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                var g = i;
                return i = f.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + g + "]); " : i += " validate.errors = [" + g + "]; return false; " : i += " var err = " + g + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " }", c && (i += " else { "), i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = "errs__" + r, f = e.util.copy(e);
                f.level++;
                var g = "valid" + f.level, p = "i" + r, m = f.dataLevel = e.dataLevel + 1, v = "data" + m, y = e.baseId,
                    b = e.opts.strictKeywords ? "object" == typeof a && Object.keys(a).length > 0 : e.util.schemaHasRules(a, e.RULES.all);
                if (i += "var " + d + " = errors;var " + h + ";", b) {
                    var C = e.compositeRule;
                    e.compositeRule = f.compositeRule = !0, f.schema = a, f.schemaPath = s, f.errSchemaPath = l, i += " var " + g + " = false; for (var " + p + " = 0; " + p + " < " + u + ".length; " + p + "++) { ", f.errorPath = e.util.getPathExpr(e.errorPath, p, e.opts.jsonPointers, !0);
                    var w = u + "[" + p + "]";
                    f.dataPathArr[m] = p;
                    var I = e.validate(f);
                    f.baseId = y, e.util.varOccurences(I, v) < 2 ? i += " " + e.util.varReplace(I, v, w) + " " : i += " var " + v + " = " + w + "; " + I + " ", i += " if (" + g + ") break; }  ", e.compositeRule = f.compositeRule = C, i += "  if (!" + g + ") {"
                } else i += " if (" + u + ".length == 0) {";
                var x = x || [];
                x.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'contains' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: {} ", !1 !== e.opts.messages && (i += " , message: 'should contain a valid item' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                var A = i;
                return i = x.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + A + "]); " : i += " validate.errors = [" + A + "]; return false; " : i += " var err = " + A + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } else { ", b && (i += "  errors = " + d + "; if (vErrors !== null) { if (" + d + ") vErrors.length = " + d + "; else vErrors = null; } "), e.opts.allErrors && (i += " } "), i = e.util.cleanUpCode(i)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "errs__" + r,
                    d = e.util.copy(e), f = "";
                d.level++;
                var g = "valid" + d.level, p = {}, m = {}, v = e.opts.ownProperties;
                for (w in a) {
                    var y = a[w], b = Array.isArray(y) ? m : p;
                    b[w] = y
                }
                i += "var " + h + " = errors;";
                var C = e.errorPath;
                for (var w in i += "var missing" + r + ";", m) if ((b = m[w]).length) {
                    if (i += " if ( " + u + e.util.getProperty(w) + " !== undefined ", v && (i += " && Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(w) + "') "), c) {
                        i += " && ( ";
                        var I = b;
                        if (I) for (var x = -1, A = I.length - 1; x < A;) O = I[x += 1], x && (i += " || "), i += " ( ( " + (M = u + (P = e.util.getProperty(O))) + " === undefined ", v && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(O) + "') "), i += ") && (missing" + r + " = " + e.util.toQuotedString(e.opts.jsonPointers ? O : P) + ") ) ";
                        i += ")) {  ";
                        var _ = "missing" + r, S = "' + " + _ + " + '";
                        e.opts._errorDataPathProperty && (e.errorPath = e.opts.jsonPointers ? e.util.getPathExpr(C, _, !0) : C + " + " + _);
                        var k = k || [];
                        k.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'dependencies' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { property: '" + e.util.escapeQuotes(w) + "', missingProperty: '" + S + "', depsCount: " + b.length + ", deps: '" + e.util.escapeQuotes(1 == b.length ? b[0] : b.join(", ")) + "' } ", !1 !== e.opts.messages && (i += " , message: 'should have ", 1 == b.length ? i += "property " + e.util.escapeQuotes(b[0]) : i += "properties " + e.util.escapeQuotes(b.join(", ")), i += " when property " + e.util.escapeQuotes(w) + " is present' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                        var L = i;
                        i = k.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + L + "]); " : i += " validate.errors = [" + L + "]; return false; " : i += " var err = " + L + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "
                    } else {
                        i += " ) { ";
                        var T = b;
                        if (T) for (var O, R = -1, E = T.length - 1; R < E;) {
                            O = T[R += 1];
                            var P = e.util.getProperty(O), M = (S = e.util.escapeQuotes(O), u + P);
                            e.opts._errorDataPathProperty && (e.errorPath = e.util.getPath(C, O, e.opts.jsonPointers)), i += " if ( " + M + " === undefined ", v && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(O) + "') "), i += ") {  var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'dependencies' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { property: '" + e.util.escapeQuotes(w) + "', missingProperty: '" + S + "', depsCount: " + b.length + ", deps: '" + e.util.escapeQuotes(1 == b.length ? b[0] : b.join(", ")) + "' } ", !1 !== e.opts.messages && (i += " , message: 'should have ", 1 == b.length ? i += "property " + e.util.escapeQuotes(b[0]) : i += "properties " + e.util.escapeQuotes(b.join(", ")), i += " when property " + e.util.escapeQuotes(w) + " is present' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "
                        }
                    }
                    i += " }   ", c && (f += "}", i += " else { ")
                }
                e.errorPath = C;
                var N = d.baseId;
                for (var w in p) y = p[w], (e.opts.strictKeywords ? "object" == typeof y && Object.keys(y).length > 0 : e.util.schemaHasRules(y, e.RULES.all)) && (i += " " + g + " = true; if ( " + u + e.util.getProperty(w) + " !== undefined ", v && (i += " && Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(w) + "') "), i += ") { ", d.schema = y, d.schemaPath = s + e.util.getProperty(w), d.errSchemaPath = l + "/" + e.util.escapeFragment(w), i += "  " + e.validate(d) + " ", d.baseId = N, i += " }  ", c && (i += " if (" + g + ") { ", f += "}"));
                return c && (i += "   " + f + " if (" + h + " == errors) {"), i = e.util.cleanUpCode(i)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = e.opts.$data && a && a.$data;
                d && (i += " var schema" + r + " = " + e.util.getData(a.$data, o, e.dataPathArr) + "; ");
                var f = "i" + r, g = "schema" + r;
                d || (i += " var " + g + " = validate.schema" + s + ";"), i += "var " + h + ";", d && (i += " if (schema" + r + " === undefined) " + h + " = true; else if (!Array.isArray(schema" + r + ")) " + h + " = false; else {"), i += h + " = false;for (var " + f + "=0; " + f + "<" + g + ".length; " + f + "++) if (equal(" + u + ", " + g + "[" + f + "])) { " + h + " = true; break; }", d && (i += "  }  "), i += " if (!" + h + ") {   ";
                var p = p || [];
                p.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'enum' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { allowedValues: schema" + r + " } ", !1 !== e.opts.messages && (i += " , message: 'should be equal to one of the allowed values' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                var m = i;
                return i = p.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + m + "]); " : i += " validate.errors = [" + m + "]; return false; " : i += " var err = " + m + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " }", c && (i += " else { "), i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || "");
                if (!1 === e.opts.format) return c && (i += " if (true) { "), i;
                var h, d = e.opts.$data && a && a.$data;
                d ? (i += " var schema" + r + " = " + e.util.getData(a.$data, o, e.dataPathArr) + "; ", h = "schema" + r) : h = a;
                var f = e.opts.unknownFormats, g = Array.isArray(f);
                if (d) i += " var " + (p = "format" + r) + " = formats[" + h + "]; var " + (m = "isObject" + r) + " = typeof " + p + " == 'object' && !(" + p + " instanceof RegExp) && " + p + ".validate; var " + (v = "formatType" + r) + " = " + m + " && " + p + ".type || 'string'; if (" + m + ") { ", e.async && (i += " var async" + r + " = " + p + ".async; "), i += " " + p + " = " + p + ".validate; } if (  ", d && (i += " (" + h + " !== undefined && typeof " + h + " != 'string') || "), i += " (", "ignore" != f && (i += " (" + h + " && !" + p + " ", g && (i += " && self._opts.unknownFormats.indexOf(" + h + ") == -1 "), i += ") || "), i += " (" + p + " && " + v + " == '" + n + "' && !(typeof " + p + " == 'function' ? ", e.async ? i += " (async" + r + " ? await " + p + "(" + u + ") : " + p + "(" + u + ")) " : i += " " + p + "(" + u + ") ", i += " : " + p + ".test(" + u + "))))) {"; else {
                    var p;
                    if (!(p = e.formats[a])) {
                        if ("ignore" == f) return e.logger.warn('unknown format "' + a + '" ignored in schema at path "' + e.errSchemaPath + '"'), c && (i += " if (true) { "), i;
                        if (g && f.indexOf(a) >= 0) return c && (i += " if (true) { "), i;
                        throw new Error('unknown format "' + a + '" is used in schema at path "' + e.errSchemaPath + '"')
                    }
                    var m, v = (m = "object" == typeof p && !(p instanceof RegExp) && p.validate) && p.type || "string";
                    if (m) {
                        var y = !0 === p.async;
                        p = p.validate
                    }
                    if (v != n) return c && (i += " if (true) { "), i;
                    if (y) {
                        if (!e.async) throw new Error("async format in sync schema");
                        i += " if (!(await " + (b = "formats" + e.util.getProperty(a) + ".validate") + "(" + u + "))) { "
                    } else {
                        i += " if (! ";
                        var b = "formats" + e.util.getProperty(a);
                        m && (b += ".validate"), i += "function" == typeof p ? " " + b + "(" + u + ") " : " " + b + ".test(" + u + ") ", i += ") { "
                    }
                }
                var C = C || [];
                C.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'format' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { format:  ", i += d ? "" + h : "" + e.util.toQuotedString(a), i += "  } ", !1 !== e.opts.messages && (i += " , message: 'should match format \"", i += d ? "' + " + h + " + '" : "" + e.util.escapeQuotes(a), i += "\"' "), e.opts.verbose && (i += " , schema:  ", i += d ? "validate.schema" + s : "" + e.util.toQuotedString(a), i += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                var w = i;
                return i = C.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + w + "]); " : i += " validate.errors = [" + w + "]; return false; " : i += " var err = " + w + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } ", c && (i += " else { "), i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = "errs__" + r, f = e.util.copy(e);
                f.level++;
                var g = "valid" + f.level, p = e.schema.then, m = e.schema.else,
                    v = void 0 !== p && (e.opts.strictKeywords ? "object" == typeof p && Object.keys(p).length > 0 : e.util.schemaHasRules(p, e.RULES.all)),
                    y = void 0 !== m && (e.opts.strictKeywords ? "object" == typeof m && Object.keys(m).length > 0 : e.util.schemaHasRules(m, e.RULES.all)),
                    b = f.baseId;
                if (v || y) {
                    var C;
                    f.createErrors = !1, f.schema = a, f.schemaPath = s, f.errSchemaPath = l, i += " var " + d + " = errors; var " + h + " = true;  ";
                    var w = e.compositeRule;
                    e.compositeRule = f.compositeRule = !0, i += "  " + e.validate(f) + " ", f.baseId = b, f.createErrors = !0, i += "  errors = " + d + "; if (vErrors !== null) { if (" + d + ") vErrors.length = " + d + "; else vErrors = null; }  ", e.compositeRule = f.compositeRule = w, v ? (i += " if (" + g + ") {  ", f.schema = e.schema.then, f.schemaPath = e.schemaPath + ".then", f.errSchemaPath = e.errSchemaPath + "/then", i += "  " + e.validate(f) + " ", f.baseId = b, i += " " + h + " = " + g + "; ", v && y ? i += " var " + (C = "ifClause" + r) + " = 'then'; " : C = "'then'", i += " } ", y && (i += " else { ")) : i += " if (!" + g + ") { ", y && (f.schema = e.schema.else, f.schemaPath = e.schemaPath + ".else", f.errSchemaPath = e.errSchemaPath + "/else", i += "  " + e.validate(f) + " ", f.baseId = b, i += " " + h + " = " + g + "; ", v && y ? i += " var " + (C = "ifClause" + r) + " = 'else'; " : C = "'else'", i += " } "), i += " if (!" + h + ") {   var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'if' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { failingKeyword: " + C + " } ", !1 !== e.opts.messages && (i += " , message: 'should match \"' + " + C + " + '\" schema' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !e.compositeRule && c && (e.async ? i += " throw new ValidationError(vErrors); " : i += " validate.errors = vErrors; return false; "), i += " }   ", c && (i += " else { "), i = e.util.cleanUpCode(i)
                } else c && (i += " if (true) { ");
                return i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = "errs__" + r, f = e.util.copy(e), g = "";
                f.level++;
                var p = "valid" + f.level, m = "i" + r, v = f.dataLevel = e.dataLevel + 1, y = "data" + v, b = e.baseId;
                if (i += "var " + d + " = errors;var " + h + ";", Array.isArray(a)) {
                    var C = e.schema.additionalItems;
                    if (!1 === C) {
                        i += " " + h + " = " + u + ".length <= " + a.length + "; ";
                        var w = l;
                        l = e.errSchemaPath + "/additionalItems", i += "  if (!" + h + ") {   ";
                        var I = I || [];
                        I.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'additionalItems' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { limit: " + a.length + " } ", !1 !== e.opts.messages && (i += " , message: 'should NOT have more than " + a.length + " items' "), e.opts.verbose && (i += " , schema: false , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                        var x = i;
                        i = I.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + x + "]); " : i += " validate.errors = [" + x + "]; return false; " : i += " var err = " + x + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } ", l = w, c && (g += "}", i += " else { ")
                    }
                    var A = a;
                    if (A) for (var _, S = -1, k = A.length - 1; S < k;) if (_ = A[S += 1], e.opts.strictKeywords ? "object" == typeof _ && Object.keys(_).length > 0 : e.util.schemaHasRules(_, e.RULES.all)) {
                        i += " " + p + " = true; if (" + u + ".length > " + S + ") { ";
                        var L = u + "[" + S + "]";
                        f.schema = _, f.schemaPath = s + "[" + S + "]", f.errSchemaPath = l + "/" + S, f.errorPath = e.util.getPathExpr(e.errorPath, S, e.opts.jsonPointers, !0), f.dataPathArr[v] = S;
                        var T = e.validate(f);
                        f.baseId = b, e.util.varOccurences(T, y) < 2 ? i += " " + e.util.varReplace(T, y, L) + " " : i += " var " + y + " = " + L + "; " + T + " ", i += " }  ", c && (i += " if (" + p + ") { ", g += "}")
                    }
                    "object" == typeof C && (e.opts.strictKeywords ? "object" == typeof C && Object.keys(C).length > 0 : e.util.schemaHasRules(C, e.RULES.all)) && (f.schema = C, f.schemaPath = e.schemaPath + ".additionalItems", f.errSchemaPath = e.errSchemaPath + "/additionalItems", i += " " + p + " = true; if (" + u + ".length > " + a.length + ") {  for (var " + m + " = " + a.length + "; " + m + " < " + u + ".length; " + m + "++) { ", f.errorPath = e.util.getPathExpr(e.errorPath, m, e.opts.jsonPointers, !0), L = u + "[" + m + "]", f.dataPathArr[v] = m, T = e.validate(f), f.baseId = b, e.util.varOccurences(T, y) < 2 ? i += " " + e.util.varReplace(T, y, L) + " " : i += " var " + y + " = " + L + "; " + T + " ", c && (i += " if (!" + p + ") break; "), i += " } }  ", c && (i += " if (" + p + ") { ", g += "}"))
                } else (e.opts.strictKeywords ? "object" == typeof a && Object.keys(a).length > 0 : e.util.schemaHasRules(a, e.RULES.all)) && (f.schema = a, f.schemaPath = s, f.errSchemaPath = l, i += "  for (var " + m + " = 0; " + m + " < " + u + ".length; " + m + "++) { ", f.errorPath = e.util.getPathExpr(e.errorPath, m, e.opts.jsonPointers, !0), L = u + "[" + m + "]", f.dataPathArr[v] = m, T = e.validate(f), f.baseId = b, e.util.varOccurences(T, y) < 2 ? i += " " + e.util.varReplace(T, y, L) + " " : i += " var " + y + " = " + L + "; " + T + " ", c && (i += " if (!" + p + ") break; "), i += " }");
                return c && (i += " " + g + " if (" + d + " == errors) {"), i = e.util.cleanUpCode(i)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""),
                    d = e.opts.$data && s && s.$data;
                d ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s, r += "var division" + o + ";if (", d && (r += " " + i + " !== undefined && ( typeof " + i + " != 'number' || "), r += " (division" + o + " = " + h + " / " + i + ", ", e.opts.multipleOfPrecision ? r += " Math.abs(Math.round(division" + o + ") - division" + o + ") > 1e-" + e.opts.multipleOfPrecision + " " : r += " division" + o + " !== parseInt(division" + o + ") ", r += " ) ", d && (r += "  )  "), r += " ) {   ";
                var f = f || [];
                f.push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: 'multipleOf' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { multipleOf: " + i + " } ", !1 !== e.opts.messages && (r += " , message: 'should be multiple of ", r += d ? "' + " + i : i + "'"), e.opts.verbose && (r += " , schema:  ", r += d ? "validate.schema" + l : "" + s, r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                var g = r;
                return r = f.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + g + "]); " : r += " validate.errors = [" + g + "]; return false; " : r += " var err = " + g + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += "} ", u && (r += " else { "), r
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "errs__" + r,
                    d = e.util.copy(e);
                d.level++;
                var f = "valid" + d.level;
                if (e.opts.strictKeywords ? "object" == typeof a && Object.keys(a).length > 0 : e.util.schemaHasRules(a, e.RULES.all)) {
                    d.schema = a, d.schemaPath = s, d.errSchemaPath = l, i += " var " + h + " = errors;  ";
                    var g, p = e.compositeRule;
                    e.compositeRule = d.compositeRule = !0, d.createErrors = !1, d.opts.allErrors && (g = d.opts.allErrors, d.opts.allErrors = !1), i += " " + e.validate(d) + " ", d.createErrors = !0, g && (d.opts.allErrors = g), e.compositeRule = d.compositeRule = p, i += " if (" + f + ") {   ";
                    var m = m || [];
                    m.push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'not' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: {} ", !1 !== e.opts.messages && (i += " , message: 'should NOT be valid' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                    var v = i;
                    i = m.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + v + "]); " : i += " validate.errors = [" + v + "]; return false; " : i += " var err = " + v + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } else {  errors = " + h + "; if (vErrors !== null) { if (" + h + ") vErrors.length = " + h + "; else vErrors = null; } ", e.opts.allErrors && (i += " } ")
                } else i += "  var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'not' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: {} ", !1 !== e.opts.messages && (i += " , message: 'should NOT be valid' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", c && (i += " if (false) { ");
                return i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = "errs__" + r, f = e.util.copy(e), g = "";
                f.level++;
                var p = "valid" + f.level, m = f.baseId, v = "prevValid" + r, y = "passingSchemas" + r;
                i += "var " + d + " = errors , " + v + " = false , " + h + " = false , " + y + " = null; ";
                var b = e.compositeRule;
                e.compositeRule = f.compositeRule = !0;
                var C = a;
                if (C) for (var w, I = -1, x = C.length - 1; I < x;) w = C[I += 1], (e.opts.strictKeywords ? "object" == typeof w && Object.keys(w).length > 0 : e.util.schemaHasRules(w, e.RULES.all)) ? (f.schema = w, f.schemaPath = s + "[" + I + "]", f.errSchemaPath = l + "/" + I, i += "  " + e.validate(f) + " ", f.baseId = m) : i += " var " + p + " = true; ", I && (i += " if (" + p + " && " + v + ") { " + h + " = false; " + y + " = [" + y + ", " + I + "]; } else { ", g += "}"), i += " if (" + p + ") { " + h + " = " + v + " = true; " + y + " = " + I + "; }";
                return e.compositeRule = f.compositeRule = b, i += g + "if (!" + h + ") {   var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'oneOf' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { passingSchemas: " + y + " } ", !1 !== e.opts.messages && (i += " , message: 'should match exactly one schema in oneOf' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !e.compositeRule && c && (e.async ? i += " throw new ValidationError(vErrors); " : i += " validate.errors = vErrors; return false; "), i += "} else {  errors = " + d + "; if (vErrors !== null) { if (" + d + ") vErrors.length = " + d + "; else vErrors = null; }", e.opts.allErrors && (i += " } "), i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""),
                    d = e.opts.$data && s && s.$data;
                d ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s, r += "if ( ", d && (r += " (" + i + " !== undefined && typeof " + i + " != 'string') || "), r += " !" + (d ? "(new RegExp(" + i + "))" : e.usePattern(s)) + ".test(" + h + ") ) {   ";
                var f = f || [];
                f.push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: 'pattern' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { pattern:  ", r += d ? "" + i : "" + e.util.toQuotedString(s), r += "  } ", !1 !== e.opts.messages && (r += " , message: 'should match pattern \"", r += d ? "' + " + i + " + '" : "" + e.util.escapeQuotes(s), r += "\"' "), e.opts.verbose && (r += " , schema:  ", r += d ? "validate.schema" + l : "" + e.util.toQuotedString(s), r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                var g = r;
                return r = f.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + g + "]); " : r += " validate.errors = [" + g + "]; return false; " : r += " var err = " + g + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += "} ", u && (r += " else { "), r
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "errs__" + r,
                    d = e.util.copy(e), f = "";
                d.level++;
                var g = "valid" + d.level, p = "key" + r, m = "idx" + r, v = d.dataLevel = e.dataLevel + 1,
                    y = "data" + v, b = "dataProperties" + r, C = Object.keys(a || {}),
                    w = e.schema.patternProperties || {}, I = Object.keys(w), x = e.schema.additionalProperties,
                    A = C.length || I.length, _ = !1 === x, S = "object" == typeof x && Object.keys(x).length,
                    k = e.opts.removeAdditional, L = _ || S || k, T = e.opts.ownProperties, O = e.baseId,
                    R = e.schema.required;
                if (R && (!e.opts.$data || !R.$data) && R.length < e.opts.loopRequired) var E = e.util.toHash(R);
                if (i += "var " + h + " = errors;var " + g + " = true;", T && (i += " var " + b + " = undefined;"), L) {
                    if (i += T ? " " + b + " = " + b + " || Object.keys(" + u + "); for (var " + m + "=0; " + m + "<" + b + ".length; " + m + "++) { var " + p + " = " + b + "[" + m + "]; " : " for (var " + p + " in " + u + ") { ", A) {
                        if (i += " var isAdditional" + r + " = !(false ", C.length) if (C.length > 8) i += " || validate.schema" + s + ".hasOwnProperty(" + p + ") "; else {
                            var P = C;
                            if (P) for (var M = -1, N = P.length - 1; M < N;) X = P[M += 1], i += " || " + p + " == " + e.util.toQuotedString(X) + " "
                        }
                        if (I.length) {
                            var D = I;
                            if (D) for (var B = -1, j = D.length - 1; B < j;) re = D[B += 1], i += " || " + e.usePattern(re) + ".test(" + p + ") "
                        }
                        i += " ); if (isAdditional" + r + ") { "
                    }
                    if ("all" == k) i += " delete " + u + "[" + p + "]; "; else {
                        var F = e.errorPath, H = "' + " + p + " + '";
                        if (e.opts._errorDataPathProperty && (e.errorPath = e.util.getPathExpr(e.errorPath, p, e.opts.jsonPointers)), _) if (k) i += " delete " + u + "[" + p + "]; "; else {
                            i += " " + g + " = false; ";
                            var W = l;
                            l = e.errSchemaPath + "/additionalProperties", (te = te || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'additionalProperties' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { additionalProperty: '" + H + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is an invalid additional property" : i += "should NOT have additional properties", i += "' "), e.opts.verbose && (i += " , schema: false , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                            var V = i;
                            i = te.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + V + "]); " : i += " validate.errors = [" + V + "]; return false; " : i += " var err = " + V + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", l = W, c && (i += " break; ")
                        } else if (S) if ("failing" == k) {
                            i += " var " + h + " = errors;  ";
                            var G = e.compositeRule;
                            e.compositeRule = d.compositeRule = !0, d.schema = x, d.schemaPath = e.schemaPath + ".additionalProperties", d.errSchemaPath = e.errSchemaPath + "/additionalProperties", d.errorPath = e.opts._errorDataPathProperty ? e.errorPath : e.util.getPathExpr(e.errorPath, p, e.opts.jsonPointers);
                            var z = u + "[" + p + "]";
                            d.dataPathArr[v] = p;
                            var Z = e.validate(d);
                            d.baseId = O, e.util.varOccurences(Z, y) < 2 ? i += " " + e.util.varReplace(Z, y, z) + " " : i += " var " + y + " = " + z + "; " + Z + " ", i += " if (!" + g + ") { errors = " + h + "; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete " + u + "[" + p + "]; }  ", e.compositeRule = d.compositeRule = G
                        } else d.schema = x, d.schemaPath = e.schemaPath + ".additionalProperties", d.errSchemaPath = e.errSchemaPath + "/additionalProperties", d.errorPath = e.opts._errorDataPathProperty ? e.errorPath : e.util.getPathExpr(e.errorPath, p, e.opts.jsonPointers), z = u + "[" + p + "]", d.dataPathArr[v] = p, Z = e.validate(d), d.baseId = O, e.util.varOccurences(Z, y) < 2 ? i += " " + e.util.varReplace(Z, y, z) + " " : i += " var " + y + " = " + z + "; " + Z + " ", c && (i += " if (!" + g + ") break; ");
                        e.errorPath = F
                    }
                    A && (i += " } "), i += " }  ", c && (i += " if (" + g + ") { ", f += "}")
                }
                var $ = e.opts.useDefaults && !e.compositeRule;
                if (C.length) {
                    var K = C;
                    if (K) for (var X, Y = -1, U = K.length - 1; Y < U;) {
                        var J = a[X = K[Y += 1]];
                        if (e.opts.strictKeywords ? "object" == typeof J && Object.keys(J).length > 0 : e.util.schemaHasRules(J, e.RULES.all)) {
                            var q = e.util.getProperty(X), Q = (z = u + q, $ && void 0 !== J.default);
                            if (d.schema = J, d.schemaPath = s + q, d.errSchemaPath = l + "/" + e.util.escapeFragment(X), d.errorPath = e.util.getPath(e.errorPath, X, e.opts.jsonPointers), d.dataPathArr[v] = e.util.toQuotedString(X), Z = e.validate(d), d.baseId = O, e.util.varOccurences(Z, y) < 2) {
                                Z = e.util.varReplace(Z, y, z);
                                var ee = z
                            } else ee = y, i += " var " + y + " = " + z + "; ";
                            if (Q) i += " " + Z + " "; else {
                                if (E && E[X]) {
                                    i += " if ( " + ee + " === undefined ", T && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(X) + "') "), i += ") { " + g + " = false; ", F = e.errorPath, W = l;
                                    var te, ne = e.util.escapeQuotes(X);
                                    e.opts._errorDataPathProperty && (e.errorPath = e.util.getPath(F, X, e.opts.jsonPointers)), l = e.errSchemaPath + "/required", (te = te || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'required' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { missingProperty: '" + ne + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is a required property" : i += "should have required property \\'" + ne + "\\'", i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", V = i, i = te.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + V + "]); " : i += " validate.errors = [" + V + "]; return false; " : i += " var err = " + V + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", l = W, e.errorPath = F, i += " } else { "
                                } else c ? (i += " if ( " + ee + " === undefined ", T && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(X) + "') "), i += ") { " + g + " = true; } else { ") : (i += " if (" + ee + " !== undefined ", T && (i += " &&   Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(X) + "') "), i += " ) { ");
                                i += " " + Z + " } "
                            }
                        }
                        c && (i += " if (" + g + ") { ", f += "}")
                    }
                }
                if (I.length) {
                    var ie = I;
                    if (ie) for (var re, oe = -1, ae = ie.length - 1; oe < ae;) J = w[re = ie[oe += 1]], (e.opts.strictKeywords ? "object" == typeof J && Object.keys(J).length > 0 : e.util.schemaHasRules(J, e.RULES.all)) && (d.schema = J, d.schemaPath = e.schemaPath + ".patternProperties" + e.util.getProperty(re), d.errSchemaPath = e.errSchemaPath + "/patternProperties/" + e.util.escapeFragment(re), i += T ? " " + b + " = " + b + " || Object.keys(" + u + "); for (var " + m + "=0; " + m + "<" + b + ".length; " + m + "++) { var " + p + " = " + b + "[" + m + "]; " : " for (var " + p + " in " + u + ") { ", i += " if (" + e.usePattern(re) + ".test(" + p + ")) { ", d.errorPath = e.util.getPathExpr(e.errorPath, p, e.opts.jsonPointers), z = u + "[" + p + "]", d.dataPathArr[v] = p, Z = e.validate(d), d.baseId = O, e.util.varOccurences(Z, y) < 2 ? i += " " + e.util.varReplace(Z, y, z) + " " : i += " var " + y + " = " + z + "; " + Z + " ", c && (i += " if (!" + g + ") break; "), i += " } ", c && (i += " else " + g + " = true; "), i += " }  ", c && (i += " if (" + g + ") { ", f += "}"))
                }
                return c && (i += " " + f + " if (" + h + " == errors) {"), i = e.util.cleanUpCode(i)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "errs__" + r,
                    d = e.util.copy(e);
                d.level++;
                var f = "valid" + d.level;
                if (i += "var " + h + " = errors;", e.opts.strictKeywords ? "object" == typeof a && Object.keys(a).length > 0 : e.util.schemaHasRules(a, e.RULES.all)) {
                    d.schema = a, d.schemaPath = s, d.errSchemaPath = l;
                    var g = "key" + r, p = "idx" + r, m = "i" + r, v = "' + " + g + " + '",
                        y = "data" + (d.dataLevel = e.dataLevel + 1), b = "dataProperties" + r,
                        C = e.opts.ownProperties, w = e.baseId;
                    C && (i += " var " + b + " = undefined; "), i += C ? " " + b + " = " + b + " || Object.keys(" + u + "); for (var " + p + "=0; " + p + "<" + b + ".length; " + p + "++) { var " + g + " = " + b + "[" + p + "]; " : " for (var " + g + " in " + u + ") { ", i += " var startErrs" + r + " = errors; ";
                    var I = g, x = e.compositeRule;
                    e.compositeRule = d.compositeRule = !0;
                    var A = e.validate(d);
                    d.baseId = w, e.util.varOccurences(A, y) < 2 ? i += " " + e.util.varReplace(A, y, I) + " " : i += " var " + y + " = " + I + "; " + A + " ", e.compositeRule = d.compositeRule = x, i += " if (!" + f + ") { for (var " + m + "=startErrs" + r + "; " + m + "<errors; " + m + "++) { vErrors[" + m + "].propertyName = " + g + "; }   var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'propertyNames' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { propertyName: '" + v + "' } ", !1 !== e.opts.messages && (i += " , message: 'property name \\'" + v + "\\' is invalid' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !e.compositeRule && c && (e.async ? i += " throw new ValidationError(vErrors); " : i += " validate.errors = vErrors; return false; "), c && (i += " break; "), i += " } }"
                }
                return c && (i += "  if (" + h + " == errors) {"), i = e.util.cleanUpCode(i)
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i = " ", r = e.level, o = e.dataLevel, a = e.schema[t], s = e.schemaPath + e.util.getProperty(t),
                    l = e.errSchemaPath + "/" + t, c = !e.opts.allErrors, u = "data" + (o || ""), h = "valid" + r,
                    d = e.opts.$data && a && a.$data;
                d && (i += " var schema" + r + " = " + e.util.getData(a.$data, o, e.dataPathArr) + "; ");
                var f = "schema" + r;
                if (!d) if (a.length < e.opts.loopRequired && e.schema.properties && Object.keys(e.schema.properties).length) {
                    var g = [], p = a;
                    if (p) for (var m, v = -1, y = p.length - 1; v < y;) {
                        m = p[v += 1];
                        var b = e.schema.properties[m];
                        b && (e.opts.strictKeywords ? "object" == typeof b && Object.keys(b).length > 0 : e.util.schemaHasRules(b, e.RULES.all)) || (g[g.length] = m)
                    }
                } else g = a;
                if (d || g.length) {
                    var C = e.errorPath, w = d || g.length >= e.opts.loopRequired, I = e.opts.ownProperties;
                    if (c) if (i += " var missing" + r + "; ", w) {
                        d || (i += " var " + f + " = validate.schema" + s + "; ");
                        var x = "' + " + (T = "schema" + r + "[" + (k = "i" + r) + "]") + " + '";
                        e.opts._errorDataPathProperty && (e.errorPath = e.util.getPathExpr(C, T, e.opts.jsonPointers)), i += " var " + h + " = true; ", d && (i += " if (schema" + r + " === undefined) " + h + " = true; else if (!Array.isArray(schema" + r + ")) " + h + " = false; else {"), i += " for (var " + k + " = 0; " + k + " < " + f + ".length; " + k + "++) { " + h + " = " + u + "[" + f + "[" + k + "]] !== undefined ", I && (i += " &&   Object.prototype.hasOwnProperty.call(" + u + ", " + f + "[" + k + "]) "), i += "; if (!" + h + ") break; } ", d && (i += "  }  "), i += "  if (!" + h + ") {   ", (_ = _ || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'required' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { missingProperty: '" + x + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is a required property" : i += "should have required property \\'" + x + "\\'", i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ";
                        var A = i;
                        i = _.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + A + "]); " : i += " validate.errors = [" + A + "]; return false; " : i += " var err = " + A + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } else { "
                    } else {
                        i += " if ( ";
                        var _, S = g;
                        if (S) for (var k = -1, L = S.length - 1; k < L;) R = S[k += 1], k && (i += " || "), i += " ( ( " + (N = u + (M = e.util.getProperty(R))) + " === undefined ", I && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(R) + "') "), i += ") && (missing" + r + " = " + e.util.toQuotedString(e.opts.jsonPointers ? R : M) + ") ) ";
                        i += ") {  ", x = "' + " + (T = "missing" + r) + " + '", e.opts._errorDataPathProperty && (e.errorPath = e.opts.jsonPointers ? e.util.getPathExpr(C, T, !0) : C + " + " + T), (_ = _ || []).push(i), i = "", !1 !== e.createErrors ? (i += " { keyword: 'required' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { missingProperty: '" + x + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is a required property" : i += "should have required property \\'" + x + "\\'", i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", A = i, i = _.pop(), !e.compositeRule && c ? e.async ? i += " throw new ValidationError([" + A + "]); " : i += " validate.errors = [" + A + "]; return false; " : i += " var err = " + A + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", i += " } else { "
                    } else if (w) {
                        var T;
                        d || (i += " var " + f + " = validate.schema" + s + "; "), x = "' + " + (T = "schema" + r + "[" + (k = "i" + r) + "]") + " + '", e.opts._errorDataPathProperty && (e.errorPath = e.util.getPathExpr(C, T, e.opts.jsonPointers)), d && (i += " if (" + f + " && !Array.isArray(" + f + ")) {  var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'required' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { missingProperty: '" + x + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is a required property" : i += "should have required property \\'" + x + "\\'", i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (" + f + " !== undefined) { "), i += " for (var " + k + " = 0; " + k + " < " + f + ".length; " + k + "++) { if (" + u + "[" + f + "[" + k + "]] === undefined ", I && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", " + f + "[" + k + "]) "), i += ") {  var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'required' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { missingProperty: '" + x + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is a required property" : i += "should have required property \\'" + x + "\\'", i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ", d && (i += "  }  ")
                    } else {
                        var O = g;
                        if (O) for (var R, E = -1, P = O.length - 1; E < P;) {
                            R = O[E += 1];
                            var M = e.util.getProperty(R), N = (x = e.util.escapeQuotes(R), u + M);
                            e.opts._errorDataPathProperty && (e.errorPath = e.util.getPath(C, R, e.opts.jsonPointers)), i += " if ( " + N + " === undefined ", I && (i += " || ! Object.prototype.hasOwnProperty.call(" + u + ", '" + e.util.escapeQuotes(R) + "') "), i += ") {  var err =   ", !1 !== e.createErrors ? (i += " { keyword: 'required' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(l) + " , params: { missingProperty: '" + x + "' } ", !1 !== e.opts.messages && (i += " , message: '", e.opts._errorDataPathProperty ? i += "is a required property" : i += "should have required property \\'" + x + "\\'", i += "' "), e.opts.verbose && (i += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + u + " "), i += " } ") : i += " {} ", i += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "
                        }
                    }
                    e.errorPath = C
                } else c && (i += " if (true) {");
                return i
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r = " ", o = e.level, a = e.dataLevel, s = e.schema[t], l = e.schemaPath + e.util.getProperty(t),
                    c = e.errSchemaPath + "/" + t, u = !e.opts.allErrors, h = "data" + (a || ""), d = "valid" + o,
                    f = e.opts.$data && s && s.$data;
                if (f ? (r += " var schema" + o + " = " + e.util.getData(s.$data, a, e.dataPathArr) + "; ", i = "schema" + o) : i = s, (s || f) && !1 !== e.opts.uniqueItems) {
                    f && (r += " var " + d + "; if (" + i + " === false || " + i + " === undefined) " + d + " = true; else if (typeof " + i + " != 'boolean') " + d + " = false; else { "), r += " var i = " + h + ".length , " + d + " = true , j; if (i > 1) { ";
                    var g = e.schema.items && e.schema.items.type, p = Array.isArray(g);
                    if (!g || "object" == g || "array" == g || p && (g.indexOf("object") >= 0 || g.indexOf("array") >= 0)) r += " outer: for (;i--;) { for (j = i; j--;) { if (equal(" + h + "[i], " + h + "[j])) { " + d + " = false; break outer; } } } "; else {
                        r += " var itemIndices = {}, item; for (;i--;) { var item = " + h + "[i]; ";
                        var m = "checkDataType" + (p ? "s" : "");
                        r += " if (" + e.util[m](g, "item", !0) + ") continue; ", p && (r += " if (typeof item == 'string') item = '\"' + item; "), r += " if (typeof itemIndices[item] == 'number') { " + d + " = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "
                    }
                    r += " } ", f && (r += "  }  "), r += " if (!" + d + ") {   ";
                    var v = v || [];
                    v.push(r), r = "", !1 !== e.createErrors ? (r += " { keyword: 'uniqueItems' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(c) + " , params: { i: i, j: j } ", !1 !== e.opts.messages && (r += " , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "), e.opts.verbose && (r += " , schema:  ", r += f ? "validate.schema" + l : "" + s, r += "         , parentSchema: validate.schema" + e.schemaPath + " , data: " + h + " "), r += " } ") : r += " {} ";
                    var y = r;
                    r = v.pop(), !e.compositeRule && u ? e.async ? r += " throw new ValidationError([" + y + "]); " : r += " validate.errors = [" + y + "]; return false; " : r += " var err = " + y + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", r += " } ", u && (r += " else { ")
                } else u && (r += " if (true) { ");
                return r
            }
        }, function (e, t, n) {
            "use strict";
            var i = ["multipleOf", "maximum", "exclusiveMaximum", "minimum", "exclusiveMinimum", "maxLength", "minLength", "pattern", "additionalItems", "maxItems", "minItems", "uniqueItems", "maxProperties", "minProperties", "required", "additionalProperties", "enum", "format", "const"];
            e.exports = function (e, t) {
                for (var n = 0; n < t.length; n++) {
                    e = JSON.parse(JSON.stringify(e));
                    var r, o = t[n].split("/"), a = e;
                    for (r = 1; r < o.length; r++) a = a[o[r]];
                    for (r = 0; r < i.length; r++) {
                        var s = i[r], l = a[s];
                        l && (a[s] = {anyOf: [l, {$ref: "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]})
                    }
                }
                return e
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(19).MissingRef;
            e.exports = function e(t, n, r) {
                var o = this;
                if ("function" != typeof this._opts.loadSchema) throw new Error("options.loadSchema should be a function");
                "function" == typeof n && (r = n, n = void 0);
                var a = s(t).then((function () {
                    var e = o._addSchema(t, void 0, n);
                    return e.validate || function e(t) {
                        try {
                            return o._compile(t)
                        } catch (e) {
                            if (e instanceof i) return r(e);
                            throw e
                        }

                        function r(i) {
                            var r = i.missingSchema;
                            if (c(r)) throw new Error("Schema " + r + " is loaded but " + i.missingRef + " cannot be resolved");
                            var a = o._loadingSchemas[r];
                            return a || (a = o._loadingSchemas[r] = o._opts.loadSchema(r)).then(l, l), a.then((function (e) {
                                if (!c(r)) return s(e).then((function () {
                                    c(r) || o.addSchema(e, r, void 0, n)
                                }))
                            })).then((function () {
                                return e(t)
                            }));

                            function l() {
                                delete o._loadingSchemas[r]
                            }

                            function c(e) {
                                return o._refs[e] || o._schemas[e]
                            }
                        }
                    }(e)
                }));
                return r && a.then((function (e) {
                    r(null, e)
                }), r), a;

                function s(t) {
                    var n = t.$schema;
                    return n && !o.getSchema(n) ? e.call(o, {$ref: n}, !0) : Promise.resolve()
                }
            }
        }, function (e, t, n) {
            "use strict";
            var i = /^[a-z_$][a-z0-9_$-]*$/i, r = n(75), o = n(76);
            e.exports = {
                add: function (e, t) {
                    var n = this.RULES;
                    if (n.keywords[e]) throw new Error("Keyword " + e + " is already defined");
                    if (!i.test(e)) throw new Error("Keyword " + e + " is not a valid identifier");
                    if (t) {
                        this.validateKeyword(t, !0);
                        var o = t.type;
                        if (Array.isArray(o)) for (var a = 0; a < o.length; a++) l(e, o[a], t); else l(e, o, t);
                        var s = t.metaSchema;
                        s && (t.$data && this._opts.$data && (s = {anyOf: [s, {$ref: "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]}), t.validateSchema = this.compile(s, !0))
                    }

                    function l(e, t, i) {
                        for (var o, a = 0; a < n.length; a++) {
                            var s = n[a];
                            if (s.type == t) {
                                o = s;
                                break
                            }
                        }
                        o || (o = {type: t, rules: []}, n.push(o));
                        var l = {keyword: e, definition: i, custom: !0, code: r, implements: i.implements};
                        o.rules.push(l), n.custom[e] = l
                    }

                    return n.keywords[e] = n.all[e] = !0, this
                }, get: function (e) {
                    var t = this.RULES.custom[e];
                    return t ? t.definition : this.RULES.keywords[e] || !1
                }, remove: function (e) {
                    var t = this.RULES;
                    delete t.keywords[e], delete t.all[e], delete t.custom[e];
                    for (var n = 0; n < t.length; n++) for (var i = t[n].rules, r = 0; r < i.length; r++) if (i[r].keyword == e) {
                        i.splice(r, 1);
                        break
                    }
                    return this
                }, validate: function e(t, n) {
                    e.errors = null;
                    var i = this._validateKeyword = this._validateKeyword || this.compile(o, !0);
                    if (i(t)) return !0;
                    if (e.errors = i.errors, n) throw new Error("custom keyword definition is invalid: " + this.errorsText(i.errors));
                    return !1
                }
            }
        }, function (e, t, n) {
            "use strict";
            e.exports = function (e, t, n) {
                var i, r, o = " ", a = e.level, s = e.dataLevel, l = e.schema[t],
                    c = e.schemaPath + e.util.getProperty(t), u = e.errSchemaPath + "/" + t, h = !e.opts.allErrors,
                    d = "data" + (s || ""), f = "valid" + a, g = "errs__" + a, p = e.opts.$data && l && l.$data;
                p ? (o += " var schema" + a + " = " + e.util.getData(l.$data, s, e.dataPathArr) + "; ", r = "schema" + a) : r = l;
                var m, v, y, b, C, w = "definition" + a, I = this.definition, x = "";
                if (p && I.$data) {
                    C = "keywordValidate" + a;
                    var A = I.validateSchema;
                    o += " var " + w + " = RULES.custom['" + t + "'].definition; var " + C + " = " + w + ".validate;"
                } else {
                    if (!(b = e.useCustomRule(this, l, e.schema, e))) return;
                    r = "validate.schema" + c, C = b.code, m = I.compile, v = I.inline, y = I.macro
                }
                var _ = C + ".errors", S = "i" + a, k = "ruleErr" + a, L = I.async;
                if (L && !e.async) throw new Error("async keyword in sync schema");
                if (v || y || (o += _ + " = null;"), o += "var " + g + " = errors;var " + f + ";", p && I.$data && (x += "}", o += " if (" + r + " === undefined) { " + f + " = true; } else { ", A && (x += "}", o += " " + f + " = " + w + ".validateSchema(" + r + "); if (" + f + ") { ")), v) I.statements ? o += " " + b.validate + " " : o += " " + f + " = " + b.validate + "; "; else if (y) {
                    var T = e.util.copy(e);
                    x = "", T.level++;
                    var O = "valid" + T.level;
                    T.schema = b.validate, T.schemaPath = "";
                    var R = e.compositeRule;
                    e.compositeRule = T.compositeRule = !0;
                    var E = e.validate(T).replace(/validate\.schema/g, C);
                    e.compositeRule = T.compositeRule = R, o += " " + E
                } else {
                    (D = D || []).push(o), o = "", o += "  " + C + ".call( ", e.opts.passContext ? o += "this" : o += "self", m || !1 === I.schema ? o += " , " + d + " " : o += " , " + r + " , " + d + " , validate.schema" + e.schemaPath + " ", o += " , (dataPath || '')", '""' != e.errorPath && (o += " + " + e.errorPath);
                    var P = s ? "data" + (s - 1 || "") : "parentData", M = s ? e.dataPathArr[s] : "parentDataProperty",
                        N = o += " , " + P + " , " + M + " , rootData )  ";
                    o = D.pop(), !1 === I.errors ? (o += " " + f + " = ", L && (o += "await "), o += N + "; ") : o += L ? " var " + (_ = "customErrors" + a) + " = null; try { " + f + " = await " + N + "; } catch (e) { " + f + " = false; if (e instanceof ValidationError) " + _ + " = e.errors; else throw e; } " : " " + _ + " = null; " + f + " = " + N + "; "
                }
                if (I.modifying && (o += " if (" + P + ") " + d + " = " + P + "[" + M + "];"), o += "" + x, I.valid) h && (o += " if (true) { "); else {
                    var D;
                    o += " if ( ", void 0 === I.valid ? (o += " !", o += y ? "" + O : "" + f) : o += " " + !I.valid + " ", o += ") { ", i = this.keyword, (D = D || []).push(o), o = "", (D = D || []).push(o), o = "", !1 !== e.createErrors ? (o += " { keyword: '" + (i || "custom") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(u) + " , params: { keyword: '" + this.keyword + "' } ", !1 !== e.opts.messages && (o += " , message: 'should pass \"" + this.keyword + "\" keyword validation' "), e.opts.verbose && (o += " , schema: validate.schema" + c + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + d + " "), o += " } ") : o += " {} ";
                    var B = o;
                    o = D.pop(), !e.compositeRule && h ? e.async ? o += " throw new ValidationError([" + B + "]); " : o += " validate.errors = [" + B + "]; return false; " : o += " var err = " + B + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";
                    var j = o;
                    o = D.pop(), v ? I.errors ? "full" != I.errors && (o += "  for (var " + S + "=" + g + "; " + S + "<errors; " + S + "++) { var " + k + " = vErrors[" + S + "]; if (" + k + ".dataPath === undefined) " + k + ".dataPath = (dataPath || '') + " + e.errorPath + "; if (" + k + ".schemaPath === undefined) { " + k + '.schemaPath = "' + u + '"; } ', e.opts.verbose && (o += " " + k + ".schema = " + r + "; " + k + ".data = " + d + "; "), o += " } ") : !1 === I.errors ? o += " " + j + " " : (o += " if (" + g + " == errors) { " + j + " } else {  for (var " + S + "=" + g + "; " + S + "<errors; " + S + "++) { var " + k + " = vErrors[" + S + "]; if (" + k + ".dataPath === undefined) " + k + ".dataPath = (dataPath || '') + " + e.errorPath + "; if (" + k + ".schemaPath === undefined) { " + k + '.schemaPath = "' + u + '"; } ', e.opts.verbose && (o += " " + k + ".schema = " + r + "; " + k + ".data = " + d + "; "), o += " } } ") : y ? (o += "   var err =   ", !1 !== e.createErrors ? (o += " { keyword: '" + (i || "custom") + "' , dataPath: (dataPath || '') + " + e.errorPath + " , schemaPath: " + e.util.toQuotedString(u) + " , params: { keyword: '" + this.keyword + "' } ", !1 !== e.opts.messages && (o += " , message: 'should pass \"" + this.keyword + "\" keyword validation' "), e.opts.verbose && (o += " , schema: validate.schema" + c + " , parentSchema: validate.schema" + e.schemaPath + " , data: " + d + " "), o += " } ") : o += " {} ", o += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !e.compositeRule && h && (e.async ? o += " throw new ValidationError(vErrors); " : o += " validate.errors = vErrors; return false; ")) : !1 === I.errors ? o += " " + j + " " : (o += " if (Array.isArray(" + _ + ")) { if (vErrors === null) vErrors = " + _ + "; else vErrors = vErrors.concat(" + _ + "); errors = vErrors.length;  for (var " + S + "=" + g + "; " + S + "<errors; " + S + "++) { var " + k + " = vErrors[" + S + "]; if (" + k + ".dataPath === undefined) " + k + ".dataPath = (dataPath || '') + " + e.errorPath + ";  " + k + '.schemaPath = "' + u + '";  ', e.opts.verbose && (o += " " + k + ".schema = " + r + "; " + k + ".data = " + d + "; "), o += " } } else { " + j + " } "), o += " } ", h && (o += " else { ")
                }
                return o
            }
        }, function (e, t, n) {
            "use strict";
            var i = n(32);
            e.exports = {
                $id: "https://github.com/epoberezkin/ajv/blob/master/lib/definition_schema.js",
                definitions: {simpleTypes: i.definitions.simpleTypes},
                type: "object",
                dependencies: {
                    schema: ["validate"],
                    $data: ["validate"],
                    statements: ["inline"],
                    valid: {not: {required: ["macro"]}}
                },
                properties: {
                    type: i.properties.type,
                    schema: {type: "boolean"},
                    statements: {type: "boolean"},
                    dependencies: {type: "array", items: {type: "string"}},
                    metaSchema: {type: "object"},
                    modifying: {type: "boolean"},
                    valid: {type: "boolean"},
                    $data: {type: "boolean"},
                    async: {type: "boolean"},
                    errors: {anyOf: [{type: "boolean"}, {const: "full"}]}
                }
            }
        }, function (e) {
            e.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')
        }, function (e) {
            e.exports = JSON.parse('{"id":"http://json-schema.org/draft-04/schema#","$schema":"http://json-schema.org/draft-04/schema#","description":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"positiveInteger":{"type":"integer","minimum":0},"positiveIntegerDefault0":{"allOf":[{"$ref":"#/definitions/positiveInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true}},"type":"object","properties":{"id":{"type":"string"},"$schema":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","minimum":0,"exclusiveMinimum":true},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/positiveInteger"},"minLength":{"$ref":"#/definitions/positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"anyOf":[{"type":"boolean"},{"$ref":"#"}],"default":{}},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/positiveInteger"},"minItems":{"$ref":"#/definitions/positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"maxProperties":{"$ref":"#/definitions/positiveInteger"},"minProperties":{"$ref":"#/definitions/positiveIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"anyOf":[{"type":"boolean"},{"$ref":"#"}],"default":{}},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"dependencies":{"exclusiveMaximum":["maximum"],"exclusiveMinimum":["minimum"]},"default":{}}')
        }, function (e) {
            e.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}')
        }, function (e, t, n) {
            "use strict";
            n.r(t), n.d(t, "treeModeMixins", (function () {
                return D
            }));
            var i = n(13), r = n.n(i);

            function o(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var a = function () {
                function e() {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.locked = !1
                }

                var t, n, i;
                return t = e, (n = [{
                    key: "highlight", value: function (e) {
                        this.locked || (this.node !== e && (this.node && this.node.setHighlight(!1), this.node = e, this.node.setHighlight(!0)), this._cancelUnhighlight())
                    }
                }, {
                    key: "unhighlight", value: function () {
                        if (!this.locked) {
                            var e = this;
                            this.node && (this._cancelUnhighlight(), this.unhighlightTimer = setTimeout((function () {
                                e.node.setHighlight(!1), e.node = void 0, e.unhighlightTimer = void 0
                            }), 0))
                        }
                    }
                }, {
                    key: "_cancelUnhighlight", value: function () {
                        this.unhighlightTimer && (clearTimeout(this.unhighlightTimer), this.unhighlightTimer = void 0)
                    }
                }, {
                    key: "lock", value: function () {
                        this.locked = !0
                    }
                }, {
                    key: "unlock", value: function () {
                        this.locked = !1
                    }
                }]) && o(t.prototype, n), i && o(t, i), e
            }(), s = n(0);

            function l(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var c = function () {
                function e(t) {
                    function n(e) {
                        return t.node.findNodeByInternalPath(e)
                    }

                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.editor = t, this.history = [], this.index = -1, this.clear(), this.actions = {
                        editField: {
                            undo: function (e) {
                                n(e.parentPath).childs[e.index].updateField(e.oldValue)
                            }, redo: function (e) {
                                n(e.parentPath).childs[e.index].updateField(e.newValue)
                            }
                        }, editValue: {
                            undo: function (e) {
                                n(e.path).updateValue(e.oldValue)
                            }, redo: function (e) {
                                n(e.path).updateValue(e.newValue)
                            }
                        }, changeType: {
                            undo: function (e) {
                                n(e.path).changeType(e.oldType)
                            }, redo: function (e) {
                                n(e.path).changeType(e.newType)
                            }
                        }, appendNodes: {
                            undo: function (e) {
                                var t = n(e.parentPath);
                                e.paths.map(n).forEach((function (e) {
                                    t.removeChild(e)
                                }))
                            }, redo: function (e) {
                                var t = n(e.parentPath);
                                e.nodes.forEach((function (e) {
                                    t.appendChild(e)
                                }))
                            }
                        }, insertBeforeNodes: {
                            undo: function (e) {
                                var t = n(e.parentPath);
                                e.paths.map(n).forEach((function (e) {
                                    t.removeChild(e)
                                }))
                            }, redo: function (e) {
                                var t = n(e.parentPath), i = n(e.beforePath);
                                e.nodes.forEach((function (e) {
                                    t.insertBefore(e, i)
                                }))
                            }
                        }, insertAfterNodes: {
                            undo: function (e) {
                                var t = n(e.parentPath);
                                e.paths.map(n).forEach((function (e) {
                                    t.removeChild(e)
                                }))
                            }, redo: function (e) {
                                var t = n(e.parentPath), i = n(e.afterPath);
                                e.nodes.forEach((function (e) {
                                    t.insertAfter(e, i), i = e
                                }))
                            }
                        }, removeNodes: {
                            undo: function (e) {
                                var t = n(e.parentPath), i = t.childs[e.index] || t.append;
                                e.nodes.forEach((function (e) {
                                    t.insertBefore(e, i)
                                }))
                            }, redo: function (e) {
                                var t = n(e.parentPath);
                                e.paths.map(n).forEach((function (e) {
                                    t.removeChild(e)
                                }))
                            }
                        }, duplicateNodes: {
                            undo: function (e) {
                                var t = n(e.parentPath);
                                e.clonePaths.map(n).forEach((function (e) {
                                    t.removeChild(e)
                                }))
                            }, redo: function (e) {
                                var t = n(e.parentPath), i = n(e.afterPath);
                                e.paths.map(n).forEach((function (e) {
                                    var n = e.clone();
                                    if ("object" === t.type) {
                                        var r = t.getFieldNames();
                                        n.field = Object(s.findUniqueName)(e.field, r)
                                    }
                                    t.insertAfter(n, i), i = n
                                }))
                            }
                        }, moveNodes: {
                            undo: function (e) {
                                var t = n(e.oldParentPath), i = n(e.newParentPath),
                                    r = t.childs[e.oldIndex] || t.append;
                                i.childs.slice(e.newIndex, e.newIndex + e.count).forEach((function (n, i) {
                                    n.field = e.fieldNames[i], t.moveBefore(n, r)
                                })), null === e.newParentPathRedo && (e.newParentPathRedo = i.getInternalPath())
                            }, redo: function (e) {
                                var t = n(e.oldParentPathRedo), i = n(e.newParentPathRedo),
                                    r = i.childs[e.newIndexRedo] || i.append;
                                t.childs.slice(e.oldIndexRedo, e.oldIndexRedo + e.count).forEach((function (t, n) {
                                    t.field = e.fieldNames[n], i.moveBefore(t, r)
                                }))
                            }
                        }, sort: {
                            undo: function (e) {
                                var t = n(e.path);
                                t.hideChilds(), t.childs = e.oldChilds, t.updateDom({updateIndexes: !0}), t.showChilds()
                            }, redo: function (e) {
                                var t = n(e.path);
                                t.hideChilds(), t.childs = e.newChilds, t.updateDom({updateIndexes: !0}), t.showChilds()
                            }
                        }, transform: {
                            undo: function (e) {
                                n(e.path).setInternalValue(e.oldValue)
                            }, redo: function (e) {
                                n(e.path).setInternalValue(e.newValue)
                            }
                        }
                    }
                }

                var t, n, i;
                return t = e, (n = [{
                    key: "onChange", value: function () {
                    }
                }, {
                    key: "add", value: function (e, t) {
                        this.index++, this.history[this.index] = {
                            action: e,
                            params: t,
                            timestamp: new Date
                        }, this.index < this.history.length - 1 && this.history.splice(this.index + 1, this.history.length - this.index - 1), this.onChange()
                    }
                }, {
                    key: "clear", value: function () {
                        this.history = [], this.index = -1, this.onChange()
                    }
                }, {
                    key: "canUndo", value: function () {
                        return this.index >= 0
                    }
                }, {
                    key: "canRedo", value: function () {
                        return this.index < this.history.length - 1
                    }
                }, {
                    key: "undo", value: function () {
                        if (this.canUndo()) {
                            var e = this.history[this.index];
                            if (e) {
                                var t = this.actions[e.action];
                                if (t && t.undo) {
                                    if (t.undo(e.params), e.params.oldSelection) try {
                                        this.editor.setDomSelection(e.params.oldSelection)
                                    } catch (e) {
                                        console.error(e)
                                    }
                                } else console.error(new Error('unknown action "' + e.action + '"'))
                            }
                            this.index--, this.onChange()
                        }
                    }
                }, {
                    key: "redo", value: function () {
                        if (this.canRedo()) {
                            this.index++;
                            var e = this.history[this.index];
                            if (e) {
                                var t = this.actions[e.action];
                                if (t && t.redo) {
                                    if (t.redo(e.params), e.params.newSelection) try {
                                        this.editor.setDomSelection(e.params.newSelection)
                                    } catch (e) {
                                        console.error(e)
                                    }
                                } else console.error(new Error('unknown action "' + e.action + '"'))
                            }
                            this.onChange()
                        }
                    }
                }, {
                    key: "destroy", value: function () {
                        this.editor = null, this.history = [], this.index = -1
                    }
                }]) && l(t.prototype, n), i && l(t, i), e
            }(), u = n(1);

            function h(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var d = function () {
                function e(t, n) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e);
                    var i = this;
                    this.editor = t, this.timeout = void 0, this.delay = 200, this.lastText = void 0, this.results = null, this.dom = {}, this.dom.container = n;
                    var r = document.createElement("div");
                    this.dom.wrapper = r, r.className = "jsoneditor-search", n.appendChild(r);
                    var o = document.createElement("div");
                    this.dom.results = o, o.className = "jsoneditor-results", r.appendChild(o);
                    var a = document.createElement("div");
                    this.dom.input = a, a.className = "jsoneditor-frame", a.title = Object(u.c)("searchTitle"), r.appendChild(a);
                    var s = document.createElement("button");
                    s.type = "button", s.className = "jsoneditor-refresh", a.appendChild(s);
                    var l = document.createElement("input");
                    l.type = "text", this.dom.search = l, l.oninput = function (e) {
                        i._onDelayedSearch(e)
                    }, l.onchange = function (e) {
                        i._onSearch()
                    }, l.onkeydown = function (e) {
                        i._onKeyDown(e)
                    }, l.onkeyup = function (e) {
                        i._onKeyUp(e)
                    }, s.onclick = function (e) {
                        l.select()
                    }, a.appendChild(l);
                    var c = document.createElement("button");
                    c.type = "button", c.title = Object(u.c)("searchNextResultTitle"), c.className = "jsoneditor-next", c.onclick = function () {
                        i.next()
                    }, a.appendChild(c);
                    var h = document.createElement("button");
                    h.type = "button", h.title = Object(u.c)("searchPreviousResultTitle"), h.className = "jsoneditor-previous", h.onclick = function () {
                        i.previous()
                    }, a.appendChild(h)
                }

                var t, n, i;
                return t = e, (n = [{
                    key: "next", value: function (e) {
                        if (this.results) {
                            var t = null !== this.resultIndex ? this.resultIndex + 1 : 0;
                            t > this.results.length - 1 && (t = 0), this._setActiveResult(t, e)
                        }
                    }
                }, {
                    key: "previous", value: function (e) {
                        if (this.results) {
                            var t = this.results.length - 1, n = null !== this.resultIndex ? this.resultIndex - 1 : t;
                            n < 0 && (n = t), this._setActiveResult(n, e)
                        }
                    }
                }, {
                    key: "_setActiveResult", value: function (e, t) {
                        if (this.activeResult) {
                            var n = this.activeResult.node;
                            "field" === this.activeResult.elem ? delete n.searchFieldActive : delete n.searchValueActive, n.updateDom()
                        }
                        if (!this.results || !this.results[e]) return this.resultIndex = void 0, void (this.activeResult = void 0);
                        this.resultIndex = e;
                        var i = this.results[this.resultIndex].node, r = this.results[this.resultIndex].elem;
                        "field" === r ? i.searchFieldActive = !0 : i.searchValueActive = !0, this.activeResult = this.results[this.resultIndex], i.updateDom(), i.scrollTo((function () {
                            t && i.focus(r)
                        }))
                    }
                }, {
                    key: "_clearDelay", value: function () {
                        void 0 !== this.timeout && (clearTimeout(this.timeout), delete this.timeout)
                    }
                }, {
                    key: "_onDelayedSearch", value: function (e) {
                        this._clearDelay();
                        var t = this;
                        this.timeout = setTimeout((function (e) {
                            t._onSearch()
                        }), this.delay)
                    }
                }, {
                    key: "_onSearch", value: function (e) {
                        this._clearDelay();
                        var t = this.dom.search.value, n = t.length > 0 ? t : void 0;
                        if (n !== this.lastText || e) {
                            this.lastText = n, this.results = this.editor.search(n);
                            var i = this.results[0] ? this.results[0].node.MAX_SEARCH_RESULTS : 1 / 0, r = 0;
                            if (this.activeResult) for (var o = 0; o < this.results.length; o++) if (this.results[o].node === this.activeResult.node) {
                                r = o;
                                break
                            }
                            if (this._setActiveResult(r, !1), void 0 !== n) {
                                var a = this.results.length;
                                this.dom.results.innerHTML = 0 === a ? "no&nbsp;results" : 1 === a ? "1&nbsp;result" : a > i ? i + "+&nbsp;results" : a + "&nbsp;results"
                            } else this.dom.results.innerHTML = ""
                        }
                    }
                }, {
                    key: "_onKeyDown", value: function (e) {
                        var t = e.which;
                        27 === t ? (this.dom.search.value = "", this._onSearch(), e.preventDefault(), e.stopPropagation()) : 13 === t && (e.ctrlKey ? this._onSearch(!0) : e.shiftKey ? this.previous() : this.next(), e.preventDefault(), e.stopPropagation())
                    }
                }, {
                    key: "_onKeyUp", value: function (e) {
                        var t = e.keyCode;
                        27 !== t && 13 !== t && this._onDelayedSearch(e)
                    }
                }, {
                    key: "clear", value: function () {
                        this.dom.search.value = "", this._onSearch()
                    }
                }, {
                    key: "forceSearch", value: function () {
                        this._onSearch(!0)
                    }
                }, {
                    key: "isEmpty", value: function () {
                        return "" === this.dom.search.value
                    }
                }, {
                    key: "destroy", value: function () {
                        this.editor = null, this.dom.container.removeChild(this.dom.wrapper), this.dom = null, this.results = null, this.activeResult = null, this._clearDelay()
                    }
                }]) && h(t.prototype, n), i && h(t, i), e
            }(), f = n(3);

            function g(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var p = function () {
                function e(t, n) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), t && (this.root = n, this.path = document.createElement("div"), this.path.className = "jsoneditor-treepath", this.path.setAttribute("tabindex", 0), this.contentMenuClicked = !1, t.appendChild(this.path), this.reset())
                }

                var t, n, i;
                return t = e, (n = [{
                    key: "reset", value: function () {
                        this.path.innerHTML = Object(u.c)("selectNode")
                    }
                }, {
                    key: "setPath", value: function (e) {
                        var t = this;

                        function n(e) {
                            t.contentMenuClicked = !1, Object(s.addClassName)(t.path, "show-all"), t.path.style.width = t.path.parentNode.getBoundingClientRect().width - 10 + "px", t.path.onblur = function () {
                                if (t.contentMenuClicked) return t.contentMenuClicked = !1, void t.path.focus();
                                Object(s.removeClassName)(t.path, "show-all"), t.path.onblur = void 0, t.path.style.width = "", t.setPath(e)
                            }
                        }

                        function i(e) {
                            this.selectionCallback && this.selectionCallback(e)
                        }

                        function r(e, t) {
                            this.contextMenuCallback && this.contextMenuCallback(e, t)
                        }

                        this.path.innerHTML = "", e && e.length && e.forEach((function (o, a) {
                            var s, l = document.createElement("span");
                            if (l.className = "jsoneditor-treepath-element", l.innerText = o.name, l.onclick = i.bind(t, o), t.path.appendChild(l), o.children.length && ((s = document.createElement("span")).className = "jsoneditor-treepath-seperator", s.innerHTML = "&#9658;", s.onclick = function () {
                                t.contentMenuClicked = !0;
                                var n = [];
                                o.children.forEach((function (i) {
                                    n.push({
                                        text: i.name,
                                        className: "jsoneditor-type-modes" + (e[a + 1] + 1 && e[a + 1].name === i.name ? " jsoneditor-selected" : ""),
                                        click: r.bind(t, o, i.name)
                                    })
                                })), new f.a(n).show(s, t.root, !0)
                            }, t.path.appendChild(s)), a === e.length - 1) {
                                var c = (s || l).getBoundingClientRect().right;
                                if (t.path.offsetWidth < c && (t.path.scrollLeft = c), t.path.scrollLeft) {
                                    var u = document.createElement("span");
                                    u.className = "jsoneditor-treepath-show-all-btn", u.title = "show all path", u.innerHTML = "...", u.onclick = n.bind(t, e), t.path.insertBefore(u, t.path.firstChild)
                                }
                            }
                        }))
                    }
                }, {
                    key: "onSectionSelected", value: function (e) {
                        "function" == typeof e && (this.selectionCallback = e)
                    }
                }, {
                    key: "onContextMenuItemSelected", value: function (e) {
                        "function" == typeof e && (this.contextMenuCallback = e)
                    }
                }]) && g(t.prototype, n), i && g(t, i), e
            }(), m = n(11), v = n.n(m), y = n(12), b = n(5), C = n(6), w = n(2);

            function I(e) {
                return (I = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
                    return typeof e
                } : function (e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                })(e)
            }

            function x(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var A = function () {
                function e(t, n) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.editor = t, this.dom = {}, this.expanded = !1, n && n instanceof Object ? (this.setField(n.field, n.fieldEditable), "value" in n && this.setValue(n.value, n.type), "internalValue" in n && this.setInternalValue(n.internalValue)) : (this.setField(""), this.setValue(null)), this._debouncedOnChangeValue = Object(s.debounce)(this._onChangeValue.bind(this), e.prototype.DEBOUNCE_INTERVAL), this._debouncedOnChangeField = Object(s.debounce)(this._onChangeField.bind(this), e.prototype.DEBOUNCE_INTERVAL), this.visibleChilds = this.getMaxVisibleChilds()
                }

                var t, n, i;
                return t = e, (n = [{
                    key: "getMaxVisibleChilds", value: function () {
                        return this.editor && this.editor.options && this.editor.options.maxVisibleChilds ? this.editor.options.maxVisibleChilds : _
                    }
                }, {
                    key: "_updateEditability", value: function () {
                        if (this.editable = {
                            field: !0,
                            value: !0
                        }, this.editor && (this.editable.field = "tree" === this.editor.options.mode, this.editable.value = "view" !== this.editor.options.mode, ("tree" === this.editor.options.mode || "form" === this.editor.options.mode) && "function" == typeof this.editor.options.onEditable)) {
                            var e = this.editor.options.onEditable({
                                field: this.field,
                                value: this.value,
                                path: this.getPath()
                            });
                            "boolean" == typeof e ? (this.editable.field = e, this.editable.value = e) : ("boolean" == typeof e.field && (this.editable.field = e.field), "boolean" == typeof e.value && (this.editable.value = e.value))
                        }
                    }
                }, {
                    key: "getPath", value: function () {
                        for (var e = this, t = []; e;) {
                            var n = e.getName();
                            void 0 !== n && t.unshift(n), e = e.parent
                        }
                        return t
                    }
                }, {
                    key: "getInternalPath", value: function () {
                        for (var e = this, t = []; e;) e.parent && t.unshift(e.getIndex()), e = e.parent;
                        return t
                    }
                }, {
                    key: "getName", value: function () {
                        return this.parent ? "array" !== this.parent.type ? this.field : this.index : void 0
                    }
                }, {
                    key: "findNodeByPath", value: function (e) {
                        if (e) {
                            if (0 === e.length) return this;
                            if (e.length && this.childs && this.childs.length) for (var t = 0; t < this.childs.length; ++t) if ("" + e[0] == "" + this.childs[t].getName()) return this.childs[t].findNodeByPath(e.slice(1))
                        }
                    }
                }, {
                    key: "findNodeByInternalPath", value: function (e) {
                        if (e) {
                            for (var t = this, n = 0; n < e.length && t; n++) {
                                var i = e[n];
                                t = t.childs[i]
                            }
                            return t
                        }
                    }
                }, {
                    key: "serialize", value: function () {
                        return {value: this.getValue(), path: this.getPath()}
                    }
                }, {
                    key: "findNode", value: function (e) {
                        for (var t = Object(s.parsePath)(e), n = this, i = function () {
                            var e = t.shift();
                            if ("number" == typeof e) {
                                if ("array" !== n.type) throw new Error("Cannot get child node at index " + e + ": node is no array");
                                n = n.childs[e]
                            } else {
                                if ("object" !== n.type) throw new Error("Cannot get child node " + e + ": node is no object");
                                n = n.childs.filter((function (t) {
                                    return t.field === e
                                }))[0]
                            }
                        }; n && t.length > 0;) i();
                        return n
                    }
                }, {
                    key: "findParents", value: function () {
                        for (var e = [], t = this.parent; t;) e.unshift(t), t = t.parent;
                        return e
                    }
                }, {
                    key: "setError", value: function (e, t) {
                        this.error = e, this.errorChild = t, this.dom && this.dom.tr && this.updateError()
                    }
                }, {
                    key: "updateError", value: function () {
                        var e = this, t = this.fieldError || this.valueError || this.error, n = this.dom.tdError;
                        if (t && this.dom && this.dom.tr) {
                            Object(s.addClassName)(this.dom.tr, "jsoneditor-validation-error"), n || (n = document.createElement("td"), this.dom.tdError = n, this.dom.tdValue.parentNode.appendChild(n));
                            var i = document.createElement("button");
                            i.type = "button", i.className = "jsoneditor-button jsoneditor-schema-error";
                            var r = function () {
                                e.dom.popupAnchor && e.dom.popupAnchor.destroy()
                            }, o = function () {
                                delete e.dom.popupAnchor
                            }, a = function (n) {
                                var r = e.editor.frame;
                                e.dom.popupAnchor = Object(y.a)(i, e.editor.getPopupAnchor(), o, n);
                                var a = i.getBoundingClientRect(),
                                    s = r.getBoundingClientRect().width - a.x > 120 ? "jsoneditor-above" : "jsoneditor-left",
                                    l = document.createElement("div");
                                l.className = "jsoneditor-popover " + s, l.appendChild(document.createTextNode(t.message)), e.dom.popupAnchor.appendChild(l)
                            };
                            i.onmouseover = function () {
                                e.dom.popupAnchor || a(!0)
                            }, i.onfocus = function () {
                                r(), a(!1)
                            }, i.onblur = function () {
                                r()
                            };
                            var l = this.errorChild;
                            for (l && (i.onclick = function () {
                                l.findParents().forEach((function (e) {
                                    e.expand(!1)
                                })), l.scrollTo((function () {
                                    l.focus()
                                }))
                            }); n.firstChild;) n.removeChild(n.firstChild);
                            n.appendChild(i)
                        } else this.dom.tr && Object(s.removeClassName)(this.dom.tr, "jsoneditor-validation-error"), n && (this.dom.tdError.parentNode.removeChild(this.dom.tdError), delete this.dom.tdError)
                    }
                }, {
                    key: "getIndex", value: function () {
                        if (this.parent) {
                            var e = this.parent.childs.indexOf(this);
                            return -1 !== e ? e : null
                        }
                        return -1
                    }
                }, {
                    key: "setParent", value: function (e) {
                        this.parent = e
                    }
                }, {
                    key: "setField", value: function (e, t) {
                        this.field = e, this.previousField = e, this.fieldEditable = !0 === t
                    }
                }, {
                    key: "getField", value: function () {
                        return void 0 === this.field && this._getDomField(), this.field
                    }
                }, {
                    key: "setValue", value: function (t, n) {
                        var i, r, o, a, s = this.childs;
                        if (this.type = this._getType(t), n && n !== this.type) {
                            if ("string" !== n || "auto" !== this.type) throw new Error('Type mismatch: cannot cast value of type "' + this.type + ' to the specified type "' + n + '"');
                            this.type = n
                        }
                        if ("array" === this.type) {
                            for (this.childs || (this.childs = []), o = 0; o < t.length; o++) if (void 0 !== (i = t[o]) && !(i instanceof Function)) if (o < this.childs.length) (r = this.childs[o]).fieldEditable = !1, r.index = o, r.setValue(i); else {
                                r = new e(this.editor, {value: i});
                                var l = o < this.getMaxVisibleChilds();
                                this.appendChild(r, l, !1)
                            }
                            for (a = this.childs.length; a >= t.length; a--) this.removeChild(this.childs[a], !1)
                        } else if ("object" === this.type) {
                            for (this.childs || (this.childs = []), a = this.childs.length - 1; a >= 0; a--) L(t, this.childs[a].field) || this.removeChild(this.childs[a], !1);
                            for (var c in o = 0, t) if (L(t, c)) {
                                if (void 0 !== (i = t[c]) && !(i instanceof Function)) {
                                    var u = this.findChildByProperty(c);
                                    if (u) u.setField(c, !0), u.setValue(i); else {
                                        var h = new e(this.editor, {field: c, value: i}),
                                            d = o < this.getMaxVisibleChilds();
                                        this.appendChild(h, d, !1)
                                    }
                                }
                                o++
                            }
                            this.value = "", !0 === this.editor.options.sortObjectKeys && this.sort([], "asc", !1)
                        } else this.hideChilds(), delete this.append, delete this.showMore, delete this.expanded, delete this.childs, this.value = t;
                        Array.isArray(s) !== Array.isArray(this.childs) && this.recreateDom(), this.updateDom({updateIndexes: !0}), this.previousValue = this.value
                    }
                }, {
                    key: "setInternalValue", value: function (t) {
                        var n, i, r, o, a, s = this.childs;
                        if (this.type = t.type, "array" === t.type) {
                            for (this.childs || (this.childs = []), o = 0; o < t.childs.length; o++) void 0 === (n = t.childs[o]) || n instanceof Function || (o < this.childs.length ? ((i = this.childs[o]).fieldEditable = !1, i.index = o, i.setInternalValue(n)) : (i = new e(this.editor, {internalValue: n}), r = o < this.getMaxVisibleChilds(), this.appendChild(i, r, !1)));
                            for (a = this.childs.length; a >= t.childs.length; a--) this.removeChild(this.childs[a], !1)
                        } else if ("object" === t.type) {
                            for (this.childs || (this.childs = []), o = 0; o < t.childs.length; o++) void 0 === (n = t.childs[o]) || n instanceof Function || (o < this.childs.length ? (delete (i = this.childs[o]).index, i.setField(n.field, !0), i.setInternalValue(n.value)) : (i = new e(this.editor, {
                                field: n.field,
                                internalValue: n.value
                            }), r = o < this.getMaxVisibleChilds(), this.appendChild(i, r, !1)));
                            for (a = this.childs.length; a >= t.childs.length; a--) this.removeChild(this.childs[a], !1)
                        } else this.hideChilds(), delete this.append, delete this.showMore, delete this.expanded, delete this.childs, this.value = t.value;
                        Array.isArray(s) !== Array.isArray(this.childs) && this.recreateDom(), this.updateDom({updateIndexes: !0}), this.previousValue = this.value
                    }
                }, {
                    key: "recreateDom", value: function () {
                        if (this.dom && this.dom.tr && this.dom.tr.parentNode) {
                            var e = this._detachFromDom();
                            this.clearDom(), this._attachToDom(e)
                        } else this.clearDom()
                    }
                }, {
                    key: "getValue", value: function () {
                        if ("array" === this.type) {
                            var e = [];
                            return this.childs.forEach((function (t) {
                                e.push(t.getValue())
                            })), e
                        }
                        if ("object" === this.type) {
                            var t = {};
                            return this.childs.forEach((function (e) {
                                t[e.getField()] = e.getValue()
                            })), t
                        }
                        return void 0 === this.value && this._getDomValue(), this.value
                    }
                }, {
                    key: "getInternalValue", value: function () {
                        return "array" === this.type ? {
                            type: this.type, childs: this.childs.map((function (e) {
                                return e.getInternalValue()
                            }))
                        } : "object" === this.type ? {
                            type: this.type, childs: this.childs.map((function (e) {
                                return {field: e.getField(), value: e.getInternalValue()}
                            }))
                        } : (void 0 === this.value && this._getDomValue(), {type: this.type, value: this.value})
                    }
                }, {
                    key: "getLevel", value: function () {
                        return this.parent ? this.parent.getLevel() + 1 : 0
                    }
                }, {
                    key: "getNodePath", value: function () {
                        var e = this.parent ? this.parent.getNodePath() : [];
                        return e.push(this), e
                    }
                }, {
                    key: "clone", value: function () {
                        var t = new e(this.editor);
                        if (t.type = this.type, t.field = this.field, t.fieldInnerText = this.fieldInnerText, t.fieldEditable = this.fieldEditable, t.previousField = this.previousField, t.value = this.value, t.valueInnerText = this.valueInnerText, t.previousValue = this.previousValue, t.expanded = this.expanded, t.visibleChilds = this.visibleChilds, this.childs) {
                            var n = [];
                            this.childs.forEach((function (e) {
                                var i = e.clone();
                                i.setParent(t), n.push(i)
                            })), t.childs = n
                        } else t.childs = void 0;
                        return t
                    }
                }, {
                    key: "expand", value: function (e) {
                        this.childs && (this.expanded = !0, this.dom.expand && (this.dom.expand.className = "jsoneditor-button jsoneditor-expanded"), this.showChilds(), !1 !== e && this.childs.forEach((function (t) {
                            t.expand(e)
                        })), this.updateDom({recurse: !1}))
                    }
                }, {
                    key: "collapse", value: function (e) {
                        this.childs && (this.hideChilds(), !1 !== e && this.childs.forEach((function (t) {
                            t.collapse(e)
                        })), this.dom.expand && (this.dom.expand.className = "jsoneditor-button jsoneditor-collapsed"), this.expanded = !1, this.updateDom({recurse: !1}))
                    }
                }, {
                    key: "showChilds", value: function () {
                        if (this.childs && this.expanded) {
                            var e, t = this.dom.tr, n = t ? t.parentNode : void 0;
                            if (n) {
                                var i = this.getAppendDom();
                                i.parentNode || ((e = t.nextSibling) ? n.insertBefore(i, e) : n.appendChild(i));
                                var r = Math.min(this.childs.length, this.visibleChilds);
                                e = this._getNextTr();
                                for (var o = 0; o < r; o++) {
                                    var a = this.childs[o];
                                    a.getDom().parentNode || n.insertBefore(a.getDom(), e), a.showChilds()
                                }
                                var s = this.getShowMoreDom();
                                e = this._getNextTr(), s.parentNode || n.insertBefore(s, e), this.showMore.updateDom()
                            }
                        }
                    }
                }, {
                    key: "_getNextTr", value: function () {
                        return this.showMore && this.showMore.getDom().parentNode ? this.showMore.getDom() : this.append && this.append.getDom().parentNode ? this.append.getDom() : void 0
                    }
                }, {
                    key: "hide", value: function (e) {
                        var t = this.dom.tr, n = t ? t.parentNode : void 0;
                        n && n.removeChild(t), this.dom.popupAnchor && this.dom.popupAnchor.destroy(), this.hideChilds(e)
                    }
                }, {
                    key: "hideChilds", value: function (e) {
                        if (this.childs && this.expanded) {
                            var t = this.getAppendDom();
                            t.parentNode && t.parentNode.removeChild(t), this.childs.forEach((function (e) {
                                e.hide()
                            }));
                            var n = this.getShowMoreDom();
                            n.parentNode && n.parentNode.removeChild(n), e && !e.resetVisibleChilds || (this.visibleChilds = this.getMaxVisibleChilds())
                        }
                    }
                }, {
                    key: "_updateCssClassName", value: function () {
                        if (this.dom.field && this.editor && this.editor.options && "function" == typeof this.editor.options.onClassName && this.dom.tree) {
                            Object(s.removeAllClassNames)(this.dom.tree);
                            var e = this.editor.options.onClassName({
                                path: this.getPath(),
                                field: this.field,
                                value: this.value
                            }) || "";
                            Object(s.addClassName)(this.dom.tree, "jsoneditor-values " + e)
                        }
                    }
                }, {
                    key: "recursivelyUpdateCssClassesOnNodes", value: function () {
                        if (this._updateCssClassName(), Array.isArray(this.childs)) for (var e = 0; e < this.childs.length; e++) this.childs[e].recursivelyUpdateCssClassesOnNodes()
                    }
                }, {
                    key: "expandTo", value: function () {
                        for (var e = this.parent; e;) e.expanded || e.expand(), e = e.parent
                    }
                }, {
                    key: "appendChild", value: function (e, t, n) {
                        if (this._hasChilds()) {
                            if (e.setParent(this), e.fieldEditable = "object" === this.type, "array" === this.type && (e.index = this.childs.length), "object" === this.type && void 0 === e.field && e.setField(""), this.childs.push(e), this.expanded && !1 !== t) {
                                var i = e.getDom(), r = this._getNextTr(), o = r ? r.parentNode : void 0;
                                r && o && o.insertBefore(i, r), e.showChilds(), this.visibleChilds++
                            }
                            !1 !== n && (this.updateDom({updateIndexes: !0}), e.updateDom({recurse: !0}))
                        }
                    }
                }, {
                    key: "moveBefore", value: function (e, t, n) {
                        if (this._hasChilds()) {
                            var i = this.dom.tr ? this.dom.tr.parentNode : void 0;
                            if (i) {
                                var r = document.createElement("tr");
                                r.style.height = i.clientHeight + "px", i.appendChild(r)
                            }
                            if (e.parent && e.parent.removeChild(e), t instanceof T || !t) if (this.childs.length + 1 > this.visibleChilds) {
                                var o = this.childs[this.visibleChilds - 1];
                                this.insertBefore(e, o, n)
                            } else this.appendChild(e, !0, n); else this.insertBefore(e, t, n);
                            i && i.removeChild(r)
                        }
                    }
                }, {
                    key: "insertBefore", value: function (e, t, n) {
                        if (this._hasChilds()) {
                            if (this.visibleChilds++, "object" === this.type && void 0 === e.field && e.setField(""), t === this.append) e.setParent(this), e.fieldEditable = "object" === this.type, this.childs.push(e); else {
                                var i = this.childs.indexOf(t);
                                if (-1 === i) throw new Error("Node not found");
                                e.setParent(this), e.fieldEditable = "object" === this.type, this.childs.splice(i, 0, e)
                            }
                            if (this.expanded) {
                                var r = e.getDom(), o = t.getDom(), a = o ? o.parentNode : void 0;
                                o && a && a.insertBefore(r, o), e.showChilds(), this.showChilds()
                            }
                            !1 !== n && (this.updateDom({updateIndexes: !0}), e.updateDom({recurse: !0}))
                        }
                    }
                }, {
                    key: "insertAfter", value: function (e, t) {
                        if (this._hasChilds()) {
                            var n = this.childs.indexOf(t), i = this.childs[n + 1];
                            i ? this.insertBefore(e, i) : this.appendChild(e)
                        }
                    }
                }, {
                    key: "search", value: function (e, t) {
                        Array.isArray(t) || (t = []);
                        var n = e ? e.toLowerCase() : void 0;
                        return delete this.searchField, delete this.searchValue, void 0 !== this.field && t.length <= this.MAX_SEARCH_RESULTS && (-1 !== String(this.field).toLowerCase().indexOf(n) && (this.searchField = !0, t.push({
                            node: this,
                            elem: "field"
                        })), this._updateDomField()), this._hasChilds() ? this.childs && this.childs.forEach((function (n) {
                            n.search(e, t)
                        })) : void 0 !== this.value && t.length <= this.MAX_SEARCH_RESULTS && (-1 !== String(this.value).toLowerCase().indexOf(n) && (this.searchValue = !0, t.push({
                            node: this,
                            elem: "value"
                        })), this._updateDomValue()), t
                    }
                }, {
                    key: "scrollTo", value: function (e) {
                        this.expandPathToNode(), this.dom.tr && this.dom.tr.parentNode && this.editor.scrollTo(this.dom.tr.offsetTop, e)
                    }
                }, {
                    key: "expandPathToNode", value: function () {
                        for (var e = this; e && e.parent;) {
                            for (var t = "array" === e.parent.type ? e.index : e.parent.childs.indexOf(e); e.parent.visibleChilds < t + 1;) e.parent.visibleChilds += this.getMaxVisibleChilds();
                            e.parent.expand(!1), e = e.parent
                        }
                    }
                }, {
                    key: "focus", value: function (t) {
                        if (e.focusElement = t, this.dom.tr && this.dom.tr.parentNode) {
                            var n = this.dom;
                            switch (t) {
                                case"drag":
                                    n.drag ? n.drag.focus() : n.menu.focus();
                                    break;
                                case"menu":
                                    n.menu.focus();
                                    break;
                                case"expand":
                                    this._hasChilds() ? n.expand.focus() : n.field && this.fieldEditable ? (n.field.focus(), Object(s.selectContentEditable)(n.field)) : n.value && !this._hasChilds() ? (n.value.focus(), Object(s.selectContentEditable)(n.value)) : n.menu.focus();
                                    break;
                                case"field":
                                    n.field && this.fieldEditable ? (n.field.focus(), Object(s.selectContentEditable)(n.field)) : n.value && !this._hasChilds() ? (n.value.focus(), Object(s.selectContentEditable)(n.value)) : this._hasChilds() ? n.expand.focus() : n.menu.focus();
                                    break;
                                case"value":
                                default:
                                    n.select ? n.select.focus() : n.value && !this._hasChilds() ? (n.value.focus(), Object(s.selectContentEditable)(n.value)) : n.field && this.fieldEditable ? (n.field.focus(), Object(s.selectContentEditable)(n.field)) : this._hasChilds() ? n.expand.focus() : n.menu.focus()
                            }
                        }
                    }
                }, {
                    key: "containsNode", value: function (e) {
                        if (this === e) return !0;
                        var t = this.childs;
                        if (t) for (var n = 0, i = t.length; n < i; n++) if (t[n].containsNode(e)) return !0;
                        return !1
                    }
                }, {
                    key: "removeChild", value: function (e, t) {
                        if (this.childs) {
                            var n = this.childs.indexOf(e);
                            if (-1 !== n) {
                                n < this.visibleChilds && this.expanded && this.visibleChilds--, e.hide(), delete e.searchField, delete e.searchValue;
                                var i = this.childs.splice(n, 1)[0];
                                return i.parent = null, !1 !== t && this.updateDom({updateIndexes: !0}), i
                            }
                        }
                    }
                }, {
                    key: "_remove", value: function (e) {
                        this.removeChild(e)
                    }
                }, {
                    key: "changeType", value: function (e) {
                        var t = this.type;
                        if (t !== e) {
                            if ("string" !== e && "auto" !== e || "string" !== t && "auto" !== t) {
                                var n = this._detachFromDom();
                                this.clearDom(), this.type = e, "object" === e ? (this.childs || (this.childs = []), this.childs.forEach((function (e) {
                                    e.clearDom(), delete e.index, e.fieldEditable = !0, void 0 === e.field && (e.field = "")
                                })), "string" !== t && "auto" !== t || (this.expanded = !0)) : "array" === e ? (this.childs || (this.childs = []), this.childs.forEach((function (e, t) {
                                    e.clearDom(), e.fieldEditable = !1, e.index = t
                                })), "string" !== t && "auto" !== t || (this.expanded = !0)) : this.expanded = !1, this._attachToDom(n)
                            } else this.type = e;
                            "auto" !== e && "string" !== e || (this.value = "string" === e ? String(this.value) : Object(s.parseString)(String(this.value)), this.focus()), this.updateDom({updateIndexes: !0})
                        }
                    }
                }, {
                    key: "deepEqual", value: function (e) {
                        var t;
                        if ("array" === this.type) {
                            if (!Array.isArray(e)) return !1;
                            if (this.childs.length !== e.length) return !1;
                            for (t = 0; t < this.childs.length; t++) if (!this.childs[t].deepEqual(e[t])) return !1
                        } else if ("object" === this.type) {
                            if ("object" !== I(e) || !e) return !1;
                            var n = Object.keys(e);
                            if (this.childs.length !== n.length) return !1;
                            for (t = 0; t < n.length; t++) {
                                var i = this.childs[t];
                                if (i.field !== n[t] || !i.deepEqual(e[i.field])) return !1
                            }
                        } else if (this.value !== e) return !1;
                        return !0
                    }
                }, {
                    key: "_getDomValue", value: function () {
                        if (this._clearValueError(), this.dom.value && "array" !== this.type && "object" !== this.type && (this.valueInnerText = Object(s.getInnerText)(this.dom.value), "" === this.valueInnerText && "" !== this.dom.value.innerHTML && (this.dom.value.innerHTML = "")), void 0 !== this.valueInnerText) try {
                            var e;
                            if ("string" === this.type) e = this._unescapeHTML(this.valueInnerText); else {
                                var t = this._unescapeHTML(this.valueInnerText);
                                e = Object(s.parseString)(t)
                            }
                            e !== this.value && (this.value = e, this._debouncedOnChangeValue())
                        } catch (e) {
                            this._setValueError(Object(u.c)("cannotParseValueError"))
                        }
                    }
                }, {
                    key: "_setValueError", value: function (e) {
                        this.valueError = {message: e}, this.updateError()
                    }
                }, {
                    key: "_clearValueError", value: function () {
                        this.valueError && (this.valueError = null, this.updateError())
                    }
                }, {
                    key: "_setFieldError", value: function (e) {
                        this.fieldError = {message: e}, this.updateError()
                    }
                }, {
                    key: "_clearFieldError", value: function () {
                        this.fieldError && (this.fieldError = null, this.updateError())
                    }
                }, {
                    key: "_onChangeValue", value: function () {
                        var e = this.editor.getDomSelection();
                        if (e.range) {
                            var t = Object(s.textDiff)(String(this.value), String(this.previousValue));
                            e.range.startOffset = t.start, e.range.endOffset = t.end
                        }
                        var n = this.editor.getDomSelection();
                        if (n.range) {
                            var i = Object(s.textDiff)(String(this.previousValue), String(this.value));
                            n.range.startOffset = i.start, n.range.endOffset = i.end
                        }
                        this.editor._onAction("editValue", {
                            path: this.getInternalPath(),
                            oldValue: this.previousValue,
                            newValue: this.value,
                            oldSelection: e,
                            newSelection: n
                        }), this.previousValue = this.value
                    }
                }, {
                    key: "_onChangeField", value: function () {
                        var e = this.editor.getDomSelection(), t = this.previousField || "";
                        if (e.range) {
                            var n = Object(s.textDiff)(this.field, t);
                            e.range.startOffset = n.start, e.range.endOffset = n.end
                        }
                        var i = this.editor.getDomSelection();
                        if (i.range) {
                            var r = Object(s.textDiff)(t, this.field);
                            i.range.startOffset = r.start, i.range.endOffset = r.end
                        }
                        this.editor._onAction("editField", {
                            parentPath: this.parent.getInternalPath(),
                            index: this.getIndex(),
                            oldValue: this.previousField,
                            newValue: this.field,
                            oldSelection: e,
                            newSelection: i
                        }), this.previousField = this.field
                    }
                }, {
                    key: "_updateDomValue", value: function () {
                        var e = this.dom.value;
                        if (e) {
                            var t = ["jsoneditor-value"], n = this.value,
                                i = "auto" === this.type ? Object(s.getType)(n) : this.type,
                                r = "string" === i && Object(s.isUrl)(n);
                            if (t.push("jsoneditor-" + i), r && t.push("jsoneditor-url"), "" === String(this.value) && "array" !== this.type && "object" !== this.type && t.push("jsoneditor-empty"), this.searchValueActive && t.push("jsoneditor-highlight-active"), this.searchValue && t.push("jsoneditor-highlight"), e.className = t.join(" "), "array" === i || "object" === i) {
                                var o = this.childs ? this.childs.length : 0;
                                e.title = this.type + " containing " + o + " items"
                            } else r && this.editable.value ? e.title = Object(u.c)("openUrl") : e.title = "";
                            if ("boolean" === i && this.editable.value ? (this.dom.checkbox || (this.dom.checkbox = document.createElement("input"), this.dom.checkbox.type = "checkbox", this.dom.tdCheckbox = document.createElement("td"), this.dom.tdCheckbox.className = "jsoneditor-tree", this.dom.tdCheckbox.appendChild(this.dom.checkbox), this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue)), this.dom.checkbox.checked = this.value) : this.dom.tdCheckbox && (this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox), delete this.dom.tdCheckbox, delete this.dom.checkbox), this.enum && this.editable.value) {
                                if (!this.dom.select) {
                                    this.dom.select = document.createElement("select"), this.id = this.field + "_" + (new Date).getUTCMilliseconds(), this.dom.select.id = this.id, this.dom.select.name = this.dom.select.id, this.dom.select.option = document.createElement("option"), this.dom.select.option.value = "", this.dom.select.option.innerHTML = "--", this.dom.select.appendChild(this.dom.select.option);
                                    for (var a = 0; a < this.enum.length; a++) this.dom.select.option = document.createElement("option"), this.dom.select.option.value = this.enum[a], this.dom.select.option.innerHTML = this.enum[a], this.dom.select.option.value === this.value && (this.dom.select.option.selected = !0), this.dom.select.appendChild(this.dom.select.option);
                                    this.dom.tdSelect = document.createElement("td"), this.dom.tdSelect.className = "jsoneditor-tree", this.dom.tdSelect.appendChild(this.dom.select), this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue)
                                }
                                !this.schema || L(this.schema, "oneOf") || L(this.schema, "anyOf") || L(this.schema, "allOf") ? delete this.valueFieldHTML : (this.valueFieldHTML = this.dom.tdValue.innerHTML, this.dom.tdValue.style.visibility = "hidden", this.dom.tdValue.innerHTML = "")
                            } else this.dom.tdSelect && (this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect), delete this.dom.tdSelect, delete this.dom.select, this.dom.tdValue.innerHTML = this.valueFieldHTML, this.dom.tdValue.style.visibility = "", delete this.valueFieldHTML);
                            if (this.editable.value && this.editor.options.colorPicker && "string" == typeof n && Object(s.isValidColor)(n) ? (this.dom.color || (this.dom.color = document.createElement("div"), this.dom.color.className = "jsoneditor-color", this.dom.tdColor = document.createElement("td"), this.dom.tdColor.className = "jsoneditor-tree", this.dom.tdColor.appendChild(this.dom.color), this.dom.tdValue.parentNode.insertBefore(this.dom.tdColor, this.dom.tdValue), this.dom.value.style.color = "#1A1A1A"), this.dom.color.style.backgroundColor = n) : this._deleteDomColor(), this._showTimestampTag()) {
                                this.dom.date || (this.dom.date = document.createElement("div"), this.dom.date.className = "jsoneditor-date", this.dom.value.parentNode.appendChild(this.dom.date));
                                var l = null;
                                if ("function" == typeof this.editor.options.timestampFormat && (l = this.editor.options.timestampFormat({
                                    field: this.field,
                                    value: this.value,
                                    path: this.getPath()
                                })), l) {
                                    for (; this.dom.date.firstChild;) this.dom.date.removeChild(this.dom.date.firstChild);
                                    this.dom.date.appendChild(document.createTextNode(l))
                                } else this.dom.date.innerHTML = new Date(n).toISOString();
                                this.dom.date.title = new Date(n).toString()
                            } else this.dom.date && (this.dom.date.parentNode.removeChild(this.dom.date), delete this.dom.date);
                            Object(s.stripFormatting)(e), this._updateDomDefault()
                        }
                    }
                }, {
                    key: "_deleteDomColor", value: function () {
                        this.dom.color && (this.dom.tdColor.parentNode.removeChild(this.dom.tdColor), delete this.dom.tdColor, delete this.dom.color, this.dom.value.style.color = "")
                    }
                }, {
                    key: "_updateDomField", value: function () {
                        var e = this.dom.field;
                        if (e) {
                            var t = Object(s.makeFieldTooltip)(this.schema, this.editor.options.language);
                            t && (e.title = t), "" === String(this.field) && "array" !== this.parent.type ? Object(s.addClassName)(e, "jsoneditor-empty") : Object(s.removeClassName)(e, "jsoneditor-empty"), this.searchFieldActive ? Object(s.addClassName)(e, "jsoneditor-highlight-active") : Object(s.removeClassName)(e, "jsoneditor-highlight-active"), this.searchField ? Object(s.addClassName)(e, "jsoneditor-highlight") : Object(s.removeClassName)(e, "jsoneditor-highlight"), Object(s.stripFormatting)(e)
                        }
                    }
                }, {
                    key: "_getDomField", value: function (e) {
                        if (this._clearFieldError(), this.dom.field && this.fieldEditable && (this.fieldInnerText = Object(s.getInnerText)(this.dom.field), "" === this.fieldInnerText && "" !== this.dom.field.innerHTML && (this.dom.field.innerHTML = "")), void 0 !== this.fieldInnerText) try {
                            var t = this._unescapeHTML(this.fieldInnerText), n = this.parent.getFieldNames(this);
                            -1 !== n.indexOf(t) ? e ? (t = Object(s.findUniqueName)(t, n)) !== this.field && (this.field = t, this._debouncedOnChangeField()) : this._setFieldError(Object(u.c)("duplicateFieldError")) : t !== this.field && (this.field = t, this._debouncedOnChangeField())
                        } catch (e) {
                            this._setFieldError(Object(u.c)("cannotParseFieldError"))
                        }
                    }
                }, {
                    key: "_updateDomDefault", value: function () {
                        if (this.schema && void 0 !== this.schema.default && !this._hasChilds()) {
                            var e = this.dom.select ? this.dom.select : this.dom.value;
                            e && (this.value === this.schema.default ? (e.title = Object(u.c)("default"), Object(s.addClassName)(e, "jsoneditor-is-default"), Object(s.removeClassName)(e, "jsoneditor-is-not-default")) : (e.removeAttribute("title"), Object(s.removeClassName)(e, "jsoneditor-is-default"), Object(s.addClassName)(e, "jsoneditor-is-not-default")))
                        }
                    }
                }, {
                    key: "_showTimestampTag", value: function () {
                        if ("number" != typeof this.value) return !1;
                        var e = this.editor.options.timestampTag;
                        if ("function" == typeof e) {
                            var t = e({field: this.field, value: this.value, path: this.getPath()});
                            return "boolean" == typeof t ? t : Object(s.isTimestamp)(this.field, this.value)
                        }
                        return !0 === e && Object(s.isTimestamp)(this.field, this.value)
                    }
                }, {
                    key: "clearDom", value: function () {
                        this.dom = {}
                    }
                }, {
                    key: "getDom", value: function () {
                        var e = this.dom;
                        if (e.tr) return e.tr;
                        if (this._updateEditability(), e.tr = document.createElement("tr"), e.tr.node = this, "tree" === this.editor.options.mode) {
                            var t = document.createElement("td");
                            if (this.editable.field && this.parent) {
                                var n = document.createElement("button");
                                n.type = "button", e.drag = n, n.className = "jsoneditor-button jsoneditor-dragarea", n.title = Object(u.c)("drag"), t.appendChild(n)
                            }
                            e.tr.appendChild(t);
                            var i = document.createElement("td"), r = document.createElement("button");
                            r.type = "button", e.menu = r, r.className = "jsoneditor-button jsoneditor-contextmenu-button", r.title = Object(u.c)("actionsMenu"), i.appendChild(e.menu), e.tr.appendChild(i)
                        }
                        var o = document.createElement("td");
                        return e.tr.appendChild(o), e.tree = this._createDomTree(), o.appendChild(e.tree), this.updateDom({updateIndexes: !0}), e.tr
                    }
                }, {
                    key: "isVisible", value: function () {
                        return this.dom && this.dom.tr && this.dom.tr.parentNode || !1
                    }
                }, {
                    key: "isDescendantOf", value: function (e) {
                        for (var t = this.parent; t;) {
                            if (t === e) return !0;
                            t = t.parent
                        }
                        return !1
                    }
                }, {
                    key: "_createDomField", value: function () {
                        return document.createElement("div")
                    }
                }, {
                    key: "setHighlight", value: function (e) {
                        this.dom.tr && (e ? Object(s.addClassName)(this.dom.tr, "jsoneditor-highlight") : Object(s.removeClassName)(this.dom.tr, "jsoneditor-highlight"), this.append && this.append.setHighlight(e), this.childs && this.childs.forEach((function (t) {
                            t.setHighlight(e)
                        })))
                    }
                }, {
                    key: "setSelected", value: function (e, t) {
                        this.selected = e, this.dom.tr && (e ? Object(s.addClassName)(this.dom.tr, "jsoneditor-selected") : Object(s.removeClassName)(this.dom.tr, "jsoneditor-selected"), t ? Object(s.addClassName)(this.dom.tr, "jsoneditor-first") : Object(s.removeClassName)(this.dom.tr, "jsoneditor-first"), this.append && this.append.setSelected(e), this.showMore && this.showMore.setSelected(e), this.childs && this.childs.forEach((function (t) {
                            t.setSelected(e)
                        })))
                    }
                }, {
                    key: "updateValue", value: function (e) {
                        this.value = e, this.previousValue = e, this.valueError = void 0, this.updateDom()
                    }
                }, {
                    key: "updateField", value: function (e) {
                        this.field = e, this.previousField = e, this.fieldError = void 0, this.updateDom()
                    }
                }, {
                    key: "updateDom", value: function (t) {
                        var n = this.dom.tree;
                        n && (n.style.marginLeft = 24 * this.getLevel() + "px");
                        var i = this.dom.field;
                        if (i) {
                            var r;
                            if (this.fieldEditable ? (i.contentEditable = this.editable.field, i.spellcheck = !1, i.className = "jsoneditor-field") : (i.contentEditable = !1, i.className = "jsoneditor-readonly"), void 0 !== this.index) r = this.index; else if (void 0 !== this.field) r = this.field; else {
                                var o = this.editor.options.schema ? e._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : void 0;
                                r = o && o.title ? o.title : this._hasChilds() ? this.type : ""
                            }
                            var a = this._escapeHTML(r);
                            document.activeElement === i && a === this._unescapeHTML(Object(s.getInnerText)(i)) || (i.innerHTML = a), this._updateSchema()
                        }
                        var l = this.dom.value;
                        if (l) if ("array" === this.type || "object" === this.type) this.updateNodeName(); else {
                            var c = this._escapeHTML(this.value);
                            document.activeElement === l && c === this._unescapeHTML(Object(s.getInnerText)(l)) || (l.innerHTML = c)
                        }
                        var u = this.dom.tr;
                        u && ("array" === this.type || "object" === this.type ? (Object(s.addClassName)(u, "jsoneditor-expandable"), this.expanded ? (Object(s.addClassName)(u, "jsoneditor-expanded"), Object(s.removeClassName)(u, "jsoneditor-collapsed")) : (Object(s.addClassName)(u, "jsoneditor-collapsed"), Object(s.removeClassName)(u, "jsoneditor-expanded"))) : (Object(s.removeClassName)(u, "jsoneditor-expandable"), Object(s.removeClassName)(u, "jsoneditor-expanded"), Object(s.removeClassName)(u, "jsoneditor-collapsed"))), this._updateDomField(), this._updateDomValue(), t && !0 === t.updateIndexes && this._updateDomIndexes(), t && !0 === t.recurse && this.childs && this.childs.forEach((function (e) {
                            e.updateDom(t)
                        })), this.error && this.updateError(), this.append && this.append.updateDom(), this.showMore && this.showMore.updateDom(), this._updateCssClassName()
                    }
                }, {
                    key: "_updateSchema", value: function () {
                        this.editor && this.editor.options && (this.schema = this.editor.options.schema ? e._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : null, this.schema ? this.enum = e._findEnum(this.schema) : delete this.enum)
                    }
                }, {
                    key: "_updateDomIndexes", value: function () {
                        var e = this.dom.value, t = this.childs;
                        e && t && ("array" === this.type ? t.forEach((function (e, t) {
                            e.index = t;
                            var n = e.dom.field;
                            n && (n.innerHTML = t)
                        })) : "object" === this.type && t.forEach((function (e) {
                            void 0 !== e.index && (delete e.index, void 0 === e.field && (e.field = ""))
                        })))
                    }
                }, {
                    key: "_createDomValue", value: function () {
                        var e;
                        return "array" === this.type ? (e = document.createElement("div")).innerHTML = "[...]" : "object" === this.type ? (e = document.createElement("div")).innerHTML = "{...}" : !this.editable.value && Object(s.isUrl)(this.value) ? ((e = document.createElement("a")).href = this.value, e.innerHTML = this._escapeHTML(this.value)) : ((e = document.createElement("div")).contentEditable = this.editable.value, e.spellcheck = !1, e.innerHTML = this._escapeHTML(this.value)), e
                    }
                }, {
                    key: "_createDomExpandButton", value: function () {
                        var e = document.createElement("button");
                        return e.type = "button", this._hasChilds() ? (e.className = this.expanded ? "jsoneditor-button jsoneditor-expanded" : "jsoneditor-button jsoneditor-collapsed", e.title = Object(u.c)("expandTitle")) : (e.className = "jsoneditor-button jsoneditor-invisible", e.title = ""), e
                    }
                }, {
                    key: "_createDomTree", value: function () {
                        var e = this.dom, t = document.createElement("table"), n = document.createElement("tbody");
                        t.style.borderCollapse = "collapse", t.className = "jsoneditor-values", t.appendChild(n);
                        var i = document.createElement("tr");
                        n.appendChild(i);
                        var r = document.createElement("td");
                        r.className = "jsoneditor-tree", i.appendChild(r), e.expand = this._createDomExpandButton(), r.appendChild(e.expand), e.tdExpand = r;
                        var o = document.createElement("td");
                        o.className = "jsoneditor-tree", i.appendChild(o), e.field = this._createDomField(), o.appendChild(e.field), e.tdField = o;
                        var a = document.createElement("td");
                        a.className = "jsoneditor-tree", i.appendChild(a), "object" !== this.type && "array" !== this.type && (a.appendChild(document.createTextNode(":")), a.className = "jsoneditor-separator"), e.tdSeparator = a;
                        var s = document.createElement("td");
                        return s.className = "jsoneditor-tree", i.appendChild(s), e.value = this._createDomValue(), s.appendChild(e.value), e.tdValue = s, t
                    }
                }, {
                    key: "onEvent", value: function (e) {
                        var t = e.type, n = e.target || e.srcElement, i = this.dom, r = this, o = this._hasChilds();
                        if ("function" == typeof this.editor.options.onEvent && this._onEvent(e), n !== i.drag && n !== i.menu || ("mouseover" === t ? this.editor.highlighter.highlight(this) : "mouseout" === t && this.editor.highlighter.unhighlight()), "click" === t && n === i.menu) {
                            var a = r.editor.highlighter;
                            a.highlight(r), a.lock(), Object(s.addClassName)(i.menu, "jsoneditor-selected"), this.showContextMenu(i.menu, (function () {
                                Object(s.removeClassName)(i.menu, "jsoneditor-selected"), a.unlock(), a.unhighlight()
                            }))
                        }
                        if ("click" === t && n === i.expand && o) {
                            var l = e.ctrlKey;
                            this._onExpand(l)
                        }
                        "click" !== t || e.target !== r.dom.tdColor && e.target !== r.dom.color || this._showColorPicker(), "change" === t && n === i.checkbox && (this.dom.value.innerHTML = !this.value, this._getDomValue(), this._updateDomDefault()), "change" === t && n === i.select && (this.dom.value.innerHTML = i.select.value, this._getDomValue(), this._updateDomValue());
                        var c = i.value;
                        if (n === c) switch (t) {
                            case"blur":
                            case"change":
                                this._getDomValue(), this._clearValueError(), this._updateDomValue();
                                var u = this._escapeHTML(this.value);
                                u !== this._unescapeHTML(Object(s.getInnerText)(c)) && (c.innerHTML = u);
                                break;
                            case"input":
                                this._getDomValue(), this._updateDomValue();
                                break;
                            case"keydown":
                            case"mousedown":
                                this.editor.selection = this.editor.getDomSelection();
                                break;
                            case"click":
                                e.ctrlKey && this.editable.value && Object(s.isUrl)(this.value) && (e.preventDefault(), window.open(this.value, "_blank"));
                                break;
                            case"keyup":
                                this._getDomValue(), this._updateDomValue();
                                break;
                            case"cut":
                            case"paste":
                                setTimeout((function () {
                                    r._getDomValue(), r._updateDomValue()
                                }), 1)
                        }
                        var h = i.field;
                        if (n === h) switch (t) {
                            case"blur":
                                this._getDomField(!0), this._updateDomField();
                                var d = this._escapeHTML(this.field);
                                d !== this._unescapeHTML(Object(s.getInnerText)(h)) && (h.innerHTML = d);
                                break;
                            case"input":
                                this._getDomField(), this._updateSchema(), this._updateDomField(), this._updateDomValue();
                                break;
                            case"keydown":
                            case"mousedown":
                                this.editor.selection = this.editor.getDomSelection();
                                break;
                            case"keyup":
                                this._getDomField(), this._updateDomField();
                                break;
                            case"cut":
                            case"paste":
                                setTimeout((function () {
                                    r._getDomField(), r._updateDomField()
                                }), 1)
                        }
                        var f = i.tree;
                        f && n === f.parentNode && "click" === t && !e.hasMoved && ((void 0 !== e.offsetX ? e.offsetX < 24 * (this.getLevel() + 1) : e.pageX < Object(s.getAbsoluteLeft)(i.tdSeparator)) || o ? h && (Object(s.setEndOfContentEditable)(h), h.focus()) : c && !this.enum && (Object(s.setEndOfContentEditable)(c), c.focus())), (n !== i.tdExpand || o) && n !== i.tdField && n !== i.tdSeparator || "click" !== t || e.hasMoved || h && (Object(s.setEndOfContentEditable)(h), h.focus()), "keydown" === t && this.onKeyDown(e)
                    }
                }, {
                    key: "_onEvent", value: function (e) {
                        var t = e.target;
                        if (t === this.dom.field || t === this.dom.value) {
                            var n = {field: this.getField(), path: this.getPath()};
                            this._hasChilds() || t !== this.dom.value || (n.value = this.getValue()), this.editor.options.onEvent(n, e)
                        }
                    }
                }, {
                    key: "onKeyDown", value: function (t) {
                        var n, i, r, o, a, l, c, u, h, d, f, g, p, m = t.which || t.keyCode,
                            v = t.target || t.srcElement, y = t.ctrlKey, b = t.shiftKey, C = t.altKey, w = !1,
                            I = "tree" === this.editor.options.mode,
                            x = this.editor.multiselection.nodes.length > 0 ? this.editor.multiselection.nodes : [this],
                            A = x[0], _ = x[x.length - 1];
                        if (13 === m) {
                            if (v === this.dom.value) this.editable.value && !t.ctrlKey || Object(s.isUrl)(this.value) && (window.open(this.value, "_blank"), w = !0); else if (v === this.dom.expand && this._hasChilds()) {
                                var S = t.ctrlKey;
                                this._onExpand(S), v.focus(), w = !0
                            }
                        } else if (68 === m) y && I && (e.onDuplicate(x), w = !0); else if (69 === m) y && (this._onExpand(b), v.focus(), w = !0); else if (77 === m && I) y && (this.showContextMenu(v), w = !0); else if (46 === m && I) y && (e.onRemove(x), w = !0); else if (45 === m && I) y && !b ? (this._onInsertBefore(), w = !0) : y && b && (this._onInsertAfter(), w = !0); else if (35 === m) {
                            if (C) {
                                var L = this._lastNode();
                                L && L.focus(e.focusElement || this._getElementName(v)), w = !0
                            }
                        } else if (36 === m) {
                            if (C) {
                                var O = this._firstNode();
                                O && O.focus(e.focusElement || this._getElementName(v)), w = !0
                            }
                        } else if (37 === m) {
                            if (C && !b) {
                                var R = this._previousElement(v);
                                R && this.focus(this._getElementName(R)), w = !0
                            } else if (C && b && I) {
                                if (_.expanded) {
                                    var E = _.getAppendDom();
                                    r = E ? E.nextSibling : void 0
                                } else {
                                    var P = _.getDom();
                                    r = P.nextSibling
                                }
                                if (r) {
                                    i = e.getNodeFromTarget(r), o = r.nextSibling;
                                    var M = e.getNodeFromTarget(o);
                                    i && i instanceof T && 1 !== _.parent.childs.length && M && M.parent && (a = this.editor.getDomSelection(), l = (c = A.parent).childs[_.getIndex() + 1] || c.append, u = A.getIndex(), h = M.getIndex(), d = c.getInternalPath(), f = M.parent.getInternalPath(), x.forEach((function (e) {
                                        M.parent.moveBefore(e, M)
                                    })), this.focus(e.focusElement || this._getElementName(v)), this.editor._onAction("moveNodes", {
                                        count: x.length,
                                        fieldNames: x.map(k),
                                        oldParentPath: c.getInternalPath(),
                                        newParentPath: A.parent.getInternalPath(),
                                        oldIndex: l.getIndex(),
                                        newIndex: A.getIndex(),
                                        oldIndexRedo: u,
                                        newIndexRedo: h,
                                        oldParentPathRedo: d,
                                        newParentPathRedo: f,
                                        oldSelection: a,
                                        newSelection: this.editor.getDomSelection()
                                    }))
                                }
                            }
                        } else if (38 === m) C && !b ? ((n = this._previousNode()) && (this.editor.deselect(!0), n.focus(e.focusElement || this._getElementName(v))), w = !0) : !C && y && b && I ? ((n = this._previousNode()) && ((p = this.editor.multiselection).start = p.start || this, p.end = n, g = this.editor._findTopLevelNodes(p.start, p.end), this.editor.select(g), n.focus("field")), w = !0) : C && b && I && ((n = A._previousNode()) && n.parent && (a = this.editor.getDomSelection(), l = (c = A.parent).childs[_.getIndex() + 1] || c.append, u = A.getIndex(), h = n.getIndex(), d = c.getInternalPath(), f = n.parent.getInternalPath(), x.forEach((function (e) {
                            n.parent.moveBefore(e, n)
                        })), this.focus(e.focusElement || this._getElementName(v)), this.editor._onAction("moveNodes", {
                            count: x.length,
                            fieldNames: x.map(k),
                            oldParentPath: c.getInternalPath(),
                            newParentPath: A.parent.getInternalPath(),
                            oldIndex: l.getIndex(),
                            newIndex: A.getIndex(),
                            oldIndexRedo: u,
                            newIndexRedo: h,
                            oldParentPathRedo: d,
                            newParentPathRedo: f,
                            oldSelection: a,
                            newSelection: this.editor.getDomSelection()
                        })), w = !0); else if (39 === m) {
                            if (C && !b) {
                                var N = this._nextElement(v);
                                N && this.focus(this._getElementName(N)), w = !0
                            } else if (C && b && I) {
                                var D = (P = A.getDom()).previousSibling;
                                D && (n = e.getNodeFromTarget(D)) && n.parent && !n.isVisible() && (a = this.editor.getDomSelection(), l = (c = A.parent).childs[_.getIndex() + 1] || c.append, u = A.getIndex(), h = n.getIndex(), d = c.getInternalPath(), f = n.parent.getInternalPath(), x.forEach((function (e) {
                                    n.parent.moveBefore(e, n)
                                })), this.focus(e.focusElement || this._getElementName(v)), this.editor._onAction("moveNodes", {
                                    count: x.length,
                                    fieldNames: x.map(k),
                                    oldParentPath: c.getInternalPath(),
                                    newParentPath: A.parent.getInternalPath(),
                                    oldIndex: l.getIndex(),
                                    newIndex: A.getIndex(),
                                    oldIndexRedo: u,
                                    newIndexRedo: h,
                                    oldParentPathRedo: d,
                                    newParentPathRedo: f,
                                    oldSelection: a,
                                    newSelection: this.editor.getDomSelection()
                                }))
                            }
                        } else if (40 === m) if (C && !b) (i = this._nextNode()) && (this.editor.deselect(!0), i.focus(e.focusElement || this._getElementName(v))), w = !0; else if (!C && y && b && I) (i = this._nextNode()) && ((p = this.editor.multiselection).start = p.start || this, p.end = i, g = this.editor._findTopLevelNodes(p.start, p.end), this.editor.select(g), i.focus("field")), w = !0; else if (C && b && I) {
                            (i = _.expanded ? _.append ? _.append._nextNode() : void 0 : _._nextNode()) && !i.isVisible() && (i = i.parent.showMore), i && i instanceof T && (i = _);
                            var B = i && (i._nextNode() || i.parent.append);
                            B && B.parent && (a = this.editor.getDomSelection(), l = (c = A.parent).childs[_.getIndex() + 1] || c.append, u = A.getIndex(), h = B.getIndex(), d = c.getInternalPath(), f = B.parent.getInternalPath(), x.forEach((function (e) {
                                B.parent.moveBefore(e, B)
                            })), this.focus(e.focusElement || this._getElementName(v)), this.editor._onAction("moveNodes", {
                                count: x.length,
                                fieldNames: x.map(k),
                                oldParentPath: c.getInternalPath(),
                                newParentPath: A.parent.getInternalPath(),
                                oldParentPathRedo: d,
                                newParentPathRedo: f,
                                oldIndexRedo: u,
                                newIndexRedo: h,
                                oldIndex: l.getIndex(),
                                newIndex: A.getIndex(),
                                oldSelection: a,
                                newSelection: this.editor.getDomSelection()
                            })), w = !0
                        }
                        w && (t.preventDefault(), t.stopPropagation())
                    }
                }, {
                    key: "_onExpand", value: function (e) {
                        if (e) {
                            var t = this.dom.tr.parentNode, n = t.parentNode, i = n.scrollTop;
                            n.removeChild(t)
                        }
                        this.expanded ? this.collapse(e) : this.expand(e), e && (n.appendChild(t), n.scrollTop = i)
                    }
                }, {
                    key: "_showColorPicker", value: function () {
                        if ("function" == typeof this.editor.options.onColorPicker && this.dom.color) {
                            var e = this;
                            e._deleteDomColor(), e.updateDom();
                            var t = Object(y.a)(this.dom.color, this.editor.getPopupAnchor());
                            this.editor.options.onColorPicker(t, this.value, (function (t) {
                                "string" == typeof t && t !== e.value && (e._deleteDomColor(), e.value = t, e.updateDom(), e._debouncedOnChangeValue())
                            }))
                        }
                    }
                }, {
                    key: "getFieldNames", value: function (e) {
                        return "object" === this.type ? this.childs.filter((function (t) {
                            return t !== e
                        })).map((function (e) {
                            return e.field
                        })) : []
                    }
                }, {
                    key: "_onInsertBefore", value: function (t, n, i) {
                        var r = this.editor.getDomSelection(), o = new e(this.editor, {
                            field: void 0 !== t ? t : "",
                            value: void 0 !== n ? n : "",
                            type: i
                        });
                        o.expand(!0);
                        var a = this.getInternalPath();
                        this.parent.insertBefore(o, this), this.editor.highlighter.unhighlight(), o.focus("field");
                        var s = this.editor.getDomSelection();
                        this.editor._onAction("insertBeforeNodes", {
                            nodes: [o],
                            paths: [o.getInternalPath()],
                            beforePath: a,
                            parentPath: this.parent.getInternalPath(),
                            oldSelection: r,
                            newSelection: s
                        })
                    }
                }, {
                    key: "_onInsertAfter", value: function (t, n, i) {
                        var r = this.editor.getDomSelection(), o = new e(this.editor, {
                            field: void 0 !== t ? t : "",
                            value: void 0 !== n ? n : "",
                            type: i
                        });
                        o.expand(!0), this.parent.insertAfter(o, this), this.editor.highlighter.unhighlight(), o.focus("field");
                        var a = this.editor.getDomSelection();
                        this.editor._onAction("insertAfterNodes", {
                            nodes: [o],
                            paths: [o.getInternalPath()],
                            afterPath: this.getInternalPath(),
                            parentPath: this.parent.getInternalPath(),
                            oldSelection: r,
                            newSelection: a
                        })
                    }
                }, {
                    key: "_onAppend", value: function (t, n, i) {
                        var r = this.editor.getDomSelection(), o = new e(this.editor, {
                            field: void 0 !== t ? t : "",
                            value: void 0 !== n ? n : "",
                            type: i
                        });
                        o.expand(!0), this.parent.appendChild(o), this.editor.highlighter.unhighlight(), o.focus("field");
                        var a = this.editor.getDomSelection();
                        this.editor._onAction("appendNodes", {
                            nodes: [o],
                            paths: [o.getInternalPath()],
                            parentPath: this.parent.getInternalPath(),
                            oldSelection: r,
                            newSelection: a
                        })
                    }
                }, {
                    key: "_onChangeType", value: function (e) {
                        var t = this.type;
                        if (e !== t) {
                            var n = this.editor.getDomSelection();
                            this.changeType(e);
                            var i = this.editor.getDomSelection();
                            this.editor._onAction("changeType", {
                                path: this.getInternalPath(),
                                oldType: t,
                                newType: e,
                                oldSelection: n,
                                newSelection: i
                            })
                        }
                    }
                }, {
                    key: "sort", value: function (e, t) {
                        var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                        if ("string" == typeof e && (e = Object(s.parsePath)(e)), this._hasChilds()) {
                            this.hideChilds();
                            var i = this.childs;
                            this.childs = this.childs.concat();
                            var r = "desc" === t ? -1 : 1;
                            "object" === this.type ? this.childs.sort((function (e, t) {
                                return r * v()(e.field, t.field)
                            })) : this.childs.sort((function (t, n) {
                                var i = t.getNestedChild(e), o = n.getNestedChild(e);
                                if (!i) return r;
                                if (!o) return -r;
                                var a = i.value, s = o.value;
                                return "string" != typeof a && "string" != typeof s ? a > s ? r : a < s ? -r : 0 : r * v()(a, s)
                            })), this._updateDomIndexes(), this.showChilds(), !0 === n && this.editor._onAction("sort", {
                                path: this.getInternalPath(),
                                oldChilds: i,
                                newChilds: this.childs
                            })
                        }
                    }
                }, {
                    key: "update", value: function (e) {
                        var t = this.getInternalValue();
                        this.setValue(e), this.editor._onAction("transform", {
                            path: this.getInternalPath(),
                            oldValue: t,
                            newValue: this.getInternalValue()
                        })
                    }
                }, {
                    key: "_detachFromDom", value: function () {
                        var e, t = this.dom.tr ? this.dom.tr.parentNode : void 0,
                            n = (e = this.expanded ? this.getAppendDom() : this.getDom()) && e.parentNode ? e.nextSibling : void 0;
                        return this.hide({resetVisibleChilds: !1}), {table: t, nextTr: n}
                    }
                }, {
                    key: "_attachToDom", value: function (e) {
                        e.table && (e.nextTr ? e.table.insertBefore(this.getDom(), e.nextTr) : e.table.appendChild(this.getDom())), this.expanded && this.showChilds()
                    }
                }, {
                    key: "transform", value: function (e) {
                        if (this._hasChilds()) {
                            this.hideChilds();
                            try {
                                var t = this.getInternalValue(), n = this.getValue(),
                                    i = this.editor.options.executeQuery(n, e);
                                this.setValue(i);
                                var r = this.getInternalValue();
                                this.editor._onAction("transform", {
                                    path: this.getInternalPath(),
                                    oldValue: t,
                                    newValue: r
                                }), this.showChilds()
                            } catch (e) {
                                this.showChilds(), this.editor._onError(e)
                            }
                        }
                    }
                }, {
                    key: "extract", value: function () {
                        this.editor.node.hideChilds(), this.hideChilds();
                        try {
                            var e = this.editor.node.getInternalValue();
                            this.editor._setRoot(this);
                            var t = this.editor.node.getInternalValue();
                            this.editor._onAction("transform", {
                                path: this.editor.node.getInternalPath(),
                                oldValue: e,
                                newValue: t
                            })
                        } catch (e) {
                            this.editor._onError(e)
                        } finally {
                            this.updateDom({recurse: !0}), this.showChilds()
                        }
                    }
                }, {
                    key: "getNestedChild", value: function (e) {
                        for (var t = 0, n = this; n && t < e.length;) n = n.findChildByProperty(e[t]), t++;
                        return n
                    }
                }, {
                    key: "findChildByProperty", value: function (e) {
                        if ("object" === this.type) return this.childs.find((function (t) {
                            return t.field === e
                        }))
                    }
                }, {
                    key: "getAppendDom", value: function () {
                        return this.append || (this.append = new T(this.editor), this.append.setParent(this)), this.append.getDom()
                    }
                }, {
                    key: "getShowMoreDom", value: function () {
                        return this.showMore || (this.showMore = new O(this.editor, this)), this.showMore.getDom()
                    }
                }, {
                    key: "nextSibling", value: function () {
                        var e = this.parent.childs.indexOf(this);
                        return this.parent.childs[e + 1] || this.parent.append
                    }
                }, {
                    key: "_previousNode", value: function () {
                        var t = null, n = this.getDom();
                        if (n && n.parentNode) {
                            var i = n;
                            do {
                                i = i.previousSibling, t = e.getNodeFromTarget(i)
                            } while (i && t && t instanceof T && !t.isVisible())
                        }
                        return t
                    }
                }, {
                    key: "_nextNode", value: function () {
                        var t = null, n = this.getDom();
                        if (n && n.parentNode) {
                            var i = n;
                            do {
                                i = i.nextSibling, t = e.getNodeFromTarget(i)
                            } while (i && t && t instanceof T && !t.isVisible())
                        }
                        return t
                    }
                }, {
                    key: "_firstNode", value: function () {
                        var t = null, n = this.getDom();
                        if (n && n.parentNode) {
                            var i = n.parentNode.firstChild;
                            t = e.getNodeFromTarget(i)
                        }
                        return t
                    }
                }, {
                    key: "_lastNode", value: function () {
                        var t = null, n = this.getDom();
                        if (n && n.parentNode) {
                            var i = n.parentNode.lastChild;
                            for (t = e.getNodeFromTarget(i); i && t && !t.isVisible();) i = i.previousSibling, t = e.getNodeFromTarget(i)
                        }
                        return t
                    }
                }, {
                    key: "_previousElement", value: function (e) {
                        var t = this.dom;
                        switch (e) {
                            case t.value:
                                if (this.fieldEditable) return t.field;
                            case t.field:
                                if (this._hasChilds()) return t.expand;
                            case t.expand:
                                return t.menu;
                            case t.menu:
                                if (t.drag) return t.drag;
                            default:
                                return null
                        }
                    }
                }, {
                    key: "_nextElement", value: function (e) {
                        var t = this.dom;
                        switch (e) {
                            case t.drag:
                                return t.menu;
                            case t.menu:
                                if (this._hasChilds()) return t.expand;
                            case t.expand:
                                if (this.fieldEditable) return t.field;
                            case t.field:
                                if (!this._hasChilds()) return t.value;
                            default:
                                return null
                        }
                    }
                }, {
                    key: "_getElementName", value: function (e) {
                        var t = this;
                        return Object.keys(this.dom).find((function (n) {
                            return t.dom[n] === e
                        }))
                    }
                }, {
                    key: "_hasChilds", value: function () {
                        return "array" === this.type || "object" === this.type
                    }
                }, {
                    key: "addTemplates", value: function (e, t) {
                        var n = this, i = n.editor.options.templates;
                        if (null != i) {
                            i.length && e.push({type: "separator"});
                            var r = function (e, t) {
                                n._onAppend(e, t)
                            }, o = function (e, t) {
                                n._onInsertBefore(e, t)
                            };
                            i.forEach((function (n) {
                                e.push({
                                    text: n.text,
                                    className: n.className || "jsoneditor-type-object",
                                    title: n.title,
                                    click: t ? r.bind(this, n.field, n.value) : o.bind(this, n.field, n.value)
                                })
                            }))
                        }
                    }
                }, {
                    key: "showContextMenu", value: function (t, n) {
                        var i = this, r = [];
                        if (this.editable.value && r.push({
                            text: Object(u.c)("type"),
                            title: Object(u.c)("typeTitle"),
                            className: "jsoneditor-type-" + this.type,
                            submenu: [{
                                text: Object(u.c)("auto"),
                                className: "jsoneditor-type-auto" + ("auto" === this.type ? " jsoneditor-selected" : ""),
                                title: Object(u.c)("autoType"),
                                click: function () {
                                    i._onChangeType("auto")
                                }
                            }, {
                                text: Object(u.c)("array"),
                                className: "jsoneditor-type-array" + ("array" === this.type ? " jsoneditor-selected" : ""),
                                title: Object(u.c)("arrayType"),
                                click: function () {
                                    i._onChangeType("array")
                                }
                            }, {
                                text: Object(u.c)("object"),
                                className: "jsoneditor-type-object" + ("object" === this.type ? " jsoneditor-selected" : ""),
                                title: Object(u.c)("objectType"),
                                click: function () {
                                    i._onChangeType("object")
                                }
                            }, {
                                text: Object(u.c)("string"),
                                className: "jsoneditor-type-string" + ("string" === this.type ? " jsoneditor-selected" : ""),
                                title: Object(u.c)("stringType"),
                                click: function () {
                                    i._onChangeType("string")
                                }
                            }]
                        }), this._hasChilds() && (this.editor.options.enableSort && r.push({
                            text: Object(u.c)("sort"),
                            title: Object(u.c)("sortTitle", {type: this.type}),
                            className: "jsoneditor-sort-asc",
                            click: function () {
                                i.showSortModal()
                            }
                        }), this.editor.options.enableTransform && r.push({
                            text: Object(u.c)("transform"),
                            title: Object(u.c)("transformTitle", {type: this.type}),
                            className: "jsoneditor-transform",
                            click: function () {
                                i.showTransformModal()
                            }
                        }), this.parent && r.push({
                            text: Object(u.c)("extract"),
                            title: Object(u.c)("extractTitle", {type: this.type}),
                            className: "jsoneditor-extract",
                            click: function () {
                                i.extract()
                            }
                        })), this.parent && this.parent._hasChilds()) {
                            r.length && r.push({type: "separator"});
                            var o = i.parent.childs;
                            if (i === o[o.length - 1]) {
                                var a = [{
                                    text: Object(u.c)("auto"),
                                    className: "jsoneditor-type-auto",
                                    title: Object(u.c)("autoType"),
                                    click: function () {
                                        i._onAppend("", "", "auto")
                                    }
                                }, {
                                    text: Object(u.c)("array"),
                                    className: "jsoneditor-type-array",
                                    title: Object(u.c)("arrayType"),
                                    click: function () {
                                        i._onAppend("", [])
                                    }
                                }, {
                                    text: Object(u.c)("object"),
                                    className: "jsoneditor-type-object",
                                    title: Object(u.c)("objectType"),
                                    click: function () {
                                        i._onAppend("", {})
                                    }
                                }, {
                                    text: Object(u.c)("string"),
                                    className: "jsoneditor-type-string",
                                    title: Object(u.c)("stringType"),
                                    click: function () {
                                        i._onAppend("", "", "string")
                                    }
                                }];
                                i.addTemplates(a, !0), r.push({
                                    text: Object(u.c)("appendText"),
                                    title: Object(u.c)("appendTitle"),
                                    submenuTitle: Object(u.c)("appendSubmenuTitle"),
                                    className: "jsoneditor-append",
                                    click: function () {
                                        i._onAppend("", "", "auto")
                                    },
                                    submenu: a
                                })
                            }
                            var s = [{
                                text: Object(u.c)("auto"),
                                className: "jsoneditor-type-auto",
                                title: Object(u.c)("autoType"),
                                click: function () {
                                    i._onInsertBefore("", "", "auto")
                                }
                            }, {
                                text: Object(u.c)("array"),
                                className: "jsoneditor-type-array",
                                title: Object(u.c)("arrayType"),
                                click: function () {
                                    i._onInsertBefore("", [])
                                }
                            }, {
                                text: Object(u.c)("object"),
                                className: "jsoneditor-type-object",
                                title: Object(u.c)("objectType"),
                                click: function () {
                                    i._onInsertBefore("", {})
                                }
                            }, {
                                text: Object(u.c)("string"),
                                className: "jsoneditor-type-string",
                                title: Object(u.c)("stringType"),
                                click: function () {
                                    i._onInsertBefore("", "", "string")
                                }
                            }];
                            i.addTemplates(s, !1), r.push({
                                text: Object(u.c)("insert"),
                                title: Object(u.c)("insertTitle"),
                                submenuTitle: Object(u.c)("insertSub"),
                                className: "jsoneditor-insert",
                                click: function () {
                                    i._onInsertBefore("", "", "auto")
                                },
                                submenu: s
                            }), this.editable.field && (r.push({
                                text: Object(u.c)("duplicateText"),
                                title: Object(u.c)("duplicateField"),
                                className: "jsoneditor-duplicate",
                                click: function () {
                                    e.onDuplicate(i)
                                }
                            }), r.push({
                                text: Object(u.c)("removeText"),
                                title: Object(u.c)("removeField"),
                                className: "jsoneditor-remove",
                                click: function () {
                                    e.onRemove(i)
                                }
                            }))
                        }
                        if (this.editor.options.onCreateMenu) {
                            var l = i.getPath();
                            r = this.editor.options.onCreateMenu(r, {type: "single", path: l, paths: [l]})
                        }
                        new f.a(r, {close: n}).show(t, this.editor.getPopupAnchor())
                    }
                }, {
                    key: "showSortModal", value: function () {
                        var e = this, t = this.editor.options.modalAnchor || w.a, n = this.getValue();
                        Object(b.showSortModal)(t, n, (function (t) {
                            var n = t.path, i = Object(s.parsePath)(n);
                            e.sortedBy = t, e.sort(i, t.direction)
                        }), e.sortedBy)
                    }
                }, {
                    key: "showTransformModal", value: function () {
                        var e = this, t = this.editor.options, n = t.modalAnchor, i = t.createQuery, r = t.executeQuery,
                            o = t.queryDescription, a = this.getValue();
                        Object(C.showTransformModal)({
                            anchor: n || w.a,
                            json: a,
                            queryDescription: o,
                            createQuery: i,
                            executeQuery: r,
                            onTransform: function (t) {
                                e.transform(t)
                            }
                        })
                    }
                }, {
                    key: "_getType", value: function (e) {
                        return e instanceof Array ? "array" : e instanceof Object ? "object" : "string" == typeof e && "string" != typeof Object(s.parseString)(e) ? "string" : "auto"
                    }
                }, {
                    key: "_escapeHTML", value: function (e) {
                        if ("string" != typeof e) return String(e);
                        var t = String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/ {2}/g, " &nbsp;").replace(/^ /, "&nbsp;").replace(/ $/, "&nbsp;"),
                            n = JSON.stringify(t), i = n.substring(1, n.length - 1);
                        return !0 === this.editor.options.escapeUnicode && (i = Object(s.escapeUnicodeChars)(i)), i
                    }
                }, {
                    key: "_unescapeHTML", value: function (e) {
                        var t = '"' + this._escapeJSON(e) + '"';
                        return Object(s.parse)(t).replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&nbsp;|\u00A0/g, " ").replace(/&amp;/g, "&")
                    }
                }, {
                    key: "_escapeJSON", value: function (e) {
                        for (var t = "", n = 0; n < e.length;) {
                            var i = e.charAt(n);
                            "\n" === i ? t += "\\n" : "\\" === i ? (t += i, n++, "" !== (i = e.charAt(n)) && -1 !== '"\\/bfnrtu'.indexOf(i) || (t += "\\"), t += i) : t += '"' === i ? '\\"' : i, n++
                        }
                        return t
                    }
                }, {
                    key: "updateNodeName", value: function () {
                        var e, t = this.childs ? this.childs.length : 0;
                        if ("object" === this.type || "array" === this.type) {
                            if (this.editor.options.onNodeName) try {
                                e = this.editor.options.onNodeName({path: this.getPath(), size: t, type: this.type})
                            } catch (e) {
                                console.error("Error in onNodeName callback: ", e)
                            }
                            this.dom.value.innerHTML = "object" === this.type ? "{" + (e || t) + "}" : "[" + (e || t) + "]"
                        }
                    }
                }, {
                    key: "recursivelyUpdateNodeName", value: function () {
                        var e;
                        if (this.expanded && (this.updateNodeName(), "undefined" !== this.childs)) for (e in this.childs) this.childs[e].recursivelyUpdateNodeName()
                    }
                }]) && x(t.prototype, n), i && x(t, i), e
            }();
            A.prototype.DEBOUNCE_INTERVAL = 150, A.prototype.MAX_SEARCH_RESULTS = 999;
            var _ = 100;

            function S(e) {
                return e.getInternalPath()
            }

            function k(e) {
                return e.getField()
            }

            function L(e, t) {
                return Object.prototype.hasOwnProperty.call(e, t)
            }

            A.focusElement = void 0, A.select = function (e) {
                setTimeout((function () {
                    Object(s.selectContentEditable)(e)
                }), 0)
            }, A.onDragStart = function (e, t) {
                if (!Array.isArray(e)) return A.onDragStart([e], t);
                if (0 !== e.length) {
                    var n = e[0], i = e[e.length - 1], r = n.parent, o = A.getNodeFromTarget(t.target), a = n.editor,
                        l = Object(s.getAbsoluteTop)(o.dom.tr) - Object(s.getAbsoluteTop)(n.dom.tr);
                    a.mousemove || (a.mousemove = Object(s.addEventListener)(window, "mousemove", (function (t) {
                        A.onDrag(e, t)
                    }))), a.mouseup || (a.mouseup = Object(s.addEventListener)(window, "mouseup", (function (t) {
                        A.onDragEnd(e, t)
                    }))), a.highlighter.lock(), a.drag = {
                        oldCursor: document.body.style.cursor,
                        oldSelection: a.getDomSelection(),
                        oldPaths: e.map(S),
                        oldParent: r,
                        oldNextNode: r.childs[i.getIndex() + 1] || r.append,
                        oldParentPathRedo: r.getInternalPath(),
                        oldIndexRedo: n.getIndex(),
                        mouseX: t.pageX,
                        offsetY: l,
                        level: n.getLevel()
                    }, document.body.style.cursor = "move", t.preventDefault()
                }
            }, A.onDrag = function (e, t) {
                if (!Array.isArray(e)) return A.onDrag([e], t);
                if (0 !== e.length) {
                    var n, i, r, o, a, l, c, u, h, d, f, g = e[0].editor, p = t.pageY - g.drag.offsetY, m = t.pageX,
                        v = !1, y = e[0], b = y.dom.tr, C = Object(s.getAbsoluteTop)(b), w = b.offsetHeight;
                    if (p < C) {
                        n = b;
                        do {
                            n = n.previousSibling, l = A.getNodeFromTarget(n), u = n ? Object(s.getAbsoluteTop)(n) : 0
                        } while (n && p < u);
                        l && !l.parent && (l = void 0), l || (n = (a = b.parentNode.firstChild) ? a.nextSibling : void 0, (l = A.getNodeFromTarget(n)) === y && (l = void 0)), l && l.isVisible() && p > (u = (n = l.dom.tr) ? Object(s.getAbsoluteTop)(n) : 0) + w && (l = void 0), l && (e.forEach((function (e) {
                            l.parent.moveBefore(e, l)
                        })), v = !0)
                    } else {
                        var I = e[e.length - 1];
                        if (r = (o = I.expanded && I.append ? I.append.getDom() : I.dom.tr) ? o.nextSibling : void 0) {
                            h = Object(s.getAbsoluteTop)(r), i = r;
                            do {
                                c = A.getNodeFromTarget(i), i && (d = i.nextSibling ? Object(s.getAbsoluteTop)(i.nextSibling) : 0, f = i ? d - h : 0, c && c.parent.childs.length === e.length && c.parent.childs[e.length - 1] === I && (C += 27), i = i.nextSibling)
                            } while (i && p > C + f);
                            if (c && c.parent) {
                                var x = m - g.drag.mouseX, _ = Math.round(x / 24 / 2), S = g.drag.level + _,
                                    k = c.getLevel();
                                for (n = c.dom.tr && c.dom.tr.previousSibling; k < S && n;) {
                                    if (l = A.getNodeFromTarget(n), e.some((function (e) {
                                        return e === l || l.isDescendantOf(e)
                                    }))) ; else {
                                        if (!(l instanceof T)) break;
                                        var L = l.parent.childs;
                                        if (L.length === e.length && L[e.length - 1] === I) break;
                                        k = (c = A.getNodeFromTarget(n)).getLevel()
                                    }
                                    n = n.previousSibling
                                }
                                c instanceof T && !c.isVisible() && c.parent.showMore.isVisible() && (c = c._nextNode()), c && c.dom.tr && o.nextSibling !== c.dom.tr && (e.forEach((function (e) {
                                    c.parent.moveBefore(e, c)
                                })), v = !0)
                            }
                        }
                    }
                    v && (g.drag.mouseX = m, g.drag.level = y.getLevel()), g.startAutoScroll(p), t.preventDefault()
                }
            }, A.onDragEnd = function (e, t) {
                if (!Array.isArray(e)) return A.onDrag([e], t);
                if (0 !== e.length) {
                    var n = e[0], i = n.editor;
                    e[0] && e[0].dom.menu.focus();
                    var r = i.drag.oldParent.getInternalPath(), o = n.parent.getInternalPath(),
                        a = i.drag.oldParent === n.parent, l = i.drag.oldNextNode.getIndex(), c = n.getIndex(),
                        u = i.drag.oldParentPathRedo, h = i.drag.oldIndexRedo, d = a && h < c ? c + e.length : c;
                    a && h === c || i._onAction("moveNodes", {
                        count: e.length,
                        fieldNames: e.map(k),
                        oldParentPath: r,
                        newParentPath: o,
                        oldIndex: l,
                        newIndex: c,
                        oldIndexRedo: h,
                        newIndexRedo: d,
                        oldParentPathRedo: u,
                        newParentPathRedo: null,
                        oldSelection: i.drag.oldSelection,
                        newSelection: i.getDomSelection()
                    }), document.body.style.cursor = i.drag.oldCursor, i.highlighter.unlock(), e.forEach((function (e) {
                        e.updateDom(), t.target !== e.dom.drag && t.target !== e.dom.menu && i.highlighter.unhighlight()
                    })), delete i.drag, i.mousemove && (Object(s.removeEventListener)(window, "mousemove", i.mousemove), delete i.mousemove), i.mouseup && (Object(s.removeEventListener)(window, "mouseup", i.mouseup), delete i.mouseup), i.stopAutoScroll(), t.preventDefault()
                }
            }, A._findEnum = function (e) {
                if (e.enum) return e.enum;
                var t = e.oneOf || e.anyOf || e.allOf;
                if (t) {
                    var n = t.filter((function (e) {
                        return e.enum
                    }));
                    if (n.length > 0) return n[0].enum
                }
                return null
            }, A._findSchema = function (e, t, n) {
                var i = e, r = i, o = e.oneOf || e.anyOf || e.allOf;
                o || (o = [e]);
                for (var a = 0; a < o.length; a++) {
                    "$ref" in (i = o[a]) && "string" == typeof i.$ref && (i = t[i.$ref]) && (r = A._findSchema(i, t, n));
                    for (var s = 0; s < n.length && i; s++) {
                        var l = n.slice(s + 1, n.length), c = n[s];
                        if ("string" != typeof c || !i.patternProperties || i.properties && c in i.properties) "string" == typeof c && i.properties ? c in i.properties ? (i = i.properties[c]) && (r = A._findSchema(i, t, l)) : r = null : "number" == typeof c && i.items && (i = i.items) && (r = A._findSchema(i, t, l)); else for (var u in i.patternProperties) c.match(u) && (r = A._findSchema(i.patternProperties[u], t, l))
                    }
                }
                return r === e && n.length > 0 ? null : r
            }, A.onRemove = function (e) {
                if (!Array.isArray(e)) return A.onRemove([e]);
                if (e && e.length > 0) {
                    var t = e[0], n = t.parent, i = t.editor, r = t.getIndex();
                    i.highlighter.unhighlight();
                    var o = i.getDomSelection();
                    A.blurNodes(e);
                    var a = i.getDomSelection(), s = e.map(S);
                    e.forEach((function (e) {
                        e.parent._remove(e)
                    })), i._onAction("removeNodes", {
                        nodes: e,
                        paths: s,
                        parentPath: n.getInternalPath(),
                        index: r,
                        oldSelection: o,
                        newSelection: a
                    })
                }
            }, A.onDuplicate = function (e) {
                if (!Array.isArray(e)) return A.onDuplicate([e]);
                if (e && e.length > 0) {
                    var t = e[e.length - 1], n = t.parent, i = t.editor;
                    i.deselect(i.multiselection.nodes);
                    var r = i.getDomSelection(), o = t, a = e.map((function (e) {
                        var t = e.clone();
                        if ("object" === e.parent.type) {
                            var i = e.parent.getFieldNames();
                            t.field = Object(s.findUniqueName)(e.field, i)
                        }
                        return n.insertAfter(t, o), o = t, t
                    }));
                    1 === e.length ? "object" === a[0].parent.type ? (a[0].dom.field.innerHTML = e[0].field, a[0].focus("field")) : a[0].focus() : i.select(a);
                    var l = i.getDomSelection();
                    i._onAction("duplicateNodes", {
                        paths: e.map(S),
                        clonePaths: a.map(S),
                        afterPath: t.getInternalPath(),
                        parentPath: n.getInternalPath(),
                        oldSelection: r,
                        newSelection: l
                    })
                }
            }, A.getNodeFromTarget = function (e) {
                for (; e;) {
                    if (e.node) return e.node;
                    e = e.parentNode
                }
            }, A.targetIsColorPicker = function (e) {
                var t = A.getNodeFromTarget(e);
                if (t) for (var n = e && e.parentNode; n;) {
                    if (n === t.dom.color) return !0;
                    n = n.parentNode
                }
                return !1
            }, A.blurNodes = function (e) {
                if (Array.isArray(e)) {
                    var t = e[0], n = t.parent, i = t.getIndex();
                    n.childs[i + e.length] ? n.childs[i + e.length].focus() : n.childs[i - 1] ? n.childs[i - 1].focus() : n.focus()
                } else A.blurNodes([e])
            };
            var T = function (e) {
                function t(e) {
                    this.editor = e, this.dom = {}
                }

                return t.prototype = new e, t.prototype.getDom = function () {
                    var e = this.dom;
                    if (e.tr) return e.tr;
                    this._updateEditability();
                    var t = document.createElement("tr");
                    if (t.className = "jsoneditor-append", t.node = this, e.tr = t, "tree" === this.editor.options.mode) {
                        e.tdDrag = document.createElement("td");
                        var n = document.createElement("td");
                        e.tdMenu = n;
                        var i = document.createElement("button");
                        i.type = "button", i.className = "jsoneditor-button jsoneditor-contextmenu-button", i.title = "Click to open the actions menu (Ctrl+M)", e.menu = i, n.appendChild(e.menu)
                    }
                    var r = document.createElement("td"), o = document.createElement("div");
                    return o.innerHTML = "(" + Object(u.c)("empty") + ")", o.className = "jsoneditor-readonly", r.appendChild(o), e.td = r, e.text = o, this.updateDom(), t
                }, t.prototype.getPath = function () {
                    return null
                }, t.prototype.getIndex = function () {
                    return null
                }, t.prototype.updateDom = function (e) {
                    var t = this.dom, n = t.td;
                    n && (n.style.paddingLeft = 24 * this.getLevel() + 26 + "px");
                    var i = t.text;
                    i && (i.innerHTML = "(" + Object(u.c)("empty") + " " + this.parent.type + ")");
                    var r = t.tr;
                    this.isVisible() ? t.tr.firstChild || (t.tdDrag && r.appendChild(t.tdDrag), t.tdMenu && r.appendChild(t.tdMenu), r.appendChild(n)) : t.tr.firstChild && (t.tdDrag && r.removeChild(t.tdDrag), t.tdMenu && r.removeChild(t.tdMenu), r.removeChild(n))
                }, t.prototype.isVisible = function () {
                    return 0 === this.parent.childs.length
                }, t.prototype.showContextMenu = function (e, t) {
                    var n = this, i = [{
                        text: Object(u.c)("auto"),
                        className: "jsoneditor-type-auto",
                        title: Object(u.c)("autoType"),
                        click: function () {
                            n._onAppend("", "", "auto")
                        }
                    }, {
                        text: Object(u.c)("array"),
                        className: "jsoneditor-type-array",
                        title: Object(u.c)("arrayType"),
                        click: function () {
                            n._onAppend("", [])
                        }
                    }, {
                        text: Object(u.c)("object"),
                        className: "jsoneditor-type-object",
                        title: Object(u.c)("objectType"),
                        click: function () {
                            n._onAppend("", {})
                        }
                    }, {
                        text: Object(u.c)("string"),
                        className: "jsoneditor-type-string",
                        title: Object(u.c)("stringType"),
                        click: function () {
                            n._onAppend("", "", "string")
                        }
                    }];
                    n.addTemplates(i, !0);
                    var r = [{
                        text: Object(u.c)("appendText"),
                        title: Object(u.c)("appendTitleAuto"),
                        submenuTitle: Object(u.c)("appendSubmenuTitle"),
                        className: "jsoneditor-insert",
                        click: function () {
                            n._onAppend("", "", "auto")
                        },
                        submenu: i
                    }];
                    if (this.editor.options.onCreateMenu) {
                        var o = n.parent.getPath();
                        r = this.editor.options.onCreateMenu(r, {type: "append", path: o, paths: [o]})
                    }
                    new f.a(r, {close: t}).show(e, this.editor.getPopupAnchor())
                }, t.prototype.onEvent = function (e) {
                    var t = e.type, n = e.target || e.srcElement, i = this.dom;
                    if (n === i.menu && ("mouseover" === t ? this.editor.highlighter.highlight(this.parent) : "mouseout" === t && this.editor.highlighter.unhighlight()), "click" === t && n === i.menu) {
                        var r = this.editor.highlighter;
                        r.highlight(this.parent), r.lock(), Object(s.addClassName)(i.menu, "jsoneditor-selected"), this.showContextMenu(i.menu, (function () {
                            Object(s.removeClassName)(i.menu, "jsoneditor-selected"), r.unlock(), r.unhighlight()
                        }))
                    }
                    "keydown" === t && this.onKeyDown(e)
                }, t
            }(A), O = function (e) {
                function t(e, t) {
                    this.editor = e, this.parent = t, this.dom = {}
                }

                return t.prototype = new e, t.prototype.getDom = function () {
                    if (this.dom.tr) return this.dom.tr;
                    if (this._updateEditability(), !this.dom.tr) {
                        var e = this, t = this.parent, n = document.createElement("a");
                        n.appendChild(document.createTextNode(Object(u.c)("showMore"))), n.href = "#", n.onclick = function (n) {
                            return t.visibleChilds = Math.floor(t.visibleChilds / t.getMaxVisibleChilds() + 1) * t.getMaxVisibleChilds(), e.updateDom(), t.showChilds(), n.preventDefault(), !1
                        };
                        var i = document.createElement("a");
                        i.appendChild(document.createTextNode(Object(u.c)("showAll"))), i.href = "#", i.onclick = function (n) {
                            return t.visibleChilds = 1 / 0, e.updateDom(), t.showChilds(), n.preventDefault(), !1
                        };
                        var r = document.createElement("div"), o = document.createTextNode(this._getShowMoreText());
                        r.className = "jsoneditor-show-more", r.appendChild(o), r.appendChild(n), r.appendChild(document.createTextNode(". ")), r.appendChild(i), r.appendChild(document.createTextNode(". "));
                        var a = document.createElement("td");
                        a.appendChild(r);
                        var s = document.createElement("tr");
                        "tree" === this.editor.options.mode && (s.appendChild(document.createElement("td")), s.appendChild(document.createElement("td"))), s.appendChild(a), s.className = "jsoneditor-show-more", this.dom.tr = s, this.dom.moreContents = r, this.dom.moreText = o
                    }
                    return this.updateDom(), this.dom.tr
                }, t.prototype.updateDom = function (e) {
                    if (this.isVisible()) {
                        if (this.dom.tr.node = this.parent.childs[this.parent.visibleChilds], !this.dom.tr.parentNode) {
                            var t = this.parent._getNextTr();
                            t && t.parentNode.insertBefore(this.dom.tr, t)
                        }
                        this.dom.moreText.nodeValue = this._getShowMoreText(), this.dom.moreContents.style.marginLeft = 24 * (this.getLevel() + 1) + "px"
                    } else this.dom.tr && this.dom.tr.parentNode && this.dom.tr.parentNode.removeChild(this.dom.tr)
                }, t.prototype._getShowMoreText = function () {
                    return Object(u.c)("showMoreStatus", {
                        visibleChilds: this.parent.visibleChilds,
                        totalChilds: this.parent.childs.length
                    }) + " "
                }, t.prototype.isVisible = function () {
                    return this.parent.expanded && this.parent.childs.length > this.parent.visibleChilds
                }, t.prototype.onEvent = function (e) {
                    "keydown" === e.type && this.onKeyDown(e)
                }, t
            }(A), R = n(8), E = n(9), P = {
                start: function (e, t, n) {
                    return 0 === t.indexOf(e)
                }, contain: function (e, t, n) {
                    return t.indexOf(e) > -1
                }
            }, M = n(4), N = {
                create: function (e, t) {
                    if (!e) throw new Error("No container element provided.");
                    this.container = e, this.dom = {}, this.highlighter = new a, this.selection = void 0, this.multiselection = {nodes: []}, this.validateSchema = null, this.validationSequence = 0, this.errorNodes = [], this.lastSchemaErrors = void 0, this.node = null, this.focusTarget = null, this._setOptions(t), t.autocomplete && (this.autocomplete = function (e) {
                        (e = e || {}).filter = e.filter || "start", e.trigger = e.trigger || "keydown", e.confirmKeys = e.confirmKeys || [39, 35, 9], e.caseSensitive = e.caseSensitive || !1;
                        var t = "", n = "", i = document.createElement("div");
                        i.style.position = "relative", i.style.outline = "0", i.style.border = "0", i.style.margin = "0", i.style.padding = "0";
                        var r, o, a = document.createElement("div");

                        function s(e) {
                            var t, n;
                            document.createRange ? ((t = document.createRange()).selectNodeContents(e), t.collapse(!1), (n = window.getSelection()).removeAllRanges(), n.addRange(t)) : document.selection && ((t = document.body.createTextRange()).moveToElementText(e), t.collapse(!1), t.select())
                        }

                        function l(e) {
                            return void 0 === r && ((r = document.createElement("span")).style.visibility = "hidden", r.style.position = "fixed", r.style.outline = "0", r.style.margin = "0", r.style.padding = "0", r.style.border = "0", r.style.left = "0", r.style.whiteSpace = "pre", r.style.fontSize = t, r.style.fontFamily = n, r.style.fontWeight = "normal", document.body.appendChild(r)), r.innerHTML = String(e).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), r.getBoundingClientRect().right
                        }

                        a.className = "autocomplete dropdown", a.style.position = "absolute", a.style.visibility = "hidden";
                        var c = {
                            onArrowDown: function () {
                            },
                            onArrowUp: function () {
                            },
                            onEnter: function () {
                            },
                            onTab: function () {
                            },
                            startFrom: 0,
                            options: [],
                            element: null,
                            elementHint: null,
                            elementStyle: null,
                            wrapper: i,
                            show: function (e, r, o) {
                                var s = this;
                                this.startFrom = r, this.wrapper.remove(), this.elementHint && (this.elementHint.remove(), this.elementHint = null), "" === t && (t = window.getComputedStyle(e).getPropertyValue("font-size")), "" === n && (n = window.getComputedStyle(e).getPropertyValue("font-family")), a.style.marginLeft = "0", a.style.marginTop = e.getBoundingClientRect().height + "px", this.options = o.map(String), this.element !== e && (this.element = e, this.elementStyle = {
                                    zIndex: this.element.style.zIndex,
                                    position: this.element.style.position,
                                    backgroundColor: this.element.style.backgroundColor,
                                    borderColor: this.element.style.borderColor
                                }), this.element.style.zIndex = 3, this.element.style.position = "relative", this.element.style.backgroundColor = "transparent", this.element.style.borderColor = "transparent", this.elementHint = e.cloneNode(), this.elementHint.className = "autocomplete hint", this.elementHint.style.zIndex = 2, this.elementHint.style.position = "absolute", this.elementHint.onfocus = function () {
                                    s.element.focus()
                                }, this.element.addEventListener && (this.element.removeEventListener("keydown", h), this.element.addEventListener("keydown", h, !1), this.element.removeEventListener("blur", d), this.element.addEventListener("blur", d, !1)), i.appendChild(this.elementHint), i.appendChild(a), e.parentElement.appendChild(i), this.repaint(e)
                            },
                            setText: function (e) {
                                this.element.innerText = e
                            },
                            getText: function () {
                                return this.element.innerText
                            },
                            hideDropDown: function () {
                                this.wrapper.remove(), this.elementHint && (this.elementHint.remove(), this.elementHint = null, u.hide(), this.element.style.zIndex = this.elementStyle.zIndex, this.element.style.position = this.elementStyle.position, this.element.style.backgroundColor = this.elementStyle.backgroundColor, this.element.style.borderColor = this.elementStyle.borderColor)
                            },
                            repaint: function (t) {
                                var n = t.innerText;
                                n = n.replace("\n", "");
                                var i = this.options.length, r = n.substring(this.startFrom);
                                o = n.substring(0, this.startFrom);
                                for (var s = 0; s < i; s++) {
                                    var c = this.options[s];
                                    if (!e.caseSensitive && 0 === c.toLowerCase().indexOf(r.toLowerCase()) || e.caseSensitive && 0 === c.indexOf(r)) {
                                        this.elementHint.innerText = o + r + c.substring(r.length), this.elementHint.realInnerText = o + c;
                                        break
                                    }
                                }
                                a.style.left = l(o) + "px", u.refresh(r, this.options), this.elementHint.style.width = l(this.elementHint.innerText) + 10 + "px", "hidden" === a.style.visibility || (this.elementHint.style.width = l(this.elementHint.innerText) + a.clientWidth + "px")
                            }
                        }, u = function (t, n) {
                            var i = [], r = 0, o = -1, a = function () {
                                this.style.backgroundColor = "#ddd"
                            }, s = function () {
                                this.style.backgroundColor = ""
                            }, l = function () {
                                c.hide(), c.onmouseselection(this.__hint, c.rs)
                            }, c = {
                                rs: n, hide: function () {
                                    t.style.visibility = "hidden"
                                }, refresh: function (n, o) {
                                    t.style.visibility = "hidden", r = 0, t.innerHTML = "";
                                    var u = window.innerHeight || document.documentElement.clientHeight,
                                        h = t.parentNode.getBoundingClientRect(), d = h.top - 6, f = u - h.bottom - 6;
                                    i = [];
                                    var g = "function" == typeof e.filter ? e.filter : P[e.filter],
                                        p = g ? o.filter((function (t) {
                                            return g(e.caseSensitive ? n : n.toLowerCase(), e.caseSensitive ? t : t.toLowerCase(), e)
                                        })) : [];
                                    0 !== (i = p.map((function (e) {
                                        var i = document.createElement("div");
                                        return i.className = "item", i.onmouseover = a, i.onmouseout = s, i.onmousedown = l, i.__hint = e, i.innerHTML = e.substring(0, n.length) + "<b>" + e.substring(n.length) + "</b>", t.appendChild(i), i
                                    }))).length && (1 === i.length && (n.toLowerCase() === i[0].__hint.toLowerCase() && !e.caseSensitive || n === i[0].__hint && e.caseSensitive) || i.length < 2 || (c.highlight(0), d > 3 * f ? (t.style.maxHeight = d + "px", t.style.top = "", t.style.bottom = "100%") : (t.style.top = "100%", t.style.bottom = "", t.style.maxHeight = f + "px"), t.style.visibility = "visible"))
                                }, highlight: function (e) {
                                    -1 !== o && i[o] && (i[o].className = "item"), i[e].className = "item hover", o = e
                                }, move: function (e) {
                                    return "hidden" === t.style.visibility ? "" : (r + e === -1 || r + e === i.length || (r += e, c.highlight(r)), i[r].__hint)
                                }, onmouseselection: function () {
                                }
                            };
                            return c
                        }(a, c), h = function (t) {
                            var n = (t = t || window.event).keyCode;
                            if (null != this.elementHint && 33 !== n && 34 !== n) {
                                if (27 === n) return c.hideDropDown(), c.element.focus(), t.preventDefault(), void t.stopPropagation();
                                var i = this.element.innerText;
                                if (i = i.replace("\n", ""), e.confirmKeys.indexOf(n) >= 0) return 9 === n && 0 === this.elementHint.innerText.length && c.onTab(), void (this.elementHint.innerText.length > 0 && this.element.innerText !== this.elementHint.realInnerText && (this.element.innerText = this.elementHint.realInnerText, c.hideDropDown(), s(this.element), 9 === n && (c.element.focus(), t.preventDefault(), t.stopPropagation())));
                                if (13 !== n) {
                                    if (40 === n) {
                                        var r = i.substring(this.startFrom), l = u.move(1);
                                        return "" === l && c.onArrowDown(), this.elementHint.innerText = o + r + l.substring(r.length), this.elementHint.realInnerText = o + l, t.preventDefault(), void t.stopPropagation()
                                    }
                                    if (38 === n) {
                                        var h = i.substring(this.startFrom), d = u.move(-1);
                                        "" === d && c.onArrowUp(), this.elementHint.innerText = o + h + d.substring(h.length), this.elementHint.realInnerText = o + d, t.preventDefault(), t.stopPropagation()
                                    }
                                } else if (0 === this.elementHint.innerText.length) c.onEnter(); else {
                                    var f = "hidden" === a.style.visibility;
                                    if (u.hide(), f) return c.hideDropDown(), c.element.focus(), void c.onEnter();
                                    this.element.innerText = this.elementHint.realInnerText, c.hideDropDown(), s(this.element), t.preventDefault(), t.stopPropagation()
                                }
                            }
                        }.bind(c), d = function (e) {
                            c.hideDropDown()
                        };
                        return u.onmouseselection = function (e, t) {
                            t.element.innerText = t.elementHint.innerText = o + e, t.hideDropDown(), window.setTimeout((function () {
                                t.element.focus(), s(t.element)
                            }), 1)
                        }, c
                    }(t.autocomplete)), this.options.history && "view" !== this.options.mode && (this.history = new c(this)), this._createFrame(), this._createTable()
                }, destroy: function () {
                    this.frame && this.container && this.frame.parentNode === this.container && (this.container.removeChild(this.frame), this.frame = null), this.container = null, this.dom = null, this.clear(), this.node = null, this.focusTarget = null, this.selection = null, this.multiselection = null, this.errorNodes = null, this.validateSchema = null, this._debouncedValidate = null, this.history && (this.history.destroy(), this.history = null), this.searchBox && (this.searchBox.destroy(), this.searchBox = null), this.modeSwitcher && (this.modeSwitcher.destroy(), this.modeSwitcher = null), this.frameFocusTracker.destroy()
                }, _setOptions: function (e) {
                    var t = this;
                    this.options = {
                        search: !0,
                        history: !0,
                        mode: "tree",
                        name: void 0,
                        schema: null,
                        schemaRefs: null,
                        autocomplete: null,
                        navigationBar: !0,
                        mainMenuBar: !0,
                        onSelectionChange: null,
                        colorPicker: !0,
                        onColorPicker: function (e, t, n) {
                            if (r.a) {
                                var i = e.getBoundingClientRect().top, o = window.innerHeight - i < 300 && i > 300;
                                new r.a({
                                    parent: e, color: t, popup: o ? "top" : "bottom", onDone: function (e) {
                                        var t = 1 === e.rgba[3] ? e.hex.substr(0, 7) : e.hex;
                                        n(t)
                                    }
                                }).show()
                            } else console.warn("Cannot open color picker: the `vanilla-picker` library is not included in the bundle. Either use the full bundle or implement your own color picker using `onColorPicker`.")
                        },
                        timestampTag: !0,
                        timestampFormat: null,
                        createQuery: M.a,
                        executeQuery: M.b,
                        onEvent: null,
                        enableSort: !0,
                        enableTransform: !0
                    }, e && Object.keys(e).forEach((function (n) {
                        t.options[n] = e[n]
                    })), this.setSchema(this.options.schema, this.options.schemaRefs), this._debouncedValidate = Object(s.debounce)(this.validate.bind(this), this.DEBOUNCE_INTERVAL), e.onSelectionChange && this.onSelectionChange(e.onSelectionChange), Object(u.b)(this.options.languages), Object(u.a)(this.options.language)
                }, set: function (e) {
                    if (e instanceof Function || void 0 === e) this.clear(); else {
                        this.content.removeChild(this.table);
                        var t = {field: this.options.name, value: e}, n = new A(this, t);
                        this._setRoot(n), this.validate(), this.node.expand(!1), this.content.appendChild(this.table)
                    }
                    this.history && this.history.clear(), this.searchBox && this.searchBox.clear()
                }, update: function (e) {
                    if (!this.node.deepEqual(e)) {
                        var t = this.getSelection();
                        if (this.onChangeDisabled = !0, this.node.update(e), this.onChangeDisabled = !1, this.validate(), this.searchBox && !this.searchBox.isEmpty() && this.searchBox.forceSearch(), t && t.start && t.end) {
                            var n = this.node.findNodeByPath(t.start.path), i = this.node.findNodeByPath(t.end.path);
                            n && i ? this.setSelection(t.start, t.end) : this.setSelection({}, {})
                        } else this.setSelection({}, {})
                    }
                }, get: function () {
                    return this.node ? this.node.getValue() : void 0
                }, getText: function () {
                    return JSON.stringify(this.get())
                }, setText: function (e) {
                    try {
                        this.set(Object(s.parse)(e))
                    } catch (n) {
                        var t = Object(s.repair)(e);
                        this.set(Object(s.parse)(t))
                    }
                }, updateText: function (e) {
                    try {
                        this.update(Object(s.parse)(e))
                    } catch (n) {
                        var t = Object(s.repair)(e);
                        this.update(Object(s.parse)(t))
                    }
                }, setName: function (e) {
                    this.options.name = e, this.node && this.node.updateField(this.options.name)
                }, getName: function () {
                    return this.options.name
                }, focus: function () {
                    var e = this.scrollableContent.querySelector("[contenteditable=true]");
                    e ? e.focus() : this.node.dom.expand ? this.node.dom.expand.focus() : this.node.dom.menu ? this.node.dom.menu.focus() : (e = this.frame.querySelector("button")) && e.focus()
                }, clear: function () {
                    this.node && (this.node.hide(), delete this.node), this.treePath && this.treePath.reset()
                }, _setRoot: function (e) {
                    this.clear(), this.node = e, e.setParent(null), e.setField(this.getName(), !1), delete e.index, this.tbody.appendChild(e.getDom())
                }, search: function (e) {
                    var t;
                    return this.node ? (this.content.removeChild(this.table), t = this.node.search(e), this.content.appendChild(this.table)) : t = [], t
                }, expandAll: function () {
                    this.node && (this.content.removeChild(this.table), this.node.expand(), this.content.appendChild(this.table))
                }, collapseAll: function () {
                    this.node && (this.content.removeChild(this.table), this.node.collapse(), this.content.appendChild(this.table))
                }, _onAction: function (e, t) {
                    this.history && this.history.add(e, t), this._onChange()
                }, _onChange: function () {
                    if (!this.onChangeDisabled) {
                        if (this.selection = this.getDomSelection(), this._debouncedValidate(), this.treePath) {
                            var e = this.node && this.selection ? this.node.findNodeByInternalPath(this.selection.path) : this.multiselection ? this.multiselection.nodes[0] : void 0;
                            e ? this._updateTreePath(e.getNodePath()) : this.treePath.reset()
                        }
                        if (this.options.onChange) try {
                            this.options.onChange()
                        } catch (e) {
                            console.error("Error in onChange callback: ", e)
                        }
                        if (this.options.onChangeJSON) try {
                            this.options.onChangeJSON(this.get())
                        } catch (e) {
                            console.error("Error in onChangeJSON callback: ", e)
                        }
                        if (this.options.onChangeText) try {
                            this.options.onChangeText(this.getText())
                        } catch (e) {
                            console.error("Error in onChangeText callback: ", e)
                        }
                        if (this.options.onClassName && this.node.recursivelyUpdateCssClassesOnNodes(), this.options.onNodeName && this.node.childs) try {
                            this.node.recursivelyUpdateNodeName()
                        } catch (e) {
                            console.error("Error in onNodeName callback: ", e)
                        }
                    }
                }, validate: function () {
                    var e = this, t = this.node;
                    if (t) {
                        var n = t.getValue(), i = [];
                        this.validateSchema && (this.validateSchema(n) || (i = this.validateSchema.errors.map((function (e) {
                            return Object(s.improveSchemaError)(e)
                        })).map((function (e) {
                            return {node: t.findNode(e.dataPath), error: e, type: "validation"}
                        })).filter((function (e) {
                            return null != e.node
                        }))));
                        try {
                            this.validationSequence++;
                            var r = this, o = this.validationSequence;
                            this._validateCustom(n).then((function (t) {
                                if (o === r.validationSequence) {
                                    var n = [].concat(i, t || []);
                                    r._renderValidationErrors(n), "function" == typeof e.options.onValidationError && (Object(s.isValidationErrorChanged)(n, e.lastSchemaErrors) && e.options.onValidationError.call(e, n), e.lastSchemaErrors = n)
                                }
                            })).catch((function (e) {
                                console.error(e)
                            }))
                        } catch (e) {
                            console.error(e)
                        }
                    }
                }, _renderValidationErrors: function (e) {
                    this.errorNodes && this.errorNodes.forEach((function (e) {
                        e.setError(null)
                    }));
                    var t = e.reduce((function (e, t) {
                        return t.node.findParents().filter((function (t) {
                            return !e.some((function (e) {
                                return e[0] === t
                            }))
                        })).map((function (e) {
                            return [e, t.node]
                        })).concat(e)
                    }), []);
                    this.errorNodes = t.map((function (e) {
                        return {
                            node: e[0],
                            child: e[1],
                            error: {message: "object" === e[0].type ? "Contains invalid properties" : "Contains invalid items"}
                        }
                    })).concat(e).map((function (e) {
                        return e.node.setError(e.error, e.child), e.node
                    }))
                }, _validateCustom: function (e) {
                    try {
                        if (this.options.onValidate) {
                            var t = this.node, n = this.options.onValidate(e);
                            return (Object(s.isPromise)(n) ? n : Promise.resolve(n)).then((function (e) {
                                return Array.isArray(e) ? e.filter((function (e) {
                                    var t = Object(s.isValidValidationError)(e);
                                    return t || console.warn('Ignoring a custom validation error with invalid structure. Expected structure: {path: [...], message: "..."}. Actual error:', e), t
                                })).map((function (e) {
                                    var n;
                                    try {
                                        n = e && e.path ? t.findNodeByPath(e.path) : null
                                    } catch (e) {
                                    }
                                    return n || console.warn("Ignoring validation error: node not found. Path:", e.path, "Error:", e), {
                                        node: n,
                                        error: e,
                                        type: "customValidation"
                                    }
                                })).filter((function (e) {
                                    return e && e.node && e.error && e.error.message
                                })) : null
                            }))
                        }
                    } catch (e) {
                        return Promise.reject(e)
                    }
                    return Promise.resolve(null)
                }, refresh: function () {
                    this.node && this.node.updateDom({recurse: !0})
                }, startAutoScroll: function (e) {
                    var t = this, n = this.scrollableContent, i = Object(s.getAbsoluteTop)(n), r = n.clientHeight,
                        o = i + r;
                    e < i + 24 && n.scrollTop > 0 ? this.autoScrollStep = (i + 24 - e) / 3 : e > o - 24 && r + n.scrollTop < n.scrollHeight ? this.autoScrollStep = (o - 24 - e) / 3 : this.autoScrollStep = void 0, this.autoScrollStep ? this.autoScrollTimer || (this.autoScrollTimer = setInterval((function () {
                        t.autoScrollStep ? n.scrollTop -= t.autoScrollStep : t.stopAutoScroll()
                    }), 50)) : this.stopAutoScroll()
                }, stopAutoScroll: function () {
                    this.autoScrollTimer && (clearTimeout(this.autoScrollTimer), delete this.autoScrollTimer), this.autoScrollStep && delete this.autoScrollStep
                }, setDomSelection: function (e) {
                    if (e) if ("scrollTop" in e && this.scrollableContent && (this.scrollableContent.scrollTop = e.scrollTop), e.paths) {
                        var t = this, n = e.paths.map((function (e) {
                            return t.node.findNodeByInternalPath(e)
                        }));
                        this.select(n)
                    } else {
                        var i = e.path ? this.node.findNodeByInternalPath(e.path) : null,
                            r = i && e.domName ? i.dom[e.domName] : null;
                        if (e.range && r) {
                            var o = Object.assign({}, e.range, {container: r});
                            Object(s.setSelectionOffset)(o)
                        } else i && i.focus()
                    }
                }, getDomSelection: function () {
                    var e = A.getNodeFromTarget(this.focusTarget), t = this.focusTarget,
                        n = e ? Object.keys(e.dom).find((function (n) {
                            return e.dom[n] === t
                        })) : null, i = Object(s.getSelectionOffset)();
                    return i && "DIV" !== i.container.nodeName && (i = null), i && i.container !== t && (i = null), i && delete i.container, {
                        path: e ? e.getInternalPath() : null,
                        domName: n,
                        range: i,
                        paths: this.multiselection.length > 0 ? this.multiselection.nodes.map((function (e) {
                            return e.getInternalPath()
                        })) : null,
                        scrollTop: this.scrollableContent ? this.scrollableContent.scrollTop : 0
                    }
                }, scrollTo: function (e, t) {
                    var n = this.scrollableContent;
                    if (n) {
                        var i = this;
                        i.animateTimeout && (clearTimeout(i.animateTimeout), delete i.animateTimeout), i.animateCallback && (i.animateCallback(!1), delete i.animateCallback);
                        var r = n.clientHeight, o = n.scrollHeight - r, a = Math.min(Math.max(e - r / 4, 0), o);
                        !function e() {
                            var r = n.scrollTop, o = a - r;
                            Math.abs(o) > 3 ? (n.scrollTop += o / 3, i.animateCallback = t, i.animateTimeout = setTimeout(e, 50)) : (t && t(!0), n.scrollTop = a, delete i.animateTimeout, delete i.animateCallback)
                        }()
                    } else t && t(!1)
                }, _createFrame: function () {
                    this.frame = document.createElement("div"), this.frame.className = "jsoneditor jsoneditor-mode-" + this.options.mode, this.container.appendChild(this.frame), this.contentOuter = document.createElement("div"), this.contentOuter.className = "jsoneditor-outer";
                    var e = this;

                    function t(t) {
                        e._onEvent && e._onEvent(t)
                    }

                    var n = {
                        target: this.frame,
                        onFocus: this.options.onFocus || null,
                        onBlur: this.options.onBlur || null
                    };
                    if (this.frameFocusTracker = new E.a(n), this.frame.onclick = function (e) {
                        var n = e.target;
                        t(e), "BUTTON" === n.nodeName && e.preventDefault()
                    }, this.frame.oninput = t, this.frame.onchange = t, this.frame.onkeydown = t, this.frame.onkeyup = t, this.frame.oncut = t, this.frame.onpaste = t, this.frame.onmousedown = t, this.frame.onmouseup = t, this.frame.onmouseover = t, this.frame.onmouseout = t, Object(s.addEventListener)(this.frame, "focus", t, !0), Object(s.addEventListener)(this.frame, "blur", t, !0), this.frame.onfocusin = t, this.frame.onfocusout = t, this.options.mainMenuBar) {
                        Object(s.addClassName)(this.contentOuter, "has-main-menu-bar"), this.menu = document.createElement("div"), this.menu.className = "jsoneditor-menu", this.frame.appendChild(this.menu);
                        var i = document.createElement("button");
                        i.type = "button", i.className = "jsoneditor-expand-all", i.title = Object(u.c)("expandAll"), i.onclick = function () {
                            e.expandAll()
                        }, this.menu.appendChild(i);
                        var r = document.createElement("button");
                        if (r.type = "button", r.title = Object(u.c)("collapseAll"), r.className = "jsoneditor-collapse-all", r.onclick = function () {
                            e.collapseAll()
                        }, this.menu.appendChild(r), this.options.enableSort) {
                            var o = document.createElement("button");
                            o.type = "button", o.className = "jsoneditor-sort", o.title = Object(u.c)("sortTitleShort"), o.onclick = function () {
                                e.node.showSortModal()
                            }, this.menu.appendChild(o)
                        }
                        if (this.options.enableTransform) {
                            var a = document.createElement("button");
                            a.type = "button", a.title = Object(u.c)("transformTitleShort"), a.className = "jsoneditor-transform", a.onclick = function () {
                                e.node.showTransformModal()
                            }, this.menu.appendChild(a)
                        }
                        if (this.history) {
                            var l = document.createElement("button");
                            l.type = "button", l.className = "jsoneditor-undo jsoneditor-separator", l.title = Object(u.c)("undo"), l.onclick = function () {
                                e._onUndo()
                            }, this.menu.appendChild(l), this.dom.undo = l;
                            var c = document.createElement("button");
                            c.type = "button", c.className = "jsoneditor-redo", c.title = Object(u.c)("redo"), c.onclick = function () {
                                e._onRedo()
                            }, this.menu.appendChild(c), this.dom.redo = c, this.history.onChange = function () {
                                l.disabled = !e.history.canUndo(), c.disabled = !e.history.canRedo()
                            }, this.history.onChange()
                        }
                        if (this.options && this.options.modes && this.options.modes.length) {
                            var h = this;
                            this.modeSwitcher = new R.a(this.menu, this.options.modes, this.options.mode, (function (e) {
                                h.setMode(e), h.modeSwitcher.focus()
                            }))
                        }
                        this.options.search && (this.searchBox = new d(this, this.menu))
                    }
                    this.options.navigationBar && (this.navBar = document.createElement("div"), this.navBar.className = "jsoneditor-navigation-bar nav-bar-empty", this.frame.appendChild(this.navBar), this.treePath = new p(this.navBar, this.getPopupAnchor()), this.treePath.onSectionSelected(this._onTreePathSectionSelected.bind(this)), this.treePath.onContextMenuItemSelected(this._onTreePathMenuItemSelected.bind(this)))
                }, _onUndo: function () {
                    this.history && (this.history.undo(), this._onChange())
                }, _onRedo: function () {
                    this.history && (this.history.redo(), this._onChange())
                }, _onEvent: function (e) {
                    if (!A.targetIsColorPicker(e.target)) {
                        var t = A.getNodeFromTarget(e.target);
                        if ("keydown" === e.type && this._onKeyDown(e), t && "focus" === e.type && (this.focusTarget = e.target, this.options.autocomplete && "focus" === this.options.autocomplete.trigger && this._showAutoComplete(e.target)), "mousedown" === e.type && this._startDragDistance(e), "mousemove" !== e.type && "mouseup" !== e.type && "click" !== e.type || this._updateDragDistance(e), t && this.options && this.options.navigationBar && t && ("keydown" === e.type || "mousedown" === e.type)) {
                            var n = this;
                            setTimeout((function () {
                                n._updateTreePath(t.getNodePath())
                            }))
                        }
                        if (t && t.selected) {
                            if ("click" === e.type) {
                                if (e.target === t.dom.menu) return void this.showContextMenu(e.target);
                                e.hasMoved || this.deselect()
                            }
                            "mousedown" === e.type && A.onDragStart(this.multiselection.nodes, e)
                        } else "mousedown" === e.type && Object(s.hasParentNode)(e.target, this.content) && (this.deselect(), t && e.target === t.dom.drag ? A.onDragStart(t, e) : (!t || e.target !== t.dom.field && e.target !== t.dom.value && e.target !== t.dom.select) && this._onMultiSelectStart(e));
                        t && t.onEvent(e)
                    }
                }, _updateTreePath: function (e) {
                    if (e && e.length) {
                        Object(s.removeClassName)(this.navBar, "nav-bar-empty");
                        var t = [];
                        e.forEach((function (e) {
                            var i = {name: n(e), node: e, children: []};
                            e.childs && e.childs.length && e.childs.forEach((function (e) {
                                i.children.push({name: n(e), node: e})
                            })), t.push(i)
                        })), this.treePath.setPath(t)
                    } else Object(s.addClassName)(this.navBar, "nav-bar-empty");

                    function n(e) {
                        return e.parent ? "array" === e.parent.type ? e.index : e.field : e.field || e.type
                    }
                }, _onTreePathSectionSelected: function (e) {
                    e && e.node && (e.node.expandTo(), e.node.focus())
                }, _onTreePathMenuItemSelected: function (e, t) {
                    if (e && e.children.length) {
                        var n = e.children.find((function (e) {
                            return e.name === t
                        }));
                        n && n.node && (this._updateTreePath(n.node.getNodePath()), n.node.expandTo(), n.node.focus())
                    }
                }, _startDragDistance: function (e) {
                    this.dragDistanceEvent = {
                        initialTarget: e.target,
                        initialPageX: e.pageX,
                        initialPageY: e.pageY,
                        dragDistance: 0,
                        hasMoved: !1
                    }
                }, _updateDragDistance: function (e) {
                    this.dragDistanceEvent || this._startDragDistance(e);
                    var t = e.pageX - this.dragDistanceEvent.initialPageX,
                        n = e.pageY - this.dragDistanceEvent.initialPageY;
                    return this.dragDistanceEvent.dragDistance = Math.sqrt(t * t + n * n), this.dragDistanceEvent.hasMoved = this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10, e.dragDistance = this.dragDistanceEvent.dragDistance, e.hasMoved = this.dragDistanceEvent.hasMoved, e.dragDistance
                }, _onMultiSelectStart: function (e) {
                    var t = A.getNodeFromTarget(e.target);
                    if ("tree" === this.options.mode && void 0 === this.options.onEditable) {
                        this.multiselection = {start: t || null, end: null, nodes: []}, this._startDragDistance(e);
                        var n = this;
                        this.mousemove || (this.mousemove = Object(s.addEventListener)(window, "mousemove", (function (e) {
                            n._onMultiSelect(e)
                        }))), this.mouseup || (this.mouseup = Object(s.addEventListener)(window, "mouseup", (function (e) {
                            n._onMultiSelectEnd(e)
                        }))), e.preventDefault()
                    }
                }, _onMultiSelect: function (e) {
                    if (e.preventDefault(), this._updateDragDistance(e), e.hasMoved) {
                        var t = A.getNodeFromTarget(e.target);
                        t && (null == this.multiselection.start && (this.multiselection.start = t), this.multiselection.end = t), this.deselect();
                        var n = this.multiselection.start, i = this.multiselection.end || this.multiselection.start;
                        if (n && i) {
                            if (this.multiselection.nodes = this._findTopLevelNodes(n, i), this.multiselection.nodes && this.multiselection.nodes.length) {
                                var r = this.multiselection.nodes[0];
                                this.multiselection.start === r || this.multiselection.start.isDescendantOf(r) ? this.multiselection.direction = "down" : this.multiselection.direction = "up"
                            }
                            this.select(this.multiselection.nodes)
                        }
                    }
                }, _onMultiSelectEnd: function () {
                    this.multiselection.nodes[0] && this.multiselection.nodes[0].dom.menu.focus(), this.multiselection.start = null, this.multiselection.end = null, this.mousemove && (Object(s.removeEventListener)(window, "mousemove", this.mousemove), delete this.mousemove), this.mouseup && (Object(s.removeEventListener)(window, "mouseup", this.mouseup), delete this.mouseup)
                }, deselect: function (e) {
                    var t = !!this.multiselection.nodes.length;
                    this.multiselection.nodes.forEach((function (e) {
                        e.setSelected(!1)
                    })), this.multiselection.nodes = [], e && (this.multiselection.start = null, this.multiselection.end = null), t && this._selectionChangedHandler && this._selectionChangedHandler()
                }, select: function (e) {
                    if (!Array.isArray(e)) return this.select([e]);
                    if (e) {
                        this.deselect(), this.multiselection.nodes = e.slice(0);
                        var t = e[0];
                        if (e.forEach((function (e) {
                            e.expandPathToNode(), e.setSelected(!0, e === t)
                        })), this._selectionChangedHandler) {
                            var n = this.getSelection();
                            this._selectionChangedHandler(n.start, n.end)
                        }
                    }
                }, _findTopLevelNodes: function (e, t) {
                    for (var n = e.getNodePath(), i = t.getNodePath(), r = 0; r < n.length && n[r] === i[r];) r++;
                    var o = n[r - 1], a = n[r], s = i[r];
                    if (a && s || (o.parent ? (a = o, s = o, o = o.parent) : (a = o.childs[0], s = o.childs[o.childs.length - 1])), o && a && s) {
                        var l = o.childs.indexOf(a), c = o.childs.indexOf(s), u = Math.min(l, c), h = Math.max(l, c);
                        return o.childs.slice(u, h + 1)
                    }
                    return []
                }, _showAutoComplete: function (e) {
                    var t = A.getNodeFromTarget(e), n = "";
                    e.className.indexOf("jsoneditor-value") >= 0 && (n = "value"), e.className.indexOf("jsoneditor-field") >= 0 && (n = "field");
                    var i = this;
                    setTimeout((function () {
                        if (t && ("focus" === i.options.autocomplete.trigger || e.innerText.length > 0)) {
                            var r = i.options.autocomplete.getOptions(e.innerText, t.getPath(), n, t.editor);
                            null === r ? i.autocomplete.hideDropDown() : "function" == typeof r.then ? r.then((function (t) {
                                null === t ? i.autocomplete.hideDropDown() : t.options ? i.autocomplete.show(e, t.startFrom, t.options) : i.autocomplete.show(e, 0, t)
                            })).catch((function (e) {
                                console.error(e)
                            })) : r.options ? i.autocomplete.show(e, r.startFrom, r.options) : i.autocomplete.show(e, 0, r)
                        } else i.autocomplete.hideDropDown()
                    }), 50)
                }, _onKeyDown: function (e) {
                    var t = e.which || e.keyCode, n = e.altKey, i = e.ctrlKey, r = e.metaKey, o = e.shiftKey, a = !1,
                        l = this.focusTarget;
                    if (9 === t) {
                        var c = this;
                        setTimeout((function () {
                            c.focusTarget !== l && Object(s.selectContentEditable)(c.focusTarget)
                        }), 0)
                    }
                    this.searchBox && (i && 70 === t ? (this.searchBox.dom.search.focus(), this.searchBox.dom.search.select(), a = !0) : (114 === t || i && 71 === t) && (o ? this.searchBox.previous(!0) : this.searchBox.next(!0), a = !0)), this.history && (i && !o && 90 === t ? (this._onUndo(), a = !0) : i && o && 90 === t && (this._onRedo(), a = !0)), this.options.autocomplete && !a && (i || n || r || 1 !== e.key.length && 8 !== t && 46 !== t || (a = !1, this._showAutoComplete(e.target))), a && (e.preventDefault(), e.stopPropagation())
                }, _createTable: function () {
                    var e;
                    this.options.navigationBar && Object(s.addClassName)(this.contentOuter, "has-nav-bar"), this.scrollableContent = document.createElement("div"), this.scrollableContent.className = "jsoneditor-tree", this.contentOuter.appendChild(this.scrollableContent), this.content = document.createElement("div"), this.content.className = "jsoneditor-tree-inner", this.scrollableContent.appendChild(this.content), this.table = document.createElement("table"), this.table.className = "jsoneditor-tree", this.content.appendChild(this.table), this.colgroupContent = document.createElement("colgroup"), "tree" === this.options.mode && ((e = document.createElement("col")).width = "24px", this.colgroupContent.appendChild(e)), (e = document.createElement("col")).width = "24px", this.colgroupContent.appendChild(e), e = document.createElement("col"), this.colgroupContent.appendChild(e), this.table.appendChild(this.colgroupContent), this.tbody = document.createElement("tbody"), this.table.appendChild(this.tbody), this.frame.appendChild(this.contentOuter)
                }, showContextMenu: function (e, t) {
                    var n = [], i = this.multiselection.nodes.slice();
                    if (n.push({
                        text: Object(u.c)("duplicateText"),
                        title: Object(u.c)("duplicateTitle"),
                        className: "jsoneditor-duplicate",
                        click: function () {
                            A.onDuplicate(i)
                        }
                    }), n.push({
                        text: Object(u.c)("remove"),
                        title: Object(u.c)("removeTitle"),
                        className: "jsoneditor-remove",
                        click: function () {
                            A.onRemove(i)
                        }
                    }), this.options.onCreateMenu) {
                        var r = i.map((function (e) {
                            return e.getPath()
                        }));
                        n = this.options.onCreateMenu(n, {type: "multiple", path: r[0], paths: r})
                    }
                    new f.a(n, {close: t}).show(e, this.getPopupAnchor())
                }, getPopupAnchor: function () {
                    return this.options.popupAnchor || this.frame
                }, getSelection: function () {
                    var e = {start: null, end: null};
                    if (this.multiselection.nodes && this.multiselection.nodes.length && this.multiselection.nodes.length) {
                        var t = this.multiselection.nodes[0],
                            n = this.multiselection.nodes[this.multiselection.nodes.length - 1];
                        "down" === this.multiselection.direction ? (e.start = t.serialize(), e.end = n.serialize()) : (e.start = n.serialize(), e.end = t.serialize())
                    }
                    return e
                }, onSelectionChange: function (e) {
                    "function" == typeof e && (this._selectionChangedHandler = Object(s.debounce)(e, this.DEBOUNCE_INTERVAL))
                }, setSelection: function (e, t) {
                    e && e.dom && e.range && (console.warn("setSelection/getSelection usage for text selection is deprecated and should not be used, see documentation for supported selection options"), this.setDomSelection(e));
                    var n = this._getNodeInstancesByRange(e, t);
                    n.forEach((function (e) {
                        e.expandTo()
                    })), this.select(n)
                }, _getNodeInstancesByRange: function (e, t) {
                    var n, i;
                    e && e.path && (n = this.node.findNodeByPath(e.path), t && t.path && (i = this.node.findNodeByPath(t.path)));
                    var r = [];
                    if (n instanceof A) if (i instanceof A && i !== n) if (n.parent === i.parent) {
                        n.getIndex() < i.getIndex() ? (e = n, t = i) : (e = i, t = n);
                        var o = e;
                        r.push(o);
                        do {
                            o = o.nextSibling(), r.push(o)
                        } while (o && o !== t)
                    } else r = this._findTopLevelNodes(n, i); else r.push(n);
                    return r
                }, getNodesByRange: function (e, t) {
                    var n = this._getNodeInstancesByRange(e, t), i = [];
                    return n.forEach((function (e) {
                        i.push(e.serialize())
                    })), i
                }
            }, D = [{mode: "tree", mixin: N, data: "json"}, {mode: "view", mixin: N, data: "json"}, {
                mode: "form",
                mixin: N,
                data: "json"
            }]
        }, function (e, t, n) {
            "use strict";
            n.r(t), n.d(t, "previewModeMixins", (function () {
                return v
            }));
            var i = n(1), r = n(8), o = n(15), a = n(5), s = n(6), l = n(21), c = n(2), u = n(9), h = n(0);

            function d(e, t) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
                }
            }

            var f = function () {
                function e(t, n, i) {
                    !function (e, t) {
                        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                    }(this, e), this.onChange = t, this.calculateItemSize = n || function () {
                        return 1
                    }, this.limit = i, this.items = [], this.index = -1
                }

                var t, n, i;
                return t = e, (n = [{
                    key: "add", value: function (e) {
                        for (; this._calculateHistorySize() > this.limit && this.items.length > 1;) this.items.shift(), this.index--;
                        this.items = this.items.slice(0, this.index + 1), this.items.push(e), this.index++, this.onChange()
                    }
                }, {
                    key: "_calculateHistorySize", value: function () {
                        var e = this.calculateItemSize, t = 0;
                        return this.items.forEach((function (n) {
                            t += e(n)
                        })), t
                    }
                }, {
                    key: "undo", value: function () {
                        if (this.canUndo()) return this.index--, this.onChange(), this.items[this.index]
                    }
                }, {
                    key: "redo", value: function () {
                        if (this.canRedo()) return this.index++, this.onChange(), this.items[this.index]
                    }
                }, {
                    key: "canUndo", value: function () {
                        return this.index > 0
                    }
                }, {
                    key: "canRedo", value: function () {
                        return this.index < this.items.length - 1
                    }
                }, {
                    key: "clear", value: function () {
                        this.items = [], this.index = -1, this.onChange()
                    }
                }]) && d(t.prototype, n), i && d(t, i), e
            }(), g = n(4), p = l.textModeMixins[0].mixin, m = {
                create: function (e) {
                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    void 0 === t.statusBar && (t.statusBar = !0), t.mainMenuBar = !1 !== t.mainMenuBar, t.enableSort = !1 !== t.enableSort, t.enableTransform = !1 !== t.enableTransform, t.createQuery = t.createQuery || g.a, t.executeQuery = t.executeQuery || g.b, this.options = t, "number" == typeof t.indentation ? this.indentation = Number(t.indentation) : this.indentation = 2, Object(i.b)(this.options.languages), Object(i.a)(this.options.language), this.mode = "preview";
                    var n = this;
                    this.container = e, this.dom = {}, this.json = void 0, this.text = "", this._debouncedValidate = Object(h.debounce)(this.validate.bind(this), this.DEBOUNCE_INTERVAL), this.width = e.clientWidth, this.height = e.clientHeight, this.frame = document.createElement("div"), this.frame.className = "jsoneditor jsoneditor-mode-preview", this.frame.onclick = function (e) {
                        e.preventDefault()
                    };
                    var a = {
                        target: this.frame,
                        onFocus: this.options.onFocus || null,
                        onBlur: this.options.onBlur || null
                    };
                    if (this.frameFocusTracker = new u.a(a), this.content = document.createElement("div"), this.content.className = "jsoneditor-outer", this.dom.busy = document.createElement("div"), this.dom.busy.className = "jsoneditor-busy", this.dom.busyContent = document.createElement("span"), this.dom.busyContent.innerHTML = "busy...", this.dom.busy.appendChild(this.dom.busyContent), this.content.appendChild(this.dom.busy), this.dom.previewContent = document.createElement("pre"), this.dom.previewContent.className = "jsoneditor-preview", this.dom.previewText = document.createTextNode(""), this.dom.previewContent.appendChild(this.dom.previewText), this.content.appendChild(this.dom.previewContent), this.options.mainMenuBar) {
                        Object(h.addClassName)(this.content, "has-main-menu-bar"), this.menu = document.createElement("div"), this.menu.className = "jsoneditor-menu", this.frame.appendChild(this.menu);
                        var s = document.createElement("button");
                        s.type = "button", s.className = "jsoneditor-format", s.title = Object(i.c)("formatTitle"), this.menu.appendChild(s), s.onclick = function () {
                            n.executeWithBusyMessage((function () {
                                try {
                                    n.format()
                                } catch (e) {
                                    n._onError(e)
                                }
                            }), "formatting...")
                        };
                        var l = document.createElement("button");
                        if (l.type = "button", l.className = "jsoneditor-compact", l.title = Object(i.c)("compactTitle"), this.menu.appendChild(l), l.onclick = function () {
                            n.executeWithBusyMessage((function () {
                                try {
                                    n.compact()
                                } catch (e) {
                                    n._onError(e)
                                }
                            }), "compacting...")
                        }, this.options.enableSort) {
                            var d = document.createElement("button");
                            d.type = "button", d.className = "jsoneditor-sort", d.title = Object(i.c)("sortTitleShort"), d.onclick = function () {
                                n._showSortModal()
                            }, this.menu.appendChild(d)
                        }
                        if (this.options.enableTransform) {
                            var p = document.createElement("button");
                            p.type = "button", p.title = Object(i.c)("transformTitleShort"), p.className = "jsoneditor-transform", p.onclick = function () {
                                n._showTransformModal()
                            }, this.dom.transform = p, this.menu.appendChild(p)
                        }
                        var m = document.createElement("button");
                        if (m.type = "button", m.className = "jsoneditor-repair", m.title = Object(i.c)("repairTitle"), this.menu.appendChild(m), m.onclick = function () {
                            void 0 === n.json && n.executeWithBusyMessage((function () {
                                try {
                                    n.repair()
                                } catch (e) {
                                    n._onError(e)
                                }
                            }), "repairing...")
                        }, !1 !== this.options.history) {
                            var v = function () {
                                n.dom.undo.disabled = !n.history.canUndo(), n.dom.redo.disabled = !n.history.canRedo()
                            }, y = function (e) {
                                return 2 * e.text.length
                            };
                            this.history = new f(v, y, c.c);
                            var b = document.createElement("button");
                            b.type = "button", b.className = "jsoneditor-undo jsoneditor-separator", b.title = Object(i.c)("undo"), b.onclick = function () {
                                var e = n.history.undo();
                                e && n._applyHistory(e)
                            }, this.menu.appendChild(b), this.dom.undo = b;
                            var C = document.createElement("button");
                            C.type = "button", C.className = "jsoneditor-redo", C.title = Object(i.c)("redo"), C.onclick = function () {
                                var e = n.history.redo();
                                e && n._applyHistory(e)
                            }, this.menu.appendChild(C), this.dom.redo = C, this.history.onChange()
                        }
                        this.options && this.options.modes && this.options.modes.length && (this.modeSwitcher = new r.a(this.menu, this.options.modes, this.options.mode, (function (e) {
                            n.setMode(e), n.modeSwitcher.focus()
                        })))
                    }
                    if (this.errorTable = new o.a({
                        errorTableVisible: !0, onToggleVisibility: function () {
                            n.validate()
                        }, onFocusLine: null, onChangeHeight: function (e) {
                            var t = e + (n.dom.statusBar ? n.dom.statusBar.clientHeight : 0) + 1;
                            n.content.style.marginBottom = -t + "px", n.content.style.paddingBottom = t + "px"
                        }
                    }), this.frame.appendChild(this.content), this.frame.appendChild(this.errorTable.getErrorTable()), this.container.appendChild(this.frame), t.statusBar) {
                        Object(h.addClassName)(this.content, "has-status-bar");
                        var w = document.createElement("div");
                        this.dom.statusBar = w, w.className = "jsoneditor-statusbar", this.frame.appendChild(w), this.dom.fileSizeInfo = document.createElement("span"), this.dom.fileSizeInfo.className = "jsoneditor-size-info", this.dom.fileSizeInfo.innerText = "", w.appendChild(this.dom.fileSizeInfo), this.dom.arrayInfo = document.createElement("span"), this.dom.arrayInfo.className = "jsoneditor-size-info", this.dom.arrayInfo.innerText = "", w.appendChild(this.dom.arrayInfo), w.appendChild(this.errorTable.getErrorCounter()), w.appendChild(this.errorTable.getWarningIcon()), w.appendChild(this.errorTable.getErrorIcon())
                    }
                    this._renderPreview(), this.setSchema(this.options.schema, this.options.schemaRefs)
                }, _renderPreview: function () {
                    var e = this.getText();
                    this.dom.previewText.nodeValue = Object(h.limitCharacters)(e, c.b), this.dom.fileSizeInfo && (this.dom.fileSizeInfo.innerText = "Size: " + Object(h.formatSize)(e.length)), this.dom.arrayInfo && (Array.isArray(this.json) ? this.dom.arrayInfo.innerText = "Array: " + this.json.length + " items" : this.dom.arrayInfo.innerText = "")
                }, _onChange: function () {
                    if (this._debouncedValidate(), this.options.onChange) try {
                        this.options.onChange()
                    } catch (e) {
                        console.error("Error in onChange callback: ", e)
                    }
                    if (this.options.onChangeJSON) try {
                        this.options.onChangeJSON(this.get())
                    } catch (e) {
                        console.error("Error in onChangeJSON callback: ", e)
                    }
                    if (this.options.onChangeText) try {
                        this.options.onChangeText(this.getText())
                    } catch (e) {
                        console.error("Error in onChangeText callback: ", e)
                    }
                }, _showSortModal: function () {
                    var e = this;
                    this.executeWithBusyMessage((function () {
                        var t = e.options.modalAnchor || c.a, n = e.get();
                        e._renderPreview(), Object(a.showSortModal)(t, n, (function (t) {
                            e.executeWithBusyMessage((function () {
                                !function (t, n) {
                                    if (Array.isArray(t)) {
                                        var i = Object(h.sort)(t, n.path, n.direction);
                                        e.sortedBy = n, e._setAndFireOnChange(i)
                                    }
                                    if (Object(h.isObject)(t)) {
                                        var r = Object(h.sortObjectKeys)(t, n.direction);
                                        e.sortedBy = n, e._setAndFireOnChange(r)
                                    }
                                }(n, t)
                            }), "sorting...")
                        }), e.sortedBy)
                    }), "parsing...")
                }, _showTransformModal: function () {
                    var e = this;
                    this.executeWithBusyMessage((function () {
                        var t = e.options, n = t.createQuery, i = t.executeQuery, r = t.modalAnchor,
                            o = t.queryDescription, a = e.get();
                        e._renderPreview(), Object(s.showTransformModal)({
                            anchor: r || c.a,
                            json: a,
                            queryDescription: o,
                            createQuery: n,
                            executeQuery: i,
                            onTransform: function (t) {
                                e.executeWithBusyMessage((function () {
                                    var n = i(a, t);
                                    e._setAndFireOnChange(n)
                                }), "transforming...")
                            }
                        })
                    }), "parsing...")
                }, destroy: function () {
                    this.frame && this.container && this.frame.parentNode === this.container && this.container.removeChild(this.frame), this.modeSwitcher && (this.modeSwitcher.destroy(), this.modeSwitcher = null), this._debouncedValidate = null, this.history && (this.history.clear(), this.history = null), this.frameFocusTracker.destroy()
                }, compact: function () {
                    var e = this.get(), t = JSON.stringify(e);
                    this._setTextAndFireOnChange(t, e)
                }, format: function () {
                    var e = this.get(), t = JSON.stringify(e, null, this.indentation);
                    this._setTextAndFireOnChange(t, e)
                }, repair: function () {
                    var e = this.getText(), t = Object(h.repair)(e);
                    this._setTextAndFireOnChange(t)
                }, focus: function () {
                    this.dom.transform.focus()
                }, set: function (e) {
                    this.history && this.history.clear(), this._set(e)
                }, update: function (e) {
                    this._set(e)
                }, _set: function (e) {
                    this.text = void 0, this.json = e, this._renderPreview(), this._pushHistory(), this._debouncedValidate()
                }, _setAndFireOnChange: function (e) {
                    this._set(e), this._onChange()
                }, get: function () {
                    if (void 0 === this.json) {
                        var e = this.getText();
                        this.json = Object(h.parse)(e)
                    }
                    return this.json
                }, getText: function () {
                    return void 0 === this.text && (this.text = JSON.stringify(this.json, null, this.indentation), !0 === this.options.escapeUnicode && (this.text = Object(h.escapeUnicodeChars)(this.text))), this.text
                }, setText: function (e) {
                    this.history && this.history.clear(), this._setText(e)
                }, updateText: function (e) {
                    this.getText() !== e && this._setText(e)
                }, _setText: function (e, t) {
                    if (!0 === this.options.escapeUnicode ? this.text = Object(h.escapeUnicodeChars)(e) : this.text = e, this.json = t, this._renderPreview(), void 0 === this.json) {
                        var n = this;
                        this.executeWithBusyMessage((function () {
                            try {
                                n.json = n.get(), n._renderPreview(), n._pushHistory()
                            } catch (e) {
                            }
                        }), "parsing...")
                    } else this._pushHistory();
                    this._debouncedValidate()
                }, _setTextAndFireOnChange: function (e, t) {
                    this._setText(e, t), this._onChange()
                }, _applyHistory: function (e) {
                    this.json = e.json, this.text = e.text, this._renderPreview(), this._debouncedValidate()
                }, _pushHistory: function () {
                    if (this.history) {
                        var e = {text: this.text, json: this.json};
                        this.history.add(e)
                    }
                }, executeWithBusyMessage: function (e, t) {
                    if (this.getText().length > c.d) {
                        var n = this;
                        Object(h.addClassName)(n.frame, "busy"), n.dom.busyContent.innerText = t, setTimeout((function () {
                            e(), Object(h.removeClassName)(n.frame, "busy"), n.dom.busyContent.innerText = ""
                        }), 100)
                    } else e()
                }
            };
            m.validate = p.validate, m._renderErrors = p._renderErrors;
            var v = [{mode: "preview", mixin: m, data: "json"}]
        }])
    }, e.exports = i()
}, function (e, t, n) {
    var i = n(562);
    "string" == typeof i && (i = [[e.i, i, ""]]);
    var r = {hmr: !0, transform: void 0, insertInto: void 0};
    n(565)(i, r);
    i.locals && (e.exports = i.locals)
}, function (e, t, n) {
    var i = n(563);
    (e.exports = n(564)(!1)).push([e.i, '.jsoneditor input,.jsoneditor input:not([type]),.jsoneditor input[type=search],.jsoneditor input[type=text],.jsoneditor-modal input,.jsoneditor-modal input:not([type]),.jsoneditor-modal input[type=search],.jsoneditor-modal input[type=text]{height:auto;border:inherit;box-shadow:none;font-size:inherit;box-sizing:inherit;padding:inherit;font-family:inherit;transition:none;line-height:inherit}.jsoneditor input:focus,.jsoneditor input:not([type]):focus,.jsoneditor input[type=search]:focus,.jsoneditor input[type=text]:focus,.jsoneditor-modal input:focus,.jsoneditor-modal input:not([type]):focus,.jsoneditor-modal input[type=search]:focus,.jsoneditor-modal input[type=text]:focus{border:inherit;box-shadow:inherit}.jsoneditor textarea,.jsoneditor-modal textarea{height:inherit}.jsoneditor select,.jsoneditor-modal select{display:inherit;height:inherit}.jsoneditor label,.jsoneditor-modal label{font-size:inherit;font-weight:inherit;color:inherit}.jsoneditor table,.jsoneditor-modal table{border-collapse:collapse;width:auto}.jsoneditor td,.jsoneditor th,.jsoneditor-modal td,.jsoneditor-modal th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}.jsoneditor .autocomplete.dropdown{position:absolute;background:#fff;box-shadow:2px 2px 12px rgba(128,128,128,.3);border:1px solid #d3d3d3;overflow-x:hidden;overflow-y:auto;cursor:default;margin:0;padding:5px;text-align:left;outline:0;font-family:"dejavu sans mono","droid sans mono",consolas,monaco,"lucida console","courier new",courier,monospace,sans-serif;font-size:10pt}.jsoneditor .autocomplete.dropdown .item{color:#333}.jsoneditor .autocomplete.dropdown .item.hover{background-color:#ddd}.jsoneditor .autocomplete.hint{color:#aaa;top:4px;left:4px}.jsoneditor-contextmenu-root{position:relative;width:0;height:0}.jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:1}.jsoneditor-contextmenu .jsoneditor-menu{position:relative;left:0;top:0;width:128px;height:auto;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px rgba(128,128,128,.3);list-style:none;margin:0;padding:0}.jsoneditor-contextmenu .jsoneditor-menu button{position:relative;padding:0 4px 0 0;margin:0;width:128px;height:auto;border:none;cursor:pointer;color:#4d4d4d;background:0 0;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;text-align:left}.jsoneditor-contextmenu .jsoneditor-menu button::-moz-focus-inner{padding:0;border:0}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{width:96px}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}.jsoneditor-contextmenu .jsoneditor-menu li{overflow:hidden}.jsoneditor-contextmenu .jsoneditor-menu li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px rgba(128,128,128,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{margin-left:24px}.jsoneditor-contextmenu .jsoneditor-menu li ul li button{padding-left:24px;animation:all ease-in-out 1s}.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{position:absolute;top:0;right:0;width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(' + i(n(23)) + ") 0 -72px}.jsoneditor-contextmenu .jsoneditor-icon{position:absolute;top:0;left:0;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(" + i(n(23)) + ')}.jsoneditor-contextmenu .jsoneditor-text{padding:4px 0 4px 24px;word-wrap:break-word}.jsoneditor-contextmenu .jsoneditor-text.jsoneditor-right-margin{padding-right:24px}.jsoneditor-contextmenu .jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}.jsoneditor-contextmenu button.jsoneditor-remove .jsoneditor-icon{background-position:-24px 0}.jsoneditor-contextmenu button.jsoneditor-append .jsoneditor-icon{background-position:0 0}.jsoneditor-contextmenu button.jsoneditor-insert .jsoneditor-icon{background-position:0 0}.jsoneditor-contextmenu button.jsoneditor-duplicate .jsoneditor-icon{background-position:-48px 0}.jsoneditor-contextmenu button.jsoneditor-sort-asc .jsoneditor-icon{background-position:-168px 0}.jsoneditor-contextmenu button.jsoneditor-sort-desc .jsoneditor-icon{background-position:-192px 0}.jsoneditor-contextmenu button.jsoneditor-transform .jsoneditor-icon{background-position:-216px 0}.jsoneditor-contextmenu button.jsoneditor-extract .jsoneditor-icon{background-position:0 -24px}.jsoneditor-contextmenu button.jsoneditor-type-string .jsoneditor-icon{background-position:-144px 0}.jsoneditor-contextmenu button.jsoneditor-type-auto .jsoneditor-icon{background-position:-120px 0}.jsoneditor-contextmenu button.jsoneditor-type-object .jsoneditor-icon{background-position:-72px 0}.jsoneditor-contextmenu button.jsoneditor-type-array .jsoneditor-icon{background-position:-96px 0}.jsoneditor-contextmenu button.jsoneditor-type-modes .jsoneditor-icon{background-image:none;width:6px}.jsoneditor-contextmenu li,.jsoneditor-contextmenu ul{box-sizing:content-box;position:relative}.jsoneditor-contextmenu .jsoneditor-menu button:focus,.jsoneditor-contextmenu .jsoneditor-menu button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected,.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus,.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}.jsoneditor-contextmenu .jsoneditor-menu li ul li button:focus,.jsoneditor-contextmenu .jsoneditor-menu li ul li button:hover{background-color:#f5f5f5}.jsoneditor-modal{max-width:95%;border-radius:2px!important;padding:45px 15px 15px 15px!important;box-shadow:2px 2px 12px rgba(128,128,128,.3);color:#4d4d4d;line-height:1.3em}.jsoneditor-modal.jsoneditor-modal-transform{width:600px!important}.jsoneditor-modal .pico-modal-header{position:absolute;box-sizing:border-box;top:0;left:0;width:100%;padding:0 10px;height:30px;line-height:30px;font-family:arial,sans-serif;font-size:11pt;background:#3883fa;color:#fff}.jsoneditor-modal table{width:100%}.jsoneditor-modal table td{padding:3px 0}.jsoneditor-modal table td.jsoneditor-modal-input{text-align:right;padding-right:0;white-space:nowrap}.jsoneditor-modal table td.jsoneditor-modal-actions{padding-top:15px}.jsoneditor-modal table th{vertical-align:middle}.jsoneditor-modal p:first-child{margin-top:0}.jsoneditor-modal a{color:#3883fa}.jsoneditor-modal .jsoneditor-jmespath-block{margin-bottom:10px}.jsoneditor-modal .pico-close{background:0 0!important;font-size:24px!important;top:7px!important;right:7px!important;color:#fff}.jsoneditor-modal input{padding:4px}.jsoneditor-modal input[type=text]{cursor:inherit}.jsoneditor-modal input[disabled]{background:#d3d3d3;color:grey}.jsoneditor-modal .jsoneditor-select-wrapper{position:relative;display:inline-block}.jsoneditor-modal .jsoneditor-select-wrapper:after{content:"";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #666;position:absolute;right:8px;top:14px;pointer-events:none}.jsoneditor-modal select{padding:3px 24px 3px 10px;min-width:180px;max-width:350px;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-indent:0;text-overflow:"";font-size:10pt;line-height:1.5em}.jsoneditor-modal select::-ms-expand{display:none}.jsoneditor-modal .jsoneditor-button-group input{padding:4px 10px;margin:0;border-radius:0;border-left-style:none}.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-top-left-radius:3px;border-bottom-left-radius:3px;border-left-style:solid}.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-top-right-radius:3px;border-bottom-right-radius:3px}.jsoneditor-modal .jsoneditor-transform-preview{background:#f5f5f5;height:200px}.jsoneditor-modal .jsoneditor-transform-preview.jsoneditor-error{color:#ee422e}.jsoneditor-modal .jsoneditor-jmespath-wizard{line-height:1.2em;width:100%;padding:0;border-radius:3px}.jsoneditor-modal .jsoneditor-jmespath-label{font-weight:700;color:#1e90ff;margin-top:20px;margin-bottom:5px}.jsoneditor-modal .jsoneditor-jmespath-wizard-table{width:100%;border-collapse:collapse}.jsoneditor-modal .jsoneditor-jmespath-wizard-label{font-style:italic;margin:4px 0 2px 0}.jsoneditor-modal .jsoneditor-inline{position:relative;display:inline-block;width:100%;padding-top:2px;padding-bottom:2px}.jsoneditor-modal .jsoneditor-inline:not(:last-child){padding-right:2px}.jsoneditor-modal .jsoneditor-jmespath-filter{display:flex;flex-wrap:wrap}.jsoneditor-modal .jsoneditor-jmespath-filter-field{width:180px}.jsoneditor-modal .jsoneditor-jmespath-filter-relation{width:100px}.jsoneditor-modal .jsoneditor-jmespath-filter-value{min-width:180px;flex:1}.jsoneditor-modal .jsoneditor-jmespath-sort-field{width:170px}.jsoneditor-modal .jsoneditor-jmespath-sort-order{width:150px}.jsoneditor-modal .jsoneditor-jmespath-select-fields{width:100%}.jsoneditor-modal .selectr-selected{border-color:#d3d3d3;padding:4px 28px 4px 8px}.jsoneditor-modal .selectr-selected .selectr-tag{background-color:#3883fa;border-radius:5px}.jsoneditor-modal table td,.jsoneditor-modal table th{text-align:left;vertical-align:middle;font-weight:400;color:#4d4d4d;border-spacing:0;border-collapse:collapse}.jsoneditor-modal #query,.jsoneditor-modal input,.jsoneditor-modal input[type=text],.jsoneditor-modal input[type=text]:focus,.jsoneditor-modal select,.jsoneditor-modal textarea{background:#fff;border:1px solid #d3d3d3;color:#4d4d4d;border-radius:3px;padding:4px}.jsoneditor-modal,.jsoneditor-modal #query,.jsoneditor-modal input,.jsoneditor-modal input[type=text],.jsoneditor-modal option,.jsoneditor-modal select,.jsoneditor-modal table td,.jsoneditor-modal table th,.jsoneditor-modal textarea{font-size:10.5pt;font-family:arial,sans-serif}.jsoneditor-modal #query,.jsoneditor-modal .jsoneditor-transform-preview{font-family:"dejavu sans mono","droid sans mono",consolas,monaco,"lucida console","courier new",courier,monospace,sans-serif;font-size:10pt;width:100%;box-sizing:border-box}.jsoneditor-modal input[type=button],.jsoneditor-modal input[type=submit]{background:#f5f5f5;padding:4px 20px}.jsoneditor-modal input,.jsoneditor-modal select{cursor:pointer}.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{background:#3883fa;border-color:#3883fa;color:#fff}.jsoneditor{color:#1a1a1a;border:thin solid #3883fa;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:relative;padding:0;line-height:100%}div.jsoneditor-default,div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-value.jsoneditor-empty::after{content:"value"}div.jsoneditor-value.jsoneditor-string{color:#006000}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ed0}div.jsoneditor-value.jsoneditor-invalid{color:#000}div.jsoneditor-readonly{min-width:16px;color:grey}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty::after{content:"field"}div.jsoneditor td{vertical-align:top}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:grey}div.jsoneditor td.jsoneditor-tree{vertical-align:top}div.jsoneditor.busy pre.jsoneditor-preview{background:#f5f5f5;color:grey}div.jsoneditor.busy div.jsoneditor-busy{display:inherit}div.jsoneditor code.jsoneditor-preview{background:0 0}div.jsoneditor.jsoneditor-mode-preview pre.jsoneditor-preview{width:100%;height:100%;box-sizing:border-box;overflow:auto;padding:2px;margin:0;white-space:pre-wrap;word-break:break-all}div.jsoneditor-default{color:grey;padding-left:10px}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto}div.jsoneditor-tree button.jsoneditor-button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background:transparent url(' + i(n(23)) + ")}div.jsoneditor-tree button.jsoneditor-button:focus{background-color:#f5f5f5;outline:#e5e5e5 solid 1px}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu-button{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor-tree button.jsoneditor-dragarea{background:url(" + i(n(23)) + ") -72px -72px;cursor:move}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree div.jsoneditor-show-more{display:inline-block;padding:3px 4px;margin:2px 0;background-color:#e5e5e5;border-radius:3px;color:grey;font-family:arial,sans-serif;font-size:10pt}div.jsoneditor-tree div.jsoneditor-show-more a{display:inline-block;color:grey}div.jsoneditor-tree div.jsoneditor-color{display:inline-block;width:12px;height:12px;margin:4px;border:1px solid grey;cursor:pointer}div.jsoneditor-tree div.jsoneditor-date{background:#a1a1a1;color:#fff;font-family:arial,sans-serif;border-radius:3px;display:inline-block;padding:3px;margin:0 3px}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%}div.jsoneditor-tree .jsoneditor-button.jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background:url(" + i(n(23)) + ') -168px -48px}div.jsoneditor-outer{position:static;width:100%;height:100%;margin:0;padding:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}div.jsoneditor-outer.has-nav-bar{margin-top:-26px;padding-top:26px}div.jsoneditor-outer.has-nav-bar.has-main-menu-bar{margin-top:-61px;padding-top:61px}div.jsoneditor-outer.has-status-bar{margin-bottom:-26px;padding-bottom:26px}div.jsoneditor-outer.has-main-menu-bar{margin-top:-35px;padding-top:35px}div.jsoneditor-busy{position:absolute;top:15%;left:0;box-sizing:border-box;width:100%;text-align:center;display:none}div.jsoneditor-busy span{background-color:#ffffab;border:1px solid #fe0;border-radius:3px;padding:5px 15px;box-shadow:0 0 5px rgba(0,0,0,.4)}div.jsoneditor-field.jsoneditor-empty::after,div.jsoneditor-value.jsoneditor-empty::after{pointer-events:none;color:#d3d3d3;font-size:8pt}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:#006000;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#ffffab;border:1px solid #fe0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px}div.jsoneditor-tree button.jsoneditor-contextmenu-button.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu-button:focus,div.jsoneditor-tree button.jsoneditor-contextmenu-button:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button{background-position:-48px -48px}div.jsoneditor-tree div.jsoneditor-show-more a:focus,div.jsoneditor-tree div.jsoneditor-show-more a:hover{color:#ee422e}.ace-jsoneditor,textarea.jsoneditor-text{min-height:150px}.ace-jsoneditor *,textarea.jsoneditor-text *{font-family:"dejavu sans mono","droid sans mono",consolas,monaco,"lucida console","courier new",courier,monospace,sans-serif}textarea.jsoneditor-text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#d3d3d3}tr.jsoneditor-selected button.jsoneditor-contextmenu-button,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}.jsoneditor-popover,.jsoneditor-schema-error,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,div.jsoneditor-field,div.jsoneditor-value,pre.jsoneditor-preview{font-family:"dejavu sans mono","droid sans mono",consolas,monaco,"lucida console","courier new",courier,monospace,sans-serif;font-size:10pt;color:#1a1a1a}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}.jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;padding:7px 10px;position:absolute;cursor:auto;width:200px}.jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;border-top:7px solid transparent;border-bottom:7px solid transparent;content:"";top:19px;right:-14px;left:inherit;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;border-top:7px solid transparent;border-bottom:7px solid transparent;content:"";top:19px;left:-14px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:"";display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-text-errors tr.jump-to-line:hover{text-decoration:underline;cursor:pointer}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;animation:fade-in .3s linear 1,move-up .3s linear 1}@keyframes fade-in{from{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-validation-errors-container{max-height:130px;overflow-y:auto}.jsoneditor .jsoneditor-validation-errors{width:100%;overflow:hidden}.jsoneditor .jsoneditor-additional-errors{position:absolute;margin:auto;bottom:31px;left:calc(50% - 92px);color:grey;background-color:#ebebeb;padding:7px 15px;border-radius:8px}.jsoneditor .jsoneditor-additional-errors.visible{visibility:visible;opacity:1;transition:opacity 2s linear}.jsoneditor .jsoneditor-additional-errors.hidden{visibility:hidden;opacity:0;transition:visibility 0s 2s,opacity 2s linear}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;border-top:1px solid #ffc700}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor .jsoneditor-text-errors td pre{margin:0;white-space:normal}.jsoneditor .jsoneditor-text-errors tr{background-color:#ffffab}.jsoneditor .jsoneditor-text-errors tr.parse-error{background-color:#ee2e2e70}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;cursor:pointer}.jsoneditor-text-errors tr .jsoneditor-schema-error{background:url(' + i(n(23)) + ") -168px -48px}.jsoneditor-text-errors tr.parse-error .jsoneditor-schema-error{background:url(" + i(n(23)) + ") -25px 0}.jsoneditor-anchor{cursor:pointer}.jsoneditor-anchor .picker_wrapper.popup.popup_bottom{top:28px;left:-10px}.fadein{-webkit-animation:fadein .3s;animation:fadein .3s;-moz-animation:fadein .3s;-o-animation:fadein .3s}@keyframes fadein{0%{opacity:0}100%{opacity:1}}.jsoneditor-modal input[type=search].selectr-input{border:1px solid #d3d3d3;width:calc(100% - 4px);margin:2px;padding:4px;box-sizing:border-box}.jsoneditor-modal button.selectr-input-clear{right:8px}.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}.jsoneditor-menu>.jsoneditor-modes>button,.jsoneditor-menu>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background:transparent url(" + i(n(23)) + ");color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}.jsoneditor-menu>.jsoneditor-modes>button:hover,.jsoneditor-menu>button:hover{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4)}.jsoneditor-menu>.jsoneditor-modes>button:active,.jsoneditor-menu>.jsoneditor-modes>button:focus,.jsoneditor-menu>button:active,.jsoneditor-menu>button:focus{background-color:rgba(255,255,255,.3)}.jsoneditor-menu>.jsoneditor-modes>button:disabled,.jsoneditor-menu>button:disabled{opacity:.5;background-color:transparent;border:none}.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}.jsoneditor-menu>button.jsoneditor-sort{background-position:-120px -96px}.jsoneditor-menu>button.jsoneditor-transform{background-position:-144px -96px}.jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-sort,.jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-transform,.jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-sort,.jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-transform{display:none}.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}.jsoneditor-menu>button.jsoneditor-repair{background-position:-96px -96px}.jsoneditor-menu>.jsoneditor-modes{display:inline-block;float:left}.jsoneditor-menu>.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}.jsoneditor-menu>.jsoneditor-modes>button.jsoneditor-separator,.jsoneditor-menu>button.jsoneditor-separator{margin-left:10px}.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}.jsoneditor-menu a:hover{opacity:1}.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}.jsoneditor-navigation-bar{width:100%;height:26px;line-height:26px;padding:0;margin:0;border-bottom:1px solid #d3d3d3;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:grey;background-color:#ebebeb;overflow:hidden;font-family:arial,sans-serif;font-size:10pt}.jsoneditor-search{font-family:arial,sans-serif;position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0;display:flex}.jsoneditor-search input{color:#1a1a1a;width:120px;border:none;outline:0;margin:1px;line-height:20px;font-family:arial,sans-serif}.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(" + i(n(23)) + ");vertical-align:top}.jsoneditor-search button:hover{background-color:transparent}.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px}.jsoneditor-results{font-family:arial,sans-serif;color:#fff;padding-right:5px;line-height:26px}.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}.jsoneditor-statusbar{line-height:26px;height:26px;color:grey;background-color:#ebebeb;border-top:1px solid #d3d3d3;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:10pt}.jsoneditor-statusbar>.jsoneditor-curserinfo-val{margin-right:12px}.jsoneditor-statusbar>.jsoneditor-curserinfo-count{margin-left:4px}.jsoneditor-statusbar>.jsoneditor-validation-error-icon{float:right;width:24px;height:24px;padding:0;margin-top:1px;background:url(" + i(n(23)) + ") -168px -48px;cursor:pointer}.jsoneditor-statusbar>.jsoneditor-validation-error-count{float:right;margin:0 4px 0 0;cursor:pointer}.jsoneditor-statusbar>.jsoneditor-parse-error-icon{float:right;width:24px;height:24px;padding:0;margin:1px;background:url(" + i(n(23)) + ") -25px 0}.jsoneditor-statusbar .jsoneditor-array-info a{color:inherit}div.jsoneditor-statusbar>.jsoneditor-curserinfo-label,div.jsoneditor-statusbar>.jsoneditor-size-info{margin:0 4px}.jsoneditor-treepath{padding:0 5px;overflow:hidden;white-space:nowrap;outline:0}.jsoneditor-treepath.show-all{word-wrap:break-word;white-space:normal;position:absolute;background-color:#ebebeb;z-index:1;box-shadow:2px 2px 12px rgba(128,128,128,.3)}.jsoneditor-treepath.show-all span.jsoneditor-treepath-show-all-btn{display:none}.jsoneditor-treepath div.jsoneditor-contextmenu-root{position:absolute;left:0}.jsoneditor-treepath .jsoneditor-treepath-show-all-btn{position:absolute;background-color:#ebebeb;left:0;height:20px;padding:0 3px;cursor:pointer}.jsoneditor-treepath .jsoneditor-treepath-element{margin:1px;font-family:arial,sans-serif;font-size:10pt}.jsoneditor-treepath .jsoneditor-treepath-seperator{margin:2px;font-size:9pt;font-family:arial,sans-serif}.jsoneditor-treepath span.jsoneditor-treepath-element:hover,.jsoneditor-treepath span.jsoneditor-treepath-seperator:hover{cursor:pointer;text-decoration:underline}/*!\n * Selectr 2.4.0\n * https://github.com/Mobius1/Selectr\n *\n * Released under the MIT license\n */.selectr-container{position:relative}.selectr-container li{list-style:none}.selectr-hidden{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border:0 none}.selectr-visible{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;z-index:11}.selectr-desktop.multiple .selectr-visible{display:none}.selectr-desktop.multiple.native-open .selectr-visible{top:100%;min-height:200px!important;height:auto;opacity:1;display:block}.selectr-container.multiple.selectr-mobile .selectr-selected{z-index:0}.selectr-selected{position:relative;z-index:1;box-sizing:border-box;width:100%;padding:7px 28px 7px 14px;cursor:pointer;border:1px solid #999;border-radius:3px;background-color:#fff}.selectr-selected::before{position:absolute;top:50%;right:10px;width:0;height:0;content:'';-o-transform:rotate(0) translate3d(0,-50%,0);-ms-transform:rotate(0) translate3d(0,-50%,0);-moz-transform:rotate(0) translate3d(0,-50%,0);-webkit-transform:rotate(0) translate3d(0,-50%,0);transform:rotate(0) translate3d(0,-50%,0);border-width:4px 4px 0 4px;border-style:solid;border-color:#6c7a86 transparent transparent}.selectr-container.native-open .selectr-selected::before,.selectr-container.open .selectr-selected::before{border-width:0 4px 4px 4px;border-style:solid;border-color:transparent transparent #6c7a86}.selectr-label{display:none;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis}.selectr-placeholder{color:#6c7a86}.selectr-tags{margin:0;padding:0;white-space:normal}.has-selected .selectr-tags{margin:0 0 -2px}.selectr-tag{list-style:none;position:relative;float:left;padding:2px 25px 2px 8px;margin:0 2px 2px 0;cursor:default;color:#fff;border:medium none;border-radius:10px;background:#acb7bf none repeat scroll 0 0}.selectr-container.multiple.has-selected .selectr-selected{padding:5px 28px 5px 5px}.selectr-options-container{position:absolute;z-index:10000;top:calc(100% - 1px);left:0;display:none;box-sizing:border-box;width:100%;border-width:0 1px 1px;border-style:solid;border-color:transparent #999 #999;border-radius:0 0 3px 3px;background-color:#fff}.selectr-container.open .selectr-options-container{display:block}.selectr-input-container{position:relative;display:none}.selectr-clear,.selectr-input-clear,.selectr-tag-remove{position:absolute;top:50%;right:22px;width:20px;height:20px;padding:0;cursor:pointer;-o-transform:translate3d(0,-50%,0);-ms-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0);border:medium none;background-color:transparent;z-index:11}.selectr-clear,.selectr-input-clear{display:none}.selectr-container.has-selected .selectr-clear,.selectr-input-container.active .selectr-input-clear{display:block}.selectr-selected .selectr-tag-remove{right:2px}.selectr-clear::after,.selectr-clear::before,.selectr-input-clear::after,.selectr-input-clear::before,.selectr-tag-remove::after,.selectr-tag-remove::before{position:absolute;top:5px;left:9px;width:2px;height:10px;content:' ';background-color:#6c7a86}.selectr-tag-remove::after,.selectr-tag-remove::before{top:4px;width:3px;height:12px;background-color:#fff}.selectr-clear:before,.selectr-input-clear::before,.selectr-tag-remove::before{-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.selectr-clear:after,.selectr-input-clear::after,.selectr-tag-remove::after{-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.selectr-input-container.active,.selectr-input-container.active .selectr-clear{display:block}.selectr-input{top:5px;left:5px;box-sizing:border-box;width:calc(100% - 30px);margin:10px 15px;padding:7px 30px 7px 9px;border:1px solid #999;border-radius:3px}.selectr-notice{display:none;box-sizing:border-box;width:100%;padding:8px 16px;border-top:1px solid #999;border-radius:0 0 3px 3px;background-color:#fff}.selectr-container.notice .selectr-notice{display:block}.selectr-container.notice .selectr-selected{border-radius:3px 3px 0 0}.selectr-options{position:relative;top:calc(100% + 2px);display:none;overflow-x:auto;overflow-y:scroll;max-height:200px;margin:0;padding:0}.selectr-container.notice .selectr-options-container,.selectr-container.open .selectr-input-container,.selectr-container.open .selectr-options{display:block}.selectr-option{position:relative;display:block;padding:5px 20px;list-style:outside none none;cursor:pointer;font-weight:400}.selectr-options.optgroups>.selectr-option{padding-left:25px}.selectr-optgroup{font-weight:700;padding:0}.selectr-optgroup--label{font-weight:700;margin-top:10px;padding:5px 15px}.selectr-match{text-decoration:underline}.selectr-option.selected{background-color:#ddd}.selectr-option.active{color:#fff;background-color:#5897fb}.selectr-option.disabled{opacity:.4}.selectr-option.excluded{display:none}.selectr-container.open .selectr-selected{border-color:#999 #999 transparent #999;border-radius:3px 3px 0 0}.selectr-container.open .selectr-selected::after{-o-transform:rotate(180deg) translate3d(0,50%,0);-ms-transform:rotate(180deg) translate3d(0,50%,0);-moz-transform:rotate(180deg) translate3d(0,50%,0);-webkit-transform:rotate(180deg) translate3d(0,50%,0);transform:rotate(180deg) translate3d(0,50%,0)}.selectr-disabled{opacity:.6}.has-selected .selectr-placeholder,.selectr-empty{display:none}.has-selected .selectr-label{display:block}.taggable .selectr-selected{padding:4px 28px 4px 4px}.taggable .selectr-selected::after{display:table;content:\" \";clear:both}.taggable .selectr-label{width:auto}.taggable .selectr-tags{float:left;display:block}.taggable .selectr-placeholder{display:none}.input-tag{float:left;min-width:90px;width:auto}.selectr-tag-input{border:medium none;padding:3px 10px;width:100%;font-family:inherit;font-weight:inherit;font-size:inherit}.selectr-input-container.loading::after{position:absolute;top:50%;right:20px;width:20px;height:20px;content:'';-o-transform:translate3d(0,-50%,0);-ms-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0);-o-transform-origin:50% 0 0;-ms-transform-origin:50% 0 0;-moz-transform-origin:50% 0 0;-webkit-transform-origin:50% 0 0;transform-origin:50% 0 0;-moz-animation:.5s linear 0s normal forwards infinite running spin;-webkit-animation:.5s linear 0s normal forwards infinite running spin;animation:.5s linear 0s normal forwards infinite running spin;border-width:3px;border-style:solid;border-color:#aaa #ddd #ddd;border-radius:50%}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0) translate3d(0,-50%,0);transform:rotate(0) translate3d(0,-50%,0)}100%{-webkit-transform:rotate(360deg) translate3d(0,-50%,0);transform:rotate(360deg) translate3d(0,-50%,0)}}@keyframes spin{0%{-webkit-transform:rotate(0) translate3d(0,-50%,0);transform:rotate(0) translate3d(0,-50%,0)}100%{-webkit-transform:rotate(360deg) translate3d(0,-50%,0);transform:rotate(360deg) translate3d(0,-50%,0)}}.selectr-container.open.inverted .selectr-selected{border-color:transparent #999 #999;border-radius:0 0 3px 3px}.selectr-container.inverted .selectr-options-container{border-width:1px 1px 0;border-color:#999 #999 transparent;border-radius:3px 3px 0 0;background-color:#fff}.selectr-container.inverted .selectr-options-container{top:auto;bottom:calc(100% - 1px)}.selectr-container ::-webkit-input-placeholder{color:#6c7a86;opacity:1}.selectr-container ::-moz-placeholder{color:#6c7a86;opacity:1}.selectr-container :-ms-input-placeholder{color:#6c7a86;opacity:1}.selectr-container ::placeholder{color:#6c7a86;opacity:1}", ""])
}, function (e, t) {
    e.exports = function (e) {
        return "string" != typeof e ? e : (/^['"].*['"]$/.test(e) && (e = e.slice(1, -1)), /["'() \t\n]/.test(e) ? '"' + e.replace(/"/g, '\\"').replace(/\n/g, "\\n") + '"' : e)
    }
}, function (e, t) {
    e.exports = function (e) {
        var t = [];
        return t.toString = function () {
            return this.map((function (t) {
                var n = function (e, t) {
                    var n = e[1] || "", i = e[3];
                    if (!i) return n;
                    if (t && "function" == typeof btoa) {
                        var r = (a = i, "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(a)))) + " */"),
                            o = i.sources.map((function (e) {
                                return "/*# sourceURL=" + i.sourceRoot + e + " */"
                            }));
                        return [n].concat(o).concat([r]).join("\n")
                    }
                    var a;
                    return [n].join("\n")
                }(t, e);
                return t[2] ? "@media " + t[2] + "{" + n + "}" : n
            })).join("")
        }, t.i = function (e, n) {
            "string" == typeof e && (e = [[null, e, ""]]);
            for (var i = {}, r = 0; r < this.length; r++) {
                var o = this[r][0];
                "number" == typeof o && (i[o] = !0)
            }
            for (r = 0; r < e.length; r++) {
                var a = e[r];
                "number" == typeof a[0] && i[a[0]] || (n && !a[2] ? a[2] = n : n && (a[2] = "(" + a[2] + ") and (" + n + ")"), t.push(a))
            }
        }, t
    }
}, function (e, t, n) {
    var i, r, o = {}, a = (i = function () {
        return window && document && document.all && !window.atob
    }, function () {
        return void 0 === r && (r = i.apply(this, arguments)), r
    }), s = function (e, t) {
        return t ? t.querySelector(e) : document.querySelector(e)
    }, l = function (e) {
        var t = {};
        return function (e, n) {
            if ("function" == typeof e) return e();
            if (void 0 === t[e]) {
                var i = s.call(this, e, n);
                if (window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement) try {
                    i = i.contentDocument.head
                } catch (e) {
                    i = null
                }
                t[e] = i
            }
            return t[e]
        }
    }(), c = null, u = 0, h = [], d = n(566);

    function f(e, t) {
        for (var n = 0; n < e.length; n++) {
            var i = e[n], r = o[i.id];
            if (r) {
                r.refs++;
                for (var a = 0; a < r.parts.length; a++) r.parts[a](i.parts[a]);
                for (; a < i.parts.length; a++) r.parts.push(b(i.parts[a], t))
            } else {
                var s = [];
                for (a = 0; a < i.parts.length; a++) s.push(b(i.parts[a], t));
                o[i.id] = {id: i.id, refs: 1, parts: s}
            }
        }
    }

    function g(e, t) {
        for (var n = [], i = {}, r = 0; r < e.length; r++) {
            var o = e[r], a = t.base ? o[0] + t.base : o[0], s = {css: o[1], media: o[2], sourceMap: o[3]};
            i[a] ? i[a].parts.push(s) : n.push(i[a] = {id: a, parts: [s]})
        }
        return n
    }

    function p(e, t) {
        var n = l(e.insertInto);
        if (!n) throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
        var i = h[h.length - 1];
        if ("top" === e.insertAt) i ? i.nextSibling ? n.insertBefore(t, i.nextSibling) : n.appendChild(t) : n.insertBefore(t, n.firstChild), h.push(t); else if ("bottom" === e.insertAt) n.appendChild(t); else {
            if ("object" != typeof e.insertAt || !e.insertAt.before) throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
            var r = l(e.insertAt.before, n);
            n.insertBefore(t, r)
        }
    }

    function m(e) {
        if (null === e.parentNode) return !1;
        e.parentNode.removeChild(e);
        var t = h.indexOf(e);
        t >= 0 && h.splice(t, 1)
    }

    function v(e) {
        var t = document.createElement("style");
        if (void 0 === e.attrs.type && (e.attrs.type = "text/css"), void 0 === e.attrs.nonce) {
            var i = function () {
                0;
                return n.nc
            }();
            i && (e.attrs.nonce = i)
        }
        return y(t, e.attrs), p(e, t), t
    }

    function y(e, t) {
        Object.keys(t).forEach((function (n) {
            e.setAttribute(n, t[n])
        }))
    }

    function b(e, t) {
        var n, i, r, o;
        if (t.transform && e.css) {
            if (!(o = "function" == typeof t.transform ? t.transform(e.css) : t.transform.default(e.css))) return function () {
            };
            e.css = o
        }
        if (t.singleton) {
            var a = u++;
            n = c || (c = v(t)), i = I.bind(null, n, a, !1), r = I.bind(null, n, a, !0)
        } else e.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (n = function (e) {
            var t = document.createElement("link");
            return void 0 === e.attrs.type && (e.attrs.type = "text/css"), e.attrs.rel = "stylesheet", y(t, e.attrs), p(e, t), t
        }(t), i = A.bind(null, n, t), r = function () {
            m(n), n.href && URL.revokeObjectURL(n.href)
        }) : (n = v(t), i = x.bind(null, n), r = function () {
            m(n)
        });
        return i(e), function (t) {
            if (t) {
                if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap) return;
                i(e = t)
            } else r()
        }
    }

    e.exports = function (e, t) {
        if ("undefined" != typeof DEBUG && DEBUG && "object" != typeof document) throw new Error("The style-loader cannot be used in a non-browser environment");
        (t = t || {}).attrs = "object" == typeof t.attrs ? t.attrs : {}, t.singleton || "boolean" == typeof t.singleton || (t.singleton = a()), t.insertInto || (t.insertInto = "head"), t.insertAt || (t.insertAt = "bottom");
        var n = g(e, t);
        return f(n, t), function (e) {
            for (var i = [], r = 0; r < n.length; r++) {
                var a = n[r];
                (s = o[a.id]).refs--, i.push(s)
            }
            e && f(g(e, t), t);
            for (r = 0; r < i.length; r++) {
                var s;
                if (0 === (s = i[r]).refs) {
                    for (var l = 0; l < s.parts.length; l++) s.parts[l]();
                    delete o[s.id]
                }
            }
        }
    };
    var C, w = (C = [], function (e, t) {
        return C[e] = t, C.filter(Boolean).join("\n")
    });

    function I(e, t, n, i) {
        var r = n ? "" : i.css;
        if (e.styleSheet) e.styleSheet.cssText = w(t, r); else {
            var o = document.createTextNode(r), a = e.childNodes;
            a[t] && e.removeChild(a[t]), a.length ? e.insertBefore(o, a[t]) : e.appendChild(o)
        }
    }

    function x(e, t) {
        var n = t.css, i = t.media;
        if (i && e.setAttribute("media", i), e.styleSheet) e.styleSheet.cssText = n; else {
            for (; e.firstChild;) e.removeChild(e.firstChild);
            e.appendChild(document.createTextNode(n))
        }
    }

    function A(e, t, n) {
        var i = n.css, r = n.sourceMap, o = void 0 === t.convertToAbsoluteUrls && r;
        (t.convertToAbsoluteUrls || o) && (i = d(i)), r && (i += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(r)))) + " */");
        var a = new Blob([i], {type: "text/css"}), s = e.href;
        e.href = URL.createObjectURL(a), s && URL.revokeObjectURL(s)
    }
}, function (e, t) {
    e.exports = function (e) {
        var t = "undefined" != typeof window && window.location;
        if (!t) throw new Error("fixUrls requires window.location");
        if (!e || "string" != typeof e) return e;
        var n = t.protocol + "//" + t.host, i = n + t.pathname.replace(/\/[^\/]*$/, "/");
        return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, (function (e, t) {
            var r, o = t.trim().replace(/^"(.*)"$/, (function (e, t) {
                return t
            })).replace(/^'(.*)'$/, (function (e, t) {
                return t
            }));
            return /^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o) ? e : (r = 0 === o.indexOf("//") ? o : 0 === o.indexOf("/") ? n + o : i + o.replace(/^\.\//, ""), "url(" + JSON.stringify(r) + ")")
        }))
    }
}, function (e, t, n) {
}, function (e, t, n) {
    "use strict";
    n.r(t), n.d(t, "spreadsheet", (function () {
        return wp
    }));
    var i = n(0);
    n(101);

    function r(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return o(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return o(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function o(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    var a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];

    function s(e) {
        for (var t = "", n = e; n >= a.length;) n /= a.length, n -= 1, t += a[parseInt(n, 10) % a.length];
        return t += a[e % a.length]
    }

    function l(e) {
        for (var t = 0, n = 0; n < e.length - 1; n += 1) {
            var i = e.charCodeAt(n) - 65, r = e.length - 1 - n;
            t += Math.pow(a.length, r) + a.length * i
        }
        return t += e.charCodeAt(e.length - 1) - 65
    }

    function c(e) {
        for (var t = "", n = "", i = 0; i < e.length; i += 1) e.charAt(i) >= "0" && e.charAt(i) <= "9" ? n += e.charAt(i) : t += e.charAt(i);
        return [l(t), parseInt(n, 10) - 1]
    }

    function u(e, t) {
        return "".concat(s(e)).concat(t + 1)
    }

    function h(e, t, n) {
        var i = r(c(e), 2);
        return u(i[0] + t, i[1] + n)
    }

    function d(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return f(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return f(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function f(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function g(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function p(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var m = function () {
        function e(t, n, i, r) {
            var o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
                a = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
            g(this, e), this.sri = t, this.sci = n, this.eri = i, this.eci = r, this.w = o, this.h = a
        }

        var t, n, i;
        return t = e, i = [{
            key: "valueOf", value: function (t) {
                var n = t.split(":"), i = d(c(n[0]), 2), r = i[0], o = i[1], a = o, s = r;
                if (n.length > 1) {
                    var l = d(c(n[1]), 2);
                    s = l[0], a = l[1]
                }
                return new e(o, r, a, s)
            }
        }], (n = [{
            key: "set", value: function (e, t, n, i) {
                this.sri = e, this.sci = t, this.eri = n, this.eci = i
            }
        }, {
            key: "setWidthAndHeight", value: function (e, t) {
                this.w = e, this.h = t
            }
        }, {
            key: "multiple", value: function () {
                return this.eri - this.sri > 0 || this.eci - this.sci > 0
            }
        }, {
            key: "includes", value: function () {
                for (var e = 0, t = 0, n = arguments.length, i = new Array(n), r = 0; r < n; r++) i[r] = arguments[r];
                if (1 === i.length) {
                    var o = c(i[0]), a = d(o, 2);
                    t = a[0], e = a[1]
                } else 2 === i.length && (e = i[0], t = i[1]);
                var s = this.sri, l = this.sci, u = this.eri, h = this.eci;
                return s <= e && e <= u && l <= t && t <= h
            }
        }, {
            key: "each", value: function (e) {
                for (var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function () {
                    return !0
                }, n = this.sri, i = this.sci, r = this.eri, o = this.eci, a = n; a <= r; a += 1) if (t(a)) for (var s = i; s <= o; s += 1) e(a, s)
            }
        }, {
            key: "contains", value: function (e) {
                return this.sri <= e.sri && this.sci <= e.sci && this.eri >= e.eri && this.eci >= e.eci
            }
        }, {
            key: "within", value: function (e) {
                return this.sri >= e.sri && this.sci >= e.sci && this.eri <= e.eri && this.eci <= e.eci
            }
        }, {
            key: "disjoint", value: function (e) {
                return this.sri > e.eri || this.sci > e.eci || e.sri > this.eri || e.sci > this.eci
            }
        }, {
            key: "intersects", value: function (e) {
                return this.sri <= e.eri && this.sci <= e.eci && e.sri <= this.eri && e.sci <= this.eci
            }
        }, {
            key: "union", value: function (t) {
                var n = this.sri, i = this.sci, r = this.eri, o = this.eci;
                return new e(t.sri < n ? t.sri : n, t.sci < i ? t.sci : i, t.eri > r ? t.eri : r, t.eci > o ? t.eci : o)
            }
        }, {
            key: "difference", value: function (t) {
                var n = [], i = function (t, i, r, o) {
                        n.push(new e(t, i, r, o))
                    }, r = this.sri, o = this.sci, a = this.eri, s = this.eci, l = t.sri - r, c = t.sci - o, u = a - t.eri,
                    h = s - t.eci;
                return l > 0 ? (i(r, o, t.sri - 1, s), u > 0 ? (i(t.eri + 1, o, a, s), c > 0 && i(t.sri, o, t.eri, t.sci - 1), h > 0 && i(t.sri, t.eci + 1, t.eri, s)) : (c > 0 && i(t.sri, o, a, t.sci - 1), h > 0 && i(t.sri, t.eci + 1, a, s))) : u > 0 && (i(t.eri + 1, o, a, s), c > 0 && i(r, o, t.eri, t.sci - 1), h > 0 && i(r, t.eci + 1, t.eri, s)), c > 0 ? (i(r, o, a, t.sci - 1), h > 0 ? (i(r, t.eri + 1, a, s), l > 0 && i(r, t.sci, t.sri - 1, t.eci), u > 0 && i(t.sri + 1, t.sci, a, t.eci)) : (l > 0 && i(r, t.sci, t.sri - 1, s), u > 0 && i(t.sri + 1, t.sci, a, s))) : h > 0 && (i(a, t.eci + 1, a, s), l > 0 && i(r, o, t.sri - 1, t.eci), u > 0 && i(t.eri + 1, o, a, t.eci)), n
            }
        }, {
            key: "size", value: function () {
                return [this.eri - this.sri + 1, this.eci - this.sci + 1]
            }
        }, {
            key: "toString", value: function () {
                var e = this.sri, t = this.sci, n = this.eri, i = this.eci, r = u(t, e);
                return this.multiple() && (r = "".concat(r, ":").concat(u(i, n))), r
            }
        }, {
            key: "clone", value: function () {
                return new e(this.sri, this.sci, this.eri, this.eci, this.w, this.h)
            }
        }, {
            key: "equals", value: function (e) {
                return this.eri === e.eri && this.eci === e.eci && this.sri === e.sri && this.sci === e.sci
            }
        }]) && p(t.prototype, n), i && p(t, i), e
    }();

    function v(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var y = function () {
        function e() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.range = new m(0, 0, 0, 0), this.ri = 0, this.ci = 0
        }

        var t, n, i;
        return t = e, (n = [{
            key: "multiple", value: function () {
                return this.range.multiple()
            }
        }, {
            key: "setIndexes", value: function (e, t) {
                this.ri = e, this.ci = t
            }
        }, {
            key: "size", value: function () {
                return this.range.size()
            }
        }]) && v(t.prototype, n), i && v(t, i), e
    }();
    var b = function e() {
        !function (e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }(this, e), this.x = 0, this.y = 0, this.ri = 0, this.ci = 0
    };

    function C(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var w = function () {
        function e() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.undoItems = [], this.redoItems = []
        }

        var t, n, i;
        return t = e, (n = [{
            key: "add", value: function (e) {
                this.undoItems.push(JSON.stringify(e)), this.redoItems = []
            }
        }, {
            key: "canUndo", value: function () {
                return this.undoItems.length > 0
            }
        }, {
            key: "canRedo", value: function () {
                return this.redoItems.length > 0
            }
        }, {
            key: "undo", value: function (e, t) {
                var n = this.undoItems, i = this.redoItems;
                this.canUndo() && (i.push(JSON.stringify(e)), t(JSON.parse(n.pop())))
            }
        }, {
            key: "redo", value: function (e, t) {
                var n = this.undoItems, i = this.redoItems;
                this.canRedo() && (n.push(JSON.stringify(e)), t(JSON.parse(i.pop())))
            }
        }]) && C(t.prototype, n), i && C(t, i), e
    }();

    function I(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return A(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return A(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function A(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function _(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var S = function () {
        function e(t) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.init(t)
        }

        var t, n, i;
        return t = e, (n = [{
            key: "reset", value: function () {
                this.map = {}
            }
        }, {
            key: "init", value: function (e) {
                if (this.map = {}, e && e.length > 0) {
                    var t, n = I(e);
                    try {
                        for (n.s(); !(t = n.n()).done;) {
                            var i = t.value;
                            this.map[i] = ""
                        }
                    } catch (e) {
                        n.e(e)
                    } finally {
                        n.f()
                    }
                }
            }
        }, {
            key: "add", value: function (e) {
                this.map[e] = ""
            }
        }, {
            key: "getAllKey", value: function () {
                return Object.keys(this.map)
            }
        }, {
            key: "getExpValue", value: function (e) {
                return this.map[e]
            }
        }, {
            key: "getMap", value: function () {
                return this.map
            }
        }, {
            key: "setAllValue", value: function (e) {
                var t = this;
                Object.keys(e).map((function (n) {
                    t.map[n] = e[n]
                }))
            }
        }]) && _(t.prototype, n), i && _(t, i), e
    }();

    function k(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var L = function () {
        function e() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.range = null, this.state = "clear"
        }

        var t, n, i;
        return t = e, (n = [{
            key: "copy", value: function (e) {
                return this.range = e, this.state = "copy", this
            }
        }, {
            key: "cut", value: function (e) {
                return this.range = e, this.state = "cut", this
            }
        }, {
            key: "isCopy", value: function () {
                return "copy" === this.state
            }
        }, {
            key: "isCut", value: function () {
                return "cut" === this.state
            }
        }, {
            key: "isClear", value: function () {
                return "clear" === this.state
            }
        }, {
            key: "clear", value: function () {
                this.range = null, this.state = "clear"
            }
        }]) && k(t.prototype, n), i && k(t, i), e
    }();

    function T(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function O(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function R(e, t, n) {
        return t && O(e.prototype, t), n && O(e, n), e
    }

    var E = function () {
        function e(t, n, i) {
            T(this, e), this.ci = t, this.operator = n, this.value = i
        }

        return R(e, [{
            key: "set", value: function (e, t) {
                this.operator = e, this.value = t
            }
        }, {
            key: "includes", value: function (e) {
                var t = this.operator, n = this.value;
                return "all" === t || "in" === t && n.includes(e)
            }
        }, {
            key: "vlength", value: function () {
                var e = this.operator, t = this.value;
                return "in" === e ? t.length : 0
            }
        }, {
            key: "getData", value: function () {
                return {ci: this.ci, operator: this.operator, value: this.value}
            }
        }]), e
    }(), P = function () {
        function e(t, n) {
            T(this, e), this.ci = t, this.order = n
        }

        return R(e, [{
            key: "asc", value: function () {
                return "asc" === this.order
            }
        }, {
            key: "desc", value: function () {
                return "desc" === this.order
            }
        }]), e
    }(), M = function () {
        function e() {
            T(this, e), this.ref = null, this.filters = [], this.sort = null
        }

        return R(e, [{
            key: "setData", value: function (e) {
                var t = e.ref, n = e.filters, i = e.sort;
                null != t && (this.ref = t, this.fitlers = n.map((function (e) {
                    return new E(e.ci, e.operator, e.value)
                })), i && (this.sort = new P(i.ci, i.order)))
            }
        }, {
            key: "getData", value: function () {
                if (this.active()) {
                    var e = this.ref, t = this.filters, n = this.sort;
                    return {
                        ref: e, filters: t.map((function (e) {
                            return e.getData()
                        })), sort: n
                    }
                }
                return {}
            }
        }, {
            key: "addFilter", value: function (e, t, n) {
                var i = this.getFilter(e);
                null == i ? this.filters.push(new E(e, t, n)) : i.set(t, n)
            }
        }, {
            key: "setSort", value: function (e, t) {
                this.sort = t ? new P(e, t) : null
            }
        }, {
            key: "includes", value: function (e, t) {
                return !!this.active() && this.hrange().includes(e, t)
            }
        }, {
            key: "getSort", value: function (e) {
                var t = this.sort;
                return t && t.ci === e ? t : null
            }
        }, {
            key: "getFilter", value: function (e) {
                for (var t = this.filters, n = 0; n < t.length; n += 1) if (t[n].ci === e) return t[n];
                return null
            }
        }, {
            key: "filteredRows", value: function (e) {
                var t = new Set, n = new Set;
                if (this.active()) for (var i = this.range(), r = i.sri, o = i.eri, a = this.filters, s = r + 1; s <= o; s += 1) for (var l = 0; l < a.length; l += 1) {
                    var c = a[l], u = e(s, c.ci), h = u ? u.text : "";
                    if (!c.includes(h)) {
                        t.add(s);
                        break
                    }
                    n.add(s)
                }
                return {rset: t, fset: n}
            }
        }, {
            key: "items", value: function (e, t) {
                var n = {};
                if (this.active()) for (var i = this.range(), r = i.sri, o = i.eri, a = r + 1; a <= o; a += 1) {
                    var s = t(a, e);
                    if (null === s || /^\s*$/.test(s.text)) n[""] = (n[""] || 0) + 1; else {
                        var l = s.text, c = (n[l] || 0) + 1;
                        n[l] = c
                    }
                }
                return n
            }
        }, {
            key: "range", value: function () {
                return m.valueOf(this.ref)
            }
        }, {
            key: "hrange", value: function () {
                var e = this.range();
                return e.eri = e.sri, e
            }
        }, {
            key: "clear", value: function () {
                this.ref = null, this.filters = [], this.sort = null
            }
        }, {
            key: "active", value: function () {
                return null !== this.ref
            }
        }]), e
    }();

    function N(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function D(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var B = function () {
        function e() {
            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
            N(this, e), this._ = t
        }

        var t, n, i;
        return t = e, (n = [{
            key: "forEach", value: function (e) {
                this._.forEach(e)
            }
        }, {
            key: "deleteWithin", value: function (e) {
                this._ = this._.filter((function (t) {
                    return !t.within(e)
                }))
            }
        }, {
            key: "getFirstIncludes", value: function (e, t) {
                for (var n = 0; n < this._.length; n += 1) {
                    var i = this._[n];
                    if (i.includes(e, t)) return i
                }
                return null
            }
        }, {
            key: "filterIntersects", value: function (t) {
                return new e(this._.filter((function (e) {
                    return e.intersects(t)
                })))
            }
        }, {
            key: "intersects", value: function (e) {
                for (var t = 0; t < this._.length; t += 1) if (this._[t].intersects(e)) return !0;
                return !1
            }
        }, {
            key: "union", value: function (e) {
                var t = e;
                return this._.forEach((function (e) {
                    e.intersects(t) && (t = e.union(t))
                })), t
            }
        }, {
            key: "add", value: function (e) {
                this.deleteWithin(e), this._.push(e)
            }
        }, {
            key: "shift", value: function (e, t, n, i) {
                this._.forEach((function (r) {
                    var o = r.sri, a = r.sci, s = r.eri, l = r.eci, c = r;
                    "row" === e ? o >= t ? (c.sri += n, c.eri += n) : o < t && t <= s && (c.eri += n, i(o, a, n, 0)) : "column" === e && (a >= t ? (c.sci += n, c.eci += n) : a < t && t <= l && (c.eci += n, i(o, a, 0, n)))
                }))
            }
        }, {
            key: "move", value: function (e, t, n) {
                this._.forEach((function (i) {
                    var r = i;
                    r.within(e) && (r.eri += t, r.sri += t, r.sci += n, r.eci += n)
                }))
            }
        }, {
            key: "setData", value: function (e) {
                return this._ = e.map((function (e) {
                    return m.valueOf(e)
                })), this
            }
        }, {
            key: "getData", value: function () {
                return this._.map((function (e) {
                    return e.toString()
                }))
            }
        }, {
            key: "isMerged", value: function (e, t) {
                for (var n = !1, i = 0; i < this._.length; i++) {
                    var r = this._[i], o = r.sri, a = r.sci, s = r.eri, l = r.eci;
                    if (o == e && a == t) n = !1; else if (e >= o && e <= s && t >= a && t <= l) {
                        n = !0;
                        break
                    }
                }
                return n
            }
        }]) && D(t.prototype, n), i && D(t, i), e
    }();
    var j = function e() {
        for (var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = arguments.length, i = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) i[r - 1] = arguments[r];
        return i.forEach((function (n) {
            Object.keys(n).forEach((function (i) {
                var r = n[i];
                "string" == typeof r || "number" == typeof r || "boolean" == typeof r ? t[i] = r : "function" != typeof r && !Array.isArray(r) && r instanceof Object ? (t[i] = t[i] || {}, e(t[i], r)) : t[i] = r
            }))
        })), t
    };
    var F = {
        cloneDeep: function (e) {
            return JSON.parse(JSON.stringify(e))
        }, merge: function () {
            for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
            return j.apply(void 0, [{}].concat(t))
        }, equals: function e(t, n) {
            var i = Object.keys(t);
            if (i.length !== Object.keys(n).length) return !1;
            for (var r = 0; r < i.length; r += 1) {
                var o = i[r], a = t[o], s = n[o];
                if (void 0 === s) return !1;
                if ("string" == typeof a || "number" == typeof a || "boolean" == typeof a) {
                    if (a !== s) return !1
                } else if (Array.isArray(a)) {
                    if (a.length !== s.length) return !1;
                    for (var l = 0; l < a.length; l += 1) if (!e(a[l], s[l])) return !1
                } else if ("function" != typeof a && !Array.isArray(a) && a instanceof Object && !e(a, s)) return !1
            }
            return !0
        }, arrayEquals: function (e, t) {
            if (e.length !== t.length) return !1;
            for (var n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
            return !0
        }, sum: function (e) {
            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function (e) {
                return e
            }, n = 0, i = 0;
            return Object.keys(e).forEach((function (r) {
                n += t(e[r], r), i += 1
            })), [n, i]
        }, rangeEach: function (e, t, n) {
            for (var i = e; i < t; i += 1) n(i)
        }, rangeSum: function (e, t, n) {
            for (var i = 0, r = e; r < t; r += 1) i += n(r);
            return i
        }, rangeReduceIf: function (e, t, n, i, r, o) {
            for (var a = n, s = i, l = e; l < t && !(a > r); l += 1) a += s = o(l);
            return [l, a - s, s]
        }, deleteProperty: function (e, t) {
            var n = e["".concat(t)];
            return delete e["".concat(t)], n
        }
    };

    function H(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return W(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return W(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function W(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function V(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var G = function () {
        function e(t) {
            var n = t.len, i = t.height, r = t.minRowResizerHeight;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this._ = {}, this.len = n, this.height = i, this.minRowResizerHeight = r
        }

        var t, n, i;
        return t = e, (n = [{
            key: "getHeight", value: function (e) {
                var t = this.get(e);
                return t && t.height ? t.height : this.height
            }
        }, {
            key: "setHeight", value: function (e, t) {
                this.getOrNew(e).height = t
            }
        }, {
            key: "setAutoLineHeight", value: function (e, t) {
                var n = this.getOrNew(e);
                t > (n.height || this.height) && (n.height = t)
            }
        }, {
            key: "setStyle", value: function (e, t) {
                this.getOrNew(e).style = t
            }
        }, {
            key: "sumHeight", value: function (e, t, n) {
                var i = this;
                return F.rangeSum(e, t, (function (e) {
                    return n && n.has(e) ? 0 : i.getHeight(e)
                }))
            }
        }, {
            key: "totalHeight", value: function () {
                return this.sumHeight(0, this.len)
            }
        }, {
            key: "get", value: function (e) {
                return this._[e]
            }
        }, {
            key: "getOrNew", value: function (e) {
                return this._[e] = this._[e] || {cells: {}}, this._[e]
            }
        }, {
            key: "getCell", value: function (e, t) {
                var n = this.get(e);
                return void 0 !== n && void 0 !== n.cells && void 0 !== n.cells[t] ? n.cells[t] : null
            }
        }, {
            key: "getCellMerge", value: function (e, t) {
                var n = this.getCell(e, t);
                return n && n.merge ? n.merge : [0, 0]
            }
        }, {
            key: "getCellOrNew", value: function (e, t) {
                var n = this.getOrNew(e);
                return n.cells[t] = n.cells[t] || {}, n.cells[t]
            }
        }, {
            key: "setCell", value: function (e, t, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "all", r = this.getOrNew(e);
                "all" === i ? r.cells[t] = n : "text" === i ? (r.cells[t] = r.cells[t] || {}, r.cells[t].text = n.text) : "format" === i && (r.cells[t] = r.cells[t] || {}, r.cells[t].style = n.style, n.merge && (r.cells[t].merge = n.merge))
            }
        }, {
            key: "setCellText", value: function (e, t, n) {
                this.getCellOrNew(e, t).text = n
            }
        }, {
            key: "copyPaste", value: function (e, t, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
                    r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : function () {
                    }, o = e.sri, a = e.sci, s = e.eri, l = e.eci, c = t.sri, u = t.sci, d = t.eri, f = t.eci,
                    g = e.size(), p = H(g, 2), m = p[0], v = p[1], y = t.size(), b = H(y, 2), C = b[0], w = b[1],
                    I = !0, x = 0;
                (d < o || f < a) && (I = !1, x = d < o ? C : w);
                for (var A = o; A <= s; A += 1) if (this._[A]) for (var _ = a; _ <= l; _ += 1) if (this._[A].cells && this._[A].cells[_]) for (var S = c; S <= d; S += m) for (var k = u; k <= f; k += v) {
                    var L = S + (A - o), T = k + (_ - a), O = F.cloneDeep(this._[A].cells[_]);
                    i && O && O.text && O.text.length > 0 && function () {
                        var e = O.text, t = k - u + (S - c) + 2;
                        if (I || (t -= x + 1), "=" === e[0]) O.text = e.replace(/\w{1,3}\d/g, (function (e) {
                            var n = 0, i = 0;
                            return o === c ? n = t - 1 : i = t - 1, h(e, n, i)
                        })); else {
                            var n = /[\\.\d]+$/.exec(e);
                            if (null !== n) {
                                var i = Number(n[0]) + t - 1;
                                O.text = e.substring(0, n.index) + i
                            }
                        }
                    }(), this.setCell(L, T, O, n), r(L, T, O)
                }
            }
        }, {
            key: "cutPaste", value: function (e, t) {
                var n = this, i = {};
                this.each((function (r) {
                    n.eachCells(r, (function (o) {
                        var a = parseInt(r, 10), s = parseInt(o, 10);
                        e.includes(r, o) && (a = t.sri + (a - e.sri), s = t.sci + (s - e.sci)), i[a] = i[a] || {cells: {}}, i[a].cells[s] = n._[r].cells[o]
                    }))
                })), this._ = i
            }
        }, {
            key: "insert", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = {};
                this.each((function (i, r) {
                    var o = parseInt(i, 10);
                    o >= e && (o += t), n[o] = r
                })), this._ = n, this.len += t
            }
        }, {
            key: "delete", value: function (e, t) {
                var n = t - e + 1, i = {};
                this.each((function (r, o) {
                    var a = parseInt(r, 10);
                    a < e ? i[a] = o : r > t && (i[a - n] = o)
                })), this._ = i, this.len -= n
            }
        }, {
            key: "insertColumn", value: function (e) {
                var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                this.each((function (i, r) {
                    var o = {};
                    t.eachCells(i, (function (t, i) {
                        var r = parseInt(t, 10);
                        r >= e && (r += n), o[r] = i
                    })), r.cells = o
                }))
            }
        }, {
            key: "deleteColumn", value: function (e, t) {
                var n = this, i = t - e + 1;
                this.each((function (r, o) {
                    var a = {};
                    n.eachCells(r, (function (n, r) {
                        var o = parseInt(n, 10);
                        o < e ? a[o] = r : o > t && (a[o - i] = r)
                    })), o.cells = a
                }))
            }
        }, {
            key: "deleteCells", value: function (e) {
                var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "all";
                e.each((function (e, i) {
                    t.deleteCell(e, i, n)
                }))
            }
        }, {
            key: "deleteCell", value: function (e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "all", i = this.get(e);
                if (null !== i) {
                    var r = this.getCell(e, t);
                    null !== r && ("all" === n ? delete i.cells[t] : "text" === n ? (r.text && delete r.text, r.value && delete r.value) : "format" === n ? (void 0 !== r.style && delete r.style, r.merge && delete r.merge, Object.keys(r).map((function (e) {
                        "text" != e && delete r[e]
                    }))) : "merge" === n && (r.merge && delete r.merge, r.height && delete r.height))
                }
            }
        }, {
            key: "each", value: function (e) {
                Object.entries(this._).forEach((function (t) {
                    var n = H(t, 2), i = n[0], r = n[1];
                    e(i, r)
                }))
            }
        }, {
            key: "eachCells", value: function (e, t) {
                this._[e] && this._[e].cells && Object.entries(this._[e].cells).forEach((function (e) {
                    var n = H(e, 2), i = n[0], r = n[1];
                    t(i, r)
                }))
            }
        }, {
            key: "setData", value: function (e) {
                e.len && (this.len = e.len, delete e.len), this._ = e
            }
        }, {
            key: "getData", value: function () {
                var e = this.len;
                return Object.assign({len: e}, this._)
            }
        }, {
            key: "getSelfData", value: function () {
                return this._
            }
        }, {
            key: "getMaxRange", value: function () {
                var e = 0, t = 0;
                return this.each((function (n, i) {
                    var r = parseInt(n, 10);
                    if (r > e && (e = r), i.cells) for (var o = Object.keys(i.cells), a = 0; a < o.length; a++) {
                        var s = parseInt(o[a], 10);
                        s > t && (t = s)
                    }
                })), {maxRow: e, maxCol: t}
            }
        }, {
            key: "deleteRow", value: function (e) {
                delete this._[e]
            }
        }]) && V(t.prototype, n), i && V(t, i), e
    }();

    function z(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Z = function () {
        function e(t) {
            var n = t.len, i = t.width, r = t.indexWidth, o = t.minWidth, a = t.minColResizerHeight;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this._ = {}, this.len = n, this.width = i, this.indexWidth = r, this.minWidth = o, this.minColResizerHeight = a
        }

        var t, n, i;
        return t = e, (n = [{
            key: "setData", value: function (e) {
                e.len && (this.len = e.len, delete e.len), this._ = e
            }
        }, {
            key: "getData", value: function () {
                var e = this.len;
                return Object.assign({len: e}, this._)
            }
        }, {
            key: "getWidth", value: function (e) {
                var t = this._[e];
                return t && t.width ? t.width : this.width
            }
        }, {
            key: "getOrNew", value: function (e) {
                return this._[e] = this._[e] || {}, this._[e]
            }
        }, {
            key: "setWidth", value: function (e, t) {
                this.getOrNew(e).width = t
            }
        }, {
            key: "setStyle", value: function (e, t) {
                this.getOrNew(e).style = t
            }
        }, {
            key: "sumWidth", value: function (e, t) {
                var n = this;
                return F.rangeSum(e, t, (function (e) {
                    return n.getWidth(e)
                }))
            }
        }, {
            key: "totalWidth", value: function () {
                return this.sumWidth(0, this.len)
            }
        }]) && z(t.prototype, n), i && z(t, i), e
    }(), $ = "en", K = {
        en: {
            toolbar: {
                undo: "撤销",
                redo: "恢复",
                save: "保存",
                print: "打印",
                chart: "图表",
                img: "插入图片",
                barcode: "条形码",
                // qrcode: "二维码",
                paintformat: "格式刷",
                clearformat: "清除格式",
                format: "数据格式",
                fontName: "字体",
                fontSize: "字号",
                fontBold: "加粗",
                fontItalic: "倾斜",
                underline: "下划线",
                strike: "删除线",
                color: "字体颜色",
                bgcolor: "填充颜色",
                border: "边框",
                merge: "合并单元格",
                align: "水平对齐",
                valign: "垂直对齐",
                textwrap: "自动换行",
                freeze: "冻结",
                autofilter: "自动筛选",
                formula: "函数",
                more: "更多",
                view: "预览",
                uploadExcel: "上传excel",
                toolPrintSize: "纸张设置",
                cellProp: "单元格设置",
                cellExp: "单元格表达式",
                cellLine: "单元格斜线",
                printSetting: "打印设置",
                viewSetting: "预览工具条设置",
                // help: "帮助"
            },
            rpBar: {
                exportExcel: "exportExcel",
                exportExcel_page: "导出当前页",
                exportExcel_all: "Excel",
                exportExcel_pdf: "PDF图像",
                exportText_pdf: "PDF",
                export_img: "图片",
                last: "上一页",
                next: "下一页",
                first: "首页",
                end: "末页",
                print: "打印",
                print_screen: "打印当页",
                print_all: "Canvas打印",
                print_table: "Html打印",
                export: "导出",
                // exportExcel_empty: "导出模板",
                pdf: "PDF",
                slider: "清晰度",
                back_previous: "返回上一页"
            },
            contextmenu: {
                copy: "复制",
                cut: "剪切",
                paste: "粘贴",
                cellExp: "单元格表达式",
                cellLine: "单元格斜线",
                pasteValue: "粘贴数据",
                pasteFormat: "粘贴格式",
                insertRow: "插入行",
                insertColumn: "插入列",
                deleteRow: "删除所在行",
                deleteColumn: "删除所在列",
                deleteCell: "删除",
                deleteCellText: "删除数据",
                validation: "数据验证",
                cancleBackend: "取消套打",
                background: "背景图设置",
                loopBlock: "循环块",
                zonedEdition: "分版",
                setting: "设定",
                cancel: "取消",
                clearMerge: "清除合并历史",
                loopTime: "横向循环次数"
            },
            format: {
                normal: "正常",
                text: "文本",
                number: "数值",
                percent: "百分比",
                rmb: "人民币",
                usd: "美元",
                eur: "欧元",
                date: "短日期",
                date2: "长日期",
                time: "时间",
                datetime: "日期+时间",
                duration: "持续时间",
                img: "图片",
                barcode: "条形码",
                // qrcode: "二维码"
            },
            formula: {
                sum: "求和",
                avg: "求平均值",
                max: "求最大值",
                min: "求最小值",
                dbsum: "数据集求和",
                dbavg: "数据集平均值",
                dbmax: "数据集最大值",
                dbmin: "数据集最小值",
                concat: "字符拼接",
                _if: "条件判断",
                and: "和",
                or: "或"
            },
            validation: {
                required: "此值必填",
                notMatch: "此值不匹配验证规则",
                between: "此值应在 {} 和 {} 之间",
                notBetween: "此值不应在 {} 和 {} 之间",
                notIn: "此值不在列表中",
                equal: "此值应该等于 {}",
                notEqual: "此值不应该等于 {}",
                lessThan: "此值应该小于 {}",
                lessThanEqual: "此值应该小于等于 {}",
                greaterThan: "此值应该大于 {}",
                greaterThanEqual: "此值应该大于等于 {}"
            },
            error: {pasteForMergedCell: "无法对合并的单元格执行此操作"},
            calendar: {
                weeks: ["日", "一", "二", "三", "四", "五", "六"],
                months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
            },
            button: {cancel: "取消", remove: "删除", save: "保存", ok: "确认"},
            sort: {desc: "降序", asc: "升序"},
            filter: {empty: "空白"},
            dataValidation: {
                mode: "模式",
                range: "单元区间",
                criteria: "条件",
                modeType: {cell: "单元格", column: "列模式", row: "行模式"},
                type: {list: "列表", number: "数字", date: "日期", phone: "手机号", email: "电子邮件"},
                operator: {be: "在区间", nbe: "不在区间", lt: "小于", lte: "小于等于", gt: "大于", gte: "大于等于", eq: "等于", neq: "不等于"}
            }
        }
    };

    function X(e, t) {
        if (t && t[$]) for (var n = t[$], i = e.split("."), r = 0; r < i.length; r += 1) {
            var o = n[i[r]];
            if (r === i.length - 1) return o;
            if (!o) return;
            n = o
        }
    }

    function Y(e) {
        var t = X(e, K);
        return !t && window && window.x && window.x.spreadsheet && window.x.spreadsheet.$messages && (t = X(e, window.x.spreadsheet.$messages)), t || ""
    }

    function U(e) {
        return function () {
            return Y(e)
        }
    }

    function J(e, t) {
        $ = e, t && (K[e] = t)
    }

    function q(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Q(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Q(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Q(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function ee(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var te = {phone: /^[1-9]\d{10}$/, email: /w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};

    function ne(e, t) {
        var n = "";
        if (!e) {
            for (var i = arguments.length, r = new Array(i > 2 ? i - 2 : 0), o = 2; o < i; o++) r[o - 2] = arguments[o];
            n = Y.apply(void 0, ["validation.".concat(t)].concat(r))
        }
        return [e, n]
    }

    var ie = function () {
        function e(t, n, i, r) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.required = n, this.value = i, this.type = t, this.operator = r, this.message = ""
        }

        var t, n, i;
        return t = e, (n = [{
            key: "parseValue", value: function (e) {
                var t = this.type;
                return "date" === t ? new Date(e) : "number" === t ? Number(e) : e
            }
        }, {
            key: "equals", value: function (e) {
                var t = this.type === e.type && this.required === e.required && this.operator === e.operator;
                return t && (t = Array.isArray(this.value) ? F.arrayEquals(this.value, e.value) : this.value === e.value), t
            }
        }, {
            key: "values", value: function () {
                return this.value.split(",")
            }
        }, {
            key: "validate", value: function (e) {
                var t = this.required, n = this.operator, i = this.value, r = this.type;
                if (t && /^\s*$/.test(e)) return ne(!1, "required");
                if (/^\s*$/.test(e)) return [!0];
                if (te[r] && !te[r].test(e)) return ne(!1, "notMatch");
                if ("list" === r) return ne(this.values().includes(e), "notIn");
                if (n) {
                    var o = this.parseValue(e);
                    if ("be" === n) {
                        var a = q(i, 2), s = a[0], l = a[1];
                        return ne(o >= this.parseValue(s) && o <= this.parseValue(l), "between", s, l)
                    }
                    if ("nbe" === n) {
                        var c = q(i, 2), u = c[0], h = c[1];
                        return ne(o < this.parseValue(u) || o > this.parseValue(h), "notBetween", u, h)
                    }
                    if ("eq" === n) return ne(o === this.parseValue(i), "equal", i);
                    if ("neq" === n) return ne(o !== this.parseValue(i), "notEqual", i);
                    if ("lt" === n) return ne(o < this.parseValue(i), "lessThan", i);
                    if ("lte" === n) return ne(o <= this.parseValue(i), "lessThanEqual", i);
                    if ("gt" === n) return ne(o > this.parseValue(i), "greaterThan", i);
                    if ("gte" === n) return ne(o >= this.parseValue(i), "greaterThanEqual", i)
                }
                return [!0]
            }
        }]) && ee(t.prototype, n), i && ee(t, i), e
    }();

    function re(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return oe(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return oe(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function oe(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function ae(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function se(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function le(e, t, n) {
        return t && se(e.prototype, t), n && se(e, n), e
    }

    var ce = function () {
            function e(t, n, i) {
                ae(this, e), this.refs = n, this.mode = t, this.validator = i
            }

            return le(e, [{
                key: "includes", value: function (e, t) {
                    for (var n = this.refs, i = 0; i < n.length; i += 1) {
                        if (m.valueOf(n[i]).includes(e, t)) return !0
                    }
                    return !1
                }
            }, {
                key: "addRef", value: function (e) {
                    this.remove(m.valueOf(e)), this.refs.push(e)
                }
            }, {
                key: "remove", value: function (e) {
                    var t = [];
                    this.refs.forEach((function (n) {
                        var i = m.valueOf(n);
                        i.intersects(e) ? i.difference(e).forEach((function (e) {
                            return t.push(e.toString())
                        })) : t.push(n)
                    })), this.refs = t
                }
            }, {
                key: "getData", value: function () {
                    var e = this.refs, t = this.mode, n = this.validator;
                    return {refs: e, mode: t, type: n.type, required: n.required, operator: n.operator, value: n.value}
                }
            }], [{
                key: "valueOf", value: function (t) {
                    var n = t.refs, i = t.mode, r = t.type, o = t.required, a = t.operator, s = t.value;
                    return new e(i, n, new ie(r, o, s, a))
                }
            }]), e
        }(), ue = function () {
            function e() {
                ae(this, e), this._ = [], this.errors = new Map
            }

            return le(e, [{
                key: "getError", value: function (e, t) {
                    return this.errors.get("".concat(e, "_").concat(t))
                }
            }, {
                key: "validate", value: function (e, t, n) {
                    var i = this.get(e, t), r = "".concat(e, "_").concat(t), o = this.errors;
                    if (null !== i) {
                        var a = re(i.validator.validate(n), 2), s = a[0], l = a[1];
                        s ? o.delete(r) : o.set(r, l)
                    } else o.delete(r);
                    return !0
                }
            }, {
                key: "add", value: function (e, t, n) {
                    var i = n.type, r = n.required, o = n.value, a = n.operator, s = new ie(i, r, o, a),
                        l = this.getByValidator(s);
                    null !== l ? l.addRef(t) : this._.push(new ce(e, [t], s))
                }
            }, {
                key: "getByValidator", value: function (e) {
                    for (var t = 0; t < this._.length; t += 1) {
                        var n = this._[t];
                        if (n.validator.equals(e)) return n
                    }
                    return null
                }
            }, {
                key: "get", value: function (e, t) {
                    for (var n = 0; n < this._.length; n += 1) {
                        var i = this._[n];
                        if (i.includes(e, t)) return i
                    }
                    return null
                }
            }, {
                key: "remove", value: function (e) {
                    this.each((function (t) {
                        t.remove(e)
                    }))
                }
            }, {
                key: "each", value: function (e) {
                    this._.forEach((function (t) {
                        return e(t)
                    }))
                }
            }, {
                key: "getData", value: function () {
                    return this._.filter((function (e) {
                        return e.refs.length > 0
                    })).map((function (e) {
                        return e.getData()
                    }))
                }
            }, {
                key: "setData", value: function (e) {
                    this._ = e.map((function (e) {
                        return ce.valueOf(e)
                    }))
                }
            }]), e
        }(), he = "jm-sheet", de = "/jmreport/img", fe = (window.devicePixelRatio, n(98)), ge = n.n(fe),
        pe = [{key: "宋体", title: "宋体"}, {key: "黑体", title: "黑体"}, {key: "仿宋", title: "仿宋"}, {
            key: "楷体",
            title: "楷体"
        }, {key: "隶书", title: "隶书"}, {key: "华文中宋", title: "华文中宋"}, {
            key: "华文行楷",
            title: "华文行楷"
        }, {key: "Microsoft YaHei", title: "Microsoft YaHei"}, {key: "Arial", title: "Arial"}, {
            key: "Helvetica",
            title: "Helvetica"
        }, {key: "Hiragino", title: "Hiragino Sans GB"}, {
            key: "Source Sans Pro",
            title: "Source Sans Pro"
        }, {key: "Comic Sans MS", title: "Comic Sans MS"}, {key: "Courier New", title: "Courier New"}, {
            key: "Verdana",
            title: "Verdana"
        }, {key: "Lato", title: "Lato"}],
        me = [{pt: 7.5, px: 10}, {pt: 8, px: 11}, {pt: 9, px: 12}, {pt: 10, px: 13}, {pt: 10.5, px: 14}, {
            pt: 11,
            px: 15
        }, {pt: 12, px: 16}, {pt: 14, px: 18.7}, {pt: 15, px: 20}, {pt: 16, px: 21.3}, {pt: 18, px: 24}, {
            pt: 22,
            px: 29.3
        }, {pt: 24, px: 32}, {pt: 26, px: 34.7}, {pt: 36, px: 48}, {pt: 42, px: 56}];

    function ve(e) {
        for (var t = 0; t < me.length; t += 1) {
            var n = me[t];
            if (n.pt === e) return n.px
        }
        return e
    }

    function ye(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var be = new (function () {
        function e() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.map = {}
        }

        var t, n, i;
        return t = e, (n = [{
            key: "put", value: function (e, t) {
                this.map[e] = t
            }
        }, {
            key: "get", value: function (e) {
                return this.map[e] || ""
            }
        }, {
            key: "hasKey", value: function (e) {
                return Object.keys(this.map).indexOf(e) >= 0
            }
        }, {
            key: "clear", value: function () {
                this.map = {}
            }
        }]) && ye(t.prototype, n), i && ye(t, i), e
    }());

    function Ce(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return we(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return we(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function we(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    var Ie = function (e) {
        for (var t = [], n = [], i = [], r = 0, o = "", a = 1, s = 0; s < e.length; s += 1) {
            var l = e.charAt(s);
            if (" " !== l) if (l >= "a" && l <= "z") i.push(l.toUpperCase()); else if (l >= "0" && l <= "9" || l >= "A" && l <= "Z" || "." === l) i.push(l); else if ('"' === l) {
                for (s += 1; '"' !== e.charAt(s);) i.push(e.charAt(s)), s += 1;
                n.push('"'.concat(i.join(""))), i = []
            } else {
                if ("(" !== l && i.length > 0 && n.push(i.join("")), ")" === l) {
                    var h = t.pop();
                    if (2 === r) try {
                        for (var d = Ce(c(n.pop()), 2), f = d[0], g = d[1], p = Ce(c(n.pop()), 2), m = p[0], v = p[1], y = 0, b = m; b <= f; b += 1) for (var C = v; C <= g; C += 1) n.push(u(b, C)), y += 1;
                        n.push([h, y])
                    } catch (e) {
                    } else if (1 === r || 3 === r) 3 === r && n.push(o), n.push([h, a]), a = 1; else for (; "(" !== h && (n.push(h), !(t.length <= 0));) h = t.pop();
                    r = 0
                } else if ("=" === l || ">" === l || "<" === l) {
                    var w = e.charAt(s + 1);
                    o = l, "=" !== w && "-" !== w || (o += w, s += 1), r = 3
                } else if (":" === l) r = 2; else if ("," === l) 3 === r && n.push(o), r = 1, a += 1; else if ("(" === l && i.length > 0) t.push(i.join("")); else {
                    if (t.length > 0 && ("+" === l || "-" === l)) {
                        var I = t[t.length - 1];
                        if ("(" !== I && n.push(t.pop()), "*" === I || "/" === I) for (; t.length > 0 && "(" !== (I = t[t.length - 1]);) n.push(t.pop())
                    }
                    t.push(l)
                }
                i = []
            }
        }
        for (i.length > 0 && n.push(i.join("")); t.length > 0;) n.push(t.pop());
        return n
    }, xe = function (e, t) {
        if (e[0] >= "0" && e[0] <= "9") return Number(e);
        if ('"' === e[0]) return e.substring(1);
        var n = be.get(e);
        if (n) return n;
        var i = Ce(c(e), 2);
        return t(i[0], i[1])
    }, Ae = function (e, t, n, i) {
        for (var r = [], o = 0; o < e.length; o += 1) {
            var a = e[o], s = a[0];
            if ("+" === a) {
                var l = r.pop();
                r.push(Number(r.pop()) + Number(l))
            } else if ("-" === a) if (1 === r.length) {
                var c = r.pop();
                r.push(-1 * Number(c))
            } else {
                var u = r.pop();
                r.push(Number(r.pop()) - Number(u))
            } else if ("*" === a) r.push(Number(r.pop()) * Number(r.pop())); else if ("/" === a) {
                var h = r.pop();
                r.push(Number(r.pop()) / Number(h))
            } else if ("=" === s || ">" === s || "<" === s) {
                var d = r.pop(), f = Function;
                r.push(new f("return ".concat(r.pop(), " ").concat("=" === a ? "==" : a, " ").concat(d))())
            } else if (Array.isArray(a)) {
                for (var g = Ce(a, 2), p = g[0], m = g[1], v = [], y = 0; y < m; y += 1) v.push(r.pop());
                r.push(t[p].render(v.reverse()))
            } else if (be.hasKey(a)) {
                var b = be.get(a);
                r.push(b)
            } else {
                if (i.includes(a)) return 0;
                var C = xe(a, n);
                (s >= "a" && s <= "z" || s >= "A" && s <= "Z") && (i.push(a), be.put(a, C)), r.push(C)
            }
        }
        return r[0]
    }, _e = function e(t, n, i) {
        var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : [];
        if ("=" === t[0]) {
            var o = Ie(t.substring(1));
            return o.length <= 0 ? t : Ae(o, n, (function (t, o) {
                return e(i(t, o), n, i, r)
            }), r)
        }
        return t
    };

    function Se(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ke(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || Te(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Le(e) {
        return function (e) {
            if (Array.isArray(e)) return Oe(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || Te(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Te(e, t) {
        if (e) {
            if ("string" == typeof e) return Oe(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Oe(e, t) : void 0
        }
    }

    function Oe(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    var Re = new (function () {
        function e() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e)
        }

        var t, n, i;
        return t = e, (n = [{
            key: "isInteger", value: function (e) {
                return Math.floor(e) === e
            }
        }, {
            key: "toInteger", value: function (e) {
                var t = {times: 1, num: 0};
                if (!e) return t;
                if (this.isInteger(e)) return t.num = e, t;
                var n = e + "", i = n.indexOf("."), r = n.substr(i + 1).length, o = Math.pow(10, r),
                    a = parseInt(e * o + .5, 10);
                return t.times = o, t.num = a, t
            }
        }, {
            key: "operation", value: function (e, t, n) {
                var i = this.toInteger(e), r = this.toInteger(t), o = i.num, a = r.num, s = i.times, l = r.times,
                    c = s > l ? s : l;
                switch (n) {
                    case"add":
                        return (s === l ? o + a : s > l ? o + a * (s / l) : o * (l / s) + a) / c;
                    case"subtract":
                        return (s === l ? o - a : s > l ? o - a * (s / l) : o * (l / s) - a) / c;
                    case"multiply":
                        return o * a / (s * l);
                    case"divide":
                        return o / a * (l / s)
                }
            }
        }, {
            key: "add", value: function () {
                for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
                var r = this.parseNumber(n);
                return r.reduce((function (t, n) {
                    return e.operation(t, n, "add")
                }), 0)
            }
        }, {
            key: "subtract", value: function () {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                for (var i = this.parseNumber(t), r = i[0], o = 1; o < i.length; o++) r = this.operation(r, i[o], "subtract");
                return r
            }
        }, {
            key: "multiply", value: function () {
                for (var e = this, t = arguments.length, n = new Array(t), i = 0; i < t; i++) n[i] = arguments[i];
                var r = this.parseNumber(n);
                return r.reduce((function (t, n) {
                    return e.operation(t, n, "multiply")
                }), 1)
            }
        }, {
            key: "divide", value: function () {
                for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
                for (var i = this.parseNumber(t), r = i[0], o = 1; o < i.length; o++) r = this.operation(r, i[o], "divide");
                return r
            }
        }, {
            key: "parseNumber", value: function (e) {
                var t = [];
                return e.map((function (e) {
                    t.push(parseFloat(e))
                })), t
            }
        }]) && Se(t.prototype, n), i && Se(t, i), e
    }()), Ee = [{
        key: "SUM", title: U("formula.sum"), render: function (e) {
            return e.reduce((function (e, t) {
                return Re.add(e, t)
            }), 0)
        }
    }, {
        key: "AVERAGE", title: U("formula.avg"), render: function (e) {
            return e.reduce((function (e, t) {
                return Re.add(e, t)
            }), 0) / e.length
        }
    }, {
        key: "MAX", title: U("formula.max"), render: function (e) {
            return Math.max.apply(Math, Le(e.map((function (e) {
                return Number(e)
            }))))
        }
    }, {
        key: "MIN", title: U("formula.min"), render: function (e) {
            return Math.min.apply(Math, Le(e.map((function (e) {
                return Number(e)
            }))))
        }
    }, {
        key: "DBSUM", title: U("formula.dbsum"), render: function (e) {
            return e.reduce((function (e, t) {
                return Number(e) + Number(t)
            }), 0)
        }
    }, {
        key: "DBAVERAGE", title: U("formula.dbavg"), render: function (e) {
            return e.reduce((function (e, t) {
                return Number(e) + Number(t)
            }), 0) / e.length
        }
    }, {
        key: "DBMAX", title: U("formula.dbmax"), render: function (e) {
            return Math.max.apply(Math, Le(e.map((function (e) {
                return Number(e)
            }))))
        }
    }, {
        key: "DBMIN", title: U("formula.dbmin"), render: function (e) {
            return Math.min.apply(Math, Le(e.map((function (e) {
                return Number(e)
            }))))
        }
    }, {
        key: "IF", title: U("formula._if"), render: function (e) {
            var t = ke(e, 3), n = t[0], i = t[1], r = t[2];
            return n ? i : r
        }
    }, {
        key: "AND", title: U("formula.and"), render: function (e) {
            return e.every((function (e) {
                return e
            }))
        }
    }, {
        key: "OR", title: U("formula.or"), render: function (e) {
            return e.some((function (e) {
                return e
            }))
        }
    }, {
        key: "CONCAT", title: U("formula.concat"), render: function (e) {
            return e.join("")
        }
    }], Pe = Ee, Me = {};

    function Ne(e) {
        return function (e) {
            if (Array.isArray(e)) return je(e)
        }(e) || Fe(e) || Be(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function De(e) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || Fe(e) || Be(e) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Be(e, t) {
        if (e) {
            if ("string" == typeof e) return je(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? je(e, t) : void 0
        }
    }

    function je(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Fe(e) {
        if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
    }

    Ee.forEach((function (e) {
        Me[e.key] = e
    }));
    var He = function (e) {
        if (/^(-?\d*.?\d*)$/.test(e)) {
            if (0 == e) return 0;
            var t = De(Number(e).toFixed(2).toString().split("\\.")), n = t[0], i = t.slice(1);
            return [n.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")].concat(Ne(i))
        }
        if (e.indexOf("-") >= 0 || e.indexOf("/") >= 0) {
            var r = e.replace(/-/g, "/");
            return new Date(r).getTime()
        }
        for (var o = !1, a = 0, s = ["年", "月", "日", "时", "分", "秒"]; a < s.length; a++) {
            var l = s[a];
            e.indexOf(l) >= 0 && (e = e.replace(l, "/"), o = !0)
        }
        return !0 === o ? new Date(e).getTime() : e
    }, We = [{
        key: "normal", title: U("format.normal"), type: "string", render: function (e) {
            return e
        }
    }, {key: "number", title: U("format.number"), type: "number", label: "1,000.12", render: He}, {
        key: "percent",
        title: U("format.percent"),
        type: "number",
        label: "10.12%",
        render: function (e) {
            return Ze("", e, "%")
        }
    }, {
        key: "rmb", title: U("format.rmb"), type: "number", label: "￥10.00", render: function (e) {
            return Ze("￥", e)
        }
    }, {
        key: "usd", title: U("format.usd"), type: "number", label: "$10.00", render: function (e) {
            return Ze("$", e)
        }
    }, {
        key: "eur", title: U("format.eur"), type: "number", label: "€10.00", render: function (e) {
            return Ze("€", e)
        }
    }, {
        key: "date", title: U("format.date"), type: "date", label: "2020/10/10", render: function (e) {
            return ze(e, "yyyy/MM/dd")
        }
    }, {
        key: "date2", title: U("format.date2"), type: "date", label: "2020年10月10日", render: function (e) {
            return ze(e, "yyyy年MM月dd日")
        }
    }, {
        key: "time", title: U("format.time"), type: "date", label: "10:10:10", render: function (e) {
            return ze(e, "hh:mm:ss")
        }
    }, {
        key: "datetime", title: U("format.datetime"), type: "date", label: "2020/10/10 10:10:10", render: function (e) {
            return ze(e, "yyyy/MM/dd hh:mm:ss")
        }
    }], Ve = {};
    We.forEach((function (e) {
        Ve[e.key] = e
    }));
    var Ge = [{key: "img", title: U("format.img")}, {key: "barcode", title: U("format.barcode")}, {
        key: "qrcode",
        title: U("format.qrcode")
    }];

    function ze(e, t) {
        var n = function (e) {
            (e + "").indexOf(",") > 0 && (e = e.replace(new RegExp(",", "g"), ""));
            if (/^\d+(\.\d+)?$/.test(e)) return new Date(1 * e);
            if (e.indexOf("-") >= 0) e = e.replace(/-/g, "/"); else for (var t = 0, n = ["年", "月", "日", "时", "分", "秒"]; t < n.length; t++) {
                var i = n[t];
                e.indexOf(i) >= 0 && (e = e.replace(i, "/"))
            }
            return new Date(e)
        }(e);
        if (!n || !n.getFullYear()) return e;
        var i = {
            "M+": n.getMonth() + 1,
            "d+": n.getDate(),
            "h+": n.getHours(),
            "m+": n.getMinutes(),
            "s+": n.getSeconds(),
            "q+": Math.floor((n.getMonth() + 3) / 3),
            S: n.getMilliseconds()
        };
        for (var r in /(y+)/.test(t) && (t = t.replace(RegExp.$1, (n.getFullYear() + "").substr(4 - RegExp.$1.length))), i) new RegExp("(" + r + ")").test(t) && (t = t.replace(RegExp.$1, 1 === RegExp.$1.length ? i[r] : ("00" + i[r]).substr(("" + i[r]).length)));
        return t
    }

    function Ze(e, t, n) {
        if (!t) return "";
        var i = t + "";
        return e ? 0 == i.indexOf(e) ? t : e + He(t) : n ? i.indexOf(n) == i.length - 1 ? t : He(t) + n : void 0
    }

    function $e(e, t) {
        var n = parseFloat(e);
        if (0 == n) return 0;
        if (!n) return e;
        var i = parseInt(t);
        if (i <= 0) return parseInt(e);
        for (var r = 1, o = 0; o < i; o++) r *= 10;
        var a = (n = Math.round(e * r) / r).toString(), s = a.indexOf(".");
        for (s < 0 && (s = a.length, a += "."); a.length <= s + i;) a += "0";
        var l = De(a.split(".")), c = l[0], u = l.slice(1), h = c.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
        return u.length > 0 ? h + "." + u[0] : h
    }

    function Ke(e) {
        return function (e) {
            if (Array.isArray(e)) return Ue(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || Ye(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Xe(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || Ye(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Ye(e, t) {
        if (e) {
            if ("string" == typeof e) return Ue(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Ue(e, t) : void 0
        }
    }

    function Ue(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Je(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function qe(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Qe(e, t, n) {
        return t && qe(e.prototype, t), n && qe(e, n), e
    }

    function et() {
        return window.devicePixelRatio || 1
    }

    function tt() {
        return et() - .5
    }

    function nt(e) {
        return parseInt(e * et(), 10)
    }

    function it(e) {
        var t = nt(e);
        return t > 0 ? t - .5 : .5
    }

    var rt = 6, ot = 4, at = et(), st = function () {
        function e(t, n, i, r) {
            var o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0;
            Je(this, e), this.x = t, this.y = n, this.width = i, this.height = r, this.padding = o, this.bgcolor = "#ffffff", this.borderTop = null, this.borderRight = null, this.borderBottom = null, this.borderLeft = null, this.spaceCell = !1, this.lineStart = "", this.lineCell = !1, this.merge = !1
        }

        return Qe(e, [{
            key: "setLineStart", value: function (e) {
                this.lineStart = e, this.lineCell = !0
            }
        }, {
            key: "setBorders", value: function (e) {
                var t = e.top, n = e.bottom, i = e.left, r = e.right;
                t && (this.borderTop = t), r && (this.borderRight = r), n && (this.borderBottom = n), i && (this.borderLeft = i)
            }
        }, {
            key: "isMergeCell", value: function () {
                this.merge = !0
            }
        }, {
            key: "innerWidth", value: function () {
                return this.width - 3 * this.padding
            }
        }, {
            key: "innerHeight", value: function () {
                return this.height - 2 * this.padding
            }
        }, {
            key: "textx", value: function (e) {
                var t = this.width, n = this.padding, i = this.x;
                return "left" === e ? i += n : "center" === e ? i += t / 2 : "right" === e && (i += t - n), i
            }
        }, {
            key: "texty", value: function (e, t, n) {
                var i = this.height, r = this.padding, o = this.y;
                return "top" === e ? o += r : "middle" === e ? o = o + i / 2 - n : "bottom" === e && (o += i - 2 * n - r), o
            }
        }, {
            key: "topxys", value: function () {
                var e = this.x, t = this.y;
                return [[e, t], [e + this.width, t]]
            }
        }, {
            key: "rightxys", value: function () {
                var e = this.x, t = this.y, n = this.width;
                return [[e + n, t], [e + n, t + this.height]]
            }
        }, {
            key: "bottomxys", value: function () {
                var e = this.x, t = this.y, n = this.width, i = this.height;
                return [[e, t + i], [e + n, t + i]]
            }
        }, {
            key: "leftxys", value: function () {
                var e = this.x, t = this.y;
                return [[e, t], [e, t + this.height]]
            }
        }]), e
    }();

    function lt(e, t, n, i, r, o, a) {
        var s = {x: 0, y: 0};
        "underline" === e ? s.y = "bottom" === r ? 0 : "top" === r ? -(o + 2) : -o / 2 : "strike" === e && ("bottom" === r ? s.y = o / 2 : "top" === r && (s.y = -(o / 2 + 2))), "center" === i ? s.x = a / 2 : "right" === i && (s.x = a), this.line([t - s.x, n - s.y], [t - s.x + a, n - s.y])
    }

    function ct(e, t, n, i) {
        var r = this.ctx, o = e.split("|");
        2 == o.length ? "lefttop" == t.lineStart ? (this.line([t.x, t.y], [t.x + t.width, t.y + t.height]), this.fillText(o[0], n, i + t.height / 5), this.fillText(o[1], n + t.width - r.measureText(o[1]).width - 2 * t.padding, i - t.height / 5)) : "leftbottom" == t.lineStart && (this.line([t.x, t.y + t.height], [t.x + t.width, t.y]), this.fillText(o[0], n, i - t.height / 5), this.fillText(o[1], n + t.width - r.measureText(o[1]).width - 2 * t.padding, i + t.height / 5)) : 3 == o.length && ("lefttop" == t.lineStart ? (this.line([t.x, t.y], [t.x + 2 * t.width / 3, t.y + t.height]), this.line([t.x, t.y], [t.x + t.width, t.y + 2 * t.height / 3]), this.fillText(o[0], n, i + t.height / 4), this.fillText(o[1], n + t.width - 2 * t.padding - r.measureText(o[1]).width, i + t.height / 3), this.fillText(o[2], n + t.width - r.measureText(o[2]).width - 2 * t.padding, i - t.height / 4)) : "leftbottom" == t.lineStart && (this.line([t.x, t.y + t.height], [t.x + 2 * t.width / 3, t.y]), this.line([t.x, t.y + t.height], [t.x + t.width, t.y + t.height / 3]), this.fillText(o[0], n, i - t.height / 4), this.fillText(o[1], n + 2 * t.width / 3, i - t.height / 4), this.fillText(o[2], n + t.width - r.measureText(o[2]).width - 2 * t.padding, i + t.height / 4)))
    }

    var ut = function () {
        function e(t, n, i) {
            Je(this, e), this.el = t, this.ctx = t.getContext("2d"), this.resize(n, i), this.ctx.scale(et(), et()), this.isPrint = !1, this.printDegree = 0, this.fillCellWhite = !0
        }

        return Qe(e, [{
            key: "resize", value: function (e, t) {
                this.el.style.width = "".concat(e, "px"), this.el.style.height = "".concat(t, "px"), this.el.width = nt(e), this.el.height = nt(t), this.isPrint && this.resizeForPrintty(e, t)
            }
        }, {
            key: "noFillWhite", value: function () {
                this.fillCellWhite = !1
            }
        }, {
            key: "resizeForPrintty", value: function (e, t, n) {
                n || (n = this.printDegree), n > 1 && (console.log("清晰度", n), this.el.width = n * e, this.el.height = n * t, this.ctx.scale(n, n))
            }
        }, {
            key: "changePrintDegree", value: function (e) {
                this.isPrint = !0, this.printDegree = e
            }
        }, {
            key: "resizePrint", value: function (e, t) {
                this.el.width = nt(e), this.el.height = nt(t), this.el.removeAttribute("style"), this.el.style.height = "".concat(t, "px")
            }
        }, {
            key: "clear", value: function () {
                var e = this.el, t = e.width, n = e.height;
                return this.ctx.clearRect(0, 0, t, n), this
            }
        }, {
            key: "attr", value: function (e) {
                return Object.assign(this.ctx, e), this
            }
        }, {
            key: "save", value: function () {
                return this.ctx.save(), this.ctx.beginPath(), this
            }
        }, {
            key: "restore", value: function () {
                return this.ctx.restore(), this
            }
        }, {
            key: "img", value: function (e) {
                var t = this;
                return new Promise((function (n) {
                    if (e) {
                        var i = e.top, r = e.left, o = e.width, a = e.height, s = e.absrc;
                        t.save();
                        var l = new Image;
                        l.crossOrigin = "Anonymous", console.log("================"), console.log("absrc", s), console.log("================"), l.src = s, l.addEventListener("load", (function () {
                            o || (o = l.width), a || (a = l.height), t.ctx.scale(et(), et()), t.ctx.drawImage(l, r, i, o, a), t.ctx.strokeStyle = "rgba(255, 255, 255, 0.1)", t.ctx.rect(r, i, o, a), t.ctx.stroke(), t.restore(), n()
                        }))
                    } else n()
                }))
            }
        }, {
            key: "cellLayerImage", value: function (e, t) {
                var n = e.top, i = e.left, r = e.width, o = e.height;
                this.save(), this.ctx.scale(et(), et()), this.ctx.drawImage(t, i, n, r, o), this.ctx.strokeStyle = "rgba(255, 255, 255, 0.1)", this.ctx.rect(i, n, r, o), this.ctx.stroke(), this.restore()
            }
        }, {
            key: "beginPath", value: function () {
                return this.ctx.beginPath(), this
            }
        }, {
            key: "translate", value: function (e, t) {
                return this.ctx.translate(nt(e), nt(t)), this
            }
        }, {
            key: "clearRect", value: function (e, t, n, i) {
                return this.ctx.clearRect(e, t, n, i), this
            }
        }, {
            key: "fillRect", value: function (e, t, n, i) {
                return this.ctx.fillRect(nt(e) - .5, nt(t) - .5, nt(n), nt(i)), this
            }
        }, {
            key: "fillText", value: function (e, t, n, i) {
                return i ? this.ctx.fillText(e, nt(t), nt(n), i) : this.ctx.fillText(e, nt(t), nt(n)), this
            }
        }, {
            key: "fillText2", value: function (e, t, n, i, r) {
                if (e && (e + "").indexOf("\n") > 0) for (var o = (e + "").split("\n"), a = 0; a < o.length; a++) this.fillText(o[a], t, n + a * r, i); else this.fillText(e, t, n, i);
                return this
            }
        }, {
            key: "text", value: function (e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                    i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
                    r = arguments.length > 4 ? arguments[4] : void 0, o = this.ctx, a = n.align, s = n.valign,
                    l = n.font, c = n.color, u = n.strike, h = n.underline, d = t.textx(a);
                o.save(), o.beginPath(), this.attr({
                    textAlign: a,
                    textBaseline: s,
                    font: "".concat(l.italic ? "italic" : "", " ").concat(l.bold ? "bold" : "", " ").concat(nt(l.size), "px ").concat(l.name),
                    fillStyle: c,
                    strokeStyle: c
                }), e || 0 == e || (e = " ");
                var f = o.measureText(e).width, g = 0, p = nt(t.innerWidth());
                if (i) {
                    var m = Math.ceil(f / p);
                    g = (m - 1) * l.size / 2
                }
                var v = t.texty(s, l.size, g);
                if (i && f > p) {
                    for (var y = 0, b = {
                        len: 0,
                        start: 0
                    }, C = 0; C < e.length; C += 1) b.len >= p && (this.fillText2(e.substring(b.start, C), d, v, "", nt(l.size)), y += l.size + 2, u && lt.call(this, "strike", d, v, a, s, l.size, b.len), h && lt.call(this, "underline", d, v, a, s, l.size, b.len), v += l.size + 2, b.len = 0, b.start = C), b.len += o.measureText(e[C]).width;
                    b.len > 0 && (this.fillText2(e.substring(b.start), d, v, "", nt(l.size)), y += l.size + 2, u && lt.call(this, "strike", d, v, a, s, l.size, b.len), h && lt.call(this, "underline", d, v, a, s, l.size, b.len)), r(parseInt(y) + 2 * parseInt(t.padding))
                } else {
                    if (f < p) 1 == t.lineCell ? ct.call(this, e, t, d, v) : this.fillText2(e, d, v, "", nt(l.size)); else {
                        var w = this.getRealFillText(o, p, e, e, 0);
                        1 == t.lineCell ? ct.call(this, w, t, d, v) : this.fillText2(w, d, v, "", nt(l.size))
                    }
                    u && lt.call(this, "strike", d, v, a, s, l.size, f), h && lt.call(this, "underline", d, v, a, s, l.size, f)
                }
                return o.restore(), this
            }
        }, {
            key: "getRealFillText", value: function (e, t, n, i, r) {
                if (r > 10) return i;
                var o = e.measureText(i).width, a = parseInt(o / i.length);
                if (t - o > a) {
                    r++;
                    var s = n.substr(0, i.length + 1);
                    return this.getRealFillText(e, t, n, s, r)
                }
                if (o - t > a) {
                    r++;
                    var l = parseInt(t / o * i.length) + 1, c = i.substr(0, l);
                    return this.getRealFillText(e, t, n, c, r)
                }
                return i
            }
        }, {
            key: "setStroke", value: function (e) {
                this.ctx.strokeStyle = e
            }
        }, {
            key: "border", value: function (e, t) {
                var n = this.ctx;
                return n.lineWidth = tt, n.strokeStyle = t, "medium" === e ? n.lineWidth = nt(2) - .5 : "thick" === e ? n.lineWidth = nt(3) : "dashed" === e ? n.setLineDash([nt(3), nt(2)]) : "dotted" === e ? n.setLineDash([nt(1), nt(1)]) : "double" === e && n.setLineDash([nt(2), 0]), this
            }
        }, {
            key: "line", value: function () {
                var e = this.ctx;
                this.fillCellWhite;
                if (arguments.length > 1) {
                    var t = arguments.length <= 0 ? void 0 : arguments[0], n = Xe(t, 2), i = n[0], r = n[1];
                    e.moveTo(it(i), it(r));
                    for (var o = 1; o < arguments.length; o += 1) {
                        var a = o < 0 || arguments.length <= o ? void 0 : arguments[o], s = Xe(a, 2), l = s[0],
                            c = s[1];
                        e.lineTo(it(l), it(c))
                    }
                    e.stroke()
                }
                return this
            }
        }, {
            key: "strokeBorders", value: function (e) {
                var t = this.ctx;
                t.save(), t.beginPath();
                var n = e.borderTop, i = e.borderRight, r = e.borderBottom, o = e.borderLeft;
                n && (this.border.apply(this, Ke(n)), this.line.apply(this, Ke(e.topxys()))), i && (this.border.apply(this, Ke(i)), this.line.apply(this, Ke(e.rightxys()))), r && (this.border.apply(this, Ke(r)), this.line.apply(this, Ke(e.bottomxys()))), o && (this.border.apply(this, Ke(o)), this.line.apply(this, Ke(e.leftxys()))), t.restore()
            }
        }, {
            key: "dropdown", value: function (e) {
                var t = this.ctx, n = e.x, i = e.y, r = n + e.width - 15, o = i + e.height - 15;
                t.save(), t.beginPath(), t.moveTo(nt(r), nt(o)), t.lineTo(nt(r + 8), nt(o)), t.lineTo(nt(r + 4), nt(o + 6)), t.closePath(), t.fillStyle = "rgba(0, 0, 0, .45)", t.fill(), t.restore()
            }
        }, {
            key: "error", value: function (e) {
                var t = this.ctx, n = e.x, i = e.y, r = n + e.width - 1;
                t.save(), t.beginPath(), t.moveTo(nt(r - 8), nt(i - 1)), t.lineTo(nt(r), nt(i - 1)), t.lineTo(nt(r), nt(i + 8)), t.closePath(), t.fillStyle = "rgba(255, 0, 0, .65)", t.fill(), t.restore()
            }
        }, {
            key: "frozen", value: function (e) {
                var t = this.ctx, n = e.x, i = e.y, r = n + e.width - 1;
                t.save(), t.beginPath(), t.moveTo(nt(r - 8), nt(i - 1)), t.lineTo(nt(r), nt(i - 1)), t.lineTo(nt(r), nt(i + 8)), t.closePath(), t.fillStyle = "rgba(0, 255, 0, .85)", t.fill(), t.restore()
            }
        }, {
            key: "rect", value: function (e, t) {
                var n = this.ctx, i = e.x, r = e.y, o = e.width, a = e.height, s = e.bgcolor, l = e.merge;
                if (n.save(), n.beginPath(), s && "#fff" != s && "#ffffff" != s || !0 === this.fillCellWhite) {
                    if (n.fillStyle = s || "#fff", "#fff" === n.fillStyle || "#ffffff" === n.fillStyle) n.rect(it(i + 1), it(r + 1), nt(o - 2), nt(a - 2)); else if (1 == l) {
                        var c = it(i);
                        c < 1 ? n.rect(c, it(r), nt(o) - 1, nt(a)) : n.rect(c, it(r), nt(o), nt(a))
                    } else n.rect(it(i), it(r), nt(o), nt(a));
                    n.clip(), n.fill()
                }
                t(), n.restore()
            }
        }, {
            key: "rectPrint", value: function (e, t) {
                var n = this.ctx, i = e.x, r = e.y, o = e.width, a = e.height, s = e.bgcolor, l = e.merge;
                n.save(), n.beginPath(), n.fillStyle = s || "#fff";
                var c = it(i), u = it(r), h = nt(o), d = nt(a);
                if ("#fff" != n.fillStyle && "#ffffff" != n.fillStyle) {
                    if (1 == l) {
                        var f = it(i);
                        f < 1 ? n.rect(f, u, h - 1, d) : n.rect(f, u, h, d)
                    } else n.rect(c, u, h, d);
                    n.clip(), n.fill()
                }
                t(), n.restore()
            }
        }, {
            key: "strokeRect", value: function (e, t, n, i) {
                return this.ctx.strokeRect(nt(e) - .5, nt(t) - .5, nt(n), nt(i)), this
            }
        }, {
            key: "setLineDash", value: function (e) {
                return this.ctx.setLineDash(e), this
            }
        }, {
            key: "groupArrow", value: function (e, t) {
                if (t && "group" === t.aggregate) {
                    var n = it(e.x), i = it(e.y), r = "right" == t.direction, o = this.ctx,
                        a = r ? [n, i + ot] : [n + ot, i], s = r ? [n + rt, i + ot] : [n + ot, i + rt],
                        l = r ? [n + rt / 2, i + 2 * ot / 5] : [n + 2 * ot / 5, i + rt / 2],
                        c = r ? [n + rt / 2, i + 8 * ot / 5] : [n + 8 * ot / 5, i + rt / 2];
                    o.save(), o.strokeStyle = "#000", o.lineWidth = .5, o.beginPath(), o.moveTo.apply(o, a), o.lineTo.apply(o, s), o.moveTo.apply(o, l), o.lineTo.apply(o, s), o.moveTo.apply(o, c), o.lineTo.apply(o, s), o.stroke(), o.restore()
                }
            }
        }]), e
    }();

    function ht(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || vt(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function dt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ft(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var i = Object.getOwnPropertySymbols(e);
            t && (i = i.filter((function (t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, i)
        }
        return n
    }

    function gt(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? ft(Object(n), !0).forEach((function (t) {
                pt(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ft(Object(n)).forEach((function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
        }
        return e
    }

    function pt(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    function mt(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = vt(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function vt(e, t) {
        if (e) {
            if ("string" == typeof e) return yt(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? yt(e, t) : void 0
        }
    }

    function yt(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    var bt = {fillStyle: "#f4f5f8"}, Ct = {fillStyle: "#fff", lineWidth: tt, strokeStyle: "#e6e6e6"},
        wt = {fillStyle: "red", lineWidth: 1.5, strokeStyle: "#4b89ff"};
    var It = ["img", "qrcode", "barcode"];

    function xt(e, t) {
        var n = this.data.cellRect(e, t), i = n.left, r = n.top, o = n.width, a = n.height, s = n.cell,
            l = new st(i, r, o, a, 5);
        return s.lineStart && s.lineStart.length > 0 && l.setLineStart(s.lineStart), s.merge && l.isMergeCell(), l
    }

    function At(e, t, n, i) {
        var r = this.data, o = r.scroll, a = (o.x, o.y, r.cellRect(e, t)), s = a.left, l = a.top, c = a.width,
            u = a.height, h = a.cell, d = new st(s - i, l - n, c, u, 5);
        return h.lineStart && h.lineStart.length > 0 && d.setLineStart(h.lineStart), h.merge && d.isMergeCell(), d
    }

    function _t(e, t) {
        var n = this, i = this.draw, r = this.data, o = r.sortedRowMap, a = e;
        o.has(e) && (a = o.get(e));
        var s = r.getCell(a, t);
        if (null !== s && "{}" != JSON.stringify(s)) {
            var l = !1;
            "editable" in s && 0 == s.editable && (l = !0);
            var c = r.getCellStyleOrDefault(a, t), u = xt.call(this, e, t);
            u.bgcolor = c.bgcolor, void 0 !== c.border && (u.setBorders(c.border), i.strokeBorders(u)), " " == s.text && (u.spaceCell = !0, !0 === r.settings.readOnly && (u.readOnly = !0)), i.rect(u, (function () {
                var o, h = s.text || "";
                if (o = h, "[object Object]" == Object.prototype.toString.call(o) && (h = JSON.stringify(h)), 1 == r.settings.readOnly ? (h = h.toString().indexOf("=DB") >= 0 ? r.getExpRealValue(h) : _e(h, Me, (function (e, t) {
                    return r.getCellTextOrDefault(t, e)
                })), 1 == r.settings.expReplace && (s.text = h), h && c.format && (h = "number" == c.format && (s.decimalPlaces || 0 === s.decimalPlaces || "0" === s.decimalPlaces) ? $e(h, s.decimalPlaces) : Ve[c.format].render(h))) : (h.indexOf("=DB") >= 0 && r.addExpression(h), i.groupArrow(u, s)), function (e, t) {
                    return !(!e || !e.text) && (1 == t ? It.indexOf(e.display) >= 0 : e.text.indexOf("$") >= 0 || e.text.indexOf("#") >= 0 ? "qrcode" == e.display || "barcode" == e.display : It.indexOf(e.display) >= 0)
                }(s, r.settings.readOnly)) {
                    console.log(a, t);
                    var d = {
                        ri: a,
                        ci: t,
                        config: s.config,
                        left: u.x,
                        top: u.y,
                        width: u.width,
                        height: u.height,
                        display: s.display,
                        text: s.text,
                        rendered: s.rendered
                    };
                    n.cellRenderEvent(d)
                } else {
                    var f = Object.assign({}, c.font);
                    f.size = ve(f.size);
                    var g = {
                        align: c.align,
                        valign: c.valign,
                        font: f,
                        color: c.color,
                        strike: c.strike,
                        underline: c.underline
                    };
                    "link" == s.display && (g.color = r.getLinkCellColor(s), g.underline = !0), i.text(h, u, g, c.textwrap, (function (e) {
                        e && 1 == r.settings.readOnly && r.rows.setAutoLineHeight(a, e)
                    })), r.validations.getError(e, t) && i.error(u), l && i.frozen(u)
                }
            }))
        }
    }

    function St(e, t) {
        var n = this.draw, i = this.data, r = i.sortedRowMap, o = e;
        r.has(e) && (o = r.get(e));
        var a = i.getCell(o, t);
        if (null !== a && "{}" != JSON.stringify(a)) {
            var s = !1;
            "editable" in a && 0 == a.editable && (s = !0);
            var l = i.getCellStyleOrDefault(o, t), c = xt.call(this, e, t);
            c.bgcolor = l.bgcolor, void 0 !== l.border && (c.setBorders(l.border), n.strokeBorders(c));
            var u = a.text || "";
            1 == i.settings.readOnly && (u.toString().indexOf("=DB") >= 0 ? u = i.getExpRealValue(u) : (u = _e(u, Me, (function (e, t) {
                return i.getCellTextOrDefault(t, e)
            })), l.format && u && (u = Ve[l.format].render(u)))), !u || It.indexOf(a.display) >= 0 || n.rectPrint(c, (function () {
                l.format && (u = Ve[l.format].render(u));
                var r = Object.assign({}, l.font);
                r.size = ve(r.size), n.text(u, c, {
                    align: l.align,
                    valign: l.valign,
                    font: r,
                    color: l.color,
                    strike: l.strike,
                    underline: l.underline
                }, l.textwrap, (function (e) {
                    e && 1 == i.settings.readOnly && i.rows.setAutoLineHeight(o, e)
                })), i.validations.getError(e, t) && n.error(c), s && n.frozen(c)
            }))
        }
    }

    function kt(e) {
        var t = this, n = this.data, i = this.draw;
        if (e) {
            var r = n.autoFilter;
            if (!r.active()) return;
            var o = r.hrange();
            e.intersects(o) && o.each((function (e, n) {
                var r = xt.call(t, e, n);
                i.dropdown(r)
            }))
        }
    }

    function Lt(e, t, n, i, r) {
        var o = this, a = this.draw, s = this.data;
        a.save(), s.settings.readOnly ? a.translate(t, n).translate(i - s.settings.col.indexWidth, r - s.settings.row.height) : a.translate(t, n).translate(i, r);
        var l = s.exceptRowSet, c = s.exceptRowTotalHeight(e.sri, e.eri);
        a.save(), a.translate(0, -c), e.each((function (e, t) {
            _t.call(o, e, t)
        }), (function (e) {
            return function (e) {
                var t = l.has(e);
                if (t) {
                    var n = s.rows.getHeight(e);
                    a.translate(0, -n)
                }
                return !t
            }(e)
        })), a.restore();
        var u = new Set;
        a.save(), a.translate(0, -c), s.eachMergesInView(e, (function (e) {
            var t = e.sri, n = e.sci, i = e.eri;
            if (l.has(t)) {
                if (!u.has(t)) {
                    u.add(t);
                    var r = s.rows.sumHeight(t, i + 1);
                    a.translate(0, -r)
                }
            } else _t.call(o, t, n)
        })), a.restore(), kt.call(this, e), a.restore(), be.clear()
    }

    function Tt(e, t, n, i) {
        var r = this.draw;
        r.save(), r.attr({fillStyle: "rgba(75, 137, 255, 0.08)"}).fillRect(e, t, n, i), r.restore()
    }

    function Ot(e, t, n, i, r, o) {
        var a = this, l = this.draw, c = this.data, u = t.h, h = t.w, d = o + i, f = r + n;
        l.save(), l.attr(bt), "all" !== e && "left" !== e || l.fillRect(0, d, n, u), "all" !== e && "top" !== e || l.fillRect(f, 0, h, i);
        var g = c.selector.range, p = g.sri, m = g.sci, v = g.eri, y = g.eci;
        l.attr({
            textAlign: "center",
            textBaseline: "middle",
            font: "500 ".concat(nt(12), "px Source Sans Pro"),
            fillStyle: "#585757",
            lineWidth: tt(),
            strokeStyle: "#e6e6e6"
        }), "all" !== e && "left" !== e || (c.rowEach(t.sri, t.eri, (function (e, t, i) {
            var r = d + t, o = e;
            l.line([0, r], [n, r]), p <= o && o < v + 1 && Tt.call(a, 0, r, n, i), l.fillText(o + 1, n / 2, r + i / 2)
        })), l.line([0, u + d], [n, u + d]), l.line([n, d], [n, u + d])), "all" !== e && "top" !== e || (c.colEach(t.sci, t.eci, (function (e, t, n) {
            var r = f + t, o = e;
            l.line([r, 0], [r, i]), m <= o && o < y + 1 && Tt.call(a, r, 0, n, i), l.fillText(s(o), r + n / 2, i / 2)
        })), l.line([h + f, 0], [h + f, i]), l.line([0, i], [h + f, i])), l.restore()
    }

    function Rt(e, t) {
        var n = this.draw;
        n.save(), n.attr({fillStyle: "#f4f5f8"}).fillRect(0, 0, e, t), n.restore()
    }

    function Et(e, t, n, i, r) {
        var o = e.sri, a = e.sci, s = e.eri, l = e.eci, c = e.w, u = e.h, h = this.draw, d = this.data, f = d.settings;
        h.save(), h.attr(Ct).translate(t + i, n + r), h.clearRect(0, 0, c, u), f.showGrid ? (d.rowEach(o, s, (function (e, t, n) {
            e !== o && h.line([0, t], [c, t]), e === s && h.line([0, t + n], [c, t + n])
        })), d.colEach(a, l, (function (e, t, n) {
            e !== a && h.line([t, 0], [t, u]), e === l && h.line([t + n, 0], [t + n, u])
        })), h.restore()) : h.restore()
    }

    function Pt(e, t, n, i) {
        var r = this.draw, o = this.data, a = o.viewWidth() - e, s = o.viewHeight() - t;
        r.save().translate(e, t).attr({strokeStyle: "rgba(75, 137, 255, .6)"}), r.line([0, i], [a, i]), r.line([n, 0], [n, s]), r.restore()
    }

    function Mt(e) {
        this.draw.img(e)
    }

    function Nt(e, t, n, i, r) {
        var o = e.sri, a = e.sci, s = e.eri, l = e.eci, c = e.w, u = e.h, h = this.draw, d = this.data, f = d.settings;
        h.save(), h.attr(Ct).translate(t + i, n + r), h.clearRect(0, 0, c, u), f.showGrid ? (h.line([0, 0], [c, 0]), h.line([x, 0], [x, u]), console.log("划线开始-------------"), d.rowEach(o, s, (function (e, t, n) {
            e !== o && h.line([0, t], [c, t]), e === s && h.line([0, t + n], [c, t + n])
        })), d.colEach(a, l, (function (e, t, n) {
            e !== a && h.line([t, 0], [t, u]), e === l && h.line([t + n, 0], [t + n, u])
        })), console.log("划线结束-------------"), h.restore()) : h.restore()
    }

    function Dt(e, t, n, i) {
        var r = this.draw, o = this.data, a = o.sortedRowMap, s = e;
        a.has(e) && (s = a.get(e));
        var l = o.getCell(s, t);
        if (null !== l && "{}" != JSON.stringify(l)) {
            var c = !1;
            "editable" in l && 0 == l.editable && (c = !0);
            var u = o.getCellStyleOrDefault(s, t), h = At.call(this, e, t, n, i);
            h.bgcolor = u.bgcolor, void 0 !== u.border && (h.setBorders(u.border), r.strokeBorders(h));
            var d = l.text || "";
            1 == o.settings.readOnly && (d = d.toString().indexOf("=DB") >= 0 ? o.getExpRealValue(d) : _e(d, Me, (function (e, t) {
                return o.getCellTextOrDefault(t, e)
            }))) && u.format && (d = "number" == u.format && (l.decimalPlaces || 0 === l.decimalPlaces || "0" === l.decimalPlaces) ? $e(d, l.decimalPlaces) : Ve[u.format].render(d));
            var f = o.displayConfig;
            r.rectPrint(h, (function () {
                if (It.indexOf(l.display) >= 0) {
                    var n;
                    if (l.text) if (console.log("cell.rendered", l.rendered), n = "qrcode" == l.display ? document.getElementById("qr-".concat(l.rendered)).firstChild : document.getElementById("".concat(l.rendered)).querySelector("img")) {
                        var i = {};
                        if (l.config) {
                            var a = f[l.config];
                            i.height = a.height, "qrcode" == l.display && (i.width = a.width)
                        } else if ("qrcode" == l.display) {
                            var g = h.width > h.height ? h.height : h.width;
                            i.width = g, i.height = g
                        }
                        var p = Object.assign({left: h.x, top: h.y, width: h.width, height: h.height}, i);
                        n.crossorigin = "Anonymous", r.cellLayerImage(p, n)
                    }
                } else {
                    var m = Object.assign({}, u.font);
                    m.size = ve(m.size), r.text(d, h, {
                        align: u.align,
                        valign: u.valign,
                        font: m,
                        color: u.color,
                        strike: u.strike,
                        underline: u.underline
                    }, u.textwrap, (function (e) {
                        e && 1 == o.settings.readOnly && o.rows.setAutoLineHeight(s, e)
                    })), o.validations.getError(e, t) && r.error(h), c && r.frozen(h)
                }
            }))
        }
    }

    function Bt(e, t, n, i, r, o) {
        var a = this, s = this.draw, l = this.data;
        s.save(), s.translate(t, n).translate(0, 0), !0 === o && s.translate(-1, -2);
        var c = l.exceptRowSet, u = l.exceptRowTotalHeight(e.sri, e.eri);
        s.save(), s.translate(0, -u), console.log("===============begin"), e.each((function (e, t) {
            Dt.call(a, e, t, i, r)
        }), (function (e) {
            return function (e) {
                var t = c.has(e);
                if (t) {
                    var n = l.rows.getHeight(e);
                    s.translate(0, -n)
                }
                return !t
            }(e)
        })), s.restore(), console.log("===============end");
        var h = new Set;
        s.save(), s.translate(0, -u), l.eachMergesInView(e, (function (e) {
            var t = e.sri, n = e.sci, i = e.eri;
            if (c.has(t)) {
                if (!h.has(t)) {
                    h.add(t);
                    var r = l.rows.sumHeight(t, i + 1);
                    s.translate(0, -r)
                }
            } else St.call(a, t, n)
        })), s.restore(), kt.call(this, e), s.restore(), be.clear()
    }

    function jt(e, t) {
        var n = e.width, i = e.height, r = e.top, o = e.left, a = parseInt(r) + parseInt(i),
            s = parseInt(o) + parseInt(n), l = parseInt(t.x), c = parseInt(t.y);
        return o = parseInt(o, 10), r = parseInt(r, 10), l <= s && l >= o && c <= a && c >= r
    }

    function Ft() {
        var e = this.data, t = e.loopBlockList, n = e.zonedEditionList;
        Ht.call(this, t, "循环块"), Ht.call(this, n, "分版")
    }

    function Ht(e, t) {
        var n = this.draw, i = this.data;
        if (e && e.length > 0) {
            n.save();
            var r, o = mt(e);
            try {
                for (o.s(); !(r = o.n()).done;) {
                    var a = r.value, s = a.sri, l = a.sci, c = a.eri, u = a.eci, h = new m(s, l, c, u),
                        d = i.getRect(h), f = d.width, g = d.height, p = d.top + 25, v = d.left + 60, y = i.settings,
                        b = y.loopBlockLineColor, C = y.loopBlockLineDash;
                    b && (wt.strokeStyle = b), n.attr(wt), C && n.setLineDash([2.5, 2.5]);
                    var w = [v, p], I = [v + f, p], x = [v + f, p + g], A = [v, p + g];
                    n.line(w, I), n.line(w, A), n.line(I, x), n.line(A, x), n.fillText(t, v, p - 5)
                }
            } catch (e) {
                o.e(e)
            } finally {
                o.f()
            }
            n.restore()
        }
    }

    function Wt(e) {
        var t = this.data;
        if (this.layerList && this.layerList.length > 0) {
            this.layerList.sort((function (e, t) {
                return e.designRow - t.designRow
            })), console.log("this.layerList>>", this.layerList);
            var n, i = mt(this.layerList);
            try {
                for (i.s(); !(n = i.n()).done;) {
                    var r = n.value;
                    if (!1 !== r.exist) {
                        var o = void 0;
                        if (e || !0 !== t.settings.readOnly) o = t.getRCPosition(r.row, r.col); else {
                            var a = r.getViewPagePosition();
                            o = t.getRCPosition(a.row, a.col)
                        }
                        r.changeContainerPadding(t.settings.readOnly), r.changeLittlePosition(o, !0)
                    }
                }
            } catch (e) {
                i.e(e)
            } finally {
                i.f()
            }
        }
    }

    function Vt() {
        var e, t = this.cellLayerList, n = this.data, i = mt(t);
        try {
            for (i.s(); !(e = i.n()).done;) {
                var r = e.value;
                if (!1 !== r.exist) {
                    var o = r.getLayerId(), a = n.getLayerCellIndex(o), s = a.row, l = a.col, c = a.width, u = a.height,
                        h = n.getRCPosition(s, l), d = void 0, f = n.getCell(s, l);
                    f && "qrcode" == f.display && f.config && (c = n.displayConfig[f.config].width, u = n.displayConfig[f.config].height), d = !0 === n.settings.readOnly ? gt({}, h) : Object.assign({
                        width: c,
                        height: u
                    }, h), r.changeCellLayerStyle(d)
                }
            }
        } catch (e) {
            i.e(e)
        } finally {
            i.f()
        }
    }

    function Gt(e) {
        var t = this;
        return new Promise((function (n) {
            e || n();
            var i = t.data.settings.domain, r = {width: e.width, height: e.height, top: 0, left: 0, src: e.path};
            r.src.startsWith("http") ? t.data.settings.downLoadImage(r.src).then((function (e) {
                var t = e.data;
                if (t.success) {
                    var o = "".concat(i).concat(de, "/").concat(t.result);
                    r.absrc = o
                } else r.absrc = r.src;
                n(r)
            })) : (r.absrc = "".concat(i).concat(de, "/").concat(r.src), n(r))
        }))
    }

    var zt = function () {
        function e(t, n, i, r) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.bar = t, this.el = n, this.draw = new ut(n, i.viewWidth(), i.viewHeight()), this.data = i, this.layerList = r, this.cellRenderEvent = function (e) {
            }, this.cellLayerList = []
        }

        var t, n, i;
        return t = e, (n = [{
            key: "changePrintStatus", value: function (e) {
                !0 === e && this.draw.changePrintDegree(this.data.printDegree)
            }
        }, {
            key: "addCellLayer", value: function (e) {
                this.cellLayerList.push(e)
            }
        }, {
            key: "cellLayerRendered", value: function (e) {
                return !!this.getCellLayerById(e)
            }
        }, {
            key: "getCellLayerById", value: function (e) {
                var t = null;
                if (this.cellLayerList && this.cellLayerList.length > 0) for (var n = 0; n < this.cellLayerList.length; n++) if (this.cellLayerList[n].getLayerId() == e) {
                    t = this.cellLayerList[n];
                    break
                }
                return t
            }
        }, {
            key: "changeCellLayerSize", value: function (e) {
                if (this.cellLayerList && this.cellLayerList.length > 0) for (var t = 0; t <= e.length; t++) for (var n = e[t], i = n.id, r = n.width, o = n.height, a = 0; a < this.cellLayerList.length; a++) this.cellLayerList[a].getLayerId() == i && this.cellLayerList[a].changeCellLayerSize(r, o)
            }
        }, {
            key: "setBackground", value: function (e) {
                this.background = e
            }
        }, {
            key: "drawImage", value: function (e) {
                Mt.call(this, e)
            }
        }, {
            key: "drawPrintLine", value: function (e, t) {
                var n = this.draw, i = n.ctx;
                n.save(), i.strokeStyle = "green", i.lineWidth = 2;
                var r = this.data.settings.col.minWidth, o = (e - t) * at + it(r);
                i.moveTo(o, 0), i.lineTo(o, i.canvas.height), i.setLineDash([2.5, 2.5]), i.stroke(), n.restore()
            }
        }, {
            key: "drawPrintLineX", value: function (e, t) {
                var n = this.draw, i = n.ctx;
                n.save(), i.strokeStyle = "green", i.lineWidth = 2;
                var r = this.data.settings.row.height, o = (e - t) * at + it(r);
                i.moveTo(0, o), i.lineTo(i.canvas.width, o), i.setLineDash([2.5, 2.5]), i.stroke(), n.restore()
            }
        }, {
            key: "changePrintLine", value: function (e, t) {
                this.render(e, t)
            }
        }, {
            key: "getLineWidth", value: function () {
                if (this.bar) return this.data.printPaperWidth
            }
        }, {
            key: "getLineHeight", value: function () {
                if (this.bar) return this.data.printPaperHeight
            }
        }, {
            key: "render", value: function (e, t, n) {
                var i = this;
                e || (e = this.getLineWidth()), t || (t = this.getLineHeight());
                var r = this.bar.toolbar;
                if (n && this.changePrintStatus(), r && !r.isHide && !n) {
                    if (e) {
                        var o = Number(e);
                        this.data.printElWidth = o
                    }
                    if (t) {
                        var a = Number(t);
                        this.data.printElHeight = a
                    }
                }
                return new Promise((function (r) {
                    var o = i.data, a = o.scroll, s = a.x, l = a.y, c = o.rows, u = o.cols.indexWidth, h = c.height;
                    i.draw.resize(o.viewWidth(), o.viewHeight()), i.background && 0 != i.background.getInfo() && (i.draw.noFillWhite(), i.background.setPosition(o.settings.readOnly), i.background.changePositionOfScroll(s, l)), i.clear();
                    var d = o.viewRange();
                    if (1 == o.settings.expReplace) {
                        d.eri = o.settings.rowNumber;
                        var f = o.getDataWidth().maxCol;
                        d.eci = f
                    }
                    var g = o.freezeTotalWidth(), p = o.freezeTotalHeight();
                    Et.call(i, d, u, h, g, p), !1 === o.settings.readOnly && o.resetExpression(), Lt.call(i, d, u, h, -s, -l), !1 === o.settings.readOnly && (Ft.call(i), Ot.call(i, "all", d, u, h, g, p), Rt.call(i, u, h)), Wt.call(i, n), Vt.call(i);
                    var m = ht(o.freeze, 2), v = m[0], y = m[1];
                    if (v > 0 || y > 0) {
                        if (v > 0) {
                            var b = d.clone();
                            b.sri = 0, b.eri = v - 1, b.h = p, Et.call(i, b, u, h, g, 0), Lt.call(i, b, u, h, -s, 0), Ot.call(i, "top", b, u, h, g, 0)
                        }
                        if (y > 0) {
                            var C = d.clone();
                            C.sci = 0, C.eci = y - 1, C.w = g, Et.call(i, C, u, h, 0, p), Ot.call(i, "left", C, u, h, 0, p), Lt.call(i, C, u, h, 0, -l)
                        }
                        var w = o.freezeViewRange();
                        Et.call(i, w, u, h, 0, 0), Ot.call(i, "all", w, u, h, 0, 0), Lt.call(i, w, u, h, 0, 0), Pt.call(i, u, h, g, p)
                    }
                    var I = i.bar.toolbar;
                    I && !I.isHide && (i.drawPrintLine(e, s), i.drawPrintLineX(t, l)), r()
                }))
            }
        }, {
            key: "getMoveRow", value: function (e) {
                console.log("-------------获取需要移动的距离");
                var t = this.data, n = 0, i = t.repeatRange;
                if (!i) return n;
                var r, o = mt(i);
                try {
                    for (o.s(); !(r = o.n()).done;) {
                        var a = r.value, s = new m(a.sri, a.sci, a.eri, a.eci, 0, 0);
                        console.log("data.settings.repeatRange", t.repeatRange);
                        var l = e.designRow;
                        n > 0 && (l += Number(n));
                        var c = e.designCol, u = e.containerWidth, h = e.containerHeight, d = !1;
                        if (console.log("行：" + l + "，列：" + c), s.includes(l, c)) d = !0; else if (c <= s.sci && l <= s.eri && l >= s.sri) {
                            var f = Number(t.cols.sumWidth(c, s.sci));
                            console.log("distance:" + f + ",layerWidth:" + u), f < u && (d = !0)
                        }
                        if (d) {
                            var g = s.eri - s.sri;
                            n += Number(g), e.setMoveRow(n), e.setRendered(!0)
                        } else {
                            var p, v = t.getRCPosition(l, c), y = v.left, b = v.top, C = {x: y, y: b},
                                w = {x: Number(y) + Number(u), y: b},
                                I = {x: Number(y) + Number(u), y: Number(b) + Number(h)},
                                x = {x: y, y: Number(b) + Number(h)}, A = mt(this.layerList);
                            try {
                                for (A.s(); !(p = A.n()).done;) {
                                    var _ = p.value;
                                    if (!0 === _.getRendered()) {
                                        var S = t.getRCPosition(_.row, _.designCol), k = _.getLayerRect(), L = k.width,
                                            T = k.height;
                                        if (Object.assign(S, {
                                            width: L,
                                            height: T
                                        }), console.log("itemLayerPosition", S), jt(S, C) || jt(S, w) || jt(S, I) || jt(S, x)) {
                                            var O = s.eri - s.sri;
                                            n += Number(O), e.setMoveRow(n), e.setRendered(!0);
                                            break
                                        }
                                    }
                                }
                            } catch (e) {
                                A.e(e)
                            } finally {
                                A.f()
                            }
                        }
                    }
                } catch (e) {
                    o.e(e)
                } finally {
                    o.f()
                }
                return console.log("移动行数：", n), n
            }
        }, {
            key: "resizeDraw", value: function () {
                if (this.data.chartList) {
                    this.draw.ctx.canvas.width /= 2;
                    var e = this.draw.el, t = e.height, n = e.width;
                    this.draw.resize(t, n)
                }
            }
        }, {
            key: "renderScreen", value: function () {
                var e = this;
                return new Promise((function (t) {
                    var n = e.data, i = e.draw, r = n.rows, o = n.cols.indexWidth, a = r.height,
                        s = n.getRealPrintSize(), l = s.width, c = s.height, u = window.devicePixelRatio;
                    u > 1 ? e.draw.resize(l * u, c * u) : e.draw.resize(l, c), e.clear();
                    var h = n.viewPrintRange();
                    h.setWidthAndHeight(h.w - o, h.h);
                    var d = n.freezeTotalWidth(), f = n.freezeTotalHeight(), g = n.scroll, p = g.x, m = g.y;
                    Nt.call(e, h, o, a, d, f), Gt.call(e, n.background).then((function (n) {
                        i.img(n).then((function () {
                            i.restore(), Bt.call(e, h, o, 0, -p, -m), t(null)
                        }))
                    }))
                }))
            }
        }, {
            key: "renderOneForMulti", value: function () {
                var e = this;
                return new Promise((function (t) {
                    var n = e.data, i = n.rows, r = n.cols.indexWidth, o = i.height, a = n.printElWidth,
                        s = n.printElHeight || n.viewHeight(), l = window.devicePixelRatio;
                    l > 1 ? e.draw.resize(a * l, s * l) : e.draw.resize(a, s), console.log("打印高宽设置-----"), console.log("width-----", a), console.log("height-----", s), console.log("打印高宽设置-----"), e.draw.resizeForPrintty(a, s), e.clear();
                    var c = n.viewRange();
                    c.setWidthAndHeight(c.w - r, c.h);
                    var u = n.freezeTotalWidth(), h = n.freezeTotalHeight(), d = n.scroll, f = d.x, g = d.y;
                    console.log("renderOneForMulti:", c, r, o, f, g), Nt.call(e, c, r, o, u, h), Bt.call(e, c, r, o, -f, -g), t(null)
                }))
            }
        }, {
            key: "renderAllRange", value: function (e) {
                var t = this;
                return this.layerList = e, new Promise((function (e) {
                    var n = t.data, i = n.rows, r = n.cols, o = n.allRange, a = o.sri, s = o.eri, l = o.sci, c = o.eci,
                        u = r.sumWidth(0, l), h = i.sumHeight(0, a);
                    l = 0, a = 0;
                    var d = r.sumWidth(l, c + 1) + u, f = i.sumHeight(a, s + 1) + h;
                    t.draw.resize(d, f);
                    var g = r.indexWidth, p = i.height;
                    t.clear();
                    var m = n.getAllCellRange({sci: l, sri: a, eci: c + 1, eri: s + 1, height: f, width: d}),
                        v = n.freezeTotalWidth(), y = n.freezeTotalHeight(), b = n.scroll, C = b.x, w = b.y;
                    Et.call(t, m, g, p, v, y), Lt.call(t, m, g, p, -C, -w), Wt.call(t, !0), Vt.call(t), e()
                }))
            }
        }, {
            key: "renderSelector", value: function () {
                var e = this;
                return new Promise((function (t) {
                    var n = e.data, i = n.rows, r = n.cols.indexWidth, o = i.height, a = n.getSelectRect(), s = a.eci,
                        l = a.eri, c = a.sci, u = a.sri, h = a.h, d = a.w;
                    if (s) {
                        var f = n.getRect({sri: u, sci: c, eri: l, eci: s}), g = f.t, p = f.l;
                        e.draw.resize(d + r, h + o), e.clear();
                        var m = n.getAllCellRange({sci: c, sri: u, eci: s, eri: l + 1, height: h, width: d});
                        console.log(n.getSelectRect()), console.log("viewRange", m), n.freezeTotalWidth(), n.freezeTotalHeight();
                        var v = n.scroll;
                        v.x, v.y, Nt.call(e, m, r, o, 0, 0), Bt.call(e, m, r, o, g, p), t({t: g, l: p})
                    } else xs.tip("请选择打印区域")
                }))
            }
        }, {
            key: "clear", value: function () {
                this.draw.clear()
            }
        }, {
            key: "renderBackend", value: function (e, t) {
                var n = this;
                return new Promise((function (i) {
                    if (e && 0 != e.length) {
                        var r = e[0];
                        if (r.isBackend) {
                            var o = n.data, a = o.rows, s = o.cols.indexWidth;
                            a.height, r.getBackendDrawBox(o.settings.downLoadImage, !0).then((function (e) {
                                var r = Number(e.width), a = Number(e.height);
                                n.draw.resize(r, a), n.clear();
                                var l = o.calcBackendRange(r, a),
                                    c = (o.freezeTotalWidth(), o.freezeTotalHeight(), o.scroll), u = c.x, h = c.y,
                                    d = n.draw;
                                d.save(), d.attr(Ct), d.clearRect(0, 0, l.w, l.h), d.restore(), t ? d.img(e).then((function () {
                                    console.log("图片地址", e.absrc), d.restore(), Bt.call(n, l, s, 0, -u, -h, !0), i({
                                        width: r,
                                        height: a
                                    })
                                })) : (Bt.call(n, l, s, 0, -u, -h, !0), i({width: r, height: a}))
                            }))
                        } else i()
                    } else i()
                }))
            }
        }, {
            key: "renderOnePage", value: function (e, t) {
                var n = this;
                return new Promise((function (i) {
                    var r = n.data, o = n.draw, a = r.rows, s = r.cols.indexWidth, l = a.height,
                        c = "pdf" == e ? r.getRealPdfSize() : r.getRealPrintSize(), u = c.width, h = c.height;
                    !0 === t && (h = r.viewHeight());
                    var d = window.devicePixelRatio;
                    d > 1 ? n.draw.resize(u * d, h * d) : n.draw.resize(u, h), n.clear();
                    var f = r.viewPrintPaperRange(u, h), g = r.freezeTotalWidth(), p = r.freezeTotalHeight(),
                        m = r.scroll, v = m.x, y = m.y;
                    Nt.call(n, f, s, l, g, p), Gt.call(n, r.background).then((function (e) {
                        o.img(e).then((function () {
                            o.restore(), Bt.call(n, f, s, 0, -v, -y), i(null)
                        }))
                    }))
                }))
            }
        }]) && dt(t.prototype, n), i && dt(t, i), e
    }();

    function Zt(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var $t = function () {
        function e(t, n, i, r) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.currentPage = t, this.pageMaxRowList = n, this.pageSizeList = i, this.isLastPage = r
        }

        var t, n, i;
        return t = e, (n = [{
            key: "setHeight", value: function (e) {
                this.height = e
            }
        }, {
            key: "getHeight", value: function () {
                return this.height
            }
        }]) && Zt(t.prototype, n), i && Zt(t, i), e
    }(), Kt = n(99), Xt = n.n(Kt), Yt = n(56), Ut = n.n(Yt);

    function Jt(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "excel_online";
        return new Promise((function (i, r) {
            var o = new XMLHttpRequest, a = new FormData;
            a.append("file", e), e.name && a.append("fileName", e.name), a.append("biz", n), o.open("POST", t), o.send(a), o.onreadystatechange = function () {
                if (4 === o.readyState && 200 == o.status) {
                    var e = JSON.parse(o.responseText);
                    e.success ? i(e) : r(e.message)
                } else 404 == o.status && r("请求不存在")
            }
        }))
    }

    function qt(e) {
        return new Promise((function (t, n) {
            var i = new XMLHttpRequest;
            i.open("GET", e), i.send(null), i.onreadystatechange = function () {
                if (4 === i.readyState && 200 == i.status) {
                    var e = JSON.parse(i.responseText);
                    e.success ? t(e) : n(e.message)
                }
            }
        }))
    }

    var Qt = {text: "http://jimureport.com/", width: 128, height: 128, colorDark: "#000000", colorLight: "#ffffff"},
        en = {
            barcodeContent: "jmreport",
            format: "CODE128",
            width: 2,
            height: 100,
            displayValue: !1,
            text: "jmreport",
            fontOptions: "",
            font: "monospace",
            textAlign: "center",
            textPosition: "bottom",
            textMargin: 2,
            fontSize: 20,
            background: "#fff",
            lineColor: "#000",
            margin: 10
        };

    function tn(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function nn(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function rn(e, t, n) {
        var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
            o = Object(i.b)("span").addClass("cell-content").addClass("cell-content-line").css("background-color", e).css("height", "".concat(t, "px")).css("transform", "rotate(".concat(n, "deg)")).css("transform-origin", "top");
        return r > 0 && o.css("top", "".concat(r, "px")), o
    }

    function on(e, t) {
        var n = Object(i.b)("span").addClass("cell-content").html(e);
        return Object.keys(t).map((function (e) {
            n.css(e, t[e])
        })), n
    }

    var an = function () {
        function e(t, n, r, o) {
            var a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "#000";
            tn(this, e);
            var s = Object(i.b)("div").addClass("jm-print-cellline"), l = n.split("|");
            if ("leftbottom" === t) {
                var c = on(l[0], {top: "1px", left: "2px"});
                if (s.child(c), 3 == l.length) {
                    var u = this.getLineWidth30(r, o), h = u.lineWidth1, d = u.lineWidth2, f = u.lineDegree1,
                        g = u.lineDegree2, p = on(l[1], {top: "2px", right: "2px"}),
                        m = on(l[2], {bottom: "1px", right: "2px"}), v = rn(a, d, g - 180, o), y = rn(a, h, f - 180, o);
                    s.children(p, m, y, v)
                } else {
                    var b = this.getLineWidth45(r, o), C = b.lineWidth, w = b.lineDegree,
                        I = on(l[1], {bottom: "1px", right: "2px"}), x = rn(a, C, w - 180, o);
                    s.children(I, x)
                }
            } else {
                var A = on(l[0], {bottom: "1px", left: "2px"});
                if (s.child(A), 3 == l.length) {
                    var _ = this.getLineWidth30(r, o), S = _.lineWidth1, k = _.lineWidth2, L = _.lineDegree1,
                        T = _.lineDegree2, O = on(l[1], {bottom: "2px", left: 2 * r / 3 + "px"}),
                        R = on(l[2], {top: "1px", right: "2px"}), E = rn(a, k, -1 * T), P = rn(a, S, -1 * L);
                    s.children(O, R, P, E)
                } else {
                    var M = this.getLineWidth45(r, o), N = M.lineWidth, D = M.lineDegree,
                        B = on(l[1], {top: "1px", right: "2px"}), j = rn(a, N, -1 * D);
                    s.children(B, j)
                }
            }
            this.container = s
        }

        var t, n, r;
        return t = e, (n = [{
            key: "getContent", value: function () {
                return this.container
            }
        }, {
            key: "getLineWidth30", value: function (e, t) {
                var n = 2 * e / 3, i = 2 * t / 3, r = Math.round(Math.sqrt(n * n + t * t)),
                    o = Math.round(Math.sqrt(e * e + i * i));
                return {
                    lineWidth1: r + 10,
                    lineWidth2: o + 10,
                    lineDegree1: Math.round(180 * Math.asin(n / r) / Math.PI) - 2,
                    lineDegree2: Math.round(180 * Math.asin(e / o) / Math.PI) - 2
                }
            }
        }, {
            key: "getLineWidth45", value: function (e, t) {
                var n = Math.round(Math.sqrt(e * e + t * t));
                return {lineWidth: n, lineDegree: Math.round(180 * Math.asin(e / n) / Math.PI)}
            }
        }]) && nn(t.prototype, n), r && nn(t, r), e
    }();

    function sn(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return ln(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return ln(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function ln(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function cn(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function un(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var i = Object.getOwnPropertySymbols(e);
            t && (i = i.filter((function (t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, i)
        }
        return n
    }

    function hn(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? un(Object(n), !0).forEach((function (t) {
                dn(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : un(Object(n)).forEach((function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
        }
        return e
    }

    function dn(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    function fn() {
        return window.devicePixelRatio || 1
    }

    function gn(e) {
        return parseInt(e * fn(), 10)
    }

    function pn(e, t) {
        var n = "h" + e;
        t.addClass(n), this.styleMap[n + " td"] = "height: " + e + "px;"
    }

    function mn(e) {
        if (e) {
            var t = Object(i.b)("img");
            return t.css("width", "100%"), t.css("height", "100%"), e.startsWith("http") ? t.attr("src", e + "?time=" + (new Date).getTime()) : t.attr("src", "".concat(this.localImagePre, "/").concat(e)), t
        }
        return ""
    }

    function vn(e, t, n) {
        e.height && (n = e.height);
        var r = "";
        (r = e.config ? hn({}, this.displayConfig[e.config]) : Object.assign({}, Qt, {
            width: t,
            height: n
        })).text = e.text;
        var o = Object(i.b)("div").addClass("jm-print-qrcode"), a = r.width;
        return a > r.height && (a = r.height), r.width = a, r.height = a, (a > t || a > n) && o.addClass("full"), new Xt.a(o.el, r), o
    }

    function yn(e, t, n) {
        e.height && (n = e.height);
        var i = "";
        i = e.config ? hn({}, this.displayConfig[e.config]) : Object.assign({}, en, {height: n}), console.log("111", i), i.barcodeContent = e.text;
        var r = document.getElementById("jm-print-temp-image");
        Ut()("#jm-print-temp-image", e.text, i);
        var o = r.cloneNode();
        return o.style = "display: block;width:100%;height:100%;", o
    }

    var bn = function () {
        function e(t, n, i) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.layerList = t.layerList, delete t.layerList, this.json = t, this.data = n;
            var r = n.getPrintPaperInfo();
            this.paperDefinedWidth = r.w, this.leftMargin = 0, this.clearEmpty = i, this.sumWidth = 0, this.maxColIndex = 0, this.rows = JSON.parse(JSON.stringify(t.rows)), this.cols = t.cols, this.styles = t.styles, this.allRange = t.allRange, this.displayConfig = t.displayConfig, this.background = t.background, console.log(123, this.allRange), this.merges = new B, this.merges.setData(t.merges), this.defaultRowHeight = this.data.settings.row.height, this.defaultColWidth = this.data.settings.col.width, this.defaultStyle = this.data.settings.style, this.completeRows(), this.styleMap = {}, this.addDefaultStyle(), this.table = null, this.tableWidth = 0, this.localImagePre = "", this.paperWidth = 0, this.paperHeight = 0, this.mergeCellMap = {}, this.log = !1, this.templatePrint = !1, this.downLoad = n.settings.downLoadImage, this.lastTop = 0, this.columnLeftMap = {}, this.cellPositionMap = {}
        }

        var t, n, r;
        return t = e, (n = [{
            key: "getTable", value: function () {
                var e = this;
                return new Promise((function (t) {
                    t(e.createPage())
                }))
            }
        }, {
            key: "setDomainInfo", value: function (e, t) {
                var n = t || de;
                this.localImagePre = e + n
            }
        }, {
            key: "setPaperInfo", value: function (e, t) {
                this.paperWidth = e, this.paperHeight = t
            }
        }, {
            key: "createPage", value: function () {
                var e = this, t = this.rows, n = 0;
                this.lastTop = 0;
                var r = "", o = [], a = Object.keys(t);
                return this.createFirstTr(), a.map((function (s) {
                    var l = parseInt(s);
                    if (l || l >= 0) {
                        var c = e.createTr(t[s], l, n), u = c.tr, h = c.height, d = c.mergeHeight;
                        if (n + d + 4 > e.paperHeight) {
                            var f = e.paperHeight - n;
                            if (n = 0, o.push(r), f > 0) {
                                var g = Object(i.b)("div").css("height", f + "px").css("width", e.tableWidth + "px");
                                o.push(g), e.lastTop += f
                            }
                        }
                        0 == n && ((r = e.createTable()).child(e.createFirstTr()), e.lastTop += 1), n += h, r.child(u), e.lastTop += h
                    }
                    s == a[a.length - 1] && o.push(r)
                })), o
            }
        }, {
            key: "createTable", value: function () {
                var e = Object(i.b)("table");
                return e.css("border-collapse", "collapse"), e.css("table-layout", "fixed"), !1 === this.templatePrint && 1 == this.clearEmpty && e.css("margin", "0 auto"), e.attr("cellpadding", 0), e.attr("cellspacing", 0), e.css("width", this.tableWidth + "px"), e.addClass("jm-print-table"), e
            }
        }, {
            key: "createFirstTr", value: function () {
                var e = {};
                this.sumWidth = 0;
                for (var t = Object(i.b)("tr").addClass("print-fixed-width-tr"), n = 0; n <= this.allRange.eci; n++) {
                    e[n] = this.sumWidth;
                    var r = this.getCellWidth(n);
                    if (this.sumWidth += r, this.sumWidth > this.paperWidth) break;
                    this.tableWidth < this.sumWidth && (this.tableWidth = this.sumWidth), this.setMaxCol(n), t.child(Object(i.b)("td").css("width", "".concat(r - 6, "px")).html(" "))
                }
                return this.resetTableLeftMargin(), this.columnLeftMap = e, t
            }
        }, {
            key: "resetTableLeftMargin", value: function () {
                var e = (this.paperDefinedWidth || 0) - (this.tableWidth || 0);
                e > 0 && (this.leftMargin = e / 2)
            }
        }, {
            key: "setMaxCol", value: function (e) {
                this.maxColIndex = e
            }
        }, {
            key: "createTr", value: function (e, t, n) {
                var r = this, o = Object(i.b)("tr"), a = e.cells, s = this.getTrRealHeight(e), l = s.height,
                    c = s.mergeHeight, u = s.virtualHeight;
                pn.call(this, l, o);
                var h = !1;
                return n + c > this.paperHeight && (h = !0), a && (this.sumWidth = 0, Object.keys(a).map((function (e) {
                    var n = a[e], i = r.createTd(n, e, parseInt(t), h, c);
                    i && o.child(i)
                }))), u > c && (c = u), {tr: o, height: l, mergeHeight: c}
            }
        }, {
            key: "getCellWidth", value: function (e) {
                var t = this.defaultColWidth;
                return this.cols[e] && (t = this.cols[e].width), t
            }
        }, {
            key: "createTd", value: function (e, t, n, r, o) {
                if (parseInt(t) > this.maxColIndex) return "";
                var a = !0, s = this.merges.getFirstIncludes(n, parseInt(t));
                if (s) {
                    var l = s.sri, c = s.sci;
                    if (l == n && c == t) ; else {
                        if (!(1 == r && l < n)) return "";
                        if (!(e = this.getMergedRealCell(n, l, c))) return "";
                        a = !1
                    }
                }
                var u = Object(i.b)("td"), h = this.getCellWidth(t), d = o;
                if (e.merge) {
                    var f = e.merge;
                    f[0] && (u.attr("rowspan", f[0] + 1), e.height && (d = e.height, u.css("height", d + "px"))), f[1] && u.attr("colspan", f[1] + 1), h = this.getMergeCellWidth(h, parseInt(t), f), !0 === a && this.mergeCell(n, t, e), u.css("width", h + "px")
                }
                this.recordCellPosition(e, t, n), this.handleCellContent(e, u, h, d);
                var g = this.handleCellStyle(e);
                return g && u.addClass(g), u
            }
        }, {
            key: "recordCellPosition", value: function (e, t, n) {
                if (e && e.virtual) {
                    var i = e.virtual, r = !1;
                    if (this.cellPositionMap[i]) {
                        var o = this.cellPositionMap[i], a = o.row;
                        t <= o.col && n >= a && (r = !0)
                    } else r = !0;
                    if (!0 === r) {
                        var s = this.columnLeftMap[t] || 0;
                        s += this.leftMargin;
                        var l = this.lastTop;
                        this.cellPositionMap[i] = {left: s, top: l, row: n, col: t}
                    }
                }
            }
        }, {
            key: "handleCellContent", value: function (e, t, n, i) {
                if (e.text || 0 == e.text) if ("img" === e.display) {
                    var r = mn.call(this, e.text);
                    r && t.child(r), t.css("padding", 0)
                } else if ("qrcode" === e.display) {
                    var o = vn.call(this, e, n, i);
                    o && t.child(o), t.css("padding", 0)
                } else if ("barcode" === e.display) {
                    var a = yn.call(this, e, n, i);
                    a && t.child(a), t.css("padding", 0)
                } else if (e.lineStart) {
                    var s = this.getCellColor(e), l = new an(e.lineStart, e.text, n, i, s);
                    t.child(l.getContent()), t.css("padding", 0)
                } else {
                    var c = this.formatCell(e);
                    t.html(c)
                }
            }
        }, {
            key: "getMergedRealCell", value: function (e, t, n) {
                var i = this.mergeCell(t, n), r = e - t, o = i.merge, a = hn({}, i);
                return a.merge = [o[0] - r, o[1]], a
            }
        }, {
            key: "getLayerHeight", value: function (e) {
                var t = 0;
                if (this.layerList && this.layerList.length > 0) {
                    var n, i = sn(this.layerList);
                    try {
                        for (i.s(); !(n = i.n()).done;) {
                            t = n.value.height;
                            break
                        }
                    } catch (e) {
                        i.e(e)
                    } finally {
                        i.f()
                    }
                }
                return t || 0
            }
        }, {
            key: "getTrRealHeight", value: function (e) {
                var t = this, n = e.cells, i = e.height;
                i || (i = this.defaultRowHeight);
                var r = i, o = 0;
                if (n) {
                    var a = !1;
                    Object.keys(n).map((function (e) {
                        var i = n[e];
                        i && (i.display && i.merge && (r = i.height), i.virtual && (o = t.getLayerHeight(i.virtual)), 0 == a && t.getCellConfigStyle(i).border && (a = !0))
                    })), 1 == a && (i = parseInt(i) + 1, r = parseInt(r) + 1)
                }
                return {height: i, mergeHeight: r, virtualHeight: o}
            }
        }, {
            key: "getMergeCellWidth", value: function (e, t, n) {
                for (var i = e, r = n[1], o = this.defaultColWidth, a = 1; a <= r; a++) {
                    var s = t + a;
                    this.cols[s] && (o = this.cols[s].width), i += o
                }
                return i
            }
        }, {
            key: "getCellConfigStyle", value: function (e) {
                var t = e && void 0 !== e.style ? this.styles[e.style] : {};
                return F.merge(this.defaultStyle, t)
            }
        }, {
            key: "handleCellStyle", value: function (e) {
                var t = this, n = "", i = this.getCellConfigStyle(e);
                void 0 !== i.border && Object.keys(i.border).map((function (e) {
                    n += t.handleCellBorder(e, i.border[e])
                }));
                var r = Object.assign({}, i.font);
                if (r.size = ve(r.size), n += "font:" + (r.italic ? "italic" : "") + " " + (r.bold ? "bold" : "") + " " + r.size + "px " + r.name + ";", i.color && (n += "color:" + i.color + ";"), i.bgcolor && "#fff" != i.bgcolor && "#ffffff" != i.bgcolor && (n += "background-color:" + i.bgcolor + ";"), i.underline && (n += "text-decoration:underline;"), i.strike && (n += "text-decoration:line-through;"), i.align && (n += "text-align:" + i.align + ";"), i.valign && (n += "vertical-align:" + i.valign + ";"), !0 === i.textwrap ? n += "word-break:break-all;" : n += "white-space:nowrap;overflow: hidden;", n.length > 0) {
                    var o = "jm-print-" + (e && void 0 !== e.style ? e.style : "default");
                    return this.styleMap[o] = n, o
                }
                return n
            }
        }, {
            key: "getCellColor", value: function (e) {
                var t = this.getCellConfigStyle(e);
                return t.color ? t.color : ""
            }
        }, {
            key: "handleCellBorder", value: function (e, t) {
                var n = "", i = t[0], r = t[1], o = fn() - .5;
                return "medium" === i ? (o = gn(2) - .5, i = "solid") : "thick" === i ? (o = gn(3), i = "solid") : "dashed" === i ? i = "dashed" : "dotted" === i ? i = "dotted" : "double" === i ? i = "double" : "thin" === i && (o = fn() - .5, i = "solid"), n += "border-" + e + "-style:" + (i || "solid") + ";", n += "border-" + e + "-width:" + o + "px;", n += "border-" + e + "-color:" + r + ";"
            }
        }, {
            key: "formatCell", value: function (e) {
                var t = e.text;
                if (t || 0 == t) {
                    var n = function (e) {
                        e += "";
                        var t = 0, n = new RegExp("^\\s+", "g").exec(e);
                        if (null != n) {
                            var i = n[0];
                            e = e.replace(i, ""), t = i.length
                        }
                        return {text: e, space: t}
                    }(t), i = n.text, r = n.space;
                    t = i;
                    var o = this.getCellConfigStyle(e);
                    for (o.format && (t = "number" != o.format || !e.decimalPlaces && 0 !== e.decimalPlaces && "0" !== e.decimalPlaces ? Ve[o.format].render(t) : $e(t, e.decimalPlaces)); r > 0;) t = "&nbsp;" + t, r--;
                    (t + "").indexOf("\n") >= 0 && (t = (t + "").replace(/\n/g, "<br/>"))
                }
                return t
            }
        }, {
            key: "completeRows", value: function () {
                for (var e = this, t = !0 === this.clearEmpty ? this.allRange.sri : 0, n = [], i = function (t) {
                    var i = e.rows[t];
                    if (function (e) {
                        if (!e) return !0;
                        if ("{}" == JSON.stringify(e)) return !0;
                        if (e.cells) {
                            if ("{}" == JSON.stringify(e.cells)) return !0;
                            var t = !0;
                            return Object.keys(e.cells).map((function (n) {
                                e.cells[n].text && (t = !1)
                            })), t
                        }
                        return !0
                    }(i)) n.push(t); else {
                        var r = n.filter((function (e) {
                            return parseInt(e) > parseInt(t)
                        }));
                        n = r
                    }
                    i || (e.rows[t] = {}), e.completeCols(e.rows[t], t)
                }, r = t; r <= this.allRange.eri; r++) i(r);
                var o, a = sn(n);
                try {
                    for (a.s(); !(o = a.n()).done;) {
                        var s = o.value;
                        delete this.rows[s]
                    }
                } catch (e) {
                    a.e(e)
                } finally {
                    a.f()
                }
            }
        }, {
            key: "completeCols", value: function (e, t) {
                e.cells || (e.cells = {});
                for (var n = this.allRange.sci; n <= this.allRange.eci; n++) e.cells[n] || (e.cells[n] = {text: ""});
                if (e.cells && !1 === this.clearEmpty) for (var i = Object.keys(e.cells)[0]; i > 0;) e.cells[--i] = {text: ""}
            }
        }, {
            key: "mergeCell", value: function (e, t, n) {
                var i = "row".concat(e, "col").concat(t);
                if (!n) return this.mergeCellMap[i];
                this.mergeCellMap[i] = n
            }
        }, {
            key: "addDefaultStyle", value: function () {
                this.styleMap["jm-print-qrcode.full img"] = "width:100%;height:100%", this.styleMap["jm-print-qrcode"] = "width:100%;height:100% !important;", this.styleMap["assist-middle-span"] = "display: inline-block;vertical-align: middle;height: calc(100% + 1px);", this.styleMap["print-fixed-width-tr td"] = "height:1px", this.styleMap["jm-print-table td"] = "padding-right:3px;padding-left:3px"
            }
        }, {
            key: "getHtmlHeadStyle", value: function () {
                var e = this, t = "";
                return Object.keys(this.styleMap).map((function (n) {
                    t += ".".concat(n, "{\n                ").concat(e.styleMap[n], "\n            }\r\n")
                })), Object.keys(this.styleMap).map((function (n) {
                    n.indexOf("jm-print-container") < 0 && (t += ".".concat(n, " div{\n                    ").concat(e.styleMap[n], "\n                }\r\n"))
                })), t += this.addCellLineStyle()
            }
        }, {
            key: "addCellLineStyle", value: function () {
                return ".jm-print-cellline{\n            position:relative;\n            width:100% !important;\n            height:100% !important;\n            margin:0 !important;\n            padding:0 !important;\n            border:none !important;\n            background:none !important;\n        }.jm-print-cellline .cell-content{\n            position:absolute;\n            margin:0;\n            padding:0;\n            border:none;\n            background:none;\n            height:auto;\n            display:inline-block;\n        }.jm-print-cellline .cell-content-line{\n            width:1px;\n            top:0;\n            left:0;\n        }"
            }
        }, {
            key: "addTableContainerBackground", value: function (e) {
                if (this.background) {
                    var t = "", n = this.background, i = n.width, r = n.height, o = n.path, a = n.repeat, s = "";
                    s = 0 == o.indexOf("http") ? 'url("'.concat(o, '")') : 'url("'.concat(this.localImagePre).concat(o, '")'), t += "background-image:".concat(s, ";"), t += i && r ? "background-size:".concat(i, "px ").concat(r, "px;") : i && !r ? "background-size:".concat(i, "px;") : !i && r ? "background-size:auto ".concat(r, "px;") : "background-size:auto;", a && (t += "background-repeat: ".concat(a, ";")), this.styleMap["jm-print-container"] = t, e.classList.add("jm-print-container")
                }
            }
        }, {
            key: "isTemplatePrint", value: function () {
                this.templatePrint = !0
            }
        }, {
            key: "createLayerImage", value: function () {
                var e = this, t = [], n = function (t) {
                    return new Promise((function (n) {
                        console.log("layer.id" + t.id);
                        var i = e.cellPositionMap[t.id];
                        if (i && !0 !== t.isBackend) {
                            var r = i.top, o = i.left, a = (t.offsetX && t.offsetX, t.offsetY ? t.offsetY : 0);
                            t.getPrintImage(e.downLoad).then((function (e) {
                                e.style.position = "absolute", e.style.left = "".concat(o, "px"), e.style.top = "".concat(r + parseFloat(a), "px"), n(e)
                            }))
                        } else n()
                    }))
                };
                if (this.layerList && this.layerList.length > 0) {
                    var i, r = sn(this.layerList);
                    try {
                        for (r.s(); !(i = r.n()).done;) {
                            var o = i.value;
                            o && t.push(n(o))
                        }
                    } catch (e) {
                        r.e(e)
                    } finally {
                        r.f()
                    }
                }
                return Promise.all(t)
            }
        }]) && cn(t.prototype, n), r && cn(t, r), e
    }();

    function Cn(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return wn(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return wn(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function wn(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function In(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var i = Object.getOwnPropertySymbols(e);
            t && (i = i.filter((function (t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, i)
        }
        return n
    }

    function xn(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? In(Object(n), !0).forEach((function (t) {
                An(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : In(Object(n)).forEach((function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
        }
        return e
    }

    function An(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    function _n(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Sn() {
        var e = this.data, t = this.canvas, n = this.win, i = t.getContext("2d").getImageData(0, 0, t.width, t.height),
            r = e.getRealPrintSize(), o = r.width, a = r.height, s = o * window.devicePixelRatio * this.maxDegree,
            l = a * window.devicePixelRatio * this.maxDegree, c = n.document.createElement("canvas");
        c.height = l * window.devicePixelRatio, c.width = s * window.devicePixelRatio;
        var u = c.getContext("2d");
        return c.style.height = a + "px", c.style.width = o + "px", u.putImageData(i, 0, 0, 0, 0, c.width, c.height), t
    }

    function kn() {
        var e = this.data, t = this.canvas, n = this.win, i = t.getContext("2d"),
            r = i.getImageData(0, 0, t.width, t.height), o = e.getRealPrintSize(), a = o.width, s = o.height,
            l = a * window.devicePixelRatio * this.maxDegree, c = s * window.devicePixelRatio * this.maxDegree,
            u = n.document.createElement("canvas");
        u.height = c, u.width = l;
        var h = u.getContext("2d");
        return u.style.height = s + "px", u.style.width = a + "px", h.putImageData(r, 0, 0, 0, 0, l, c), u
    }

    var Ln = function () {
        function e(t, n, i, r) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.rpbar = t, this.type = i, this.data = n, this.highDefinition = !0, this.maxDegree = n.printDegree, r || this.init(), this.queryParam = "", this.layerList = [], this.printPage = -1, this.pageModel = {}, this.hasCellLayer = !1, this.addPrintTempImage()
        }

        var t, n, i;
        return t = e, (n = [{
            key: "init", value: function () {
                var e = this.createWin();
                e.doc.open(), e.doc.write("<html>\n                     <head>\n                       <title></title>\n                     </head>\n                    <body style='margin:0'>\n                    </body>\n                </html>"), e.doc.close(), this.win = e.contentWindow || e, this.doc = e.doc
            }
        }, {
            key: "addQueryParam", value: function (e) {
                var t = this.data;
                return this.queryParam = xn({}, e), t.settings.count && (this.queryParam.pageSize = t.settings.count), this
            }
        }, {
            key: "renderCanvas", value: function (e) {
                var t = this.data, n = this.type, i = this.rpbar, r = window.document.createElement("canvas");
                this.canvas = r;
                var o = new zt({rpbar: i}, r, t);
                return o.changePrintStatus(this.highDefinition), "backend" === n ? o.renderBackend(this.layerList, e) : "screen" === n ? o.renderOnePage("print", this.hasCellLayer) : "multi" === n ? o.renderOnePage() : "screen-pdf" === n && o.renderOnePage("pdf")
            }
        }, {
            key: "print2020", value: function (e, t) {
                this.printLoading(!0), this.layerList = e, this.hasCellLayer = t, this.data;
                var n = this.type;
                e.some((function (e) {
                    return e.isBackend
                })) ? this.printBackend() : "screen" === n ? this.printOnePage() : this.printMultiPage()
            }
        }, {
            key: "createPringDiv", value: function () {
                var e = this.win, t = this.data, n = e.document.createElement("div"), i = t.getPrintPaperInfo(),
                    r = i.w, o = i.h;
                return n.style.height = "".concat(o, "px"), n.style.width = "".concat(r, "px"), n.style.textAlign = "center", n.style.position = "relative", n
            }
        }, {
            key: "printBackend", value: function () {
                var e = this, t = this.doc, n = this.win, i = t.createElement("style");
                i.innerHTML = "\n                @media print{\n                    @page{\n                    margin: 0cm;\n                    }\n                }\n             ", t.head.appendChild(i), this.type = "backend", this.renderCanvas(!1).then((function (i) {
                    var r = i.width, o = i.height, a = e.win.document.createElement("div");
                    a.style.height = "".concat(r, "px"), a.style.width = "".concat(o, "px"), a.style.textAlign = "center";
                    var s = Sn.call(e);
                    t.body.appendChild(a), a.appendChild(s), e.printLoading(!1), n.print()
                })).catch((function () {
                    console.error("printBackend获取需要打印的canvas出现问题")
                }))
            }
        }, {
            key: "pdf2020", value: function (e, t) {
                this.layerList = e, e.some((function (e) {
                    return e.isBackend
                })) ? this.pdfBackend(t) : this.pdfMultiPage(e, t)
            }
        }, {
            key: "printOnePage", value: function () {
                var e = this, t = this.layerList;
                this.renderCanvas().then((function (n) {
                    return e.addPrintPageStyle(), e.renderLayers(t, n)
                })).then((function () {
                    var t = kn.call(e, !0);
                    e.doPrint(t)
                })).catch((function (e) {
                    console.error("获取需要打印的canvas出现问题", e)
                }))
            }
        }, {
            key: "getSingleCanvasForMultiPage", value: function () {
                var e = this;
                return this.preHandleLayer(), new Promise((function (t) {
                    e.renderCanvas().then((function (t) {
                        return e.renderLayersForMultiPage(e.layerList, t)
                    })).then((function () {
                        t(e.canvas)
                    })).catch((function () {
                        console.error("获取多页打印的单个Canvas")
                    }))
                }))
            }
        }, {
            key: "canvasToPdf", value: function (e, t) {
                var n = this.data, i = new Image;
                i.src = e.toDataURL();
                var r = {unit: "pt", orientation: "p"}, o = n.settings.pdfCompress;
                r.compress = o, i.onload = function () {
                    i.width > i.height && (r.orientation = "l"), r.format = [i.width + 50, i.height + 50];
                    var e = new ge.a(r);
                    e.addImage(i, "JPEG", 25, 25, i.width, i.height), e.save(t)
                }
            }
        }, {
            key: "pdfAllPromise", value: function (e, t) {
                var n = this, i = this.doc, r = this.data, o = {unit: "pt", orientation: "p"},
                    a = r.settings.pdfCompress;
                o.compress = a;
                var s = "";
                Promise.all(e).then((function (e) {
                    for (var r = function (r) {
                        var l = n.rePaintingPdf(e[r], !0);
                        i.body.appendChild(l);
                        var c = new Image;
                        c.src = l.toDataURL(), c.style.width = l.style.width, c.style.height = l.style.height, c.onload = function () {
                            var i, u;
                            i = parseInt(c.style.width.replace("px", "")), u = parseInt(c.style.height.replace("px", "")), s || (l.width > l.height && (o.orientation = "l"), o.format = [parseInt(i) + 50, parseInt(u) + 50], s = new ge.a(o)), window.devicePixelRatio, r >= 1 && s.addPage(), !0 === a ? s.addImage(c, "JPEG", 25, 25, i, u, "", "FAST") : s.addImage(c, "JPEG", 25, 25, i, u), r === e.length - 1 && (n.vm && n.vm.$Spin.hide(), s.save(t))
                        }
                    }, l = 0; l < e.length; l++) r(l)
                }))
            }
        }, {
            key: "addPrintPageStyle", value: function () {
                var e = this.data, t = this.doc;
                if (!t.getElementById("jm-report-printstyle")) {
                    var n = e.getPrintPaperInfo(), i = n.type, r = n.mx, o = n.my, a = n.layout,
                        s = t.createElement("style");
                    s.id = "jm-report-printstyle";
                    var l = e.printConfig.isBackend, c = 1 == l ? "0mm" : r + "mm", u = 1 == l ? "0mm" : o + "mm";
                    s.innerHTML = "\n               @media print{\n                 body{\n                    -webkit-print-color-adjust:exact;\n                    -moz-print-color-adjust:exact;\n                    -ms-print-color-adjust:exact;\n                    print-color-adjust:exact;\n                  }\n               }\n               @page{\n                   size: ".concat(i, " ").concat(a, ";\n                   margin-top: ").concat(u, ";\n                   margin-bottom: ").concat(u, ";\n                   margin-left: ").concat(c, ";\n                   margin-right: ").concat(c, ";\n               }\n            "), t.head.appendChild(s)
                }
            }
        }, {
            key: "addPrintTableStyle", value: function (e) {
                var t = this.doc;
                if (!t.getElementById("jm-report-printtable")) {
                    var n = t.createElement("style");
                    n.id = "jm-report-printtable", n.innerHTML = e, t.head.appendChild(n)
                }
            }
        }, {
            key: "createWin", value: function () {
                var e = void 0;
                try {
                    var t = document.getElementById("jeecg_print_ty");
                    t && t.parentNode.removeChild(t), e = window.document.createElement("iframe"), window.document.body.appendChild(e), e.style.border = "0px", e.style.position = "absolute", e.style.overflow = "auto", e.style.width = "0px", e.style.height = "0px", e.style.right = "0px", e.style.top = "0px", e.setAttribute("id", "jeecg_print_ty"), e.setAttribute("src", (new Date).getTime()), e.doc = null, e.onload = function () {
                        console.log("oniframeloadok")
                    }, e.doc = e.contentDocument ? e.contentDocument : e.contentWindow ? e.contentWindow.document : e.document
                } catch (e) {
                    console.log("创建iframe错误", e.toString())
                }
                return null == e.doc && console.log("错误。iframe.doc不存在"), e
            }
        }, {
            key: "createNewWindow", value: function () {
                var e = window.open();
                return {contentWindow: e, doc: e.document}
            }
        }, {
            key: "printLoading", value: function (e) {
                "function" == typeof Vue && (this.vm || (this.vm = new Vue), !0 === e ? this.vm.$Spin.show() : this.vm.$Spin.hide())
            }
        }, {
            key: "setExistWin", value: function (e) {
                if (this.win = e.win, this.doc = e.doc, this.layerList = [], e.layerList && e.layerList.length > 0) {
                    var t, n = Cn(e.layerList);
                    try {
                        for (n.s(); !(t = n.n()).done;) {
                            var i = t.value;
                            i.setRendered(!1), this.layerList.push(i)
                        }
                    } catch (e) {
                        n.e(e)
                    } finally {
                        n.f()
                    }
                }
                return this.printPage = e.printPage, this.pageModel = e.pageModel, this
            }
        }, {
            key: "notHD", value: function () {
                return this.highDefinition = !1, this
            }
        }, {
            key: "rePaintingPdf", value: function (e) {
                var t = e.getContext("2d"), n = this.data.getRealPdfSize(), i = n.width, r = n.height,
                    o = i * window.devicePixelRatio * this.maxDegree, a = r * window.devicePixelRatio * this.maxDegree,
                    s = t.getImageData(0, 0, e.width, e.height), l = this.win.document.createElement("canvas");
                l.height = a, l.width = o;
                var c = l.getContext("2d");
                return l.style.height = r + "px", l.style.width = i + "px", c.putImageData(s, 0, 0, 0, 0, o, a), l
            }
        }, {
            key: "rePainting", value: function (e) {
                var t = e.getContext("2d"), n = this.data.getRealPrintSize(), i = n.width, r = n.height,
                    o = i * window.devicePixelRatio * this.maxDegree, a = r * window.devicePixelRatio * this.maxDegree,
                    s = t.getImageData(0, 0, e.width, e.height), l = this.win, c = l.document.createElement("canvas");
                c.height = a, c.width = o;
                var u = c.getContext("2d");
                return c.style.height = r + "px", c.style.width = i + "px", u.putImageData(s, 0, 0, 0, 0, o, a), c
            }
        }, {
            key: "getPageData", value: function (e, t) {
                for (var n = "", i = {}, r = [], o = 0; o < t.length; o++) {
                    var a = e[t[o]];
                    if ("1" == a.isPage) {
                        n = t[o], i = a;
                        break
                    }
                }
                return i && (r = i.list), {pageKey: n, resultList: r}
            }
        }, {
            key: "getHeaderHeight", value: function (e, t) {
                var n = 0, i = this.data;
                for (var r in e) if ("len" != r) {
                    var o = Number(r);
                    o >= 0 && o < t && (n += e[r].height || i.settings.row.height)
                }
                for (var a = 0; a < t; a++) e[a] || (n += i.settings.row.height);
                return n
            }
        }, {
            key: "delTableHeadData", value: function (e, t) {
                var n = e.rows, i = {};
                for (var r in n) "len" === r || Number(r) < t || (i[Number(r) - t] = n[r]);
                return i
            }
        }, {
            key: "isVericalReport", value: function () {
                var e = !1, t = this.data;
                return t.printElWidth && t.printElHeight && Number(t.printElWidth) > 1.4 * Number(t.printElHeight) && (e = !0), e
            }
        }, {
            key: "createPrintPage", value: function (e, t, n, i) {
                var r = this, o = this.data, a = this.doc, s = JSON.parse(JSON.stringify(o.settings));
                Object.keys(o.settings).map((function (e) {
                    var t = o.settings[e];
                    "function" == typeof t && (s[e] = t)
                })), s.view.height = function () {
                    return t
                };
                var l = window.document.createElement("div");
                l.setAttribute("id", e), window.document.body.appendChild(l);
                var c = x.spreadsheet(l, s);
                if (n.printConfig) n.printConfig.definition = this.maxDegree; else {
                    var u = this.maxDegree;
                    n.printConfig = {
                        paper: "A4",
                        width: 210,
                        height: 297,
                        definition: u,
                        isBackend: !1,
                        marginX: 10,
                        marginY: 10
                    }
                }
                c.loadData(n, !0), c.setExpData(o.getExpressionData());
                var h = this.createPringDiv();
                h.setAttribute("id", this.printPage), a.body.appendChild(h);
                var d = {
                    win: this.win,
                    doc: this.doc,
                    layerList: this.layerList,
                    printPage: -1 == i.currentPage ? -1 : this.printPage,
                    pageModel: i
                };
                return new Promise((function (e) {
                    setTimeout((function () {
                        c.getPrintCanvas(d).then((function (t) {
                            t && (t = r.rePainting(t, !1), window.document.body.removeChild(l), h.appendChild(t)), e()
                        }))
                    }), 500)
                }))
            }
        }, {
            key: "renderLayers", value: function (e, t) {
                var n = this, i = this.data, r = this.type, o = this.canvas;
                return new Promise((function (a) {
                    var s = [];
                    if (e && e.length > 0) {
                        var l, c = o.getContext("2d"), u = window.devicePixelRatio || 1, h = i.scroll,
                            d = n.getAreaPosition(), f = Cn(e);
                        try {
                            for (f.s(); !(l = f.n()).done;) {
                                var g = l.value;
                                "area" === r && !1 === n.layerInArea(g, d) || s.push(g.drawImage(c, u, h, t, i.settings.downLoadImage, {
                                    newLeft: -1,
                                    newTop: -1
                                }))
                            }
                        } catch (e) {
                            f.e(e)
                        } finally {
                            f.f()
                        }
                    }
                    0 == s.length ? a() : Promise.all(s).then((function () {
                        a()
                    }))
                }))
            }
        }, {
            key: "renderLayersForMultiPage", value: function (e, t) {
                var n = this, i = this.data, r = (this.type, this.canvas);
                return new Promise((function (o) {
                    var a = [];
                    if (e && e.length > 0) {
                        var s, l = r.getContext("2d"), c = window.devicePixelRatio || 1, u = i.scroll, h = Cn(e);
                        try {
                            for (h.s(); !(s = h.n()).done;) {
                                var d = s.value;
                                if (console.log("layer.getPrintPage()", d.getPrintPage()), console.log("this.printPage()", n.printPage), d.getPrintPage() === n.printPage) {
                                    var f, g = d.getPrintRow(), p = i.getRCPosition(g, d.designCol), m = p.top,
                                        v = p.left;
                                    !0 === d.fixed && (m -= 25, v -= 60), f = {
                                        newTop: m,
                                        newLeft: v
                                    }, console.log("layer.printRow" + d.printRow, f), a.push(d.drawImage(l, c, u, t, i.settings.downLoadImage, f)), -1 == n.printPage && d.setRendered(!1)
                                }
                            }
                        } catch (e) {
                            h.e(e)
                        } finally {
                            h.f()
                        }
                    }
                    0 == a.length ? o() : Promise.all(a).then((function (e) {
                        o()
                    }))
                }))
            }
        }, {
            key: "getAreaPosition", value: function () {
                var e = this.data, t = e.getSelectRect(), n = t.eci, i = t.eri, r = t.sci, o = t.sri,
                    a = (t.h, t.w, e.getRect({sri: o, sci: r, eri: i, eci: n})), s = a.t, l = a.l, c = a.height;
                return {minX: l, minY: s, maxX: l + a.width, maxY: s + c}
            }
        }, {
            key: "layerInArea", value: function (e, t) {
                var n = e.getLayerRect(!0), i = n.width, r = n.height, o = n.row, a = n.col,
                    s = this.data.getRect({sri: o, sci: a, eri: o, eci: a}), l = s.t, c = s.l, u = l + r, h = c + i;
                return this.pointInArea(c, l, t) && this.pointInArea(h, u, t)
            }
        }, {
            key: "pointInArea", value: function (e, t, n) {
                var i = n.minX, r = n.minY, o = n.maxX, a = n.maxY;
                return t > r && t < a && e > i && e < o
            }
        }, {
            key: "clearCanvasBlank", value: function (e, t) {
                var n = this.data.settings, i = n.col.indexWidth || 0, r = e.getContext("2d"), o = 0;
                t && (o = it(n.row.height));
                var a = r.getImageData(it(i), o, e.width, e.height);
                return r.clearRect(0, 0, e.width, e.height), r.putImageData(a, 0, 0), a
            }
        }, {
            key: "genCanvas1", value: function (e, t, n) {
                var i = this;
                return new Promise((function (e) {
                    e(i.canvas)
                }))
            }
        }, {
            key: "pdfManyPage", value: function (e, t, n, i) {
                var r = this;
                return new Promise((function (o) {
                    setTimeout((function () {
                        var a = r.pageModel;
                        return a.currentPage, a.pageMaxRowList, a.pageSizeList, a.isLastPage, r.preHandleLayer(!0, r.layerList, n), r.renderCanvas(!0).then((function (e) {
                            var t = document.getElementById(i);
                            return t.parentNode.removeChild(t), r.renderLayersForMultiPage(r.layerList, e)
                        })).then((function () {
                            o(r.genCanvas1(e, !0, t))
                        }))
                    }), 500)
                }))
            }
        }, {
            key: "createPdfPage", value: function (t, n, i, r, o) {
                var a = window.document.createElement("div");
                a.setAttribute("id", t), document.body.appendChild(a), n.view.height = function () {
                    return r
                };
                var s = x.spreadsheet(a, n);
                if (console.log("createPdfPage jsonData", i), i.printConfig) i.printConfig.definition = this.maxDegree; else {
                    var l = this.maxDegree;
                    i.printConfig = {
                        paper: "A4",
                        width: 210,
                        height: 297,
                        definition: l,
                        isBackend: !1,
                        marginX: 10,
                        marginY: 10
                    }
                }
                s.loadData(i), s.data.printElHeight = r;
                var c = {
                    win: this.win,
                    doc: this.doc,
                    layerList: this.layerList,
                    printPage: -1 == o.currentPage ? -1 : this.printPage,
                    pageModel: o
                };
                return new e(this.rpbar, s.data, "screen-pdf", !0).setExistWin(c)
            }
        }, {
            key: "printArea", value: function (e) {
                var t = this.data, n = document.createElement("canvas"), i = new zt(n, t);
                i.changePrintStatus(this.highDefinition), i.renderSelector();
                var r = this.win.document.createElement("div");
                return r.style.textAlign = "center", r.style.paddingTop = "20px", r.style.paddingRight = "60px", r.appendChild(n), this.doc.body.appendChild(r), this.win.print(), n
            }
        }, {
            key: "getMaxMinRowNum", value: function (e) {
                var t, n = 99, i = 0, r = Cn(e);
                try {
                    for (r.s(); !(t = r.n()).done;) {
                        var o = t.value, a = parseInt(o);
                        !a && 0 != a || a < 0 || (n > a && (n = a), i < a && (i = a))
                    }
                } catch (e) {
                    r.e(e)
                } finally {
                    r.f()
                }
                return {minRowNum: n, maxRowNum: i}
            }
        }, {
            key: "isEmptyRow", value: function (e) {
                var t = !0;
                if ("{}" != JSON.stringify(e) && e.cells && "{}" != JSON.stringify(e.cells)) if (e.height) t = !1; else {
                    var n = Object.keys(e.cells);
                    if (1 == n.length && "-1" == n[0]) t = !0; else for (var i = 0; i < n.length; i++) {
                        var r = e.cells[n[i]];
                        if ("" != r && "{}" != JSON.stringify(r) && r.text) {
                            t = !1;
                            break
                        }
                    }
                } else t = !0;
                return t
            }
        }, {
            key: "isChartRow", value: function (e) {
                for (var t = !1, n = Object.keys(e.cells), i = 0; i < n.length; i++) {
                    var r = e.cells[n[i]];
                    if (r && r.virtual) {
                        var o = r.virtual, a = this.getLayerByVirtualId(o);
                        if (a) {
                            t = {height: a.containerHeight};
                            break
                        }
                    }
                    if (r && r.rendered) {
                        t = {height: r.height};
                        break
                    }
                }
                return t
            }
        }, {
            key: "getLayerByVirtualId", value: function (e) {
                return this.layerList && this.layerList.length > 0 ? this.layerList.filter((function (t) {
                    return t.getLayerId() == e
                }))[0] : ""
            }
        }, {
            key: "getFinalJson", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "",
                    n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = this.data,
                    r = JSON.parse(JSON.stringify(i.settings)), o = window.document.createElement("div");
                window.document.body.appendChild(o), r.expReplace = 1, r.printTable = t, r.clearEmpty = n;
                var a = Object.keys(e.rows), s = function e(t, n) {
                    var i = t[n];
                    parseInt(i) || 0 == i || n - 1 < 0 ? r.rowNumber = i : e(t, n - 1)
                };
                s(a, a.length - 1);
                var l = x.spreadsheet(o, r);
                l.loadData(e), l.setExpData(i.getExpressionData()), o.parentNode.removeChild(o);
                var c = l.getData();
                return c.background = e.background || "", c.layerList = l.getLayerList(), c
            }
        }, {
            key: "getMaxRowNum", value: function (e, t, n, i, r) {
                if (1 === e) {
                    var o = Number(t[n]);
                    o > r && (r = o)
                } else i > r && (r = i);
                return r
            }
        }, {
            key: "handleMultiPageData", value: function (e, t, n) {
                var i = this.data, r = i.getDataBeginLineHeight(), o = this.getFinalJson(e), a = o.rows, s = o.merges,
                    l = this.handleMyJsonMerge(s, a);
                this.handleLayerVirtualCell(a);
                for (var c = Object.keys(a), u = this.getMaxMinRowNum(c), h = u.minRowNum, d = u.maxRowNum, f = [], g = h; g <= d; g++) f.push(g);
                for (var p = -1, m = i.settings.row.height, v = 0, y = [], b = [], C = (f[0], !1), w = [], I = 0; p < f.length;) {
                    var x = {}, A = 0, _ = 0;
                    if (1 == ++v && (A += Number(r)), C = !0, 0 == f.length && -1 == p) p = 0; else for (var S = 0; S < f.length; S++) {
                        p++;
                        var k = 0;
                        if (f.length === p) {
                            C = !0;
                            break
                        }
                        var L = a[f[p]];
                        if (L && !this.isEmptyRow(L)) {
                            (k = L.height) || (k = i.settings.row.height);
                            var T = this.isChartRow(L);
                            if (T) {
                                var O = parseInt(T.height || 0);
                                if (O > k && A + Number(O) > t - 5) {
                                    console.log("打印当前页高度:", A + "," + A + ",pageHeight" + t + ",rowH" + m), p--, _ = this.getMaxRowNum(v, f, p, --S, _), C = !1;
                                    break
                                }
                            }
                            if ((A += Number(k)) > t - 5) {
                                console.log("打印当前页高度:", A + "," + A + ",pageHeight" + t + ",rowH" + m), p--, _ = this.getMaxRowNum(v, f, p, --S, _), C = !1;
                                break
                            }
                            _ = this.getMaxRowNum(v, f, p, S, _), 1 === v ? x[f[p]] = L : x[S] = L
                        } else k = i.settings.row.height, A += Number(k)
                    }
                    if (0 != Object.keys(x).length) {
                        this.handleLastRowMerge(x, s, I, l), I += _, o.rows = x, b.push(_), y.push(Object.keys(x).length), this.printPage = v;
                        var R = new $t(v, b, y, C);
                        if (R.setHeight(t), n) n(p, o, R); else {
                            var E = "report".concat(p), P = this.createPrintPage(E, t, o, R);
                            w.push(P)
                        }
                    }
                }
                return w
            }
        }, {
            key: "preHandleLayer", value: function (e, t, n) {
                var i = this.pageModel, r = i.currentPage, o = i.pageMaxRowList, a = i.isLastPage;
                console.log("当前页面数据------------------------------------", this.data.rows.getData());
                var s = 0, l = 0, c = this.data.getRealDataCellRange();
                if (1 == r) s = c.sri, l = o[0]; else if (-1 == r) s = 0, l = 0; else {
                    for (var u = o[0], h = 0; h < r; h++) h == r - 1 && (s = u + 1), h > 0 && (u += o[h] + 1);
                    l = u
                }
                var d = this.getPageVirtualRowNum(), f = this.pageModel.getHeight();
                if (this.layerList && this.layerList.length > 0) {
                    var g, p = Cn(this.layerList);
                    try {
                        for (p.s(); !(g = p.n()).done;) {
                            var m = g.value;
                            if (1 != m.getRendered()) {
                                var v = m.getViewPagePosition(!0);
                                if (console.log("adadadad", m), s <= v.row && l >= v.row) {
                                    m.setRendered(!0);
                                    var y = d[m.getLayerId()], b = !1;
                                    if (a) {
                                        var C = this.data.calcAllHeight(0, y);
                                        m.containerHeight && f - C < Number(m.containerHeight) && (b = !0)
                                    }
                                    1 == b ? (m.setPrintPage(-1), m.setPrintRow(0), !0 === e ? this.pdfLastLayerPage(f, m.getLayerId(), t, n) : this.printLastLayerPage(f, m.getLayerId())) : (m.setPrintPage(r), m.setPrintRow(y))
                                }
                            }
                        }
                    } catch (e) {
                        p.e(e)
                    } finally {
                        p.f()
                    }
                }
            }
        }, {
            key: "printLastLayerPage", value: function (e, t) {
                var n = this.pageModel, i = (n.currentPage, n.pageMaxRowList), r = n.pageSizeList, o = n.isLastPage,
                    a = new $t(-1, i, r, o), s = this.data.getData(), l = {0: {cells: {0: {text: " ", virtual: t}}}};
                s.rows = l, this.createPrintPage("report_layer_last", e, s, a)
            }
        }, {
            key: "pdfLastLayerPage", value: function (e, t, n, i) {
                var r = this.data, o = this.pageModel, a = o.pageMaxRowList, s = o.pageSizeList, l = o.isLastPage,
                    c = new $t(-1, a, s, l), u = r.getData(), h = {0: {cells: {0: {text: " ", virtual: t}}}};
                u.rows = h;
                var d = JSON.parse(JSON.stringify(r.settings));
                Object.keys(r.settings).map((function (e) {
                    var t = r.settings[e];
                    "function" == typeof t && (d[e] = t)
                })), d.view.height = function () {
                    return e
                };
                var f = this.createPdfPage("report_layer_last", d, u, e, c);
                setTimeout((function () {
                    i.push(f.pdfManyPage(n, -1, i))
                }), 500)
            }
        }, {
            key: "getPageVirtualRowNum", value: function () {
                var e = this.data.rows.getData(), t = {};
                return Object.keys(e).map((function (n) {
                    if (e[n]) {
                        var i = e[n].cells;
                        i && Object.keys(i).map((function (e) {
                            var r = i[e];
                            if (r) {
                                var o = r.virtual;
                                if (o) {
                                    var a = Number(n), s = t[o];
                                    (!s || s < a) && (t[o] = a)
                                }
                            }
                        }))
                    }
                })), t
            }
        }, {
            key: "handleLayerVirtualCell", value: function (e) {
                if (this.layerList && this.layerList.length > 0) {
                    var t, n = this.getVirtualAbcMap(e), i = Cn(this.layerList);
                    try {
                        for (i.s(); !(t = i.n()).done;) {
                            var r = t.value, o = r.getLayerId();
                            r.setVirtualCellRange(n[o], !0)
                        }
                    } catch (e) {
                        i.e(e)
                    } finally {
                        i.f()
                    }
                }
            }
        }, {
            key: "getVirtualAbcMap", value: function (e) {
                var t = {};
                return Object.keys(e).map((function (n) {
                    if (e[n]) {
                        var i = e[n].cells;
                        i && ("{}" == JSON.stringify(i) ? delete e[n] : Object.keys(i).map((function (e) {
                            var r = i[e];
                            if (r) {
                                var o = r.virtual;
                                o && (t[o] || (t[o] = []), t[o].push([Number(n), Number(e)]))
                            }
                        })))
                    }
                })), t
            }
        }, {
            key: "printMultiPage", value: function () {
                var e = this, t = this.data, n = (t.settings.count, t.settings.parseDataFn);
                t.settings.getAllFn(this.queryParam).then((function (i) {
                    var r = xn({}, i.data.result), o = r.dataList, a = r.jsonStr, s = t.getRealPrintSize().height,
                        l = Object.keys(o), c = [];
                    if (1 == l.length) {
                        var u = o[Object.keys(o)[0]].list, h = n(a, An({}, Object.keys(o)[0], u));
                        console.log("myjson", JSON.parse(JSON.stringify(h))), c = e.handleMultiPageData(h, s, null)
                    } else {
                        var d = n(a, o, !0);
                        c = e.handleMultiPageData(d, s, null)
                    }
                    e.addPrintPageStyle(), setTimeout((function () {
                        Promise.all(c).then((function () {
                            e.win.print(), e.printLoading(!1)
                        }))
                    }), 1e3)
                }))
            }
        }, {
            key: "doPrint", value: function (e) {
                var t = this, n = this.win, i = this.doc, r = this.createPringDiv();
                r.appendChild(e), i.body.appendChild(r), setTimeout((function () {
                    console.log("打印完成"), t.printLoading(!1), n.print()
                }), 1e3)
            }
        }, {
            key: "pdfBackend", value: function (e) {
                var t = this, n = this.doc, i = n.createElement("style");
                i.innerHTML = "\n                @media print{\n                    @page{\n                    margin: 0cm;\n                    }\n                }\n             ", n.head.appendChild(i), this.type = "backend", this.renderCanvas(!0).then((function (n) {
                    var i = Sn.call(t);
                    t.canvasToPdf(i, e)
                })).catch((function () {
                    console.error("pdfBackend获取需要打印的canvas出现问题")
                }))
            }
        }, {
            key: "pdfMultiPage", value: function (e, t) {
                var n = this, i = this.data;
                this.layerList = e;
                var r = i.dataSetHeight;
                r || (r = i.settings.row.height), this.data.settings.count;
                var o = i.settings.parseDataFn, a = i.getRealPdfSize().height;
                this.printLoading(!0), i.settings.getAllFn(this.queryParam).then((function (r) {
                    var s = xn({}, r.data.result), l = s.dataList, c = Object.keys(l),
                        u = JSON.parse(JSON.stringify(n.data.settings));
                    Object.keys(i.settings).map((function (e) {
                        var t = i.settings[e];
                        "function" == typeof t && (u[e] = t)
                    })), u.downLoadImage = n.data.settings.downLoadImage;
                    var h = {}, d = s.jsonStr;
                    if (c.length > 1) h = o(d, l, !0); else if (0 == c.length) h = o(d, {}); else {
                        var f = l[c[0]].list;
                        h = o(d, An({}, c[0], f))
                    }
                    var g = [];
                    n.handleMultiPageData(h, a, (function (t, i, r) {
                        var o = "report".concat(t), s = n.createPdfPage(o, u, i, a, r);
                        g.push(s.pdfManyPage(e, t, g, o))
                    })), setTimeout((function () {
                        n.pdfAllPromise(g, t)
                    }), 500)
                }))
            }
        }, {
            key: "pdfOnePage", value: function (e, t) {
                var n = this;
                this.renderCanvas(!0).then((function (t) {
                    return n.renderLayers(e, t)
                })).then((function () {
                    var e = n.rePainting(n.canvas, !0);
                    n.canvasToPdf(e, t)
                }))
            }
        }, {
            key: "handleLastRowMerge", value: function (e, t, n, i) {
                if (t && t.length > 0) for (var r = Object.keys(e), o = parseInt(r[r.length - 1]), a = parseInt(r[0]), s = 0; s < t.length; s++) {
                    var l = t[s], c = this.getMergeRowIndex(l), u = c.col, h = c.start, d = c.end;
                    if (h != d) if (o + n < d && o + n >= h) if (a + n >= h) {
                        if (!i[l]) continue;
                        var f = JSON.parse(JSON.stringify(i[l]));
                        if (f.merge) {
                            var g = o - a;
                            f.merge = [g, f.merge[1]], e[a].cells[u + ""] = f
                        }
                    } else {
                        var p = e[h - n + ""].cells[u + ""];
                        p && p.merge && (p.display || (p.merge = n + a < h ? [o - h, p.merge[1]] : [o, p.merge[1]]))
                    } else if (o + n >= d && n + a >= h && n + a < d) {
                        if (!i[l]) continue;
                        var m = JSON.parse(JSON.stringify(i[l]));
                        if (m.merge) {
                            var v = void 0;
                            v = a == h ? d - n - a : d - n - a - 1, m.merge = [v, m.merge[1]], e[a].cells[u + ""] = m
                        }
                    }
                }
            }
        }, {
            key: "handleMyJsonMerge", value: function (e, t) {
                var n = [];
                if (e && e.length > 0) {
                    var i, r = {}, o = Cn(e);
                    try {
                        for (o.s(); !(i = o.n()).done;) {
                            var a = i.value, s = this.getRowAndColIndex(a);
                            s.length > 0 && (r[a] = s)
                        }
                    } catch (e) {
                        o.e(e)
                    } finally {
                        o.f()
                    }
                    Object.keys(t).map((function (e) {
                        Object.keys(r).map((function (i) {
                            if (r[i][0] + "" == e) {
                                var o = t[e].cells[r[i][1]];
                                n[i] = o
                            }
                        }))
                    }))
                }
                return n
            }
        }, {
            key: "getRowAndColIndex", value: function (e) {
                var t = e.split(":")[0], n = new RegExp("([A-Z]{1})([0-9]+)"), i = t.match(n);
                return i ? [i[2] - 1, i[1].charCodeAt(0) - 65] : []
            }
        }, {
            key: "getMergeRowIndex", value: function (e) {
                var t = new RegExp("([A-Z]{1})([0-9]+):[A-Z]{1}([0-9]+)"), n = e.match(t);
                return n ? {col: n[1].charCodeAt(0) - 65, start: n[2] - 1, end: n[3] - 1} : ""
            }
        }, {
            key: "printTable", value: function (e) {
                var t = this, n = this.data;
                this.layerList = e, this.printLoading(!0);
                var i = n.settings.parseDataFn, r = n.getRealPrintSize(), o = r.width, a = r.height, s = r.noPadding;
                n.settings.getAllFn(this.queryParam).then((function (e) {
                    var r = xn({}, e.data.result), l = r.dataList, c = r.jsonStr, u = "";
                    if (1 == Object.keys(l).length) {
                        var h = l[Object.keys(l)[0]].list;
                        u = i(c, An({}, Object.keys(l)[0], h))
                    } else u = i(c, l, !0);
                    var d = t.getFinalJson(u, 1, s), f = n.settings, g = f.domain, p = f.viewLocalImage,
                        m = new bn(d, n, s);
                    m.setDomainInfo(g, p), m.setPaperInfo(o, a), !0 === n.printConfig.isBackend && m.isTemplatePrint(), m.getTable().then((function (e) {
                        var i = t.createPringDiv();
                        !0 === n.printConfig.isBackend && (i.style.height = "auto"), m.addTableContainerBackground(i), t.doc.body.appendChild(i);
                        var r, o = Cn(e);
                        try {
                            for (o.s(); !(r = o.n()).done;) {
                                var a = r.value;
                                a && i.appendChild(a.el)
                            }
                        } catch (e) {
                            o.e(e)
                        } finally {
                            o.f()
                        }
                        m.createLayerImage().then((function (e) {
                            var t, n = Cn(e);
                            try {
                                for (n.s(); !(t = n.n()).done;) {
                                    var r = t.value;
                                    r && i.appendChild(r)
                                }
                            } catch (e) {
                                n.e(e)
                            } finally {
                                n.f()
                            }
                        })).finally((function () {
                            var e = m.getHtmlHeadStyle();
                            t.addPrintTableStyle(e), t.addPrintPageStyle(), setTimeout((function () {
                                t.win.print(), t.printLoading(!1)
                            }), 1e3)
                        }))
                    }))
                }))
            }
        }, {
            key: "addPrintTempImage", value: function () {
                var e = document.getElementById("jm-print-temp-image");
                e || ((e = document.createElement("img")).style.display = "none", e.id = "jm-print-temp-image", document.body.appendChild(e))
            }
        }, {
            key: "exportImage", value: function () {
                var e = this.data, t = this.queryParam, n = e.settings.parseDataFn;
                e.settings.getAllFn(t).then((function (t) {
                    var i, r = xn({}, t.data.result), o = r.dataList, a = r.jsonStr;
                    if (1 == Object.keys(o).length) {
                        var s = o[Object.keys(o)[0]].list;
                        i = n(a, An({}, Object.keys(o)[0], s))
                    } else i = n(a, o, !0);
                    var l = JSON.parse(JSON.stringify(e.settings)), c = window.document.createElement("div");
                    window.document.body.appendChild(c), l.expReplace = 1, l.printTable = 1, l.clearEmpty = !1;
                    var u = Object.keys(i.rows);
                    !function e(t, n) {
                        var i = t[n];
                        parseInt(i) || 0 == i || n - 1 < 0 ? l.rowNumber = i : e(t, n - 1)
                    }(u, u.length - 1);
                    var h = x.spreadsheet(c, l);
                    h.loadData(i), h.setExpData(e.getExpressionData()), h.getCanvas(), c.parentNode.removeChild(c)
                }))
            }
        }]) && _n(t.prototype, n), i && _n(t, i), e
    }(), Tn = [{key: "A4", value: "A4 : 210mmx297mm", w: 210, h: 297}, {
        key: "A3",
        value: "A3 : 297mmx420mm",
        w: 297,
        h: 420
    }, {key: "Letter", value: "Letter : 216mmx279mm", w: 216, h: 279}, {
        key: "Legal",
        value: "Legal : 216mmx355mm",
        w: 216,
        h: 355
    }, {key: "Executive", value: "Executive : 184mmx266mm", w: 184, h: 266}], On = function () {
        var e = new Array;
        if (null != window.screen.deviceXDPI) e[0] = window.screen.deviceXDPI, e[1] = window.screen.deviceYDPI; else {
            var t = document.createElement("DIV");
            t.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden", document.body.appendChild(t), e[0] = parseInt(t.offsetWidth), e[1] = parseInt(t.offsetHeight), t.parentNode.removeChild(t)
        }
        return e
    };

    function Rn(e) {
        return function (e) {
            if (Array.isArray(e)) return Fn(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || jn(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function En(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var i = Object.getOwnPropertySymbols(e);
            t && (i = i.filter((function (t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, i)
        }
        return n
    }

    function Pn(e) {
        for (var t = 1; t < arguments.length; t++) {
            var n = null != arguments[t] ? arguments[t] : {};
            t % 2 ? En(Object(n), !0).forEach((function (t) {
                Mn(e, t, n[t])
            })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : En(Object(n)).forEach((function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
            }))
        }
        return e
    }

    function Mn(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    function Nn(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = jn(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function Dn(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Bn(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || jn(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function jn(e, t) {
        if (e) {
            if ("string" == typeof e) return Fn(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Fn(e, t) : void 0
        }
    }

    function Fn(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    var Hn = {
        view: {
            height: function () {
                return document.documentElement.clientHeight
            }, width: function () {
                return document.documentElement.clientWidth
            }
        },
        domain: "http://127.0.0.1:8080/jeecg-boot",
        showGrid: !0,
        showToolbar: !0,
        showContextmenu: !0,
        readOnly: !1,
        pdfCompress: !0,
        background: !1,
        loopBlockLineColor: "",
        loopBlockLineDash: !1,
        printPaper: [],
        pageSizeList: "",
        previousPage: !1,
        row: {len: 100, height: 25},
        col: {len: 26, width: 100, indexWidth: 60, minWidth: 60},
        style: {
            bgcolor: "#ffffff",
            align: "left",
            valign: "middle",
            textwrap: !1,
            strike: !1,
            underline: !1,
            color: "#0a0a0a",
            font: {name: "Arial", size: 10, bold: !1, italic: !1}
        }
    };

    function Wn() {
        var e = this, t = this.selector, n = this.rows, i = this.merges;
        t.range.each((function (t, r) {
            var o = n.getCell(t, r);
            o && (function (e, t) {
                var n = !1;
                return i.forEach((function (i) {
                    var r = i.sri, o = i.sci, a = i.eri, s = i.eci;
                    e == r && o == t ? n = !1 : e >= r && e <= a && t >= o && t <= s && (n = !0)
                })), n
            }(t, r) || o.text || e.setCellText(t, r, " ", "input"))
        }))
    }

    function Vn(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : function () {
            }, i = this.merges, r = t.clone(), o = e.size(), a = Bn(o, 2), s = a[0], l = a[1], c = t.size(), u = Bn(c, 2),
            h = u[0], d = u[1];
        return s > h && (r.eri = t.sri + s - 1), l > d && (r.eci = t.sci + l - 1), !i.intersects(r) || (n(Y("error.pasteForMergedCell")), !1)
    }

    function Gn(e, t, n) {
        var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], r = this.rows, o = this.merges;
        "all" !== n && "format" !== n || (r.deleteCells(t, n), o.deleteWithin(t)), r.copyPaste(e, t, n, i, (function (e, t, n) {
            if (n && n.merge) {
                var i = Bn(n.merge, 2), r = i[0], a = i[1];
                if (r <= 0 && a <= 0) return;
                o.add(new m(e, t, e + r, t + a))
            }
        }))
    }

    function zn(e, t) {
        var n = this.clipboard, i = this.rows, r = this.merges;
        i.cutPaste(e, t), r.move(e, t.sri - e.sri, t.sci - e.sci), n.clear()
    }

    function Zn(e, t, n) {
        var i = this.styles, r = this.rows.getCellOrNew(e, t), o = {};
        void 0 !== r.style && (o = F.cloneDeep(i[r.style])), Object.assign(o, {border: n}), r.style = this.addStyle(o)
    }

    function $n(e) {
        var t = this, n = e.mode, i = e.style, r = e.color, o = this.styles, a = this.selector, s = this.rows,
            l = a.range, c = l.sri, u = l.sci, h = l.eri, d = l.eci, f = !this.isSignleSelected();
        if (f || "inside" !== n && "horizontal" !== n && "vertical" !== n) if ("outside" !== n || f) {
            if ("none" === n) a.range.each((function (e, n) {
                var i = s.getCell(e, n);
                if (i && void 0 !== i.style) {
                    var r = F.cloneDeep(o[i.style]);
                    delete r.border, i.style = t.addStyle(r)
                }
            })); else if ("all" === n || "inside" === n || "outside" === n || "horizontal" === n || "vertical" === n) !function () {
                for (var e = [], o = c; o <= h; o += 1) for (var a = u; a <= d; a += 1) {
                    for (var l = [], g = 0; g < e.length; g += 1) {
                        var p = Bn(e[g], 4), m = p[0], v = p[1], y = p[2], b = p[3];
                        if (o === m + y + 1 && l.push(g), m <= o && o <= m + y && a === v) {
                            a += b + 1;
                            break
                        }
                    }
                    if (l.forEach((function (t) {
                        return e.splice(t, 1)
                    })), a > d) break;
                    var C = s.getCell(o, a), w = 0, I = 0;
                    if (C && C.merge) {
                        var x = Bn(C.merge, 2);
                        w = x[0], I = x[1], e.push([o, a, w, I])
                    }
                    var A = w > 0 && o + w === h, _ = I > 0 && a + I === d, S = {};
                    "all" === n ? S = {
                        bottom: [i, r],
                        top: [i, r],
                        left: [i, r],
                        right: [i, r]
                    } : "inside" === n ? (!_ && a < d && (S.right = [i, r]), !A && o < h && (S.bottom = [i, r])) : "horizontal" === n ? !A && o < h && (S.bottom = [i, r]) : "vertical" === n ? !_ && a < d && (S.right = [i, r]) : "outside" === n && f && (c === o && (S.top = [i, r]), (A || h === o) && (S.bottom = [i, r]), u === a && (S.left = [i, r]), (_ || d === a) && (S.right = [i, r])), Object.keys(S).length > 0 && Zn.call(t, o, a, S), a += I
                }
            }(); else if ("top" === n || "bottom" === n) for (var g = u; g <= d; g += 1) "top" === n && (Zn.call(this, c, g, {top: [i, r]}), g += s.getCellMerge(c, g)[1]), "bottom" === n && (Zn.call(this, h, g, {bottom: [i, r]}), g += s.getCellMerge(h, g)[1]); else if ("left" === n || "right" === n) for (var p = c; p <= h; p += 1) "left" === n && (Zn.call(this, p, u, {left: [i, r]}), p += s.getCellMerge(p, u)[0]), "right" === n && (Zn.call(this, p, d, {right: [i, r]}), p += s.getCellMerge(p, d)[0])
        } else Zn.call(this, c, u, {top: [i, r], bottom: [i, r], left: [i, r], right: [i, r]})
    }

    function Kn(e, t) {
        var n = this.rows, i = this.freezeTotalHeight(), r = n.height;
        i + n.height < e && (r -= t);
        for (var o = this.exceptRowSet, a = 0, s = r, l = n.height; a < n.len && !(s > e); a += 1) o.has(a) || (s += l = n.getHeight(a));
        return (s -= l) <= 0 ? {ri: -1, top: 0, height: l} : {ri: a - 1, top: s, height: l}
    }

    function Xn(e, t) {
        var n = this.cols, i = this.freezeTotalWidth(), r = n.indexWidth;
        i + n.indexWidth < e && (r -= t);
        var o = Bn(F.rangeReduceIf(0, n.len, r, n.indexWidth, e, (function (e) {
            return n.getWidth(e)
        })), 3), a = o[0], s = o[1], l = o[2];
        return s < 0 ? {ci: -1, left: 0, width: n.indexWidth} : {ci: a - 1, left: s, width: l}
    }

    var Yn = function () {
        function e(t, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.settings = F.merge(Hn, n || {}), this.name = t || "sheet", this.dicts = [], this.freeze = [0, 0], this.styles = [], this.merges = new B, this.rows = new G(this.settings.row), this.cols = new Z(this.settings.col), this.validations = new ue, this.hyperlinks = {}, this.comments = {}, this.repeatRange = this.settings.repeatRange, this.selector = new y, this.scroll = new b, this.history = new w, this.clipboard = new L, this.autoFilter = new M, this.change = function () {
            }, this.saveData = function () {
            }, this.exceptRowSet = new Set, this.sortedRowMap = new Map, this.unsortedRowMap = new Map, this.printDegree = 1, this.printPaperWidth = 0, this.printPaperHeight = 0, this.dbExpression = new S(this.settings.dbexps), this.deleteEvent = function () {
            }, this.loopBlockList = [], this.zonedEditionList = [], this.completeBlankRowList = [], this.isPrintLandscape = !1, this.displayConfig = {}, this.printConfig = {
                paper: "A4",
                width: 210,
                height: 297,
                definition: 1,
                isBackend: !1,
                marginX: 10,
                marginY: 10,
                layout: "portrait"
            }, this.updatePrintConfig(), this.allRange = {}, this.currentPageSize = 10, this.rpbar = {
                show: !0,
                pageSize: "",
                btnList: []
            }
        }

        var t, n, i;
        return t = e, (n = [{
            key: "getExpressionData", value: function () {
                return this.dbExpression.getMap()
            }
        }, {
            key: "setExpressionData", value: function (e) {
                this.dbExpression.setAllValue(e)
            }
        }, {
            key: "resetExpression", value: function () {
                this.dbExpression.reset()
            }
        }, {
            key: "addExpression", value: function (e) {
                this.dbExpression.add(e)
            }
        }, {
            key: "getExpRealValue", value: function (e) {
                return this.dbExpression.getExpValue(e)
            }
        }, {
            key: "addValidation", value: function (e, t, n) {
                var i = this;
                this.changeData((function () {
                    i.validations.add(e, t, n)
                }))
            }
        }, {
            key: "removeValidation", value: function () {
                var e = this, t = this.selector.range;
                this.changeData((function () {
                    e.validations.remove(t)
                }))
            }
        }, {
            key: "getSelectedValidator", value: function () {
                var e = this.selector, t = e.ri, n = e.ci, i = this.validations.get(t, n);
                return i ? i.validator : null
            }
        }, {
            key: "getSelectedValidation", value: function () {
                var e = this.selector, t = e.ri, n = e.ci, i = e.range, r = this.validations.get(t, n),
                    o = {ref: i.toString()};
                return null !== r && (o.mode = r.mode, o.validator = r.validator), o
            }
        }, {
            key: "canUndo", value: function () {
                return this.history.canUndo()
            }
        }, {
            key: "canRedo", value: function () {
                return this.history.canRedo()
            }
        }, {
            key: "undo", value: function () {
                var e = this;
                this.history.undo(this.getData(), (function (t) {
                    e.setData(t)
                }))
            }
        }, {
            key: "redo", value: function () {
                var e = this;
                this.history.redo(this.getData(), (function (t) {
                    e.setData(t)
                }))
            }
        }, {
            key: "copy", value: function () {
                this.clipboard.copy(this.selector.range)
            }
        }, {
            key: "cut", value: function () {
                this.clipboard.cut(this.selector.range)
            }
        }, {
            key: "paste", value: function () {
                var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "all",
                    n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function () {
                    }, i = this.clipboard, r = this.selector;
                return !i.isClear() && !!Vn.call(this, i.range, r.range, n) && (this.changeData((function () {
                    i.isCopy() ? Gn.call(e, i.range, r.range, t) : i.isCut() && zn.call(e, i.range, r.range)
                })), !0)
            }
        }, {
            key: "autofill", value: function (e, t) {
                var n = this, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : function () {
                }, r = this.selector.range;
                return !!Vn.call(this, r, e, i) && (this.changeData((function () {
                    Gn.call(n, r, e, t, !0)
                })), !0)
            }
        }, {
            key: "clearClipboard", value: function () {
                this.clipboard.clear()
            }
        }, {
            key: "calSelectedRangeByEnd", value: function (e, t) {
                var n = this.selector, i = this.rows, r = this.cols, o = this.merges, a = n.range, s = a.sri, l = a.sci,
                    c = a.eri, u = a.eci, h = n.ri, d = n.ci, f = e, g = t;
                return e < 0 && (f = i.len - 1), t < 0 && (g = r.len - 1), f > h ? (s = h, c = f) : (s = f, c = h), g > d ? (l = d, u = g) : (l = g, u = d), n.range = o.union(new m(s, l, c, u)), n.range = o.union(n.range), n.range
            }
        }, {
            key: "calSelectedRangeByStart", value: function (e, t) {
                var n = this.selector, i = this.rows, r = this.cols, o = this.merges.getFirstIncludes(e, t);
                return null === o && (o = new m(e, t, e, t), -1 === e && (o.sri = 0, o.eri = i.len - 1), -1 === t && (o.sci = 0, o.eci = r.len - 1)), n.range = o, o
            }
        }, {
            key: "saveJsonData", value: function (e) {
                var t = this;
                this.getReportSaveData(e).then((function (e) {
                    t.saveData(e)
                }))
            }
        }, {
            key: "getReportSaveData", value: function (e) {
                var t = this;
                return new Promise((function (n) {
                    var i = t.getData();
                    if (e) {
                        var r = e.imgList, o = e.chartList, a = e.background, s = e.barcodeList, l = e.qrcodeList;
                        r && r.length > 0 && (t.handleLayerVirtualCellRange(r, i), i.imgList = r), o && o.length > 0 && (t.handleLayerVirtualCellRange(o, i), i.chartList = o), s && s.length > 0 && (t.handleLayerVirtualCellRange(s, i), i.barcodeList = s), l && l.length > 0 && (t.handleLayerVirtualCellRange(l, i), i.qrcodeList = l), i.background = a
                    }
                    i.area = t.getSelectArea(), t.handleCompleteBlankRowList(i), console.log("saveData", i), n(i)
                }))
            }
        }, {
            key: "getDbCodeByText", value: function (e) {
                return e.replace("#", "").replace("{", "").replace("}", "").split(".")
            }
        }, {
            key: "handleCompleteBlankRowList", value: function (e) {
                for (var t = e.rows, n = [], i = 0, r = Object.keys(t); i < r.length; i++) {
                    var o = r[i];
                    if ("len" == o || o < 0) ; else {
                        var a = t[o];
                        if (a && a.cells) for (var s = a.cells, l = 0, c = Object.keys(s); l < c.length; l++) {
                            var u = s[c[l]];
                            if (u) {
                                var h = u.completeBlankStatus, d = u.text;
                                if (1 == h && d && d.indexOf("#{") >= 0) {
                                    var f = u.completeBlankRow, g = this.getDbCodeByText(d);
                                    g && 2 == g.length && n.push({db: g[0], field: g[1], rows: f})
                                }
                            }
                        }
                    }
                }
                n.length > 0 && (e.completeBlankRowList = n)
            }
        }, {
            key: "clearVirtualCellByIndex", value: function (e, t, n) {
                var i = this.rows.getCell(t, n);
                this.clearVirtualCell(e, t, n, i)
            }
        }, {
            key: "clearVirtualCell", value: function (e, t, n, i) {
                if (i && i.virtual && i.virtual == e) {
                    var r = i.text;
                    r && 0 == (r + "").trim().length ? this.rows.deleteCell(t, n) : delete i.virtual
                }
            }
        }, {
            key: "clearRowVirtualCell", value: function (e, t) {
                var n = this, i = this.rows.get(t);
                i && i.cells && this.rows.eachCells(t, (function (i, r) {
                    n.clearVirtualCell(e, t, i, r)
                }))
            }
        }, {
            key: "handleLayerVirtualCellRange", value: function (e, t) {
                var n, i = this.cols, r = t.rows, o = Nn(e);
                try {
                    for (o.s(); !(n = o.n()).done;) {
                        var a = n.value, s = a.layer_id, l = a.row, c = a.col, u = void 0;
                        u = (a.width + "").indexOf("px") > 0 ? Number(a.width.replace("px", "")) : Number(a.width);
                        for (var h = 0, d = c, f = []; h <= u;) f.push(d), h = i.sumWidth(c, ++d);
                        var g = [], p = r[l], m = {};
                        p ? m = r[l].cells : r[l] = {cells: {}};
                        for (var v = 0, y = f; v < y.length; v++) {
                            var b = y[v];
                            g.push([l, b]);
                            var C = m[b];
                            C ? C.virtual = s : m[b] = {text: " ", virtual: s}
                        }
                        a.virtualCellRange = g, r[l].cells = m
                    }
                } catch (e) {
                    o.e(e)
                } finally {
                    o.f()
                }
            }
        }, {
            key: "printPage", value: function (e, t, n) {
                new Ln(e, this, "screen").print2020(t, n)
            }
        }, {
            key: "printPageAll", value: function (e, t, n) {
                new Ln(e, this, "all").addQueryParam(n).print2020(t)
            }
        }, {
            key: "printPageTable", value: function (e, t, n) {
                new Ln(e, this, "all").addQueryParam(n).printTable(t)
            }
        }, {
            key: "exportAllAsImage", value: function (e, t, n) {
                new Ln(e, this, "all").addQueryParam(n).exportImage(t)
            }
        }, {
            key: "printPageArea", value: function (e, t) {
                new Ln(e, this, "area").print(t)
            }
        }, {
            key: "saveAsPdf", value: function (e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "online.pdf",
                    i = arguments.length > 3 ? arguments[3] : void 0;
                new Ln(e, this, "all").addQueryParam(i).pdf2020(t, n)
            }
        }, {
            key: "setSelectedCellAttr", value: function (e, t) {
                var n = this;
                this.changeData((function () {
                    var i = n.selector, r = n.styles, o = n.rows;
                    if ("merge" === e) t ? n.merge() : n.unmerge(); else if ("border" === e) $n.call(n, t), Wn.call(n); else if ("formula" === e) {
                        var a = i.ri, s = i.ci, l = i.range;
                        if (i.multiple()) {
                            var c = Bn(i.size(), 2), h = c[0], d = c[1], f = l.sri, g = l.sci, p = l.eri, m = l.eci;
                            if (h > 1) for (var v = g; v <= m; v += 1) o.getCellOrNew(p + 1, v).text = "=".concat(t, "(").concat(u(v, f), ":").concat(u(v, p), ")"); else d > 1 && (o.getCellOrNew(a, m + 1).text = "=".concat(t, "(").concat(u(g, a), ":").concat(u(m, a), ")"))
                        } else o.getCellOrNew(a, s).text = "=".concat(t, "()")
                    } else i.range.each((function (i, a) {
                        var s = o.getCellOrNew(i, a), l = {};
                        if (void 0 !== s.style && (l = F.cloneDeep(r[s.style])), "format" === e) l.format = t, s.style = n.addStyle(l); else if ("font-bold" === e || "font-italic" === e || "font-name" === e || "font-size" === e) {
                            var c = {};
                            c[e.split("-")[1]] = t, l.font = Object.assign(l.font || {}, c), s.style = n.addStyle(l)
                        } else "strike" === e || "textwrap" === e || "underline" === e || "align" === e || "valign" === e ? !s.lineStart && s.text && (l[e] = t, s.style = n.addStyle(l)) : "color" !== e && "bgcolor" !== e || (l[e] = t, s.style = n.addStyle(l))
                    }))
                }))
            }
        }, {
            key: "setSelectedCellText", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "input", n = this.autoFilter,
                    i = this.selector, r = this.rows, o = i.ri, a = i.ci, s = o;
                this.unsortedRowMap.has(o) && (s = this.unsortedRowMap.get(o));
                var l = r.getCell(s, a), c = l ? l.text : "";
                if (this.setCellText(s, a, e, t), n.active()) {
                    var u = n.getFilter(a);
                    if (u) {
                        var h = u.value.findIndex((function (e) {
                            return e === c
                        }));
                        h >= 0 && u.value.splice(h, 1, e)
                    }
                }
            }
        }, {
            key: "getSelectedCell", value: function () {
                var e = this.selector, t = e.ri, n = e.ci, i = t;
                return this.unsortedRowMap.has(t) && (i = this.unsortedRowMap.get(t)), this.rows.getCell(i, n)
            }
        }, {
            key: "xyInSelectedRect", value: function (e, t) {
                var n = this.getSelectedRect(), i = n.left, r = n.top, o = n.width, a = n.height,
                    s = e - this.cols.indexWidth, l = t - this.rows.height;
                return s > i && s < i + o && l > r && l < r + a
            }
        }, {
            key: "getSelectedRect", value: function () {
                return this.getRect(this.selector.range)
            }
        }, {
            key: "getClipboardRect", value: function () {
                var e = this.clipboard;
                return e.isClear() ? {left: -100, top: -100} : this.getRect(e.range)
            }
        }, {
            key: "getRealDataCellRange", value: function () {
                var e = 99, t = 99, n = -1, i = -1, r = this.rows.getData();
                if (r) {
                    for (var o = Object.keys(r), a = [], s = 0; s < o.length; s++) {
                        var l = parseInt(o[s]);
                        !Number.isInteger(l) || l < 0 || a.push(l)
                    }
                    n = Math.max.apply(Math, a), e = Math.min.apply(Math, a);
                    for (var c = 0, u = o; c < u.length; c++) {
                        var h = u[c], d = r[h] && r[h].cells;
                        if (d) {
                            for (var f = Object.keys(d), g = [], p = 0; p < f.length; p++) {
                                var v = parseInt(f[p]);
                                !Number.isInteger(v) || v < 0 || g.push(v)
                            }
                            var y = Math.max.apply(Math, g);
                            i < y && (i = y);
                            var b = Math.min.apply(Math, g);
                            t > b && (t = b)
                        }
                    }
                }
                return console.log({sri: e, sci: t, eri: n, eci: i, width: 0, height: 0}), new m(e, t, n, i, 0, 0)
            }
        }, {
            key: "getDataBeginLineHeight", value: function () {
                var e = this.exceptRowSet, t = this.rows, n = t.getData(), i = 0;
                if (t) {
                    for (var r = Object.keys(n), o = [], a = 0; a < r.length; a++) {
                        var s = parseInt(r[a]);
                        !Number.isInteger(s) || s < 0 || o.push(s)
                    }
                    i = 0 == o.length ? 0 : Math.min.apply(Math, o)
                }
                var l = t.sumHeight(0, i, e);
                return 0 == i && (l = 0), l
            }
        }, {
            key: "getRCPosition", value: function (e, t) {
                var n = this.scroll, i = this.rows, r = this.cols, o = this.exceptRowSet, a = r.sumWidth(0, t),
                    s = i.sumHeight(0, e, o), l = a - n.x, c = s - n.y, u = this.freezeTotalHeight(),
                    h = this.freezeTotalWidth();
                return h > 0 && h > a && (l = a), u > 0 && u > s && (c = s), {left: l + 60, top: c + 25, row: e, col: t}
            }
        }, {
            key: "getSelectRect", value: function () {
                if (!0 === this.settings.readOnly) {
                    var e = this.area, t = e.sri, n = e.sci, i = e.eri, r = e.eci, o = e.width, a = e.height;
                    return new m(t, n, i, r, o, a)
                }
                var s = this.selector, l = this.exceptRowSet, c = this.rows, u = this.cols, h = s.range, d = h.sri,
                    f = h.sci, g = h.eri, p = h.eci;
                if (0 == d && 0 == f && 0 == g && 0 == p) return !1;
                var v = c.sumHeight(d, g + 1, l), y = u.sumWidth(f, p + 1);
                return new m(d, f, g, p, y, v)
            }
        }, {
            key: "getMaxCellIndex", value: function (e) {
                var t = [];
                for (var n in e) {
                    var i = e[n].cells;
                    if (i) {
                        var r = [];
                        for (var o in i) {
                            r.push(Number(o));
                            var a = i[o].merge;
                            a && r.push(a[1] - 1)
                        }
                        t.push(Math.max.apply(Math, r))
                    }
                }
                return Math.max.apply(Math, t)
            }
        }, {
            key: "getDataWidth", value: function () {
                var e = 0, t = 0, n = !1, i = [], r = Pn({}, this.getData().rows);
                delete r.len;
                var o = 0;
                if (Object.keys(r).forEach((function (e) {
                    var t, a = Pn({}, r[e].cells);
                    for (var s in a) {
                        var l = a[s].text, c = a[s].style, u = !c && 0 != c;
                        !l && u || 0 == (l + "").trim().length && !a[s].virtual && u ? delete a[s] : (("0" == s || 0 == s) && (l || 0 == l) && (l + "").trim().length > 0 && (n = !0), a[s].merge && (a[a[s].merge[1] + parseInt(s)] = {
                            text: " ",
                            virtual: -1
                        }))
                    }
                    a && (i = (t = i).concat.apply(t, Rn(Object.keys(a))));
                    var h = parseInt(e);
                    h && h > o && (o = h)
                })), i) {
                    var a = this.settings.col.width, s = Math.max.apply(Math, Rn(i));
                    t = s;
                    for (var l = this.getData().cols, c = 0, u = 0; u <= s; u++) c += l[u] ? l[u].width : a;
                    e = c
                }
                return {width: e, noPadding: n, maxCol: t, maxRow: o}
            }
        }, {
            key: "setAllRange", value: function (e) {
                this.allRange = e
            }
        }, {
            key: "getDataRect", value: function () {
                var e = Pn({}, this.getData().rows);
                delete e.len;
                var t = Object.keys(e);
                if (!(t = t.filter((function (e) {
                    return "len" != e
                })).map((function (e) {
                    return Number(e)
                }))) || 0 == t.length) return !1;
                var n = Math.max.apply(Math, Rn(t)), i = this.getMaxCellIndex(e), r = this.exceptRowSet, o = this.rows;
                this.cols;
                try {
                    var a = e[n].cells[i].merge;
                    a && (n += a[0], i += a[1])
                } catch (e) {
                }
                var s = o.sumHeight(0, n + 1, r), l = 0, c = [];
                if (Object.keys(e).forEach((function (t) {
                    var n, i = Pn({}, e[t].cells);
                    for (var r in i) i[r].text || delete i[r];
                    i && (c = (n = c).concat.apply(n, Rn(Object.keys(i))))
                })), c) {
                    for (var u = this.settings.col.width, h = Math.max.apply(Math, Rn(c)), d = this.getData().cols, f = 0, g = 0; g <= h; g++) f += d[g] ? d[g].width : u;
                    l = f
                }
                return new m(0, 0, n, i, l, s)
            }
        }, {
            key: "getSelectArea", value: function () {
                var e = this.selector, t = this.exceptRowSet, n = this.rows, i = this.cols, r = e.range, o = r.sri,
                    a = r.sci, s = r.eri, l = r.eci;
                if (0 == o && 0 == a && 0 == s && 0 == l) return !1;
                var c = n.sumHeight(o, s + 1, t);
                return {sri: o, sci: a, eri: s, eci: l, width: i.sumWidth(a, l + 1), height: c}
            }
        }, {
            key: "getAllCellRange", value: function (e) {
                var t = e.sri, n = e.sci, i = e.eri, r = e.eci, o = e.width, a = e.height;
                return new m(t, n, i, r, o, a)
            }
        }, {
            key: "getRect", value: function (e) {
                var t = this.scroll, n = this.rows, i = this.cols, r = this.exceptRowSet, o = e.sri, a = e.sci,
                    s = e.eri, l = e.eci;
                if (o < 0 && a < 0) return {left: 0, l: 0, top: 0, t: 0, scroll: t};
                var c = i.sumWidth(0, a), u = n.sumHeight(0, o, r), h = n.sumHeight(o, s + 1, r),
                    d = i.sumWidth(a, l + 1), f = c - t.x, g = u - t.y, p = this.freezeTotalHeight(),
                    m = this.freezeTotalWidth();
                return m > 0 && m > c && (f = c), p > 0 && p > u && (g = u), {
                    l: c,
                    t: u,
                    left: f,
                    top: g,
                    height: h,
                    width: d,
                    scroll: t
                }
            }
        }, {
            key: "getCellRectByXY", value: function (e, t) {
                var n = this.scroll, i = this.merges, r = this.rows, o = this.cols, a = Kn.call(this, t, n.y), s = a.ri,
                    l = a.top, c = a.height, u = Xn.call(this, e, n.x), h = u.ci, d = u.left, f = u.width;
                if (-1 === h && (f = o.totalWidth()), -1 === s && (c = r.totalHeight()), s >= 0 || h >= 0) {
                    var g = i.getFirstIncludes(s, h);
                    if (g) {
                        s = g.sri, h = g.sci;
                        var p = this.cellRect(s, h);
                        d = p.left, l = p.top, f = p.width, c = p.height
                    }
                }
                return {ri: s, ci: h, left: d, top: l, width: f, height: c}
            }
        }, {
            key: "getCellPositionByXy", value: function (e, t) {
                var n = this.scroll, i = this.merges, r = this.rows, o = this.cols, a = Kn.call(this, t, n.y), s = a.ri,
                    l = a.top, c = a.height, u = Xn.call(this, e, n.x), h = u.ci, d = u.left, f = u.width;
                if (-1 === h && (f = o.totalWidth()), -1 === s && (c = r.totalHeight()), s >= 0 || h >= 0) {
                    var g = i.getFirstIncludes(s, h);
                    if (g) {
                        s = g.sri, h = g.sci;
                        var p = this.cellRect(s, h);
                        d = p.left, l = p.top, f = p.width, c = p.height, 0 == this.settings.readOnly && (l += 25, d += 60)
                    }
                }
                return {ri: s, ci: h, left: d, top: l, width: f, height: c}
            }
        }, {
            key: "isSignleSelected", value: function () {
                var e = this.selector.range, t = e.sri, n = e.sci, i = e.eri, r = e.eci, o = this.getCell(t, n);
                if (o && o.merge) {
                    var a = Bn(o.merge, 2), s = a[0], l = a[1];
                    if (t + s === i && n + l === r) return !0
                }
                return !this.selector.multiple()
            }
        }, {
            key: "canUnmerge", value: function () {
                var e = this.selector.range, t = e.sri, n = e.sci, i = e.eri, r = e.eci, o = this.getCell(t, n);
                if (o && o.merge) {
                    var a = Bn(o.merge, 2), s = a[0], l = a[1];
                    if (t + s === i && n + l === r) return !0
                }
                return !1
            }
        }, {
            key: "merge", value: function () {
                var e = this, t = this.selector, n = this.rows;
                if (!this.isSignleSelected()) {
                    var i = Bn(t.size(), 2), r = i[0], o = i[1];
                    if (r > 1 || o > 1) {
                        var a = t.range, s = a.sri, l = a.sci, c = a.eri;
                        this.changeData((function () {
                            var i = n.getCellOrNew(s, l);
                            i.merge = [r - 1, o - 1], e.merges.add(t.range), i.height = e.rows.sumHeight(s, parseInt(c) + 1), e.rows.deleteCells(t.range), e.rows.setCell(s, l, i)
                        }))
                    }
                }
            }
        }, {
            key: "unmerge", value: function () {
                var e = this, t = this.selector;
                if (this.isSignleSelected()) {
                    var n = t.range, i = n.sri, r = n.sci;
                    this.changeData((function () {
                        e.rows.deleteCell(i, r, "merge"), e.merges.deleteWithin(t.range)
                    }))
                }
            }
        }, {
            key: "canAutofilter", value: function () {
                return !this.autoFilter.active()
            }
        }, {
            key: "autofilter", value: function () {
                var e = this, t = this.autoFilter, n = this.selector;
                this.changeData((function () {
                    t.active() ? (t.clear(), e.exceptRowSet = new Set, e.sortedRowMap = new Map, e.unsortedRowMap = new Map) : t.ref = n.range.toString()
                }))
            }
        }, {
            key: "setAutoFilter", value: function (e, t, n, i) {
                var r = this.autoFilter;
                r.addFilter(e, n, i), r.setSort(e, t), this.resetAutoFilter()
            }
        }, {
            key: "resetAutoFilter", value: function () {
                var e = this, t = this.autoFilter, n = this.rows;
                if (t.active()) {
                    var i = t.sort, r = t.filteredRows((function (e, t) {
                        return n.getCell(e, t)
                    })), o = r.rset, a = r.fset, s = Array.from(a), l = Array.from(a);
                    i && s.sort((function (e, t) {
                        return "asc" === i.order ? e - t : "desc" === i.order ? t - e : 0
                    })), this.exceptRowSet = o, this.sortedRowMap = new Map, this.unsortedRowMap = new Map, s.forEach((function (t, n) {
                        e.sortedRowMap.set(l[n], t), e.unsortedRowMap.set(t, l[n])
                    }))
                }
            }
        }, {
            key: "deleteCell", value: function () {
                var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "all",
                    n = this.selector;
                this.changeData((function () {
                    e.rows.deleteCells(n.range, t), "all" !== t && "format" !== t || e.merges.deleteWithin(n.range)
                }))
            }
        }, {
            key: "insert", value: function (e) {
                var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                this.changeData((function () {
                    var i = t.selector.range, r = i.sri, o = i.sci, a = t.rows, s = t.merges, l = t.cols, c = r;
                    "row" === e ? a.insert(r, n) : "column" === e && (a.insertColumn(o, n), c = o, l.len += 1), s.shift(e, c, n, (function (e, t, n, i) {
                        var r = a.getCell(e, t);
                        r.merge[0] += n, r.merge[1] += i
                    }))
                }))
            }
        }, {
            key: "delete", value: function (e) {
                var t = this;
                this.changeData((function () {
                    var n = t.rows, i = t.merges, r = t.selector, o = t.cols, a = r.range, s = r.range, l = s.sri,
                        c = s.sci, u = s.eri, h = s.eci, d = Bn(r.range.size(), 2), f = d[0], g = d[1], p = l, m = f;
                    "row" === e ? (n.delete(l, u), t.deleteEvent(e, l, u)) : "column" === e && (n.deleteColumn(c, h), p = a.sci, m = g, o.len -= 1, t.deleteEvent(e, c, h)), i.shift(e, p, -m, (function (e, t, i, r) {
                        var o = n.getCell(e, t);
                        o.merge[0] += i, o.merge[1] += r, 0 === o.merge[0] && 0 === o.merge[1] && delete o.merge
                    }))
                }))
            }
        }, {
            key: "scrollx", value: function (e, t) {
                var n = this.scroll, i = this.freeze, r = this.cols, o = Bn(i, 2)[1],
                    a = Bn(F.rangeReduceIf(o, r.len, 0, 0, e, (function (e) {
                        return r.getWidth(e)
                    })), 3), s = a[0], l = a[1], c = a[2], u = l;
                e > 0 && (u += c), n.x !== u && (n.ci = e > 0 ? s : 0, n.x = u, t())
            }
        }, {
            key: "scrolly", value: function (e, t) {
                var n = this.scroll, i = this.freeze, r = this.rows, o = Bn(i, 1)[0],
                    a = Bn(F.rangeReduceIf(o, r.len, 0, 0, e, (function (e) {
                        return r.getHeight(e)
                    })), 3), s = a[0], l = a[1], c = a[2], u = l;
                e > 0 && (u += c), n.y !== u && (n.ri = e > 0 ? s : 0, n.y = u, t())
            }
        }, {
            key: "cellRect", value: function (e, t) {
                var n = this.rows, i = this.cols, r = i.sumWidth(0, t), o = n.sumHeight(0, e), a = n.getCell(e, t),
                    s = i.getWidth(t), l = n.getHeight(e);
                if (null !== a && a.merge) {
                    var c = Bn(a.merge, 2), u = c[0], h = c[1];
                    if (u > 0) for (var d = 1; d <= u; d += 1) l += n.getHeight(parseInt(e) + d);
                    if (h > 0) for (var f = 1; f <= h; f += 1) s += i.getWidth(parseInt(t) + f)
                }
                return {left: r, top: o, width: s, height: l, cell: a, ri: e, ci: t}
            }
        }, {
            key: "getCell", value: function (e, t) {
                return this.rows.getCell(e, t)
            }
        }, {
            key: "setCustomCell", value: function (e, t, n) {
                this.rows.setCell(e, t, n)
            }
        }, {
            key: "getCellTextOrDefault", value: function (e, t) {
                var n = this.getCell(e, t);
                return n && n.text ? n.subtotal ? "" : n.text : ""
            }
        }, {
            key: "getCellStyle", value: function (e, t) {
                var n = this.getCell(e, t);
                return n && void 0 !== n.style ? this.styles[n.style] : null
            }
        }, {
            key: "getCellStyleOrDefault", value: function (e, t) {
                var n = this.styles, i = this.rows.getCell(e, t), r = i && void 0 !== i.style ? n[i.style] : {};
                return F.merge(this.defaultStyle(), r)
            }
        }, {
            key: "getLinkCellColor", value: function (e) {
                var t = this.styles, n = e && void 0 !== e.style ? t[e.style] : {};
                return n.color ? n.color : "blue"
            }
        }, {
            key: "getSelectedCellStyle", value: function () {
                var e = this.selector, t = e.ri, n = e.ci;
                return this.getCellStyleOrDefault(t, n)
            }
        }, {
            key: "setCellText", value: function (e, t, n, i) {
                var r = this.rows, o = this.history, a = this.validations;
                "finished" === i ? (r.setCellText(e, t, ""), o.add(this.getData()), r.setCellText(e, t, n)) : (r.setCellText(e, t, n), this.change(this.getData())), a.validate(e, t, n)
            }
        }, {
            key: "freezeIsActive", value: function () {
                var e = Bn(this.freeze, 2), t = e[0], n = e[1];
                return t > 0 || n > 0
            }
        }, {
            key: "setFreeze", value: function (e, t) {
                var n = this;
                this.changeData((function () {
                    n.freeze = [e, t]
                }))
            }
        }, {
            key: "freezeTotalWidth", value: function () {
                return this.cols.sumWidth(0, this.freeze[1])
            }
        }, {
            key: "freezeTotalHeight", value: function () {
                return this.rows.sumHeight(0, this.freeze[0])
            }
        }, {
            key: "setRowHeight", value: function (e, t) {
                var n = this;
                this.changeData((function () {
                    n.rows.setHeight(e, t)
                }))
            }
        }, {
            key: "setColWidth", value: function (e, t) {
                var n = this;
                this.changeData((function () {
                    n.cols.setWidth(e, t)
                }))
            }
        }, {
            key: "viewHeight", value: function () {
                var e = this.settings, t = e.view, n = e.showToolbar, i = e.readOnly, r = t.height();
                return n && (r -= 41), 0 == this.rpbar.show && 1 == i && (r += 40), r < 400 ? 800 : r
            }
        }, {
            key: "viewWidth", value: function () {
                var e = this.settings.view.width(), t = this.printElWidth;
                return t && Number(t) > e ? Number(t) + 120 : e
            }
        }, {
            key: "canvasHeight", value: function () {
                return this.settings.canvasHeight || 600
            }
        }, {
            key: "canvasWidth", value: function () {
                return this.settings.canvasWidth || 800
            }
        }, {
            key: "freezeViewRange", value: function () {
                var e = Bn(this.freeze, 2), t = e[0], n = e[1];
                return new m(0, 0, t - 1, n - 1, this.freezeTotalWidth(), this.freezeTotalHeight())
            }
        }, {
            key: "exceptRowTotalHeight", value: function (e, t) {
                var n = this.exceptRowSet, i = this.rows, r = Array.from(n), o = 0;
                return r.forEach((function (n) {
                    if (n < e || n > t) {
                        var r = i.getHeight(n);
                        o += r
                    }
                })), o
            }
        }, {
            key: "getEndRowIndex", value: function (e, t) {
                for (var n = this.rows, i = this.exceptRowSet, r = 0, o = parseInt(e) - 1, a = 0; r < t;) o += 1, i.has(o) || (r += n.getHeight(o)), a += 1;
                return {eri: o, rowspan: a}
            }
        }, {
            key: "getEndColIndex", value: function (e, t) {
                for (var n = this.cols, i = this.exceptRowSet, r = 0, o = parseInt(e) - 1, a = 0; r < t;) o += 1, i.has(o) || (r += n.getWidth(o)), a += 1;
                return {eci: o, colspan: a}
            }
        }, {
            key: "viewRange", value: function () {
                var e = this.scroll, t = this.rows, n = this.cols, i = this.freeze, r = this.exceptRowSet, o = e.ri,
                    a = e.ci;
                o <= 0 && (o = Bn(i, 1)[0]), a <= 0 && (a = Bn(i, 2)[1]);
                for (var s = 0, l = 0, c = [t.len, n.len], u = c[0], h = c[1], d = o; d < t.len && (r.has(d) || (l += t.getHeight(d), u = d), !(l > this.viewHeight())); d += 1) ;
                for (var f = a; f < n.len && (h = f, !((s += n.getWidth(f)) > this.viewWidth())); f += 1) ;
                return new m(o, a, u, h, s, l)
            }
        }, {
            key: "viewPrintRange", value: function () {
                var e = this.scroll, t = this.rows, n = this.cols, i = this.freeze, r = this.exceptRowSet, o = e.ri,
                    a = e.ci;
                o <= 0 && (o = Bn(i, 1)[0]), a <= 0 && (a = Bn(i, 2)[1]);
                for (var s = 0, l = 0, c = [t.len, n.len], u = c[0], h = c[1], d = this.printElHeight || this.viewHeight(), f = o; f < t.len && (r.has(f) || (l += t.getHeight(f), u = f), !(l > d)); f += 1) ;
                for (var g = a; g < n.len && (h = g, !((s += n.getWidth(g)) > this.viewWidth())); g += 1) ;
                return new m(o, a, u, h, s, l)
            }
        }, {
            key: "eachMergesInView", value: function (e, t) {
                this.merges.filterIntersects(e).forEach((function (e) {
                    return t(e)
                }))
            }
        }, {
            key: "rowEach", value: function (e, t, n) {
                for (var i = 0, r = this.rows, o = this.exceptRowSet, a = Rn(o), s = 0, l = 0; l < a.length; l += 1) a[l] < e && (s += 1);
                for (var c = e + s; c <= t + s; c += 1) if (o.has(c)) s += 1; else {
                    var u = r.getHeight(c);
                    n(c, i, u), i += u
                }
            }
        }, {
            key: "colEach", value: function (e, t, n) {
                for (var i = 0, r = this.cols, o = e; o <= t; o += 1) {
                    var a = r.getWidth(o);
                    n(o, i, a), i += a
                }
            }
        }, {
            key: "defaultStyle", value: function () {
                return this.settings.style
            }
        }, {
            key: "addStyle", value: function (e) {
                for (var t = this.styles, n = 0; n < t.length; n += 1) {
                    var i = t[n];
                    if (F.equals(i, e)) return n
                }
                return t.push(e), t.length - 1
            }
        }, {
            key: "addCellLayerConfig", value: function (e, t, n) {
                var i = this.getCell(e, t);
                if (i) {
                    var r = i.config;
                    if (!r) {
                        var o = Object.keys(this.displayConfig);
                        r = o && 0 != o.length ? parseInt(o[o.length - 1]) + 1 : 1
                    }
                    this.displayConfig[r] = n, i.config = r, this.rows.setCell(e, t, i)
                }
            }
        }, {
            key: "getCellLayerConfig", value: function (e) {
                var t = {};
                return this.displayConfig && this.displayConfig[e] && (t = this.displayConfig[e]), t
            }
        }, {
            key: "changeData", value: function (e) {
                this.history.add(this.getData()), e(), this.change(this.getData())
            }
        }, {
            key: "setData", value: function (e) {
                var t = this;
                return Object.keys(e).forEach((function (n) {
                    if ("merges" === n || "rows" === n || "cols" === n || "validations" === n) t[n].setData(e[n]); else if ("freeze" === n) {
                        var i = Bn(c(e[n]), 2), r = i[0], o = i[1];
                        t.freeze = [o, r]
                    } else if ("currentPageSize" === n) t.currentPageSize = e[n]; else if ("settings" === n) {
                        var a = e[n];
                        Object.keys(a).map((function (e) {
                            t.settings[e] = a[e]
                        }))
                    } else void 0 !== e[n] && (t[n] = e[n])
                })), this
            }
        }, {
            key: "getData", value: function () {
                var e = this.name, t = this.freeze, n = this.styles, i = this.merges, r = this.rows, o = this.cols,
                    a = this.validations, s = this.autoFilter, l = this.dicts, c = this.dbExpression,
                    h = this.loopBlockList, d = this.zonedEditionList, f = this.displayConfig, g = this.printConfig,
                    p = this.rpbar, m = {
                        name: e,
                        freeze: u(t[1], t[0]),
                        styles: n,
                        displayConfig: f,
                        printConfig: g,
                        merges: i.getData(),
                        rows: r.getData(),
                        cols: o.getData(),
                        validations: a.getData(),
                        autofilter: s.getData(),
                        dbexps: c.getAllKey(),
                        dicts: l,
                        loopBlockList: h,
                        zonedEditionList: d,
                        rpbar: p
                    };
                return 1 == this.settings.printTable && (m.allRange = Pn({}, this.allRange)), 0 == this.settings.showGrid && (m.settings = {showGrid: !1}), m
            }
        }, {
            key: "changePrintDegree", value: function (e) {
                this.printDegree = 0 == e ? 1 : e
            }
        }, {
            key: "removeCell", value: function (e, t) {
                console.log("removeCell:" + e + "," + t), this.rows.deleteCell(e, t)
            }
        }, {
            key: "calcEndRowNum", value: function (e, t) {
                for (var n = Number(t), i = this.rows; 0 < e;) i.sumHeight(t, ++n);
                return n
            }
        }, {
            key: "calcAllHeight", value: function (e, t) {
                return this.rows.sumHeight(e, t)
            }
        }, {
            key: "calcBackendRange", value: function (e, t) {
                for (var n = this.rows, i = this.cols, r = this.exceptRowSet, o = 0, a = 0, s = n.len, l = i.len, c = Number(t), u = Number(e), h = 0; h < n.len && (r.has(h) || (a += n.getHeight(h), s = h), !(a > c)); h += 1) ;
                for (var d = 0; d < i.len && (l = d, !((o += i.getWidth(d)) > u)); d += 1) ;
                return new m(0, 0, s, l, o, a)
            }
        }, {
            key: "changeElHeight", value: function (e) {
                this.printElHeight = e
            }
        }, {
            key: "changeElWidth", value: function (e) {
                this.printElWidth = e
            }
        }, {
            key: "setPrintPaperInfo", value: function (e, t) {
                this.printPaperWidth = e, this.printPaperHeight = t
            }
        }, {
            key: "getPrintPaperInfo", value: function () {
                var e = this.printConfig.paper, t = this.printConfig.layout;
                return {
                    w: Number(this.printPaperWidth),
                    h: Number(this.printPaperHeight),
                    type: e,
                    mx: this.printConfig.marginX,
                    my: this.printConfig.marginY,
                    layout: t
                }
            }
        }, {
            key: "getRealPrintSize", value: function () {
                var e = this.getPrintPaperInfo(), t = e.w, n = e.h, i = e.layout, r = this.getDataWidth(), o = r.width,
                    a = r.noPadding, s = {noPadding: a};
                return o > t && (o = t), s.width = 1 == a ? o : t, s.height = n, this.isPrintLandscape = "landscape" === i, s
            }
        }, {
            key: "getRealPrintSizeOld", value: function () {
                var e = {}, t = this.getDataWidth(), n = t.width, i = t.noPadding, r = this.getPrintPaperInfo(),
                    o = r.w, a = r.h;
                return n > o ? (e.width = n, o < a ? (this.isPrintLandscape = !0, n < a || (e.width = a), e.height = o) : (this.isPrintLandscape = !1, e.height = a)) : (e.height = a, e.width = 1 == i ? n : o, this.isPrintLandscape = !1), e
            }
        }, {
            key: "getRealPdfSize", value: function () {
                var e = {}, t = this.getDataWidth().width, n = this.getPrintPaperInfo(), i = n.w, r = n.h, o = n.layout;
                return e.height = r, e.width = t > i ? t : i, this.isPrintLandscape = "landscape" == o, e
            }
        }, {
            key: "getRealPdfSizeOld", value: function () {
                var e = {}, t = this.getDataWidth(), n = t.width, i = t.noPadding, r = this.getPrintPaperInfo(),
                    o = r.w, a = r.h;
                return n > o ? (e.width = n, o < a ? (this.isPrintLandscape = !0, e.height = o) : (this.isPrintLandscape = !1, e.height = a)) : (e.height = a, e.width = 1 == i ? n : o, this.isPrintLandscape = !1), e
            }
        }, {
            key: "getNextLoopBlockIndex", value: function (e) {
                e || (e = "loopBlockList");
                var t = this[e], n = 0;
                if (t && t.length > 0) {
                    var i, r = Nn(t);
                    try {
                        for (r.s(); !(i = r.n()).done;) {
                            var o = i.value;
                            o.index > n && (n = o.index)
                        }
                    } catch (e) {
                        r.e(e)
                    } finally {
                        r.f()
                    }
                }
                return n + 1
            }
        }, {
            key: "cancleLoopBlock", value: function (e, t) {
                t || (t = "loopBlockList");
                var n, i = this[t].filter((function (t) {
                    return t.index == e && (n = t), t.index != e
                }));
                return this[t] = Rn(i), n
            }
        }, {
            key: "addLoopBlock", value: function (e, t) {
                t || (t = "loopBlockList"), this[t].push(e)
            }
        }, {
            key: "isDuplicateLoopBlock", value: function (e, t) {
                t || (t = "loopBlockList");
                var n = this[t];
                if (!n || 0 == n.length) return !1;
                for (var i = !1, r = 0; r < n.length; r++) {
                    var o = n[r], a = o.sri, s = o.eri, l = o.sci, c = o.eci;
                    if (1 == (i = (i = (i = (i = i || this.onePointInArea(a, s, l, c, e.sri, e.sci)) || this.onePointInArea(a, s, l, c, e.eri, e.sci)) || this.onePointInArea(a, s, l, c, e.eri, e.eci)) || this.onePointInArea(a, s, l, c, e.sri, e.eci))) break
                }
                return i
            }
        }, {
            key: "onePointInArea", value: function (e, t, n, i, r, o) {
                return e <= r && t >= r && n <= o && i >= o
            }
        }, {
            key: "viewPrintPaperRange", value: function (e, t) {
                var n = this.scroll, i = this.rows, r = this.cols, o = this.freeze, a = this.exceptRowSet, s = n.ri,
                    l = n.ci;
                s <= 0 && (s = Bn(o, 1)[0]), l <= 0 && (l = Bn(o, 2)[1]);
                for (var c = 0, u = 0, h = [i.len, r.len], d = h[0], f = h[1], g = s; g < i.len && (a.has(g) || (u += i.getHeight(g)), !(u > t)); g += 1) a.has(g) || (d = g);
                for (var p = l; p < r.len && !((c += r.getWidth(p)) > e); p += 1) f = p;
                return new m(s, l, d, f, c, u)
            }
        }, {
            key: "getLayerCellIndex", value: function (e) {
                for (var t = this.rows.getSelfData(), n = Object.keys(t), i = {}, r = 0; r < n.length; r++) {
                    var o = t[n[r]];
                    if (o && o.cells) for (var a = Object.keys(o.cells), s = 0; s < a.length; s++) {
                        var l = o.cells[a[s]];
                        if (l && l.rendered == e) {
                            i.row = n[r], i.col = a[s];
                            var c = this.cellRect(n[r], a[s]);
                            i.height = c.height, i.width = c.width;
                            break
                        }
                    }
                }
                return i
            }
        }, {
            key: "clearMerge", value: function () {
                var e = this.rows, t = this.merges;
                return new Promise((function (n) {
                    var i = [], r = e.getData();
                    t.forEach((function (e) {
                        var n = e.sci, o = e.sri, a = e.eci, s = !0, l = [e.eri - o, a - n].toString(), c = r[o];
                        if (c && c.cells) {
                            var u = c.cells[n];
                            u && u.merge && u.merge.toString() == l && (s = !1)
                        }
                        !0 === s && (i.push(e.toString()), t.deleteWithin(e))
                    })), n(i)
                }))
            }
        }, {
            key: "clearUndefinedRow", value: function () {
                var e = this;
                this.rows.each((function (t, n) {
                    0 === t || "0" === t || (!t || "undefined" == t || parseInt(t) < 0 || "{}" == JSON.stringify(n) || !n.cells || "{}" == JSON.stringify(n.cells)) && e.rows.deleteRow(t)
                }))
            }
        }, {
            key: "updatePrintConfig", value: function (e) {
                e && (this.printConfig = Pn({}, e));
                var t = this.getPxPrintSize(), n = t.pxWidth, i = t.pxHeight;
                this.setPrintPaperInfo(n, i)
            }
        }, {
            key: "getPxPrintSize", value: function () {
                var e = this.printConfig, t = e.width, n = e.height, i = e.isBackend, r = e.marginX, o = e.marginY,
                    a = e.layout, s = function (e, t) {
                        var n = On();
                        return t || 0 == t || (t = 10), Math.ceil((e - 2 * t) / 25.41 * n[0])
                    }(t, i ? 0 : r), l = function (e, t) {
                        var n = On();
                        return t || 0 == t || (t = 10), Math.ceil((e - 2 * t) / 25.41 * n[1])
                    }(n, i ? 0 : o);
                return "landscape" === a ? {pxWidth: l, pxHeight: s} : {pxWidth: s, pxHeight: l}
            }
        }, {
            key: "getCellLayerSizeByCol", value: function (e) {
                for (var t = this.rows.getSelfData(), n = Object.keys(t), i = [], r = 0; r < n.length; r++) {
                    var o = t[n[r]];
                    if (o && o.cells) for (var a = Object.keys(o.cells), s = 0; s < a.length; s++) if (e == a[s]) {
                        var l = o.cells[a[s]], c = n[r], u = e;
                        this.handleCellLayerSize(l, c, u, i)
                    }
                }
                return i
            }
        }, {
            key: "handleCellLayerSize", value: function (e, t, n, i) {
                if (!e && 1 == this.merges.isMerged(t, n)) {
                    var r = this.merges.getFirstIncludes(t, n), o = r.sri, a = r.sci, s = this.getCell(o, a);
                    s && (e = s, t = o, n = a)
                }
                if (e && e.display && e.rendered) {
                    var l = this.cellRect(t, n), c = l.width, u = l.height, h = c > u ? u : c;
                    "qrcode" == e.display && (c = h, u = h), e.config ? this.changeDisplayConfigSize(c, u, e.config) : i.push({
                        id: e.rendered,
                        width: c,
                        height: u
                    })
                }
            }
        }, {
            key: "getCellLayerSizeByRow", value: function (e) {
                var t = this.rows.get(e), n = [];
                if (t && t.cells) for (var i = Object.keys(t.cells), r = 0; r < i.length; r++) {
                    var o = t.cells[i[r]], a = e, s = i[r];
                    this.handleCellLayerSize(o, a, s, n)
                }
                return n
            }
        }, {
            key: "changeDisplayConfigSize", value: function (e, t, n) {
                this.displayConfig[n].width = e, this.displayConfig[n].height = t
            }
        }, {
            key: "updateDataSettings", value: function (e, t) {
                this.settings[e] = t
            }
        }, {
            key: "updateRpBarData", value: function (e) {
                var t = e.show, n = e.btnList, i = e.pageSize;
                this.rpbar.show = t, this.rpbar.btnList = n, this.rpbar.pageSize = i
            }
        }, {
            key: "getDefaultPageSize", value: function () {
                return this.rpbar.pageSize
            }
        }, {
            key: "getCurrentPageSize", value: function () {
                return this.currentPageSize
            }
        }]) && Dn(t.prototype, n), i && Dn(t, i), e
    }();

    function Un(e, t, n) {
        e.addEventListener(t, n)
    }

    function Jn(e, t, n) {
        e.removeEventListener(t, n)
    }

    function qn(e) {
        e.xclickoutside && (Jn(window.document.body, "click", e.xclickoutside), delete e.xclickoutside)
    }

    function Qn(e, t) {
        e.xclickoutside = function (n) {
            2 === n.detail || e.contains(n.target) || (t ? t(e) : (e.hide(), qn(e)))
        }, Un(window.document.body, "click", e.xclickoutside)
    }

    function ei(e, t, n) {
        Un(e, "mousemove", t), e.xEvtUp = function (i) {
            Jn(e, "mousemove", t), Jn(e, "mouseup", e.xEvtUp), n(i)
        }, Un(e, "mouseup", e.xEvtUp)
    }

    function ti(e, t, n, i) {
        Math.abs(e) > Math.abs(t) ? i(e > 0 ? "right" : "left", e, n) : i(t > 0 ? "down" : "up", t, n)
    }

    function ni(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function ii(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var ri = function () {
        function e() {
            var t = this, n = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
                r = arguments.length > 1 ? arguments[1] : void 0;
            ni(this, e), this.moving = !1, this.vertical = n, this.el = Object(i.b)("div", "".concat(he, "-resizer ").concat(n ? "vertical" : "horizontal")).children(this.hoverEl = Object(i.b)("div", "".concat(he, "-resizer-hover")).css("position", "absolute").css("top", "0").css("left", "0").on("mousedown.stop", (function (e) {
                return t.mousedownHandler(e)
            })), this.lineEl = Object(i.b)("div", "".concat(he, "-resizer-line")).hide()).hide(), this.resizerTip = n ? Object(i.b)("div", "".concat(he, "-resizer-tip width-tip")).html("宽度：100像素").hide() : Object(i.b)("div", "".concat(he, "-resizer-tip height-tip")).html("高度：25像素").hide(), this.el.child(this.resizerTip), this.cRect = null, this.finishedFn = null, this.minDistance = r, this.disabled = !1
        }

        var t, n, r;
        return t = e, (n = [{
            key: "show", value: function (e, t) {
                var n = this.moving, i = this.vertical, r = this.hoverEl, o = this.lineEl, a = this.el;
                if (!n) {
                    this.cRect = e;
                    var s = e.left, l = e.top, c = e.width, u = e.height;
                    a.offset({left: i ? s + c - 5 : s, top: i ? l : l + u - 5}).show(), r.offset({
                        width: i ? 5 : c,
                        height: i ? u : 5,
                        top: 0,
                        left: 0
                    }), r.removeClass("print-line"), o.offset({width: i ? 0 : t.width, height: i ? t.height : 0})
                }
            }
        }, {
            key: "printShow", value: function (e, t) {
            }
        }, {
            key: "hide", value: function () {
                this.el.offset({left: 0, top: 0}).hide()
            }
        }, {
            key: "mousedownHandler", value: function (e) {
                var t = this;
                if (!0 !== this.disabled) {
                    var n = e, i = this.el, r = this.lineEl, o = this.cRect, a = this.vertical, s = this.minDistance,
                        l = a ? o.width : o.height;
                    r.show(), this.toggleWidthTip(!0, l), ei(window, (function (e) {
                        t.moving = !0, null !== n && 1 === e.buttons && (a ? (l += e.movementX, t.changeWidthTipText(l), !0 === o.print ? i.css("left", "".concat(Number(o.left) + parseInt(l), "px")) : l > s && i.css("left", "".concat(o.left + l, "px"))) : (l += e.movementY, t.changeHeightTipText(l), !0 === o.print ? i.css("top", "".concat(Number(o.top) + parseInt(l), "px")) : l > s && i.css("top", "".concat(o.top + l, "px"))), n = e)
                    }), (function () {
                        n = null, r.hide(), t.toggleWidthTip(!1), t.moving = !1, t.hide(), t.finishedFn && (!0 === o.print || l < s && (l = s), t.finishedFn(o, l))
                    }))
                }
            }
        }, {
            key: "toggleWidthTip", value: function (e, t) {
                1 == e ? (this.resizerTip.show(), this.vertical ? this.changeWidthTipText(t) : this.changeHeightTipText(t)) : this.resizerTip.hide()
            }
        }, {
            key: "changeWidthTipText", value: function (e) {
                e < 0 && (e = 0), this.resizerTip.html("宽度：".concat(e, "像素"))
            }
        }, {
            key: "changeHeightTipText", value: function (e) {
                e < 0 && (e = 0), this.resizerTip.html("高度：".concat(e, "像素"))
            }
        }, {
            key: "changeDisabled", value: function () {
                this.disabled = !0
            }
        }]) && ii(t.prototype, n), r && ii(t, r), e
    }();

    function oi(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var ai = function () {
        function e(t) {
            var n = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.vertical = t, this.moveFn = null, this.disabled = !1, this.el = Object(i.b)("div", "".concat(he, "-scrollbar ").concat(t ? "vertical" : "horizontal")).child(this.contentEl = Object(i.b)("div", "")).on("mousemove.stop", (function () {
            })).on("scroll.stop", (function (e) {
                var t = e.target, i = t.scrollTop, r = t.scrollLeft;
                n.moveFn && n.moveFn(n.vertical ? i : r, e)
            })), this.increase = 0
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setDisabled", value: function (e) {
                this.disabled = e, 1 == e ? this.el.hide() : this.el.show()
            }
        }, {
            key: "move", value: function (e) {
                return this.el.scroll(e), this
            }
        }, {
            key: "scroll", value: function () {
                return this.el.scroll()
            }
        }, {
            key: "set", value: function (e, t) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                if (!1 === this.disabled) {
                    var i = e - 1;
                    if (t > i) {
                        var r = this.vertical ? "height" : "width";
                        this.el.css(r, "".concat(i - 15 + this.increase, "px")).show(), this.contentEl.css(this.vertical ? "width" : "height", "1px").css(r, "".concat(t, "px")), this.vertical && this.bottom("".concat(i - 15 + n + this.increase))
                    } else this.el.hide()
                }
                return this
            }
        }, {
            key: "bottom", value: function (e) {
                this.el.css("bottom", "calc(100% - " + e + "px)")
            }
        }, {
            key: "height", value: function () {
                var e = this.el.css("height");
                return parseInt(e.replace("px", ""))
            }
        }, {
            key: "setIncreaseNum", value: function (e) {
                this.increase = parseInt(e)
            }
        }]) && oi(t.prototype, n), r && oi(t, r), e
    }();

    function si(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function li(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ci(e, t, n) {
        return t && li(e.prototype, t), n && li(e, n), e
    }

    var ui = 10, hi = function () {
        function e() {
            si(this, e), this.cornerEl = Object(i.b)("div", "".concat(he, "-selector-corner")), this.areaEl = Object(i.b)("div", "".concat(he, "-selector-area")).child(this.cornerEl).hide(), this.clipboardEl = Object(i.b)("div", "".concat(he, "-selector-clipboard")).hide(), this.autofillEl = Object(i.b)("div", "".concat(he, "-selector-autofill")).hide(), this.el = Object(i.b)("div", "".concat(he, "-selector")).css("z-index", "".concat(ui)).children(this.areaEl, this.clipboardEl, this.autofillEl).hide(), ui += 1
        }

        return ci(e, [{
            key: "setOffset", value: function (e) {
                return this.el.offset(e).show(), this
            }
        }, {
            key: "hide", value: function () {
                return this.el.hide(), this
            }
        }, {
            key: "setAreaOffset", value: function (e) {
                var t = e.left, n = e.top, i = e.width, r = e.height;
                this.areaEl.offset({width: i - 3 + .8, height: r - 3 + .8, left: t - .8, top: n - .8}).show()
            }
        }, {
            key: "setClipboardOffset", value: function (e) {
                var t = e.left, n = e.top, i = e.width, r = e.height;
                this.clipboardEl.offset({left: t, top: n, width: i - 5, height: r - 5})
            }
        }, {
            key: "showAutofill", value: function (e) {
                var t = e.left, n = e.top, i = e.width, r = e.height;
                this.autofillEl.offset({width: i - 3, height: r - 3, left: t, top: n}).show()
            }
        }, {
            key: "hideAutofill", value: function () {
                this.autofillEl.hide()
            }
        }, {
            key: "showClipboard", value: function () {
                this.clipboardEl.show()
            }
        }, {
            key: "hideClipboard", value: function () {
                this.clipboardEl.hide()
            }
        }]), e
    }();

    function di(e) {
        var t = this.data, n = e.left, i = e.top, r = e.width, o = e.height, a = e.scroll, s = e.l, l = e.t,
            c = t.freezeTotalWidth(), u = t.freezeTotalHeight(), h = n - c;
        c > s && (h -= a.x);
        var d = i - u;
        return u > l && (d -= a.y), {left: h, top: d, width: r, height: o}
    }

    function fi(e) {
        var t = this.data, n = e.left, i = e.width, r = e.height, o = e.l, a = e.t, s = e.scroll,
            l = t.freezeTotalWidth(), c = n - l;
        return l > o && (c -= s.x), {left: c, top: a, width: i, height: r}
    }

    function gi(e) {
        var t = this.data, n = e.top, i = e.width, r = e.height, o = e.l, a = e.t, s = e.scroll,
            l = t.freezeTotalHeight(), c = n - l;
        return l > a && (c -= s.y), {left: o, top: c, width: i, height: r}
    }

    function pi(e) {
        this.br.setAreaOffset(di.call(this, e))
    }

    function mi(e) {
        this.tl.setAreaOffset(e)
    }

    function vi(e) {
        this.t.setAreaOffset(fi.call(this, e))
    }

    function yi(e) {
        this.l.setAreaOffset(gi.call(this, e))
    }

    function bi(e) {
        this.l.setClipboardOffset(gi.call(this, e))
    }

    function Ci(e) {
        this.br.setClipboardOffset(di.call(this, e))
    }

    function wi(e) {
        this.tl.setClipboardOffset(e)
    }

    function Ii(e) {
        this.t.setClipboardOffset(fi.call(this, e))
    }

    function xi(e) {
        pi.call(this, e), mi.call(this, e), vi.call(this, e), yi.call(this, e)
    }

    function Ai(e) {
        Ci.call(this, e), wi.call(this, e), Ii.call(this, e), bi.call(this, e)
    }

    var _i = function () {
        function e(t) {
            si(this, e), this.data = t, this.br = new hi, this.t = new hi, this.l = new hi, this.tl = new hi, this.br.el.show(), this.offset = null, this.areaOffset = null, this.indexes = null, this.range = null, this.arange = null, this.el = Object(i.b)("div", "".concat(he, "-selectors")).children(this.tl.el, this.t.el, this.l.el, this.br.el).hide(), this.lastri = -1, this.lastci = -1, ui += 1, this.cellRect = {
                top: 25,
                left: 60,
                ci: 0,
                ri: 0
            }
        }

        return ci(e, [{
            key: "setCellRect", value: function (e) {
                this.cellRect = e
            }
        }, {
            key: "hide", value: function () {
                this.el.hide()
            }
        }, {
            key: "resetOffset", value: function () {
                var e = this.data, t = this.tl, n = this.t, i = this.l, r = this.br, o = e.freezeTotalHeight(),
                    a = e.freezeTotalWidth();
                o > 0 || a > 0 ? (t.setOffset({width: a, height: o}), n.setOffset({
                    left: a,
                    height: o
                }), i.setOffset({top: o, width: a}), r.setOffset({
                    left: a,
                    top: o
                })) : (t.hide(), n.hide(), i.hide(), r.setOffset({left: 0, top: 0}))
            }
        }, {
            key: "resetAreaOffset", value: function () {
                var e = this.data.getSelectedRect(), t = this.data.getClipboardRect();
                xi.call(this, e), Ai.call(this, t), this.resetOffset()
            }
        }, {
            key: "resetBRTAreaOffset", value: function () {
                var e = this.data.getSelectedRect(), t = this.data.getClipboardRect();
                pi.call(this, e), vi.call(this, e), Ci.call(this, t), Ii.call(this, t), this.resetOffset()
            }
        }, {
            key: "resetBRLAreaOffset", value: function () {
                var e = this.data.getSelectedRect(), t = this.data.getClipboardRect();
                pi.call(this, e), yi.call(this, e), Ci.call(this, t), bi.call(this, t), this.resetOffset()
            }
        }, {
            key: "set", value: function (e, t) {
                var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], i = this.data,
                    r = i.calSelectedRangeByStart(e, t), o = r.sri, a = r.sci;
                if (n) {
                    var s = e, l = t;
                    e < 0 && (s = 0), t < 0 && (l = 0), i.selector.setIndexes(s, l), this.indexes = [s, l]
                }
                this.moveIndexes = [o, a], this.range = r, this.resetAreaOffset(), this.el.show()
            }
        }, {
            key: "setForReadonly", value: function (e, t) {
                var n = this.data, i = (n.calSelectedRangeByStart(e, t), e), r = t;
                e < 0 && (i = 0), t < 0 && (r = 0), n.selector.setIndexes(i, r), this.indexes = [i, r]
            }
        }, {
            key: "setEnd", value: function (e, t) {
                var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], i = this.data,
                    r = this.lastri, o = this.lastci;
                if (n) {
                    if (e === r && t === o) return;
                    this.lastri = e, this.lastci = t
                }
                this.range = i.calSelectedRangeByEnd(e, t), xi.call(this, this.data.getSelectedRect())
            }
        }, {
            key: "reset", value: function () {
                var e = this.data.selector.range, t = e.eri, n = e.eci;
                this.setEnd(t, n)
            }
        }, {
            key: "showAutofill", value: function (e, t) {
                if (-1 !== e || -1 !== t) {
                    var n = this.range, i = n.sri, r = n.sci, o = n.eri, a = n.eci, s = e, l = t, c = i - e, u = o - e,
                        h = a - t;
                    if (r - t > 0) this.arange = new m(i, l, o, r - 1); else if (c > 0) this.arange = new m(s, r, i - 1, a); else if (h < 0) this.arange = new m(i, a + 1, o, l); else {
                        if (!(u < 0)) return void (this.arange = null);
                        this.arange = new m(o + 1, r, s, a)
                    }
                    if (null !== this.arange) {
                        var d = this.data.getRect(this.arange);
                        d.width += 2, d.height += 2;
                        var f = this.br, g = this.l, p = this.t, v = this.tl;
                        f.showAutofill(di.call(this, d)), g.showAutofill(gi.call(this, d)), p.showAutofill(fi.call(this, d)), v.showAutofill(d)
                    }
                }
            }
        }, {
            key: "hideAutofill", value: function () {
                var e = this;
                ["br", "l", "t", "tl"].forEach((function (t) {
                    e[t].hideAutofill()
                }))
            }
        }, {
            key: "showClipboard", value: function () {
                var e = this, t = this.data.getClipboardRect();
                Ai.call(this, t), ["br", "l", "t", "tl"].forEach((function (t) {
                    e[t].showClipboard()
                }))
            }
        }, {
            key: "hideClipboard", value: function () {
                var e = this;
                ["br", "l", "t", "tl"].forEach((function (t) {
                    e[t].hideClipboard()
                }))
            }
        }]), e
    }();

    function Si(e) {
        return function (e) {
            if (Array.isArray(e)) return ki(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return ki(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return ki(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function ki(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Li(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Ti(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Oi(e) {
        e.preventDefault(), e.stopPropagation();
        var t = this.filterItems;
        t.length <= 0 || (this.itemIndex >= 0 && t[this.itemIndex].toggle(), this.itemIndex -= 1, this.itemIndex < 0 && (this.itemIndex = t.length - 1), t[this.itemIndex].toggle())
    }

    function Ri(e) {
        e.stopPropagation();
        var t = this.filterItems;
        t.length <= 0 || (this.itemIndex >= 0 && t[this.itemIndex].toggle(), this.itemIndex += 1, this.itemIndex > t.length - 1 && (this.itemIndex = 0), t[this.itemIndex].toggle())
    }

    function Ei(e) {
        e.preventDefault();
        var t = this.filterItems;
        t.length <= 0 || (e.stopPropagation(), this.itemIndex < 0 && (this.itemIndex = 0), t[this.itemIndex].el.click(), this.hide())
    }

    function Pi(e) {
        var t = e.keyCode;
        switch (e.ctrlKey && e.stopPropagation(), t) {
            case 37:
                e.stopPropagation();
                break;
            case 38:
                Oi.call(this, e);
                break;
            case 39:
                e.stopPropagation();
                break;
            case 40:
                Ri.call(this, e);
                break;
            case 13:
            case 9:
                Ei.call(this, e);
                break;
            default:
                e.stopPropagation()
        }
    }

    var Mi = function () {
        function e(t, n) {
            var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "200px";
            Li(this, e), this.filterItems = [], this.items = t, this.el = Object(i.b)("div", "".concat(he, "-suggest")).css("width", r).hide(), this.itemClick = n, this.itemIndex = -1
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setOffset", value: function (e) {
                this.el.cssRemoveKeys("top", "bottom").offset(e)
            }
        }, {
            key: "hide", value: function () {
                var e = this.el;
                this.filterItems = [], this.itemIndex = -1, e.hide(), qn(this.el.parent())
            }
        }, {
            key: "setItems", value: function (e) {
                this.items = e
            }
        }, {
            key: "search", value: function (e) {
                var t, n = this, r = this.items;
                if (/^\s*$/.test(e) || (r = r.filter((function (t) {
                    return (t.key || t).startsWith(e.toUpperCase())
                }))), r = r.map((function (e) {
                    var t = e.title;
                    t ? "function" == typeof t && (t = t()) : t = e;
                    var r = Object(i.b)("div", "".concat(he, "-item")).child(t).on("click.stop", (function () {
                        n.itemClick(e), n.hide()
                    }));
                    return e.label && r.child(Object(i.b)("div", "label").html(e.label)), r
                })), this.filterItems = r, !(r.length <= 0)) {
                    var o = this.el;
                    (t = o.html("")).children.apply(t, Si(r)).show(), Qn(o.parent(), (function () {
                        n.hide()
                    }))
                }
            }
        }, {
            key: "bindInputEvents", value: function (e) {
                var t = this;
                e.on("keydown", (function (e) {
                    return Pi.call(t, e)
                }))
            }
        }]) && Ti(t.prototype, n), r && Ti(t, r), e
    }();

    function Ni(e) {
        return (Ni = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Di(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Bi(e, t) {
        return (Bi = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ji(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Hi(e);
            if (t) {
                var r = Hi(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Fi(this, n)
        }
    }

    function Fi(e, t) {
        return !t || "object" !== Ni(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Hi(e) {
        return (Hi = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Wi = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Bi(e, t)
        }(a, e);
        var t, n, r, o = ji(a);

        function a(e) {
            var t;
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a), (t = o.call(this, "div", "".concat(he, "-icon"))).iconNameEl = Object(i.b)("div", "".concat(he, "-icon-img ").concat(e)), t.child(t.iconNameEl), t
        }

        return t = a, (n = [{
            key: "setName", value: function (e) {
                this.iconNameEl.className("".concat(he, "-icon-img ").concat(e))
            }
        }]) && Di(t.prototype, n), r && Di(t, r), a
    }(i.a);

    function Vi(e) {
        return function (e) {
            if (Array.isArray(e)) return Gi(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Gi(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Gi(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Gi(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function zi(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Zi(e, t) {
        e.setMonth(e.getMonth() + t)
    }

    function $i(e, t) {
        var n = new Date(e);
        return n.setDate(t - e.getDay() + 1), n
    }

    var Ki = function () {
        function e(t) {
            var n, r = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.value = t, this.cvalue = new Date(t), this.headerLeftEl = Object(i.b)("div", "calendar-header-left"), this.bodyEl = Object(i.b)("tbody", ""), this.buildAll(), this.el = Object(i.b)("div", "".concat(he, "-calendar")).children(Object(i.b)("div", "calendar-header").children(this.headerLeftEl, Object(i.b)("div", "calendar-header-right").children(Object(i.b)("a", "calendar-prev").on("click.stop", (function () {
                return r.prev()
            })).child(new Wi("chevron-left")), Object(i.b)("a", "calendar-next").on("click.stop", (function () {
                return r.next()
            })).child(new Wi("chevron-right")))), Object(i.b)("table", "calendar-body").children(Object(i.b)("thead", "").child((n = Object(i.b)("tr", "")).children.apply(n, Vi(Y("calendar.weeks").map((function (e) {
                return Object(i.b)("th", "cell").child(e)
            }))))), this.bodyEl)), this.selectChange = function () {
            }
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setValue", value: function (e) {
                this.value = e, this.cvalue = new Date(e), this.buildAll()
            }
        }, {
            key: "prev", value: function () {
                Zi(this.value, -1), this.buildAll()
            }
        }, {
            key: "next", value: function () {
                Zi(this.value, 1), this.buildAll()
            }
        }, {
            key: "buildAll", value: function () {
                this.buildHeaderLeft(), this.buildBody()
            }
        }, {
            key: "buildHeaderLeft", value: function () {
                var e = this.value;
                this.headerLeftEl.html("".concat(Y("calendar.months")[e.getMonth()], " ").concat(e.getFullYear()))
            }
        }, {
            key: "buildBody", value: function () {
                var e, t = this, n = this.value, r = this.cvalue, o = this.bodyEl, a = function (e, t, n) {
                    for (var i = new Date(e, t, 1, 23, 59, 59), r = [[], [], [], [], [], []], o = 0; o < 6; o += 1) for (var a = 0; a < 7; a += 1) {
                        var s = $i(i, 7 * o + a), l = s.getMonth() !== t,
                            c = s.getMonth() === n.getMonth() && s.getDate() === n.getDate();
                        r[o][a] = {d: s, disabled: l, active: c}
                    }
                    return r
                }(n.getFullYear(), n.getMonth(), r).map((function (e) {
                    var n, r = e.map((function (e) {
                        var n = "cell";
                        return e.disabled && (n += " disabled"), e.active && (n += " active"), Object(i.b)("td", "").child(Object(i.b)("div", n).on("click.stop", (function () {
                            t.selectChange(e.d)
                        })).child(e.d.getDate().toString()))
                    }));
                    return (n = Object(i.b)("tr", "")).children.apply(n, Vi(r))
                }));
                (e = o.html("")).children.apply(e, Vi(a))
            }
        }]) && zi(t.prototype, n), r && zi(t, r), e
    }();

    function Xi(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Yi = function () {
        function e() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.calendar = new Ki(new Date), this.el = Object(i.b)("div", "".concat(he, "-datepicker")).child(this.calendar.el).hide()
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setValue", value: function (e) {
                var t = this.calendar;
                return "string" == typeof e ? /^\d{4}-\d{1,2}-\d{1,2}$/.test(e) && t.setValue(new Date(e.replace(new RegExp("-", "g"), "/"))) : e instanceof Date && t.setValue(e), this
            }
        }, {
            key: "change", value: function (e) {
                var t = this;
                this.calendar.selectChange = function (n) {
                    e(n), t.hide()
                }
            }
        }, {
            key: "show", value: function () {
                this.el.show()
            }
        }, {
            key: "hide", value: function () {
                this.el.hide()
            }
        }]) && Xi(t.prototype, n), r && Xi(t, r), e
    }();

    function Ui(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Ji(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function qi(e) {
        return e ? e.indexOf("=DB") >= 0 ? "exp-db" : e.indexOf("#") >= 0 || e.indexOf("$") >= 0 ? "exp-value" : "normal" : "normal"
    }

    function Qi() {
        if (!/^\s*$/.test(this.inputText)) {
            var e = this.textlineEl, t = this.textEl, n = this.areaOffset, i = e.offset().width + 9,
                r = this.viewFn().width - n.left - 9;
            if (i > n.width) {
                var o = i;
                if (i > r) {
                    o = r;
                    var a = parseInt(i / r, 10);
                    a += i % r > 0 ? 1 : 0, (a *= this.rowHeight) > n.height && t.css("height", "".concat(a, "px"))
                }
                t.css("width", "".concat(o, "px"))
            }
        }
    }

    function er(e) {
        var t = e.target.value, n = this.suggest, i = this.textlineEl, r = this.validator, o = this.cell;
        if (null !== o) if ("editable" in o && 1 == o.editable || void 0 === o.editable) {
            if (this.inputText = t, r) "list" === r.type ? n.search(t) : n.hide(); else {
                var a = t.lastIndexOf("=");
                -1 !== a ? n.search(t.substring(a + 1)) : n.hide()
            }
            i.html(t), Qi.call(this), this.change("input", t)
        } else e.target.value = ""; else {
            if (this.inputText = t, r) "list" === r.type ? n.search(t) : n.hide(); else {
                var s = t.lastIndexOf("=");
                -1 !== s ? n.search(t.substring(s + 1)) : n.hide()
            }
            i.html(t), Qi.call(this), this.change("input", t)
        }
    }

    function tr(e) {
        var t = this.textEl.el;
        setTimeout((function () {
            t.focus(), t.setSelectionRange(e, e)
        }), 0)
    }

    function nr(e, t) {
        var n = this.textEl, i = this.textlineEl;
        n.el.blur(), n.val(e), i.html(e), tr.call(this, t)
    }

    function ir(e) {
        var t = this.inputText, n = this.validator, i = 0;
        if (n && "list" === n.type) this.inputText = e, i = this.inputText.length; else {
            var r = t.lastIndexOf("="), o = t.substring(0, r + 1), a = t.substring(r + 1);
            a = -1 !== a.indexOf(")") ? a.substring(a.indexOf(")")) : "", this.inputText = "".concat(o + e.key, "("), i = this.inputText.length, this.inputText += ")".concat(a)
        }
        nr.call(this, this.inputText, i)
    }

    function rr() {
        this.suggest.setItems(this.formulas)
    }

    function or(e) {
        var t = e.getMonth() + 1, n = e.getDate();
        return t < 10 && (t = "0".concat(t)), n < 10 && (n = "0".concat(n)), "".concat(e.getFullYear(), "-").concat(t, "-").concat(n)
    }

    var ar = function () {
        function e(t, n, r) {
            var o = this, a = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
            Ui(this, e), this.viewFn = n, this.rowHeight = r, this.formulas = t, this.isReadOnly = a, this.suggest = new Mi(t, (function (e) {
                ir.call(o, e)
            })), this.datepicker = new Yi, this.datepicker.change((function (e) {
                o.setText(or(e)), o.clear()
            })), this.areaEl = Object(i.b)("div", "".concat(he, "-editor-area")).children(this.textEl = Object(i.b)("textarea", "").on("input", (function (e) {
                return er.call(o, e)
            })), this.textlineEl = Object(i.b)("div", "textline"), this.suggest.el, this.datepicker.el).on("mousemove.stop", (function () {
            })).on("mousedown.stop", (function () {
            })), this.el = Object(i.b)("div", "".concat(he, "-editor")).child(this.areaEl).hide(), this.suggest.bindInputEvents(this.textEl), this.areaOffset = null, this.freeze = {
                w: 0,
                h: 0
            }, this.cell = null, this.inputText = "", this.change = function () {
            }
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setFreezeLengths", value: function (e, t) {
                this.freeze.w = e, this.freeze.h = t
            }
        }, {
            key: "clear", value: function () {
                "" !== this.inputText && this.change("finished", this.inputText), this.cell = null, this.areaOffset = null, this.inputText = "", this.el.hide(), this.textEl.val(""), this.textlineEl.html(""), rr.call(this), this.datepicker.hide()
            }
        }, {
            key: "setOffset", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top", n = this.textEl,
                    i = this.areaEl, r = this.suggest, o = this.freeze, a = this.el;
                if (e) {
                    this.areaOffset = e;
                    var s = e.left, l = e.top, c = e.width, u = e.height, h = e.l, d = e.t, f = {left: 0, top: 0};
                    o.w > h && o.h > d || (o.w < h && o.h < d ? (f.left = o.w, f.top = o.h) : o.w > h ? f.top = o.h : o.h > d && (f.left = o.w)), a.offset(f), i.offset({
                        left: s - f.left - .8,
                        top: l - f.top - .8
                    }), n.offset({width: c - 9 + .8, height: u - 3 + .8});
                    var g = {left: 0};
                    g[t] = u, r.setOffset(g), r.hide()
                }
            }
        }, {
            key: "setCellLayer", value: function (e) {
                if (!(this.isReadOnly || e && e.readOnly)) {
                    var t = this.el;
                    this.datepicker, this.suggest, t.show();
                    var n = e && e.text;
                    this.cell = e, "exp-value" === qi(n) ? (this.textEl.removeAttr("readOnly"), this.setText(n)) : (this.textEl.attr("readOnly", !0), this.setText(""))
                }
            }
        }, {
            key: "setCell", value: function (e, t) {
                if ((!this.isReadOnly || e && e.text) && (!e || !e.readOnly || e && e.text)) {
                    var n = this.el, i = this.datepicker, r = this.suggest;
                    this.textEl.removeAttr("readOnly"), n.show(), this.cell = e;
                    var o = e && e.text;
                    if (o && 0 !== o.trim().length || (o = ""), this.setText(o), "exp-db" === qi(o) && this.textEl.attr("readOnly", !0), this.validator = t, t) {
                        var a = t.type;
                        "date" === a && (i.show(), /^\s*$/.test(text) || i.setValue(text)), "list" === a && (r.setItems(t.values()), r.search(""))
                    }
                    this.isReadOnly && this.textEl.attr("readOnly", !0), e && e.readOnly && this.textEl.attr("readOnly", !0)
                }
            }
        }, {
            key: "setText", value: function (e, t) {
                this.inputText = e, t || (t = e.length), nr.call(this, e, t), Qi.call(this)
            }
        }, {
            key: "updateProp", value: function (e) {
                var t = this, n = e.error, i = e.text;
                !0 === n ? (this.areaEl.addClass("error"), this.textEl.attr("readOnly", !0), setTimeout((function () {
                    t.textEl.removeAttr("readOnly");
                    var e = i.length;
                    i.indexOf("(") > 0 && (e = i.indexOf("(")), t.setText(i, ++e), t.areaEl.removeClass("error")
                }), 2e3)) : this.areaEl.removeClass("error")
            }
        }]) && Ji(t.prototype, n), r && Ji(t, r), e
    }();

    function sr(e) {
        return function (e) {
            if (Array.isArray(e)) return lr(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return lr(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return lr(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function lr(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function cr(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function ur(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var hr = [{key: "copy", title: U("contextmenu.copy"), label: "Ctrl+C"}, {
        key: "cut",
        title: U("contextmenu.cut"),
        label: "Ctrl+X"
    }, {key: "paste", title: U("contextmenu.paste"), label: "Ctrl+V"}, {
        key: "paste-value",
        title: U("contextmenu.pasteValue"),
        label: "Ctrl+Shift+V"
    }, {
        key: "paste-format",
        title: U("contextmenu.pasteFormat"),
        label: "Ctrl+Alt+V"
    }, {key: "divider"}, {
        key: "loop-block",
        title: U("contextmenu.loopBlock"),
        label: "icon"
    }, {key: "divider"}, {
        key: "zoned-edition",
        title: U("contextmenu.zonedEdition"),
        label: "icon"
    }, {key: "divider"}, {key: "insert-row", title: U("contextmenu.insertRow"), label: "input"}, {
        key: "insert-column",
        title: U("contextmenu.insertColumn"),
        label: "input"
    }, {key: "divider"}, {
        key: "delete-row",
        title: U("contextmenu.deleteRow"),
        attr: "delete-row"
    }, {key: "delete-column", title: U("contextmenu.deleteColumn"), attr: "delete-col"}, {
        key: "delete-cell-text",
        title: U("contextmenu.deleteCellText")
    }, {key: "clearMerge", title: U("contextmenu.clearMerge")}, {key: "divider"}, {
        key: "validation",
        title: U("contextmenu.validation")
    }, {key: "divider"}, {
        key: "cancleBackend",
        title: U("contextmenu.cancleBackend")
    }, {key: "divider"}, {key: "background", title: U("contextmenu.background")}];

    function dr(e) {
        var t = this;
        return Object(i.b)("div", "".concat(he, "-item")).on("mouseover", (function () {
            t.itemClick(e.key, t.getSubMenuPosition(e.key))
        })).on("mouseleave", (function () {
            t.itemClick(e.key, !1)
        })).children(e.title(), Object(i.b)("span", "".concat(he, "-icon right")))
    }

    function fr(e) {
        var t = this, n = "", r = "";
        "insert-row" == e.key ? (n = "行", r = "row") : "insert-column" == e.key && (n = "列", r = "col");
        var o = Object(i.b)("input").attr("name", e.key).addClass("jm-menu-item-input").val(1).on("input", (function (e) {
            t.insertInputValue[r] = e.target.value, e.target.focus()
        })).on("click", (function (e) {
            e.stopPropagation()
        })), a = Object(i.b)("div", "".concat(he, "-item")).css("line-height", "22px").on("click", (function (i) {
            t.insertInputValue[r] ? (t.itemClick(e.key, parseInt(t.insertInputValue[r])), t.hide()) : t.itemClick("error", "请填入" + n + "值")
        })).children(e.title(), Object(i.b)("div").css("float", "right").child(o).child(Object(i.b)("span").css("display", "inline-block").css("vertical-align", "middle").html(n)));
        return e.attr && a.attr("menu", e.attr), a
    }

    function gr(e) {
        var t = this, n = Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
            t.itemClick(e.key), t.hide()
        })).children(e.title(), Object(i.b)("div", "label").child(e.label || ""));
        return e.attr && n.attr("menu", e.attr), n
    }

    function pr(e) {
        return "divider" === e.key ? Object(i.b)("div", "".concat(he, "-item divider")) : "icon" === e.label ? dr.call(this, e) : "input" === e.label ? fr.call(this, e) : gr.call(this, e)
    }

    function mr() {
        var e = this;
        return hr.map((function (t) {
            return pr.call(e, t)
        }))
    }

    var vr = function () {
        function e(t) {
            var n, r = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
            cr(this, e), this.insertInputValue = {
                row: 1,
                col: 1
            }, this.childrenList = mr.call(this), this.el = (n = Object(i.b)("div", "".concat(he, "-contextmenu"))).children.apply(n, sr(this.childrenList)).hide().addClass("ty-container-scroll"), this.viewFn = t, this.itemClick = function () {
            }, this.isHide = r
        }

        var t, n, r;
        return t = e, (n = [{
            key: "hideMenuItem", value: function (e) {
                for (var t = 0; t <= this.childrenList.length; t++) {
                    var n = this.childrenList[t];
                    if (n) {
                        var i = n.attr("menu");
                        i && i === e ? n.hide() : n.show()
                    }
                }
            }
        }, {
            key: "hide", value: function () {
                var e = this.el;
                e.hide(), qn(e)
            }
        }, {
            key: "getSubMenuPosition", value: function (e) {
                var t = this.el.offset(), n = this.el.scroll().top;
                return "loop-block" == e ? n = t.top + 130 - n + 5 : "zoned-edition" == e && (n = t.top + 156 - n + 15), {
                    top: n,
                    left: t.left + 245
                }
            }
        }, {
            key: "setPosition", value: function (e, t) {
                if (!this.isHide) {
                    var n = this.el, i = n.show().offset().width, r = this.viewFn(), o = t + 5, a = e;
                    o + 280 > r.height && (o -= 280) < 25 && (this.el.css("height", "".concat(280 + o - 25 - 5, "px")), o = 25), 25 !== o && this.el.css("height", "".concat(280, "px")), r.width - e <= i && (a -= i), n.offset({
                        left: a,
                        top: o
                    }), Qn(n)
                }
            }
        }]) && ur(t.prototype, n), r && ur(t, r), e
    }();

    function yr(e) {
        return function (e) {
            if (Array.isArray(e)) return Cr(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || br(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function br(e, t) {
        if (e) {
            if ("string" == typeof e) return Cr(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Cr(e, t) : void 0
        }
    }

    function Cr(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function wr(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Ir(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var xr = [{key: "setting", title: U("contextmenu.setting"), main: "loop-block"}, {
        key: "loopTime",
        title: U("contextmenu.loopTime"),
        main: "loop-block"
    }, {key: "cancel", title: U("contextmenu.cancel"), main: "loop-block"}, {
        key: "setting",
        title: U("contextmenu.setting"),
        main: "zoned-edition"
    }, {key: "cancel", title: U("contextmenu.cancel"), main: "zoned-edition"}];

    function Ar(e) {
        var t = this;
        return "divider" === e.key ? Object(i.b)("div", "".concat(he, "-item divider")) : Object(i.b)("div", "".concat(he, "-item ").concat(e.main)).on("click", (function () {
            t.itemClick(e.key, e.main), t.hide()
        })).children(e.title())
    }

    function _r() {
        var e = this;
        return xr.map((function (t) {
            return Ar.call(e, t)
        }))
    }

    var Sr = function () {
        function e(t) {
            var n, r = this, o = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
            wr(this, e), this.items = _r.call(this), this.el = (n = Object(i.b)("div", "".concat(he, "-contextmenu sub-menu"))).children.apply(n, yr(this.items)).hide().addClass("ty-container-scroll").on("mouseover", (function () {
                r.el.show()
            })).on("mouseleave", (function () {
                r.el.hide()
            })), this.viewFn = t, this.itemClick = function () {
            }, this.isHide = o
        }

        var t, n, r;
        return t = e, (n = [{
            key: "hide", value: function () {
                var e = this.el;
                e.hide(), qn(e)
            }
        }, {
            key: "setPosition", value: function (e, t, n) {
                if (!this.isHide) {
                    var i = this.el;
                    i.addClass(n);
                    var r, o = function (e, t) {
                        var n;
                        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                            if (Array.isArray(e) || (n = br(e)) || t && e && "number" == typeof e.length) {
                                n && (e = n);
                                var i = 0, r = function () {
                                };
                                return {
                                    s: r, n: function () {
                                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                                    }, e: function (e) {
                                        throw e
                                    }, f: r
                                }
                            }
                            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                        }
                        var o, a = !0, s = !1;
                        return {
                            s: function () {
                                n = e[Symbol.iterator]()
                            }, n: function () {
                                var e = n.next();
                                return a = e.done, e
                            }, e: function (e) {
                                s = !0, o = e
                            }, f: function () {
                                try {
                                    a || null == n.return || n.return()
                                } finally {
                                    if (s) throw o
                                }
                            }
                        }
                    }(this.items);
                    try {
                        for (o.s(); !(r = o.n()).done;) {
                            var a = r.value;
                            a.hasClass(n) ? a.show() : a.hide()
                        }
                    } catch (e) {
                        o.e(e)
                    } finally {
                        o.f()
                    }
                    i.show().offset({left: e, top: t}), Qn(i)
                }
            }
        }]) && Ir(t.prototype, n), r && Ir(t, r), e
    }();

    function kr(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Lr = function () {
        function e(t, n, i, r) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.tip = Y("toolbar.".concat(t.replace(/-[a-z]/g, (function (e) {
                return e[1].toUpperCase()
            })))), this.tag = t, this.shortcut = n, this.value = i, this.acceptParam = r, this.el = this.element(), this.change = function () {
            }, this.save = function () {
            }
        }

        var t, n, r;
        return t = e, (n = [{
            key: "element", value: function () {
                var e = this.tip;
                return Object(i.b)("div", "".concat(he, "-toolbar-btn")).on("mouseenter", (function (t) {
                    !function (e, t) {
                        if (!t.classList.contains("active")) {
                            var n = t.getBoundingClientRect(), r = n.left, o = n.top, a = n.width, s = n.height,
                                l = Object(i.b)("div", "".concat(he, "-tooltip")).html(e).show();
                            document.body.appendChild(l.el);
                            var c = l.box();
                            l.css("left", "".concat(r + a / 2 - c.width / 2, "px")).css("top", "".concat(o + s + 2, "px")), Un(t, "mouseleave", (function () {
                                document.body.contains(l.el) && document.body.removeChild(l.el)
                            })), Un(t, "click", (function () {
                                document.body.contains(l.el) && document.body.removeChild(l.el)
                            }))
                        }
                    }(e, t.target)
                })).attr("data-tooltip", e)
            }
        }, {
            key: "setState", value: function () {
            }
        }]) && kr(t.prototype, n), r && kr(t, r), e
    }();

    function Tr(e) {
        return (Tr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Or(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Rr(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Er(e, t, n) {
        return (Er = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = Dr(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function Pr(e, t) {
        return (Pr = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Mr(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Dr(e);
            if (t) {
                var r = Dr(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Nr(this, n)
        }
    }

    function Nr(e, t) {
        return !t || "object" !== Tr(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Dr(e) {
        return (Dr = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Br = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Pr(e, t)
        }(o, e);
        var t, n, i, r = Mr(o);

        function o() {
            return Or(this, o), r.apply(this, arguments)
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
            }
        }, {
            key: "getValue", value: function (e) {
                return e
            }
        }, {
            key: "element", value: function () {
                var e = this, t = this.tag;
                return this.dd = this.dropdown(), this.dd.change = function (n) {
                    return e.change(t, e.getValue(n))
                }, Er(Dr(o.prototype), "element", this).call(this).child(this.dd)
            }
        }, {
            key: "setState", value: function (e) {
                e && (this.value = e, this.dd.setTitle(e))
            }
        }]) && Rr(t.prototype, n), i && Rr(t, i), o
    }(Lr);

    function jr(e) {
        return (jr = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Fr(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Hr(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Wr(e, t) {
        return (Wr = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Vr(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = zr(e);
            if (t) {
                var r = zr(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Gr(this, n)
        }
    }

    function Gr(e, t) {
        return !t || "object" !== jr(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function zr(e) {
        return (zr = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Zr = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Wr(e, t)
        }(a, e);
        var t, n, r, o = Vr(a);

        function a(e, t, n, r) {
            var s, l;
            Fr(this, a), (l = o.call(this, "div", "".concat(he, "-dropdown ").concat(r))).title = e;
            for (var c = arguments.length, u = new Array(c > 4 ? c - 4 : 0), h = 4; h < c; h++) u[h - 4] = arguments[h];
            return l.handleOtherDropdown(u), l.change = function () {
            }, "string" == typeof e ? l.title = Object(i.b)("div", "".concat(he, "-dropdown-title")).child(e) : n && l.title.addClass("arrow-left"), l.contentEl = (s = Object(i.b)("div", "".concat(he, "-dropdown-content"))).children.apply(s, u).css("width", t).hide(), l.headerEl = Object(i.b)("div", "".concat(he, "-dropdown-header")), l.headerEl.on("click", (function () {
                "block" !== l.contentEl.css("display") ? l.show() : l.hide()
            })).children(l.title, n ? Object(i.b)("div", "".concat(he, "-icon arrow-right")).child(Object(i.b)("div", "".concat(he, "-icon-img arrow-down"))) : ""), l.children(l.headerEl, l.contentEl), l
        }

        return t = a, (n = [{
            key: "setTitle", value: function (e) {
                this.title.html(e), this.hide()
            }
        }, {
            key: "show", value: function () {
                var e = this;
                this.contentEl.show(), this.parent().active(), Qn(this.parent(), (function () {
                    e.hide()
                }))
            }
        }, {
            key: "hide", value: function () {
                this.parent().active(!1), this.contentEl.hide(), qn(this.parent())
            }
        }, {
            key: "handleOtherDropdown", value: function () {
            }
        }]) && Hr(t.prototype, n), r && Hr(t, r), a
    }(i.a);

    function $r(e) {
        return ($r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Kr(e) {
        return function (e) {
            if (Array.isArray(e)) return Xr(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Xr(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Xr(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Xr(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Yr(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Ur(e, t) {
        return (Ur = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Jr(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Qr(e);
            if (t) {
                var r = Qr(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return qr(this, n)
        }
    }

    function qr(e, t) {
        return !t || "object" !== $r(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Qr(e) {
        return (Qr = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var eo = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Ur(e, t)
        }(a, e);
        var t, n, r, o = Jr(a);

        function a(e, t) {
            var n;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            var r = new Wi("align-".concat(t)), s = e.map((function (e) {
                return (t = "align-".concat(e), Object(i.b)("div", "".concat(he, "-item")).child(new Wi(t))).on("click", (function () {
                    n.setTitle(e), n.change(e)
                }));
                var t
            }));
            return n = o.call.apply(o, [this, r, "auto", !0, "bottom-left"].concat(Kr(s)))
        }

        return t = a, (n = [{
            key: "setTitle", value: function (e) {
                this.title.setName("align-".concat(e)), this.hide()
            }
        }]) && Yr(t.prototype, n), r && Yr(t, r), a
    }(Zr);

    function to(e) {
        return (to = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function no(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function io(e, t) {
        return (io = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ro(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = ao(e);
            if (t) {
                var r = ao(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return oo(this, n)
        }
    }

    function oo(e, t) {
        return !t || "object" !== to(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function ao(e) {
        return (ao = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var so = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && io(e, t)
        }(o, e);
        var t, n, i, r = ro(o);

        function o(e) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "align", "", e)
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
                var e = this.value;
                return new eo(["left", "center", "right"], e)
            }
        }]) && no(t.prototype, n), i && no(t, i), o
    }(Br);

    function lo(e) {
        return (lo = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function co(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function uo(e, t) {
        return (uo = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ho(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = go(e);
            if (t) {
                var r = go(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return fo(this, n)
        }
    }

    function fo(e, t) {
        return !t || "object" !== lo(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function go(e) {
        return (go = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var po = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && uo(e, t)
        }(o, e);
        var t, n, i, r = ho(o);

        function o(e) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "valign", "", e)
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
                var e = this.value;
                return new eo(["top", "middle", "bottom"], e)
            }
        }]) && co(t.prototype, n), i && co(t, i), o
    }(Br);

    function mo(e) {
        return (mo = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function vo(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function yo(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function bo(e, t, n) {
        return (bo = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = xo(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function Co(e, t) {
        return (Co = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function wo(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = xo(e);
            if (t) {
                var r = xo(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Io(this, n)
        }
    }

    function Io(e, t) {
        return !t || "object" !== mo(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function xo(e) {
        return (xo = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Ao = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Co(e, t)
        }(o, e);
        var t, n, i, r = wo(o);

        function o() {
            return vo(this, o), r.apply(this, arguments)
        }

        return t = o, (n = [{
            key: "element", value: function () {
                var e = this, t = this.tag;
                return bo(xo(o.prototype), "element", this).call(this).child(new Wi(t)).on("click", (function () {
                    return e.click()
                }))
            }
        }, {
            key: "click", value: function () {
                this.change(this.tag, this.toggle())
            }
        }, {
            key: "setState", value: function (e) {
                this.el.active(e)
            }
        }, {
            key: "toggle", value: function () {
                return this.el.toggle()
            }
        }, {
            key: "active", value: function () {
                return this.el.hasClass("active")
            }
        }]) && yo(t.prototype, n), i && yo(t, i), o
    }(Lr);

    function _o(e) {
        return (_o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function So(e, t) {
        return (So = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ko(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = To(e);
            if (t) {
                var r = To(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Lo(this, n)
        }
    }

    function Lo(e, t) {
        return !t || "object" !== _o(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function To(e) {
        return (To = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Oo = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && So(e, t)
        }(n, e);
        var t = ko(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "font-bold", "Ctrl+B")
        }

        return n
    }(Ao);

    function Ro(e) {
        return (Ro = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Eo(e, t) {
        return (Eo = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Po(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = No(e);
            if (t) {
                var r = No(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Mo(this, n)
        }
    }

    function Mo(e, t) {
        return !t || "object" !== Ro(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function No(e) {
        return (No = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Do = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Eo(e, t)
        }(n, e);
        var t = Po(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "font-italic", "Ctrl+I")
        }

        return n
    }(Ao);

    function Bo(e) {
        return (Bo = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function jo(e, t) {
        return (jo = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Fo(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Wo(e);
            if (t) {
                var r = Wo(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Ho(this, n)
        }
    }

    function Ho(e, t) {
        return !t || "object" !== Bo(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Wo(e) {
        return (Wo = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Vo = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && jo(e, t)
        }(n, e);
        var t = Fo(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "strike", "Ctrl+U")
        }

        return n
    }(Ao);

    function Go(e) {
        return (Go = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function zo(e, t) {
        return (zo = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Zo(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ko(e);
            if (t) {
                var r = Ko(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return $o(this, n)
        }
    }

    function $o(e, t) {
        return !t || "object" !== Go(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ko(e) {
        return (Ko = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Xo = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && zo(e, t)
        }(n, e);
        var t = Zo(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "underline", "Ctrl+U")
        }

        return n
    }(Ao);

    function Yo(e) {
        return function (e) {
            if (Array.isArray(e)) return Uo(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Uo(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Uo(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Uo(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Jo(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var qo = ["#ffffff", "#000100", "#e7e5e6", "#445569", "#5b9cd6", "#ed7d31", "#a5a5a5", "#ffc001", "#4371c6", "#71ae47"],
        Qo = [["#f2f2f2", "#7f7f7f", "#d0cecf", "#d5dce4", "#deeaf6", "#fce5d5", "#ededed", "#fff2cd", "#d9e2f3", "#e3efd9"], ["#d8d8d8", "#595959", "#afabac", "#adb8ca", "#bdd7ee", "#f7ccac", "#dbdbdb", "#ffe59a", "#b3c6e7", "#c5e0b3"], ["#bfbfbf", "#3f3f3f", "#756f6f", "#8596b0", "#9cc2e6", "#f4b184", "#c9c9c9", "#fed964", "#8eaada", "#a7d08c"], ["#a5a5a5", "#262626", "#3a3839", "#333f4f", "#2e75b5", "#c45a10", "#7b7b7b", "#bf8e01", "#2f5596", "#538136"], ["#7f7f7f", "#0c0c0c", "#171516", "#222a35", "#1f4e7a", "#843c0a", "#525252", "#7e6000", "#203864", "#365624"]],
        ea = ["#c00000", "#fe0000", "#fdc101", "#ffff01", "#93d051", "#00b04e", "#01b0f1", "#0170c1", "#012060", "#7030a0"];

    function ta(e) {
        var t = this;
        return Object(i.b)("td", "").child(Object(i.b)("div", "".concat(he, "-color-palette-cell")).on("click.stop", (function () {
            return t.change(e)
        })).css("background-color", e))
    }

    var na = function () {
        function e() {
            var t, n, r, o = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.el = Object(i.b)("div", "".concat(he, "-color-palette")), this.change = function () {
            };
            var a = Object(i.b)("table", "").children((t = Object(i.b)("tbody", "")).children.apply(t, [(n = Object(i.b)("tr", "".concat(he, "-theme-color-placeholders"))).children.apply(n, Yo(qo.map((function (e) {
                return ta.call(o, e)
            }))))].concat(Yo(Qo.map((function (e) {
                var t;
                return (t = Object(i.b)("tr", "".concat(he, "-theme-colors"))).children.apply(t, Yo(e.map((function (e) {
                    return ta.call(o, e)
                }))))
            }))), [(r = Object(i.b)("tr", "".concat(he, "-standard-colors"))).children.apply(r, Yo(ea.map((function (e) {
                return ta.call(o, e)
            }))))])));
            this.el.child(a), this.colorInput = Object(i.b)("input").attr("placeholder", "支持自定义颜色代码").attr("style", "background-color:#fff;height:21px;line-height:21px;border:1px solid #ddd;text-align:center;width:100%;font-size:14px").on("keydown", (function (e) {
                13 === e.keyCode && o.change(e.target.value)
            })).on("input", (function (e) {
                o.change(e.target.value)
            })), this.el.child(Object(i.b)("div").child(this.colorInput))
        }

        var t, n, r;
        return t = e, (n = [{
            key: "initColor", value: function (e) {
                this.colorInput.val(e)
            }
        }]) && Jo(t.prototype, n), r && Jo(t, r), e
    }();

    function ia(e) {
        return (ia = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function ra(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function oa(e, t) {
        return (oa = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function aa(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = la(e);
            if (t) {
                var r = la(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return sa(this, n)
        }
    }

    function sa(e, t) {
        return !t || "object" !== ia(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function la(e) {
        return (la = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var ca = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && oa(e, t)
        }(o, e);
        var t, n, i, r = aa(o);

        function o(e, t) {
            var n;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o);
            var i = new Wi(e).css("height", "16px").css("border-bottom", "3px solid ".concat(t)), a = new na;
            return a.change = function (e) {
                var t = "";
                t = "string" == typeof e ? e : e.color, n.change(t), n.setTitle(t)
            }, (n = r.call(this, i, "auto", !1, "bottom-left", a.el)).colorPalette = a, n
        }

        return t = o, (n = [{
            key: "setTitle", value: function (e) {
                this.title.css("border-color", e), this.colorPalette.initColor(e)
            }
        }]) && ra(t.prototype, n), i && ra(t, i), o
    }(Zr);

    function ua(e) {
        return (ua = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function ha(e) {
        return function (e) {
            if (Array.isArray(e)) return da(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return da(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return da(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function da(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function fa(e, t) {
        return (fa = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ga(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = ma(e);
            if (t) {
                var r = ma(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return pa(this, n)
        }
    }

    function pa(e, t) {
        return !t || "object" !== ua(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function ma(e) {
        return (ma = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var va = [["thin", '<svg xmlns="http://www.w3.org/2000/svg" width="50" height="1" style="user-select: none;"><line x1="0" y1="0.5" x2="50" y2="0.5" stroke-width="1" stroke="black" style="user-select: none;"></line></svg>'], ["medium", '<svg xmlns="http://www.w3.org/2000/svg" width="50" height="2" style="user-select: none;"><line x1="0" y1="1.0" x2="50" y2="1.0" stroke-width="2" stroke="black" style="user-select: none;"></line></svg>'], ["thick", '<svg xmlns="http://www.w3.org/2000/svg" width="50" height="3" style="user-select: none;"><line x1="0" y1="1.5" x2="50" y2="1.5" stroke-width="3" stroke="black" style="user-select: none;"></line></svg>'], ["dashed", '<svg xmlns="http://www.w3.org/2000/svg" width="50" height="1" style="user-select: none;"><line x1="0" y1="0.5" x2="50" y2="0.5" stroke-width="1" stroke="black" stroke-dasharray="2" style="user-select: none;"></line></svg>'], ["dotted", '<svg xmlns="http://www.w3.org/2000/svg" width="50" height="1" style="user-select: none;"><line x1="0" y1="0.5" x2="50" y2="0.5" stroke-width="1" stroke="black" stroke-dasharray="1" style="user-select: none;"></line></svg>']],
        ya = function (e) {
            !function (e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
                e.prototype = Object.create(t && t.prototype, {
                    constructor: {
                        value: e,
                        writable: !0,
                        configurable: !0
                    }
                }), t && fa(e, t)
            }(n, e);
            var t = ga(n);

            function n(e) {
                var r;
                !function (e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }(this, n);
                var o = new Wi("line-type"), a = 0, s = va.map((function (t, n) {
                    return Object(i.b)("div", "".concat(he, "-item state ").concat(e === t[0] ? "checked" : "")).on("click", (function () {
                        s[a].toggle("checked"), s[n].toggle("checked"), a = n, r.hide(), r.change(t)
                    })).child(Object(i.b)("div", "".concat(he, "-line-type")).html(t[1]))
                }));
                return r = t.call.apply(t, [this, o, "auto", !1, "bottom-left"].concat(ha(s)))
            }

            return n
        }(Zr);

    function ba(e) {
        return function (e) {
            if (Array.isArray(e)) return Ia(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || wa(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Ca(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || wa(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function wa(e, t) {
        if (e) {
            if ("string" == typeof e) return Ia(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Ia(e, t) : void 0
        }
    }

    function Ia(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function xa() {
        var e;
        return Object(i.b)("table", "").child((e = Object(i.b)("tbody", "")).children.apply(e, arguments))
    }

    function Aa(e) {
        var t = this;
        return Object(i.b)("td", "").child(Object(i.b)("div", "".concat(he, "-border-palette-cell")).child(new Wi("border-".concat(e))).on("click", (function () {
            t.mode = e;
            var n = t.mode, i = t.style, r = t.color;
            t.change({mode: n, style: i, color: r})
        })))
    }

    function _a() {
        var e = this.mode, t = this.style, n = this.color;
        this.change({mode: e, style: t, color: n})
    }

    var Sa = function e() {
        var t, n, r = this;
        !function (e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }(this, e), this.color = "#000", this.style = "thin", this.mode = "all", this.change = function () {
        }, this.ddColor = new ca("line-color", this.color), this.ddColor.change = function (e) {
            r.color = e, _a.call(r)
        }, this.ddType = new ya(this.style), this.ddType.change = function (e) {
            var t = Ca(e, 1)[0];
            r.style = t, _a.call(r)
        }, this.el = Object(i.b)("div", "".concat(he, "-border-palette"));
        var o = xa(Object(i.b)("tr", "").children(Object(i.b)("td", "".concat(he, "-border-palette-left")).child(xa((t = Object(i.b)("tr", "")).children.apply(t, ba(["all", "inside", "horizontal", "vertical", "outside"].map((function (e) {
            return Aa.call(r, e)
        })))), (n = Object(i.b)("tr", "")).children.apply(n, ba(["left", "top", "right", "bottom", "none"].map((function (e) {
            return Aa.call(r, e)
        })))))), Object(i.b)("td", "".concat(he, "-border-palette-right")).children(Object(i.b)("div", "".concat(he, "-toolbar-btn")).child(this.ddColor.el), Object(i.b)("div", "".concat(he, "-toolbar-btn")).child(this.ddType.el))));
        this.el.child(o)
    };

    function ka(e) {
        return (ka = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function La(e, t) {
        return (La = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ta(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ra(e);
            if (t) {
                var r = Ra(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Oa(this, n)
        }
    }

    function Oa(e, t) {
        return !t || "object" !== ka(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ra(e) {
        return (Ra = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Ea = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && La(e, t)
        }(n, e);
        var t = Ta(n);

        function n() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n);
            var i = new Wi("border-all"), r = new Sa;
            return r.change = function (t) {
                e.change(t)
            }, e = t.call(this, i, "auto", !1, "bottom-left", r.el)
        }

        return n
    }(Zr);

    function Pa(e) {
        return (Pa = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Ma(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Na(e, t) {
        return (Na = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Da(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = ja(e);
            if (t) {
                var r = ja(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Ba(this, n)
        }
    }

    function Ba(e, t) {
        return !t || "object" !== Pa(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function ja(e) {
        return (ja = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Fa = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Na(e, t)
        }(o, e);
        var t, n, i, r = Da(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "border")
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
                return new Ea
            }
        }]) && Ma(t.prototype, n), i && Ma(t, i), o
    }(Br);

    function Ha(e) {
        return (Ha = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Wa(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Va(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Ga(e, t, n) {
        return (Ga = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = Ka(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function za(e, t) {
        return (za = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Za(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ka(e);
            if (t) {
                var r = Ka(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return $a(this, n)
        }
    }

    function $a(e, t) {
        return !t || "object" !== Ha(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ka(e) {
        return (Ka = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Xa = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && za(e, t)
        }(o, e);
        var t, n, i, r = Za(o);

        function o() {
            return Wa(this, o), r.apply(this, arguments)
        }

        return t = o, (n = [{
            key: "element", value: function () {
                var e = this;
                return Ga(Ka(o.prototype), "element", this).call(this).child(new Wi(this.tag)).on("click", (function () {
                    return e.change(e.tag)
                }))
            }
        }, {
            key: "setState", value: function (e) {
                this.el.disabled(e)
            }
        }]) && Va(t.prototype, n), i && Va(t, i), o
    }(Lr);

    function Ya(e) {
        return (Ya = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Ua(e, t) {
        return (Ua = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ja(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Qa(e);
            if (t) {
                var r = Qa(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return qa(this, n)
        }
    }

    function qa(e, t) {
        return !t || "object" !== Ya(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Qa(e) {
        return (Qa = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var es = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Ua(e, t)
        }(n, e);
        var t = Ja(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "clearformat")
        }

        return n
    }(Xa);

    function ts(e) {
        return (ts = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function ns(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function is(e, t) {
        return (is = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function rs(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = as(e);
            if (t) {
                var r = as(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return os(this, n)
        }
    }

    function os(e, t) {
        return !t || "object" !== ts(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function as(e) {
        return (as = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var ss = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && is(e, t)
        }(o, e);
        var t, n, i, r = rs(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "paintformat")
        }

        return t = o, (n = [{
            key: "setState", value: function () {
            }
        }]) && ns(t.prototype, n), i && ns(t, i), o
    }(Ao);

    function ls(e) {
        return (ls = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function cs(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function us(e, t) {
        return (us = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function hs(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = fs(e);
            if (t) {
                var r = fs(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return ds(this, n)
        }
    }

    function ds(e, t) {
        return !t || "object" !== ls(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function fs(e) {
        return (fs = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var gs = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && us(e, t)
        }(o, e);
        var t, n, i, r = hs(o);

        function o(e) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "color", void 0, e)
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
                var e = this.tag, t = this.value;
                return new ca(e, t)
            }
        }]) && cs(t.prototype, n), i && cs(t, i), o
    }(Br);

    function ps(e) {
        return (ps = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function ms(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function vs(e, t) {
        return (vs = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ys(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Cs(e);
            if (t) {
                var r = Cs(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return bs(this, n)
        }
    }

    function bs(e, t) {
        return !t || "object" !== ps(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Cs(e) {
        return (Cs = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var ws = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && vs(e, t)
        }(o, e);
        var t, n, i, r = ys(o);

        function o(e) {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "bgcolor", void 0, e)
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
                var e = this.tag, t = this.value;
                return new ca(e, t)
            }
        }]) && ms(t.prototype, n), i && ms(t, i), o
    }(Br);

    function Is(e) {
        return (Is = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function As(e) {
        return function (e) {
            if (Array.isArray(e)) return _s(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return _s(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _s(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function _s(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Ss(e, t) {
        return (Ss = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ks(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ts(e);
            if (t) {
                var r = Ts(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Ls(this, n)
        }
    }

    function Ls(e, t) {
        return !t || "object" !== Is(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ts(e) {
        return (Ts = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Os = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Ss(e, t)
        }(n, e);
        var t = ks(n);

        function n() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n);
            var r = me.map((function (t) {
                return Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
                    e.setTitle("".concat(t.pt)), e.change(t)
                })).child("".concat(t.pt))
            }));
            return e = t.call.apply(t, [this, "10", "60px", !0, "bottom-left"].concat(As(r)))
        }

        return n
    }(Zr);

    function Rs(e) {
        return (Rs = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Es(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Ps(e, t) {
        return (Ps = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ms(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ds(e);
            if (t) {
                var r = Ds(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Ns(this, n)
        }
    }

    function Ns(e, t) {
        return !t || "object" !== Rs(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ds(e) {
        return (Ds = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Bs = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Ps(e, t)
        }(o, e);
        var t, n, i, r = Ms(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "font-size")
        }

        return t = o, (n = [{
            key: "getValue", value: function (e) {
                return e.pt
            }
        }, {
            key: "dropdown", value: function () {
                return new Os
            }
        }]) && Es(t.prototype, n), i && Es(t, i), o
    }(Br);

    function js(e) {
        return (js = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Fs(e) {
        return function (e) {
            if (Array.isArray(e)) return Hs(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Hs(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Hs(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Hs(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Ws(e, t) {
        return (Ws = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Vs(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = zs(e);
            if (t) {
                var r = zs(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Gs(this, n)
        }
    }

    function Gs(e, t) {
        return !t || "object" !== js(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function zs(e) {
        return (zs = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Zs = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Ws(e, t)
        }(n, e);
        var t = Vs(n);

        function n() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n);
            var r = pe.map((function (t) {
                return Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
                    e.setTitle(t.title), e.change(t)
                })).child(t.title)
            }));
            return e = t.call.apply(t, [this, pe[0].title, "160px", !0, "bottom-left"].concat(Fs(r)))
        }

        return n
    }(Zr);

    function $s(e) {
        return ($s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Ks(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Xs(e, t) {
        return (Xs = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ys(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Js(e);
            if (t) {
                var r = Js(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Us(this, n)
        }
    }

    function Us(e, t) {
        return !t || "object" !== $s(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Js(e) {
        return (Js = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var qs = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Xs(e, t)
        }(o, e);
        var t, n, i, r = Ys(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "font-name")
        }

        return t = o, (n = [{
            key: "getValue", value: function (e) {
                return e.key
            }
        }, {
            key: "dropdown", value: function () {
                return new Zs
            }
        }]) && Ks(t.prototype, n), i && Ks(t, i), o
    }(Br);

    function Qs(e) {
        return (Qs = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function el(e) {
        return function (e) {
            if (Array.isArray(e)) return tl(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return tl(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return tl(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function tl(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function nl(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function il(e, t) {
        return (il = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function rl(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = al(e);
            if (t) {
                var r = al(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return ol(this, n)
        }
    }

    function ol(e, t) {
        return !t || "object" !== Qs(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function al(e) {
        return (al = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var sl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && il(e, t)
        }(a, e);
        var t, n, r, o = rl(a);

        function a() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            var t = [], n = We.slice(0);
            return n.splice(1, 0, {key: "divider"}), n.splice(4, 0, {key: "divider"}), n.splice(8, 0, {key: "divider"}), n = n.map((function (n) {
                var r = Object(i.b)("div", "".concat(he, "-item"));
                if ("divider" === n.key) r.addClass("divider"); else if (r.child(n.title()).on("click.stop", (function () {
                    e.setTitle(n.key), e.change(n)
                })), n.label) {
                    var o = Object(i.b)("div", "label").attr("key", n.key).html(n.label);
                    t.push(o), r.child(o)
                }
                return r
            })), (e = o.call.apply(o, [this, "Normal", "220px", !0, "bottom-left"].concat(el(n)))).labelArray = t, e
        }

        return t = a, (n = [{
            key: "handleOtherDropdown", value: function (e) {
                var t = this;
                e.push(Object(i.b)("div", "".concat(he, "-item divider"))), Ge.map((function (n) {
                    var r = Object(i.b)("div", "".concat(he, "-item"));
                    r.child(n.title()).on("click.stop", (function () {
                        t.title.html(n.title()), t.hide(), t.change(n)
                    })), e.push(r)
                })), e.push(Object(i.b)("div", "".concat(he, "-item divider")))
            }
        }, {
            key: "setTitle", value: function (e) {
                for (var t = !0, n = 0; n < We.length; n += 1) We[n].key === e.toLowerCase() && (t = !1, this.title.html(We[n].title()));
                if (t) for (var i = 0; i < Ge.length; i += 1) Ge[i].key === e.toLowerCase() && this.title.html(Ge[i].title());
                this.hide()
            }
        }, {
            key: "setLabel", value: function (e) {
                this.labelArray.map((function (t) {
                    for (var n = t.attr("key"), i = 0; i < We.length; i += 1) if (We[i].key === n) {
                        !e || 0 == e.indexOf("$") || 0 == e.indexOf("#") || e.startsWith("=") ? t.html(We[i].label) : t.html(We[i].render(e));
                        break
                    }
                }))
            }
        }]) && nl(t.prototype, n), r && nl(t, r), a
    }(Zr);

    function ll(e) {
        return (ll = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function cl(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ul(e, t) {
        return (ul = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function hl(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = fl(e);
            if (t) {
                var r = fl(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return dl(this, n)
        }
    }

    function dl(e, t) {
        return !t || "object" !== ll(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function fl(e) {
        return (fl = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var gl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && ul(e, t)
        }(o, e);
        var t, n, i, r = hl(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "format")
        }

        return t = o, (n = [{
            key: "getValue", value: function (e) {
                return e.key
            }
        }, {
            key: "dropdown", value: function () {
                return new sl
            }
        }, {
            key: "setStatus", value: function (e, t) {
                this.dd.setLabel(t), e ? this.setState(e) : this.setState("normal")
            }
        }]) && cl(t.prototype, n), i && cl(t, i), o
    }(Br);

    function pl(e) {
        return (pl = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function ml(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function vl(e, t) {
        return (vl = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function yl(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Cl(e);
            if (t) {
                var r = Cl(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return bl(this, n)
        }
    }

    function bl(e, t) {
        return !t || "object" !== pl(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Cl(e) {
        return (Cl = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var wl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && vl(e, t)
        }(o, e);
        var t, n, i, r = yl(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "merge")
        }

        return t = o, (n = [{
            key: "setState", value: function (e, t) {
                this.el.active(e).disabled(t)
            }
        }]) && ml(t.prototype, n), i && ml(t, i), o
    }(Ao);

    function Il(e) {
        return (Il = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function xl(e, t) {
        return (xl = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Al(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Sl(e);
            if (t) {
                var r = Sl(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return _l(this, n)
        }
    }

    function _l(e, t) {
        return !t || "object" !== Il(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Sl(e) {
        return (Sl = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var kl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && xl(e, t)
        }(n, e);
        var t = Al(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "redo", "Ctrl+Y")
        }

        return n
    }(Xa);

    function Ll(e) {
        return (Ll = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Tl(e, t) {
        return (Tl = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ol(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = El(e);
            if (t) {
                var r = El(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Rl(this, n)
        }
    }

    function Rl(e, t) {
        return !t || "object" !== Ll(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function El(e) {
        return (El = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Pl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Tl(e, t)
        }(n, e);
        var t = Ol(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "undo", "Ctrl+Z")
        }

        return n
    }(Xa);

    function Ml(e) {
        return (Ml = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Nl(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Dl(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Bl(e, t, n) {
        return (Bl = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = Wl(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function jl(e, t) {
        return (jl = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Fl(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Wl(e);
            if (t) {
                var r = Wl(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Hl(this, n)
        }
    }

    function Hl(e, t) {
        return !t || "object" !== Ml(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Wl(e) {
        return (Wl = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Vl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && jl(e, t)
        }(o, e);
        var t, n, i, r = Fl(o);

        function o() {
            return Nl(this, o), r.apply(this, arguments)
        }

        return t = o, (n = [{
            key: "element", value: function () {
                var e = this, t = this.tag;
                return Bl(Wl(o.prototype), "element", this).call(this).child(new Wi(t)).on("click", (function () {
                    return e.click()
                }))
            }
        }, {
            key: "click", value: function () {
                this.change(this.tag, this.toggle())
            }
        }, {
            key: "setState", value: function (e) {
                this.el.active(e)
            }
        }, {
            key: "toggle", value: function () {
                return this.el.toggle()
            }
        }, {
            key: "active", value: function () {
                return this.el.hasClass("active")
            }
        }]) && Dl(t.prototype, n), i && Dl(t, i), o
    }(Lr);

    function Gl(e) {
        return (Gl = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function zl(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Zl(e, t) {
        return (Zl = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function $l(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Xl(e);
            if (t) {
                var r = Xl(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Kl(this, n)
        }
    }

    function Kl(e, t) {
        return !t || "object" !== Gl(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Xl(e) {
        return (Xl = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Yl = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Zl(e, t)
        }(o, e);
        var t, n, i, r = $l(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "save", "Ctrl+S")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag, this.toggle())
            }
        }]) && zl(t.prototype, n), i && zl(t, i), o
    }(Vl);

    function Ul(e) {
        return (Ul = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Jl(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ql(e, t) {
        return (ql = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ql(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = tc(e);
            if (t) {
                var r = tc(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return ec(this, n)
        }
    }

    function ec(e, t) {
        return !t || "object" !== Ul(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function tc(e) {
        return (tc = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var nc = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && ql(e, t)
        }(o, e);
        var t, n, i, r = Ql(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "print-setting")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag, this.toggle())
            }
        }]) && Jl(t.prototype, n), i && Jl(t, i), o
    }(Vl);

    function ic(e) {
        return (ic = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function rc(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function oc(e, t) {
        return (oc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ac(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = lc(e);
            if (t) {
                var r = lc(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return sc(this, n)
        }
    }

    function sc(e, t) {
        return !t || "object" !== ic(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function lc(e) {
        return (lc = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var cc = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && oc(e, t)
        }(o, e);
        var t, n, i, r = ac(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "view-setting")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag, this.toggle())
            }
        }]) && rc(t.prototype, n), i && rc(t, i), o
    }(Vl);

    function uc(e) {
        return (uc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function hc(e) {
        return function (e) {
            if (Array.isArray(e)) return dc(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return dc(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dc(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function dc(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function fc(e, t) {
        return (fc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function gc(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = mc(e);
            if (t) {
                var r = mc(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return pc(this, n)
        }
    }

    function pc(e, t) {
        return !t || "object" !== uc(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function mc(e) {
        return (mc = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var vc = [{text: "首页", href: "http://118.178.139.79:5000/index"}/*, {
        text: "视频教程",
        href: "http://www.jimureport.com/doc/video"
    }, {text: "帮助文档", href: "http://report.jeecg.com/2078898"}, {
        text: "BUG反馈",
        href: "https://gitee.com/jeecg/JimuReport/issues"
    }*/], yc = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && fc(e, t)
        }(n, e);
        var t = gc(n);

        function n() {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n);
            var e = vc.map((function (e) {
                return Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
                    window.open(e.href)
                })).child(e.text)
            }));
            return t.call.apply(t, [this, new Wi("help"), "80px", !0, "bottom-left"].concat(hc(e)))
        }

        return n
    }(Zr);

    function bc(e) {
        return (bc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Cc(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function wc(e, t) {
        return (wc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Ic(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ac(e);
            if (t) {
                var r = Ac(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return xc(this, n)
        }
    }

    function xc(e, t) {
        return !t || "object" !== bc(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ac(e) {
        return (Ac = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var _c = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && wc(e, t)
        }(o, e);
        var t, n, i, r = Ic(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "help")
        }

        return t = o, (n = [{
            key: "getValue", value: function (e) {
                return e.key
            }
        }, {
            key: "dropdown", value: function () {
                return new yc
            }
        }]) && Cc(t.prototype, n), i && Cc(t, i), o
    }(Br);

    function Sc(e) {
        return (Sc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function kc(e) {
        return function (e) {
            if (Array.isArray(e)) return Lc(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Lc(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Lc(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Lc(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Tc(e, t) {
        return (Tc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Oc(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Ec(e);
            if (t) {
                var r = Ec(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Rc(this, n)
        }
    }

    function Rc(e, t) {
        return !t || "object" !== Sc(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Ec(e) {
        return (Ec = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Pc = [{key: "qrcode"}, {key: "barcode"}], Mc = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Tc(e, t)
        }(n, e);
        var t = Oc(n);

        function n() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n);
            var r = Pc.map((function (t) {
                return Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
                    e.hide(), e.change(t)
                })).child(Y("toolbar.".concat(t.key.replace(/-[a-z]/g, (function (e) {
                    return e[1].toUpperCase()
                })))))
            }));
            return e = t.call.apply(t, [this, new Wi("qrcode"), "150px", !0, "bottom-left"].concat(kc(r)))
        }

        return n
    }(Zr);

    function Nc(e) {
        return (Nc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Dc(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Bc(e, t) {
        return (Bc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function jc(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Hc(e);
            if (t) {
                var r = Hc(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Fc(this, n)
        }
    }

    function Fc(e, t) {
        return !t || "object" !== Nc(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Hc(e) {
        return (Hc = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Wc = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Bc(e, t)
        }(o, e);
        var t, n, i, r = jc(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "qrcode")
        }

        return t = o, (n = [{
            key: "getValue", value: function (e) {
                return e.key
            }
        }, {
            key: "dropdown", value: function () {
                return new Mc
            }
        }]) && Dc(t.prototype, n), i && Dc(t, i), o
    }(Br);

    function Vc(e) {
        return (Vc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Gc(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function zc(e, t) {
        return (zc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Zc(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Kc(e);
            if (t) {
                var r = Kc(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return $c(this, n)
        }
    }

    function $c(e, t) {
        return !t || "object" !== Vc(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Kc(e) {
        return (Kc = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Xc = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && zc(e, t)
        }(a, e);
        var t, n, r, o = Zc(a);

        function a() {
            var e;
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a), (e = o.call(this, "img", "Ctrl+I")).img = Object(i.b)("input").attr("type", "file").hide().on("change", (function (t) {
                e.onFileChange(t)
            })), e
        }

        return t = a, (n = [{
            key: "onFileChange", value: function (e) {
                this.change(this.tag, e.target.files[0])
            }
        }, {
            key: "uploadFile", value: function (e) {
                var t = this, n = new FormData;
                n.append("file", e), n.append("fileName", e.name), n.append("biz", "excel_online");
                var i = new XMLHttpRequest;
                i.open("POST", "/jmreport/upload"), i.send(n), i.onreadystatechange = function () {
                    if (4 === i.readyState && 200 == i.status) {
                        var e = JSON.parse(i.responseText);
                        e.success ? t.change(t.tag, e.message) : t.change("error", e.message)
                    }
                }
            }
        }, {
            key: "click", value: function () {
                this.img.el.click()
            }
        }]) && Gc(t.prototype, n), r && Gc(t, r), a
    }(Vl);

    function Yc(e) {
        return (Yc = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Uc(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Jc(e, t) {
        return (Jc = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function qc(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = eu(e);
            if (t) {
                var r = eu(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Qc(this, n)
        }
    }

    function Qc(e, t) {
        return !t || "object" !== Yc(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function eu(e) {
        return (eu = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var tu = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Jc(e, t)
        }(o, e);
        var t, n, i, r = qc(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "chart", "Ctrl+e")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag)
            }
        }]) && Uc(t.prototype, n), i && Uc(t, i), o
    }(Vl);

    function nu(e) {
        return (nu = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function iu(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ru(e, t) {
        return (ru = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ou(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = su(e);
            if (t) {
                var r = su(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return au(this, n)
        }
    }

    function au(e, t) {
        return !t || "object" !== nu(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function su(e) {
        return (su = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var lu = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && ru(e, t)
        }(o, e);
        var t, n, i, r = ou(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "view", "Ctrl+M")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag)
            }
        }]) && iu(t.prototype, n), i && iu(t, i), o
    }(Vl);

    function cu(e) {
        return (cu = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function uu(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function hu(e, t) {
        return (hu = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function du(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = gu(e);
            if (t) {
                var r = gu(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return fu(this, n)
        }
    }

    function fu(e, t) {
        return !t || "object" !== cu(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function gu(e) {
        return (gu = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var pu = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && hu(e, t)
        }(o, e);
        var t, n, i, r = du(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "cell-exp")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag)
            }
        }]) && uu(t.prototype, n), i && uu(t, i), o
    }(Vl);

    function mu(e) {
        return (mu = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function vu(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function yu(e, t) {
        return (yu = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function bu(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = wu(e);
            if (t) {
                var r = wu(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Cu(this, n)
        }
    }

    function Cu(e, t) {
        return !t || "object" !== mu(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function wu(e) {
        return (wu = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Iu = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && yu(e, t)
        }(o, e);
        var t, n, i, r = bu(o);

        function o() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o), r.call(this, "cell-line")
        }

        return t = o, (n = [{
            key: "click", value: function () {
                this.change(this.tag)
            }
        }]) && vu(t.prototype, n), i && vu(t, i), o
    }(Vl);

    function xu(e) {
        return (xu = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Au(e, t) {
        return (Au = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function _u(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = ku(e);
            if (t) {
                var r = ku(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Su(this, n)
        }
    }

    function Su(e, t) {
        return !t || "object" !== xu(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function ku(e) {
        return (ku = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Lu = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Au(e, t)
        }(n, e);
        var t = _u(n);

        function n() {
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, n), t.call(this, "textwrap")
        }

        return n
    }(Ao);

    function Tu(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Ou(e) {
        return (Ou = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Ru(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Eu(e, t) {
        if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
        e.prototype = Object.create(t && t.prototype, {
            constructor: {
                value: e,
                writable: !0,
                configurable: !0
            }
        }), t && Pu(e, t)
    }

    function Pu(e, t) {
        return (Pu = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Mu(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Du(e);
            if (t) {
                var r = Du(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Nu(this, n)
        }
    }

    function Nu(e, t) {
        return !t || "object" !== Ou(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Du(e) {
        return (Du = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Bu = function (e) {
        Eu(n, e);
        var t = Mu(n);

        function n() {
            var e;
            Ru(this, n);
            var r = new Wi("ellipsis"), o = Object(i.b)("div", "".concat(he, "-toolbar-more"));
            return (e = t.call(this, r, "auto", !1, "bottom-right", o)).moreBtns = o, e.contentEl.css("max-width", "420px"), e
        }

        return n
    }(Zr), ju = function (e) {
        Eu(o, e);
        var t, n, i, r = Mu(o);

        function o() {
            var e;
            return Ru(this, o), (e = r.call(this, "more")).el.hide(), e
        }

        return t = o, (n = [{
            key: "dropdown", value: function () {
                return new Bu
            }
        }, {
            key: "show", value: function () {
                this.el.show()
            }
        }, {
            key: "hide", value: function () {
                this.el.hide()
            }
        }]) && Tu(t.prototype, n), i && Tu(t, i), o
    }(Br);

    function Fu(e) {
        return (Fu = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Hu(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Wu(e, t) {
        return (Wu = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Vu(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = zu(e);
            if (t) {
                var r = zu(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Gu(this, n)
        }
    }

    function Gu(e, t) {
        return !t || "object" !== Fu(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function zu(e) {
        return (zu = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Zu = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Wu(e, t)
        }(a, e);
        var t, n, r, o = Vu(a);

        function a() {
            var e;
            return function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a), (e = o.call(this, "uploadExcel", "Ctrl+E")).uploadExcel = Object(i.b)("input").attr("type", "file").hide().on("change", (function (t) {
                e.onFileChange(t)
            })), e
        }

        return t = a, (n = [{
            key: "onFileChange", value: function (e) {
                this.change(this.tag, e.target.files[0])
            }
        }, {
            key: "click", value: function () {
                this.uploadExcel.el.click()
            }
        }]) && Hu(t.prototype, n), r && Hu(t, r), a
    }(Vl);

    function $u(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Ku(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Xu(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Yu(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Yu(e, t)
        }(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Yu(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Uu() {
        return Object(i.b)("div", "".concat(he, "-toolbar-divider"))
    }

    function Ju() {
        var e = this;
        this.btns2 = [], this.items.forEach((function (t) {
            if (Array.isArray(t)) t.forEach((function (t) {
                var n = t.el, i = n.box(), r = n.computedStyle(), o = r.marginLeft, a = r.marginRight;
                e.btns2.push([n, i.width + parseInt(o, 10) + parseInt(a, 10)])
            })); else {
                var n = t.box(), i = t.computedStyle(), r = i.marginLeft, o = i.marginRight;
                e.btns2.push([t, n.width + parseInt(r, 10) + parseInt(o, 10)])
            }
        }))
    }

    function qu() {
        var e = this.el, t = (this.btns, this.moreEl), n = this.btns2, i = t.dd;
        i.moreBtns, i.contentEl;
        e.css("width", "".concat(this.widthFn() - 60, "px"));
        var r = e.box(), o = 160;
        n.forEach((function (e) {
            var t = Xu(e, 2), n = (t[0], t[1]);
            o += n
        })), o > r.width ? this.el.addClass("double-row") : this.el.removeClass("double-row")
    }

    var Qu = function () {
        function e(t, n) {
            var r = this, o = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
            $u(this, e);
            t.settings.printElHeight;
            this.data = t, this.change = function () {
            }, this.widthFn = n, this.isHide = o;
            var a = t.defaultStyle();
            this.items = [[this.InsertViewEl = new lu], Uu(), [this.saveEl = new Yl], [this.undoEl = new Pl, this.redoEl = new kl, this.paintformatEl = new ss, this.clearformatEl = new es], Uu(), [this.formatEl = new gl], Uu(), [this.fontEl = new qs, this.fontSizeEl = new Bs], Uu(), [this.boldEl = new Oo, this.italicEl = new Do, this.underlineEl = new Xo, this.strikeEl = new Vo, this.textColorEl = new gs(a.color)], Uu(), [this.fillColorEl = new ws(a.bgcolor), this.borderEl = new Fa, this.mergeEl = new wl], Uu(), [this.alignEl = new so(a.align), this.valignEl = new po(a.valign), this.textwrapEl = new Lu], Uu(), [this.CellExp = new pu, this.CellLine = new Iu], Uu(), [this.InsertChartEl = new tu, this.InsertImgEl = new Xc, this.Qrcode = new Wc], Uu(), [this.UploadExcelEl = new Zu], Uu(), [this.PrintSettingEl = new nc], Uu(), [this.viewSettingEl = new cc], Uu(), [this.HelpEl = new _c, this.moreEl = new ju]];
            for (var s = Object(i.b)("div").css("display", "inline-block"), l = Object(i.b)("div").css("display", "inline-block"), c = 17, u = function (e, t) {
                var n = r.items[e];
                Array.isArray(n) ? n.forEach((function (e) {
                    t.child(e.el), e.change = function () {
                        r.change.apply(r, arguments)
                    }
                })) : t.child(n.el)
            }, h = 0; h < c; h++) u(h, s);
            for (var d = c; d < this.items.length; d++) u(d, l);
            this.el = Object(i.b)("div", "".concat(he, "-toolbar")), this.btns = Object(i.b)("div", "".concat(he, "-toolbar-btns")), this.btns.children(s, l), this.el.child(this.btns), o ? this.el.hide() : (this.reset(), setTimeout((function () {
                Ju.call(r), qu.call(r)
            }), 0), Un(window, "resize", (function () {
                qu.call(r)
            })))
        }

        var t, n, r;
        return t = e, (n = [{
            key: "paintformatActive", value: function () {
                return this.paintformatEl.active()
            }
        }, {
            key: "paintformatToggle", value: function () {
                this.paintformatEl.toggle()
            }
        }, {
            key: "trigger", value: function (e) {
                this["".concat(e, "El")].click()
            }
        }, {
            key: "showFirstPrintSize", value: function () {
                this.data;
                var e = Tn[0];
                e.key, e.w, e.h
            }
        }, {
            key: "setCellStyleFormatStatus", value: function (e, t) {
                var n = "";
                n = e && e.display ? e.display : t && t.format, this.formatEl.setStatus(n, e && e.text)
            }
        }, {
            key: "reset", value: function () {
                if (!this.isHide) {
                    var e = this.data, t = e.getSelectedCellStyle(), n = e.getSelectedCell();
                    this.undoEl.setState(!e.canUndo()), this.PrintSettingEl.setState(!1), this.viewSettingEl.setState(!1), this.saveEl.setState(!1), this.setCellStyleFormatStatus(n, t), this.redoEl.setState(!e.canRedo()), this.mergeEl.setState(e.canUnmerge(), !e.selector.multiple());
                    var i = t.font;
                    this.fontEl.setState(i.name), this.fontSizeEl.setState(i.size), this.boldEl.setState(i.bold), this.italicEl.setState(i.italic), this.underlineEl.setState(t.underline), this.strikeEl.setState(t.strike), this.textColorEl.setState(t.color), this.fillColorEl.setState(t.bgcolor), this.alignEl.setState(t.align), this.valignEl.setState(t.valign), this.textwrapEl.setState(t.textwrap), n && n.format && this.formatEl.setState(n.format)
                }
            }
        }]) && Ku(t.prototype, n), r && Ku(t, r), e
    }();

    function eh(e) {
        return function (e) {
            if (Array.isArray(e)) return th(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return th(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return th(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function th(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function nh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var ih = [{key: "del", title: "删除"}, {key: "divider"}, {
            key: "fixed",
            title: "固定"
        }, {key: "divider"}, {key: "updateImage", title: "重新上传图片"}, {key: "divider"}, {key: "backend", title: "设为套打图片"}],
        rh = function () {
            function e(t) {
                var n;
                !function (e, t) {
                    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                }(this, e), t || (t = ih), this.el = (n = Object(i.b)("div", "ty-layer-menu")).children.apply(n, eh(ah.call(this, t))).hide(), this.itemClick = function () {
                }
            }

            var t, n, r;
            return t = e, (n = [{
                key: "hide", value: function () {
                    var e = this.el;
                    e.hide(), qn(e)
                }
            }, {
                key: "setPosition", value: function (e, t) {
                    if (!this.isHide) {
                        var n = this.el, i = (this.el.show().offset().width, t + 10), r = e + 10;
                        n.offset({left: r, top: i}), Qn(n)
                    }
                }
            }]) && nh(t.prototype, n), r && nh(t, r), e
        }();

    function oh(e) {
        var t = this;
        return "divider" === e.key ? Object(i.b)("div", "menu-item divider") : Object(i.b)("div", "menu-item").html(e.title).on("click.stop", (function () {
            t.itemClick(e.key), t.hide()
        }))
    }

    function ah(e) {
        var t = this;
        return e.map((function (e) {
            return oh.call(t, e)
        }))
    }

    function sh(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return lh(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return lh(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function lh(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function ch(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var uh = function () {
        function e(t) {
            var n = this, r = t.type, o = t.top, a = t.left, s = t.width, l = t.height;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.type = r, this.id = function () {
                for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 16, t = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"], n = "", i = 0; i < e; i++) {
                    var r = parseInt(61 * Math.random());
                    n += t[r]
                }
                return n
            }(), this.containerWidth = s || 0, this.containerHeight = l || 0, this.src = "", this.disabled = !1, this.dragabled = !1, this.focus = !1, this.exist = !0, this.fixed = !1, this.moveFlag = !1, this.mouseDownY = 0, this.mouseDownX = 0, this.containerTop = o, this.containerLeft = a, this.mouseDownFlag = -1, this.rotateX = 0, this.rotateY = 0, this.zindex = 999, this.circles = {}, this.content = {}, this.moveTop = 0, this.moveLeft = 0, this.selected = !1, this.ignorePrint = !1, this.printPage = -1, this.printRow = -1, this.beginLine = -1, this.lastLayer = -1, this.moveRow = 0, this.rendered = !1, this.printLastPage = !1, this.change = function () {
            }, this.moveChange = function () {
            }, this.configChart = function () {
            };
            var c = Object(i.b)("div", "ty-drag-container ".concat(this.type)).css("top", this.formatPx(o)).css("left", this.formatPx(a)).on("click", (function () {
                n.focusLayer()
            })).attr("id", this.id);
            s && c.css("width", s + "px").css("height", l + "px"), this.content = Object(i.b)("div", "ty-drag-content");
            var u = [], h = Object(i.b)("div", "ty-drag-circle"), d = Object(i.b)("div", "cc top-left");
            u.push(d);
            var f = Object(i.b)("div", "cc top-center");
            u.push(f);
            var g = Object(i.b)("div", "cc top-right");
            u.push(g);
            var p = Object(i.b)("div", "cc middle-left");
            u.push(p);
            var m = Object(i.b)("div", "cc middle-right");
            u.push(m);
            var v = Object(i.b)("div", "cc bottom-left");
            u.push(v);
            var y = Object(i.b)("div", "cc bottom-center");
            u.push(y);
            var b = Object(i.b)("div", "cc bottom-right");
            u.push(b);
            for (var C = function (e) {
                u[e].on("mousedown", (function (t) {
                    n.mousedown(t, e)
                })), h.child(u[e])
            }, w = 0; w < u.length; w += 1) C(w);
            this.circles = h;
            var I = Object(i.b)("div", "ty-drag-mover").on("mousedown", (function (e) {
                n.mousedown(e, 10)
            }));
            c.children(this.content, this.circles, I), this.mover = I, this.el = c, window.document.addEventListener("mousemove", (function (e) {
                n.mousemove(e)
            })), window.document.addEventListener("mouseup", (function () {
                n.stopMove()
            })), c.on("dblclick", (function () {
                !1 === n.disabled && n.change("chart_options", n.getChartOptions())
            })), this.virtualCellRange = [], this.printCellRange = [], this.offsetX = 0, this.offsetY = 0, this.rowspan = 0, this.colspan = 0
        }

        var t, n, r;
        return t = e, (n = [{
            key: "updateOffset", value: function (e, t) {
                console.log("修改偏移量", [e, t]), this.offsetX = e, this.offsetY = t
            }
        }, {
            key: "setVirtualCellRange", value: function (e, t) {
                t ? this.printCellRange = e : this.virtualCellRange = e
            }
        }, {
            key: "getViewPagePosition", value: function (e) {
                var t = 0, n = 9999, i = e ? this.printCellRange : this.virtualCellRange;
                if (i) {
                    var r, o = sh(i);
                    try {
                        for (o.s(); !(r = o.n()).done;) {
                            var a = r.value;
                            a[0] > t && (t = a[0]), a[1] < n && (n = a[1])
                        }
                    } catch (e) {
                        o.e(e)
                    } finally {
                        o.f()
                    }
                    return {row: t, col: n}
                }
                return {row: this.designRow, col: this.designCol}
            }
        }, {
            key: "addCellRange", value: function (e) {
                this.virtualCellRange.push(e)
            }
        }, {
            key: "changeContainerPadding", value: function (e) {
                !0 === e ? this.el.addClass("readonly") : this.el.removeClass("readonly")
            }
        }, {
            key: "setId", value: function (e) {
                this.id = e, this.el.attr("id", e)
            }
        }, {
            key: "disable", value: function () {
                this.disabled = !0
            }
        }, {
            key: "getChartOptions", value: function () {
                return []
            }
        }, {
            key: "fixedLayer", value: function () {
                !1 === this.disabled && (this.fixed = !0, this.el.removeClass("active"), this.unselect(), this.toggleFocus(!1), this.change("fixed"))
            }
        }, {
            key: "focusLayer", value: function () {
                !1 === this.disabled && (this.fixed = !1, this.el.addClass("active"), this.select(), this.change("selected", this.id))
            }
        }, {
            key: "mousedown", value: function (e, t) {
                console.log("鼠标按下事件fixed=" + this.fixed), !1 === this.fixed && (this.mouseDownFlag = t, this.dragabled = !0, this.mouseDownY = e.pageY, this.mouseDownX = e.pageX, this.getContainerAbs(), 9 === t && (this.rotateX = parseInt(this.containerLeft, 10) + parseInt(this.containerWidth, 10) / 2, this.rotateY = parseInt(this.containerTop, 10) + parseInt(this.containerHeight, 10) / 2))
            }
        }, {
            key: "resetLayerSize", value: function (e, t) {
                var n = this;
                e || t ? (e && e > 0 && (this.rowspan = e), t && t > 0 && (this.colspan = t)) : this.moveChange(this.containerTop, this.containerLeft, this.row, this.col, this.containerWidth, this.containerHeight, !1, (function (e) {
                    n.rowspan = e.rowspan, n.colspan = e.colspan
                }))
            }
        }, {
            key: "stopMove", value: function () {
                var e = this;
                !0 === this.dragabled && (console.log("鼠标松开事件"), this.mouseDownFlag = -1, this.dragabled = !1, this.getContainerAbs(), !0 === this.moveFlag && this.moveChange(this.containerTop, this.containerLeft, this.row, this.col, this.containerWidth, this.containerHeight, !0, (function (t) {
                    e.changeLittlePosition(t), console.log("小小改变位置1", t), e.moveFlag = !1, e.rowspan = t.rowspan, e.colspan = t.colspan
                })))
            }
        }, {
            key: "changeLittlePosition", value: function (e) {
                var t = e.top, n = e.left, i = e.row, r = e.col;
                !0 === this.fixed && (t -= 25, n -= 60), this.containerTop = t + Number(this.offsetY), this.containerLeft = n + Number(this.offsetX), this.el.css("top", "".concat(this.containerTop, "px")).css("left", "".concat(this.containerLeft, "px")), this.row = i, this.col = r
            }
        }, {
            key: "changeCellLayerStyle", value: function (e) {
                this.changeLittlePosition(e);
                var t = e.width, n = e.height;
                t && (this.containerWidth = t, this.el.css("width", "".concat(t, "px"))), n && (this.containerHeight = n, this.el.css("height", "".concat(n, "px")))
            }
        }, {
            key: "moveCallback", value: function (e) {
            }
        }, {
            key: "mousemove", value: function (e) {
                if (!0 === this.dragabled) {
                    console.log("鼠标移动事件"), this.moveFlag = !0;
                    var t = parseInt(e.pageY, 10) - parseInt(this.mouseDownY, 10),
                        n = parseInt(e.pageX, 10) - parseInt(this.mouseDownX, 10),
                        i = t + parseInt(this.containerTop, 10), r = n + parseInt(this.containerLeft, 10),
                        o = this.mouseDownFlag;
                    if (0 === o) {
                        var a = "".concat(parseInt(this.containerHeight, 10) - t, "px"),
                            s = "".concat(parseInt(this.containerWidth, 10) - n, "px");
                        this.chart && (this.chart.el.css("height", a).css("width", s), this.chart.resize()), this.el.css("top", "".concat(i, "px")).css("height", a).css("left", "".concat(r, "px")).css("width", s)
                    } else if (1 === o) {
                        var l = "".concat(parseInt(this.containerHeight, 10) - t, "px");
                        this.el.css("top", "".concat(i, "px")).css("height", l), this.chart && (this.chart.el.css("height", l), this.chart.resize())
                    } else if (2 === o) {
                        var c = "".concat(parseInt(this.containerHeight, 10) - t, "px"),
                            u = "".concat(parseInt(this.containerWidth, 10) + n, "px");
                        this.el.css("top", "".concat(i, "px")).css("height", c).css("width", u), this.chart && (this.chart.el.css("height", c).css("width", u), this.chart.resize())
                    } else if (3 === o) {
                        "".concat(parseInt(this.containerHeight, 10) - t, "px");
                        var h = "".concat(parseInt(this.containerWidth, 10) - n, "px");
                        this.el.css("width", h), this.chart && (this.chart.el.css("width", h), this.chart.resize(), this.el.css("left", "".concat(r, "px")).css("width", h))
                    } else if (4 === o) {
                        "".concat(parseInt(this.containerHeight, 10) - t, "px");
                        var d = "".concat(parseInt(this.containerWidth, 10) + n, "px");
                        this.el.css("width", d), this.chart && (this.chart.el.css("width", d), this.chart.resize())
                    } else if (5 === o) {
                        var f = "".concat(parseInt(this.containerHeight, 10) + t, "px"),
                            g = "".concat(parseInt(this.containerWidth, 10) - n, "px");
                        this.el.css("left", "".concat(r, "px")).css("height", f).css("width", g), this.chart && (this.chart.el.css("height", f).css("width", g), this.chart.resize())
                    } else if (6 === o) {
                        var p = "".concat(parseInt(this.containerHeight, 10) + t, "px");
                        this.el.css("height", p), this.chart && (this.chart.el.css("height", p), this.chart.resize())
                    } else if (7 === o) {
                        var m = "".concat(parseInt(this.containerHeight, 10) + t, "px"),
                            v = "".concat(parseInt(this.containerWidth, 10) + n, "px");
                        this.el.css("width", v).css("height", m), this.chart && (this.chart.el.css("height", m).css("width", v), this.chart.resize())
                    } else 10 === o ? this.el.css("left", "".concat(r, "px")).css("top", "".concat(i, "px")) : 9 === o && this.initRotate(e);
                    this.moveCallback(o)
                }
            }
        }, {
            key: "initRotate", value: function (e) {
                console.log("this.rotateX", this.rotateX), console.log("this.rotateY", this.rotateY);
                var t = parseInt(e.pageX, 10) - this.rotateX, n = parseInt(e.pageY, 10) - this.rotateY,
                    i = Math.abs(t / n), r = Math.atan(i) / (2 * Math.PI) * 360;
                t < 0 && n < 0 ? r = -r : t < 0 && n > 0 ? r = -(180 - r) : t > 0 && n < 0 ? r = r : t > 0 && n > 0 && (r = 180 - r), this.el.css("transform", "rotate(".concat(r, "deg)"))
            }
        }, {
            key: "getContainerAbs", value: function () {
                var e = this.el.computedStyle();
                this.containerTop = e.top.replace("px", ""), this.containerLeft = e.left.replace("px", ""), this.containerWidth = e.width.replace("px", ""), this.containerHeight = e.height.replace("px", "")
            }
        }, {
            key: "reset", value: function () {
                this.el.removeClass("active")
            }
        }, {
            key: "formatPx", value: function (e) {
                return 0 == e ? 0 : e ? (e += "").indexOf("px") > 0 ? e : e + "px" : ""
            }
        }, {
            key: "initPosition", value: function (e) {
                return e ? (e += "").indexOf("px") > 0 ? parseInt(e.replace("px", ""), 10) : parseInt(e, 10) : 0
            }
        }, {
            key: "scrollMove", value: function (e, t) {
                !0 === t ? (!1 !== e && (this.moveTop = e), parseInt(this.containerTop, 10), this.moveTop) : (!1 !== e && (this.moveLeft = e), parseInt(this.containerLeft, 10), this.moveLeft)
            }
        }, {
            key: "deleteLayer", value: function () {
                !1 === this.fixed && this.exist && (this.el.el.parentNode.removeChild(this.el.el), this.exist = !1, this.change("delete", this.getLayerId()))
            }
        }, {
            key: "deleteCellLayer", value: function () {
                if (this.exist) {
                    var e = document.getElementById(this.id);
                    e.parentNode.removeChild(e), this.exist = !1
                }
            }
        }, {
            key: "setFixed", value: function (e) {
                this.fixed = e
            }
        }, {
            key: "toggleFocus", value: function (e) {
                !1 === e ? (this.containerTop = parseInt(this.containerTop, 10) - 25, this.containerLeft = parseInt(this.containerLeft, 10) - 60, this.el.css("top", "".concat(this.containerTop, "px")).css("left", "".concat(this.containerLeft, "px"))) : (this.containerTop = parseInt(this.containerTop, 10) + 25, this.containerLeft = parseInt(this.containerLeft, 10) + 60, this.el.css("top", "".concat(this.containerTop, "px")).css("left", "".concat(this.containerLeft, "px")))
            }
        }, {
            key: "getDrawObject", value: function () {
                return !1
            }
        }, {
            key: "commonCanCelBackend", value: function () {
                this.commonBackend = !1, this.el.el.style.zIndex = 999, this.el.el.style.opacity = 1
            }
        }, {
            key: "cancelBackend", value: function () {
                this.isBackend = !1, this.commonCanCelBackend()
            }
        }, {
            key: "cancelBackendImg", value: function () {
                this.isBackendImg = !1, this.commonCanCelBackend(), this.el.css("visibility", "visible")
            }
        }, {
            key: "commonSetBackend", value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "50px",
                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "17px";
                this.commonBackend = !0, this.el.css("zIndex", 1), this.el.css("top", t), this.el.css("left", e), this.el.css("width", this.naturalWidth), this.el.css("height", this.naturalHeight), this.el.removeClass("active");
                var n = this.el.el.getElementsByTagName("img")[0];
                n && (n.style.height = this.naturalHeight, n.style.width = this.naturalWidth), this.el.css("opacity", .7)
            }
        }, {
            key: "setBackendImg", value: function () {
                this.isBackendImg = !0, this.el.css("visibility", "hidden");
                var e = this.src || "";
                e.startsWith("http") || (e = "".concat(this.domain).concat(this.viewUrl, "/").concat(this.src)), this.change("backgroud", e)
            }
        }, {
            key: "setBackend", value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "50px",
                    t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "17px";
                this.isBackend = !0, this.commonSetBackend(e, t)
            }
        }, {
            key: "initMenu", value: function (e) {
                var t = this, n = new rh(e);
                n.itemClick = function (e) {
                    "del" === e ? t.deleteLayer() : "fixed" === e ? t.fixedLayer() : "config" === e ? t.configChart() : "backend" === e ? t.change("backend", (function () {
                        t.row = 0, t.col = 0, t.setBackend("-1px", "0px"), t.fixed = !0
                    })) : "backendImg" === e ? t.setBackendImg() : "updateImage" === e && t.change("updateImage")
                }, this.el.child(n.el), this.el.on("mousedown", (function (e) {
                    !0 === t.dragabled && 2 === e.buttons && n.setPosition(e.offsetX, e.offsetY)
                }))
            }
        }, {
            key: "getLayerRect", value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                return !(!0 !== this.exist || !0 !== this.fixed && !e && !0 !== this.isBackend) && {
                    width: parseInt((this.containerWidth + "").replace("px", ""), 10),
                    height: parseInt((this.containerHeight + "").replace("px", ""), 10),
                    row: this.row,
                    col: this.col
                }
            }
        }, {
            key: "showContainer", value: function () {
                console.log("this.el.css('top'", this.el.css("top")), console.log(this.moveTop), console.log(this.containerTop), "chart" == this.type && this.readOnly && this.change("active", this.id), !1 === this.disabled && (this.focusLayer(), this.toggleFocus(!0), this.scrollMove(!1, !0), this.scrollMove(!1, !1), this.change("active", this.id))
            }
        }, {
            key: "drawImage", value: function (e, t, n) {
                return new Promise((function (e) {
                    return !1
                }))
            }
        }, {
            key: "initRCPosition", value: function (e, t) {
                return this.row = e, this.col = t, this.designRow = e, this.designCol = t, this
            }
        }, {
            key: "getLayerId", value: function () {
                return this.id
            }
        }, {
            key: "setPrintLastPage", value: function (e) {
                this.printLastPage = e
            }
        }, {
            key: "isPrintLastPage", value: function () {
                return this.printLastPage
            }
        }, {
            key: "getMoveRow", value: function () {
                return this.moveRow
            }
        }, {
            key: "setMoveRow", value: function (e) {
                this.moveRow = e
            }
        }, {
            key: "getRendered", value: function () {
                return this.rendered
            }
        }, {
            key: "setRendered", value: function (e) {
                this.rendered = e
            }
        }, {
            key: "getPrintPage", value: function () {
                return this.printPage
            }
        }, {
            key: "setPrintPage", value: function (e) {
                this.printPage = e
            }
        }, {
            key: "getPrintRow", value: function () {
                return this.printRow
            }
        }, {
            key: "setPrintRow", value: function (e) {
                this.printRow = e
            }
        }, {
            key: "setPrintBeginLine", value: function (e) {
                this.beginLine = e
            }
        }, {
            key: "getPrintBeginLine", value: function () {
                return this.beginLine
            }
        }, {
            key: "select", value: function () {
                this.selected = !0, this.el.addClass("selected")
            }
        }, {
            key: "unselect", value: function () {
                this.selected = !1, this.el.removeClass("selected")
            }
        }, {
            key: "npx", value: function (e, t) {
                return parseInt(e * t, 10)
            }
        }, {
            key: "changeSize", value: function (e, t) {
            }
        }, {
            key: "getBase64", value: function (e) {
                return new Promise((function (e) {
                    return !1
                }))
            }
        }, {
            key: "getCellLayerImage", value: function () {
                return document.getElementById(this.id).querySelector("img")
            }
        }, {
            key: "addClass", value: function (e) {
                this.el.addClass(e)
            }
        }]) && ch(t.prototype, n), r && ch(t, r), e
    }();

    function hh(e) {
        return (hh = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function dh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function fh(e, t) {
        return (fh = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function gh(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = mh(e);
            if (t) {
                var r = mh(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return ph(this, n)
        }
    }

    function ph(e, t) {
        return !t || "object" !== hh(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function mh(e) {
        return (mh = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var vh = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && fh(e, t)
        }(a, e);
        var t, n, r, o = gh(a);

        function a(e) {
            var t, n = e.domain, r = e.viewLocalImage, s = e.src, l = e.top, c = e.left, u = e.width, h = e.height,
                d = e.isBackend, f = e.isBackendImg, g = e.commonBackend, p = e.toolbar;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            l || 0 == l || (l = 50), c || 0 == c || (c = 50), (t = o.call(this, {
                type: "img",
                top: l,
                left: c,
                width: u,
                height: h
            })).domain = n;
            var m = r || de;
            t.viewUrl = m, t.isBackend = d, t.isBackendImg = f, t.commonBackend = g, t.toolbar = p;
            var v = Object(i.b)("img").attr("crossOrigin", "Anonymous");
            t.image = v, t.setImageSrc(s, u, h);
            var y = Object(i.b)("div").css("position", "absolute").css("bottom", 0).css("width", "100%").css("height", "100%").child(v);
            return t.content.child(y), t.initMenu(), t.uploadUrl = "", t.initUploadInput(), t
        }

        return t = a, (n = [{
            key: "getImgOptions", value: function () {
                return {id: this.id, offset: [this.offsetX, this.offsetY], type: "img"}
            }
        }, {
            key: "getJsonData", value: function () {
                return !0 === this.exist && {
                    row: this.row,
                    col: this.col,
                    colspan: this.colspan,
                    rowspan: this.rowspan,
                    width: this.containerWidth,
                    height: this.containerHeight,
                    src: this.src,
                    isBackend: this.isBackend,
                    isBackendImg: this.isBackendImg,
                    commonBackend: this.commonBackend,
                    layer_id: this.id,
                    offsetX: this.offsetX,
                    offsetY: this.offsetY
                }
            }
        }, {
            key: "getLayerType", value: function () {
                return "img"
            }
        }, {
            key: "getDrawObject", value: function () {
                if (!0 === this.exist && !0 === this.fixed) {
                    var e = parseInt(this.containerTop, 10) + 2, t = parseInt(this.containerLeft, 10) + 2;
                    return {
                        width: this.containerWidth,
                        height: this.containerHeight,
                        top: e,
                        left: t,
                        src: this.src,
                        absrc: "".concat(this.domain).concat(this.viewUrl, "/").concat(this.src)
                    }
                }
                return !1
            }
        }, {
            key: "drawImage", value: function (e, t, n, i, r, o) {
                var a = this;
                return new Promise((function (s) {
                    if (!1 === a.exist) s(); else {
                        var l = new Image;
                        l.crossOrigin = "Anonymous";
                        var c = a.src || "";
                        c = c.startsWith("http") ? c + "?time=" + (new Date).getTime() : "".concat(a.domain).concat(a.viewUrl, "/").concat(a.src), l.src = c;
                        var u = parseInt(a.containerWidth, 10), h = parseInt(a.containerHeight, 10);
                        l.width = u, l.height = h;
                        var d = a.containerLeft, f = a.containerTop;
                        o && -1 != o.newTop && -1 != o.newLeft && (d = o.newLeft, f = o.newTop);
                        var g = parseInt(d) + (n ? n.x : 0) - (i ? i.l : 0),
                            p = parseInt(f) + (n ? n.y : 0) - (i ? i.t : 0);
                        a.isBackend && (p = -25), l.addEventListener("load", (function (n) {
                            e.drawImage(l, a.npx(g, t), a.npx(p, t), a.npx(u, t), a.npx(h, t)), a.fillImageBorder(e, g, p, u, h, t), s()
                        })), l.addEventListener("error", (function () {
                            r(c).then((function (n) {
                                var i = n.data;
                                if (i.success) {
                                    var r = "".concat(a.domain, "/").concat(a.viewUrl, "/").concat(i.result),
                                        o = new Image;
                                    o.src = r, o.crossOrigin = "Anonymous", o.onload = function () {
                                        e.drawImage(o, a.npx(g, t), a.npx(p, t), a.npx(u, t), a.npx(h, t)), a.fillImageBorder(e, g, p, u, h, t), a.beginLine = -1, s()
                                    }
                                } else s()
                            })).catch((function () {
                                console.log("未找到图", c), s()
                            }))
                        }))
                    }
                }))
            }
        }, {
            key: "fillImageBorder", value: function (e, t, n, i, r, o) {
                e.save(), e.strokeStyle = "rgba(255, 255, 255, 0.1)", e.rect(this.npx(t, o), this.npx(n, o), this.npx(i, o), this.npx(r, o)), e.stroke(), e.restore()
            }
        }, {
            key: "getBase64", value: function (e) {
                var t = this;
                return new Promise((function (n) {
                    if (!1 === t.exist) n(); else {
                        var i = new Image;
                        i.crossOrigin = "anonymous";
                        var r = t.src || "";
                        r = r.startsWith("http") ? r + "?time=" + (new Date).getTime() : "".concat(t.domain).concat(t.viewUrl, "/").concat(t.src), i.src = r;
                        var o = parseInt(t.containerWidth, 10), a = parseInt(t.containerHeight, 10);
                        i.width = o, i.height = a, i.addEventListener("load", (function (e) {
                            var r = t.getImageObject(i, o, a);
                            n(r)
                        })), i.addEventListener("error", (function () {
                            e(r).then((function (e) {
                                var i = e.data;
                                if (i.success) {
                                    var r = "".concat(t.domain).concat(t.viewUrl, "/").concat(i.result), o = new Image;
                                    o.src = r, o.crossOrigin = "anonymous", o.onload = function () {
                                        var e = t.getImageObject(o, o.width, o.height);
                                        n(e)
                                    }
                                } else n()
                            }))
                        }))
                    }
                }))
            }
        }, {
            key: "getImageObject", value: function (e, t, n) {
                var i = document.createElement("canvas");
                i.width = t, i.height = n, i.style.width = t + "px", i.style.height = n + "px", i.getContext("2d").drawImage(e, 0, 0, t, n);
                var r = i.toDataURL();
                return {id: this.id, base64: r}
            }
        }, {
            key: "getBackendDrawBox", value: function (e, t) {
                var n = this, i = {
                    width: Number(this.containerWidth),
                    height: Number(this.containerHeight),
                    top: t ? 0 : 25,
                    left: t ? 0 : 60,
                    src: this.src
                };
                return new Promise((function (t) {
                    i.src.startsWith("http") ? e(i.src).then((function (e) {
                        var r = e.data;
                        if (r.success) {
                            var o = r.result;
                            o.indexOf("\\") >= 0 && (o = o.replace(new RegExp("\\\\", "g"), "/")), 0 == o.indexOf("/") && (o = o.substr(1));
                            var a = "".concat(n.domain).concat(n.viewUrl, "/").concat(o);
                            i.absrc = a
                        } else i.absrc = n.src;
                        t(i)
                    })) : (i.absrc = "".concat(n.domain).concat(n.viewUrl, "/").concat(n.src), t(i))
                }))
            }
        }, {
            key: "initUploadInput", value: function () {
                var e = this;
                this.uploadInput = Object(i.b)("input").attr("type", "file").hide().on("change", (function (t) {
                    e.onFileChange(t)
                })), this.content.child(this.uploadInput)
            }
        }, {
            key: "onFileChange", value: function (e) {
                var t = this;
                Jt(e.target.files[0], this.uploadUrl).then((function (e) {
                    t.setImageSrc(e.message, t.containerWidth, t.containerHeight)
                })).catch((function (e) {
                    console.error(e)
                }))
            }
        }, {
            key: "setImageSrc", value: function (e, t, n) {
                this.src = e;
                var i = e || "";
                i.startsWith("http") || (i = "".concat(this.domain).concat(this.viewUrl, "/").concat(e)), this.image.attr("src", i), this.addImageLoadEvent(t, n)
            }
        }, {
            key: "updateImage", value: function (e) {
                this.uploadUrl = e, this.uploadInput.el.click()
            }
        }, {
            key: "addImageLoadEvent", value: function (e, t) {
                var n = this, i = this.image;
                i.on("load", (function (r) {
                    n.naturalWidth = i.el.naturalWidth + "px", n.naturalHeight = i.el.naturalHeight + "px", t ? (n.el.css("width", n.formatPx(Number(e.replace("px", "")))).css("height", n.formatPx(Number(t.replace("px", "")))), n.containerHeight = t, n.containerWidth = e) : (n.el.css("width", n.naturalWidth).css("height", n.naturalHeight), n.containerHeight = n.naturalHeight, n.containerWidth = n.naturalWidth), n.resetLayerSize(), (n.isBackend || n.isBackendImg) && (window.location.pathname.includes("index") ? n.isBackend ? n.setBackend("-1px", "0px") : n.setBackendImg("-20px", "-10px") : n.isBackend ? n.setBackend("-1px", "0px") : n.setBackendImg("-20px", "-12.5px"))
                }))
            }
        }, {
            key: "getPrintImage", value: function (e) {
                var t = this;
                return new Promise((function (n) {
                    if (!1 === t.exist) n(); else {
                        var i = new Image;
                        i.crossOrigin = "Anonymous";
                        var r = t.src || "";
                        r = r.startsWith("http") ? r + "?time=" + (new Date).getTime() : "".concat(t.domain).concat(t.viewUrl, "/").concat(t.src), i.src = r;
                        var o = parseInt(t.containerWidth, 10), a = parseInt(t.containerHeight, 10);
                        i.width = o, i.height = a, i.addEventListener("load", (function (e) {
                            n(i)
                        })), i.addEventListener("error", (function () {
                            e(r).then((function (e) {
                                var i = e.data;
                                if (i.success) {
                                    var r = "".concat(t.domain, "/").concat(t.viewUrl, "/").concat(i.result),
                                        o = new Image;
                                    o.src = r, o.crossOrigin = "Anonymous", o.onload = function () {
                                        n(o)
                                    }
                                } else n()
                            })).catch((function () {
                                console.log("未找到图", r), n()
                            }))
                        }))
                    }
                }))
            }
        }]) && dh(t.prototype, n), r && dh(t, r), a
    }(uh), yh = n(229), bh = n(76), Ch = n.n(bh);

    function wh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    Ch.a.registerMap("china", yh);
    var Ih = {
        title: {text: "JEECG系统登陆情况统计", subtext: "真实数据", left: "center"},
        tooltip: {trigger: "item", formatter: "{b} : {c} ({d}%)"},
        legend: {bottom: 10, left: "center", data: ["IE", "Safari", "Firefox", "Opera", "Chrome"]},
        series: [{
            type: "pie",
            radius: "65%",
            center: ["50%", "50%"],
            selectedMode: "single",
            data: [{value: 1021, name: "IE"}, {value: 87, name: "Safari"}, {value: 582, name: "Firefox"}, {
                value: 123,
                name: "Opera"
            }, {value: 2451, name: "Chrome"}]
        }]
    }, xh = function () {
        function e(t, n) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e);
            var r = Object(i.b)("div", "ty-layer-chart pie");
            this.el = r, t && this.el.css("width", "".concat(Number(t), "px")), n && this.el.css("height", "".concat(Number(n), "px")), this.option = null
        }

        var t, n, r;
        return t = e, (n = [{
            key: "init", value: function (e) {
                this.chartInstance && this.chartInstance.dispose(), e || (e = Ih), this.option = e;
                var t = Ch.a.init(this.el.el);
                return t.setOption(this.option), this.chartInstance = t, this
            }
        }, {
            key: "resetOption", value: function (e) {
                this.chartInstance.setOption(e)
            }
        }, {
            key: "draw", value: function (e) {
                this.option = e, this.chartInstance.setOption(e)
            }
        }, {
            key: "setData", value: function (e, t) {
                t && (e.series[0].data = t), this.option = e, console.log("setDataoption", this.option), this.chartInstance.setOption(e)
            }
        }, {
            key: "getOption", value: function () {
                var e = JSON.parse(JSON.stringify(this.option));
                if (e.backgroundColor && e.backgroundColor.image) {
                    var t = e.backgroundColor.src;
                    e.backgroundColor = {src: t}
                }
                return e
            }
        }, {
            key: "resize", value: function () {
                this.chartInstance.resize("auto", "auto")
            }
        }, {
            key: "getImageSrc", value: function () {
                return this.chartInstance.getDataURL({pixelRatio: 10})
            }
        }, {
            key: "reloadData", value: function (e) {
                this.chartInstance.setOption({series: e})
            }
        }, {
            key: "getChartImage", value: function () {
                var e = this;
                return new Promise((function (t) {
                    e.chartInstance.on("finished", (function () {
                        var n = e.chartInstance.getDataURL({pixelRatio: 10});
                        t(n)
                    }))
                }))
            }
        }]) && wh(t.prototype, n), r && wh(t, r), e
    }(), Ah = n(230);

    function _h(e) {
        return (_h = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Sh(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return kh(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return kh(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function kh(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Lh(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var i = Object.getOwnPropertySymbols(e);
            t && (i = i.filter((function (t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, i)
        }
        return n
    }

    function Th(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    function Oh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Rh(e, t) {
        return (Rh = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Eh(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Mh(e);
            if (t) {
                var r = Mh(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Ph(this, n)
        }
    }

    function Ph(e, t) {
        return !t || "object" !== _h(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Mh(e) {
        return (Mh = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Nh = [{key: "del", title: "删除"}, {key: "divider"}, {key: "fixed", title: "固定"}], Dh = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Rh(e, t)
        }(o, e);
        var t, n, i, r = Eh(o);

        function o(e) {
            var t, n = e.top, i = void 0 === n ? 50 : n, a = e.left, s = void 0 === a ? 50 : a, l = e.width,
                c = e.height, u = e.readOnly;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, o);
            return l || (l = 650), c || (c = 350), (t = r.call(this, {
                type: "chart",
                top: i,
                left: s,
                width: l,
                height: c
            })).readOnly = u, t.mover.hide(), t.content.on("mousedown", (function (e) {
                t.mousedown(e, 10)
            })), t.config = new Ah.a, t.config.ok = function () {
                t.configCallback()
            }, t.initMenu(Nh), t.extData = "", t.chartType = "", t.backgroudImage = "", t.domain = "", t.backgroud = {
                enabled: !1,
                color: "#fff",
                image: ""
            }, t
        }

        return t = o, (n = [{
            key: "setBackgroud", value: function (e) {
                return e && (this.backgroud = e), this
            }
        }, {
            key: "initChart", value: function (e, t) {
                var n = this;
                e.self_chart_type && (this.chartType = e.self_chart_type, delete e.self_chart_type);
                var i = new xh(this.containerWidth, this.containerHeight).init(e);
                return this.chart = i, this.handleBackground(e), this.content.child(i.el), this.configChart = function () {
                    n.config.openModal(n.chart.getOption())
                }, this.configUrl = t || "", this.config.setConfigUrl(this.configUrl), this
            }
        }, {
            key: "addClickEvent", value: function (e) {
                var t = this.extData;
                this.chart.chartInstance.on("click", (function (n) {
                    var i = Object.assign({}, n, {extData: t});
                    e(i)
                }))
            }
        }, {
            key: "setDomain", value: function (e) {
                return this.domain = e, this
            }
        }, {
            key: "handleBackground", value: function (e) {
                if (e) {
                    var t = this.backgroud;
                    if (t) if (this.isObject(t) && 1 == t.enabled) if (t.image) {
                        if (!this.backgroudImage || this.backgroudImage.src != t.image) {
                            var n = document.createElement("img");
                            t.image.indexOf("http") >= 0 ? (n.crossOrigin = "Anonymous", n.src = t.image) : n.src = this.domain + t.image, this.backgroudImage = n, this.refreshBackgroundImage(n)
                        }
                        e.backgroundColor = {repeat: "repeat", image: this.backgroudImage}
                    } else {
                        var i = t.color || "#fff";
                        e.backgroundColor = i
                    } else delete e.backgroundColor
                }
            }
        }, {
            key: "refreshBackgroundImage", value: function (e) {
                var t = this;
                e.onload = function () {
                    t.chart.chartInstance.setOption({backgroundColor: {image: e, repeat: "repeat"}})
                }
            }
        }, {
            key: "isObject", value: function (e) {
                return "[object Object]" === Object.prototype.toString.call(e)
            }
        }, {
            key: "initOption", value: function (e, t) {
                var n = this;
                return new Promise((function (i, r) {
                    t ? qt(t).then((function (o) {
                        o.success ? (console.log("res.result", o.result), !0 === n.getLastOption(e, o.result) ? (n.initChart(e, t), i()) : r("请求无数据")) : r(o.message)
                    })) : (n.handleBackground(e), n.initChart(e, t), i())
                }))
            }
        }, {
            key: "update", value: function (e, t) {
                var n = this;
                return this.configUrl = t || "", this.config.setConfigUrl(this.configUrl), new Promise((function (i, r) {
                    t ? qt(t).then((function (t) {
                        t.success ? (console.log("res.result", t.result), !0 === n.getLastOption(e, t.result) ? (n.handleBackground(e), n.chart.init(e), i()) : r("请求无数据")) : r(t.message)
                    })) : (n.handleBackground(e), n.chart.init(e), i())
                }))
            }
        }, {
            key: "updateBackground", value: function (e) {
                var t = this;
                Object.keys(e).map((function (n) {
                    t.backgroud[n] = e[n] || ""
                })), this.update(this.chart.getOption())
            }
        }, {
            key: "setChartExtData", value: function (e) {
                return this.extData = function (e) {
                    for (var t = 1; t < arguments.length; t++) {
                        var n = null != arguments[t] ? arguments[t] : {};
                        t % 2 ? Lh(Object(n), !0).forEach((function (t) {
                            Th(e, t, n[t])
                        })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Lh(Object(n)).forEach((function (t) {
                            Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
                        }))
                    }
                    return e
                }({}, e), e && e.chartType && (this.chartType = e.chartType), this
            }
        }, {
            key: "refresh", value: function (e) {
                var t = this;
                return new Promise((function (n, i) {
                    e || i("请求地址不存在!"), t.configUrl = e, t.config.setConfigUrl(e), qt(e).then((function (e) {
                        if (e.success) {
                            console.log("res.result", e.result);
                            var n = t.chart.getOption();
                            !0 === t.getLastOption(n, e.result) ? t.chart.draw(n) : i("请求无数据")
                        } else i(e.message)
                    }))
                }))
            }
        }, {
            key: "getLastOption", value: function (e, t) {
                if (!t || 0 == t.length) return !1;
                if (1 == t.length) e.series[0].data = t[0].data; else {
                    var n, i = Sh(e.series);
                    try {
                        var r = function () {
                            var e = n.value, i = t.filter((function (t) {
                                return t.name = e.name
                            }));
                            i && i.length > 0 && (e.data = i[0].data)
                        };
                        for (i.s(); !(n = i.n()).done;) r()
                    } catch (e) {
                        i.e(e)
                    } finally {
                        i.f()
                    }
                }
                return !0
            }
        }, {
            key: "resize", value: function () {
                this.chart.resize()
            }
        }, {
            key: "configCallback", value: function () {
                var e = this;
                this.chart.chartInstance.clear();
                var t = this.config.getConfigInfo();
                t.url ? (this.configUrl = t.url, qt(t.url).then((function (n) {
                    n.success ? (console.log("res.result", n.result), e.chart.setData(t.json, n.result), e.config.close()) : window.alert(n.message)
                }))) : (this.configUrl = "", this.chart.setData(t.json, !1), this.config.close())
            }
        }, {
            key: "moveCallback", value: function (e) {
                [0, 1, 2, 3, 4, 5, 5, 6, 7].indexOf(e) >= 0 && this.resize()
            }
        }, {
            key: "getDrawObject", value: function () {
                if (!0 === this.exist && !0 === this.fixed) {
                    var e = parseInt(this.containerTop, 10) + 2, t = parseInt(this.containerLeft, 10) + 2;
                    return {width: this.containerWidth, height: this.containerHeight, top: e, left: t}
                }
                return !1
            }
        }, {
            key: "getLayerType", value: function () {
                return "chart"
            }
        }, {
            key: "getChartConfig", value: function () {
                return {url: this.configUrl, option: this.chart.getOption()}
            }
        }, {
            key: "getChartOptions", value: function () {
                return {
                    id: this.id,
                    chartType: this.chartType,
                    options: this.chart.getOption(),
                    extData: this.extData,
                    offset: [this.offsetX, this.offsetY],
                    backgroud: this.backgroud
                }
            }
        }, {
            key: "getJsonData", value: function () {
                if (!0 === this.exist) {
                    var e = this.chartType;
                    return this.extData ? this.extData.chartType = e : this.extData = {chartType: e}, {
                        row: this.row,
                        col: this.col,
                        colspan: this.colspan,
                        rowspan: this.rowspan,
                        width: this.containerWidth,
                        height: this.containerHeight,
                        config: JSON.stringify(this.chart.getOption()),
                        url: this.configUrl,
                        extData: this.extData,
                        layer_id: this.id,
                        offsetX: this.offsetX,
                        offsetY: this.offsetY,
                        backgroud: this.backgroud
                    }
                }
                return !1
            }
        }, {
            key: "getChartImgUrl", value: function (e) {
                return this.chart.getDataURL({backgroundColor: "#fff"})
            }
        }, {
            key: "drawImage", value: function (e, t, n, i, r, o) {
                var a = this;
                return new Promise((function (r) {
                    if (!1 === a.exist) r(); else {
                        var s = new Image;
                        a.chart.getChartImage().then((function (l) {
                            s.src = l;
                            var c = parseInt(a.containerWidth, 10) - 4, u = parseInt(a.containerHeight, 10) - 4;
                            s.style.width = c + "px", s.style.height = u + "px";
                            var h = a.containerLeft, d = a.containerTop;
                            o && -1 != o.newTop && -1 != o.newLeft && (h = o.newLeft, d = o.newTop);
                            var f = parseInt(h) + (n ? n.x : 0) - (i ? i.l : 0),
                                g = parseInt(d) + (n ? n.y : 0) - (i ? i.t : 0);
                            !0 === a.fixed && (g += 25), s.addEventListener("load", (function () {
                                e.drawImage(s, a.npx(f, t), a.npx(g, t), a.npx(c, t), a.npx(u, t)), r(s)
                            }))
                        }))
                    }
                }))
            }
        }, {
            key: "getBase64", value: function (e) {
                var t = this;
                return new Promise((function (e) {
                    if (!1 === t.exist) e(); else {
                        var n = new Image;
                        n.src = t.chart.getImageSrc();
                        var i = parseInt(t.containerWidth, 10) - 4, r = parseInt(t.containerHeight, 10) - 4;
                        n.width = i, n.height = r, n.addEventListener("load", (function () {
                            e({id: t.id, base64: n.src})
                        }))
                    }
                }))
            }
        }, {
            key: "getImageObject", value: function (e, t, n) {
                var i = document.createElement("canvas");
                i.width = t, i.height = n, i.getContext("2d").drawImage(e, 0, 0, t, n);
                var r = i.toDataURL();
                return {id: this.id, base64: r}
            }
        }, {
            key: "testViewImage", value: function (e) {
                var t = "<iframe width='900px' height='500px' src='" + e + "'></iframe>", n = window.open();
                n.document.open(), n.document.write(t), n.document.close()
            }
        }, {
            key: "reloadData", value: function (e) {
                this.chart.reloadData(e)
            }
        }, {
            key: "getPrintImage", value: function () {
                var e = this;
                return new Promise((function (t) {
                    !1 === e.exist ? t() : e.chart.getChartImage().then((function (n) {
                        var i = new Image;
                        i.src = n;
                        var r = parseInt(e.containerWidth, 10) - 4, o = parseInt(e.containerHeight, 10) - 4;
                        i.style.width = r + "px", i.style.height = o + "px", i.addEventListener("load", (function () {
                            t(i)
                        }))
                    }))
                }))
            }
        }]) && Oh(t.prototype, n), i && Oh(t, i), o
    }(uh);

    function Bh(e) {
        return (Bh = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function jh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Fh(e, t) {
        return (Fh = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Hh(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Vh(e);
            if (t) {
                var r = Vh(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Wh(this, n)
        }
    }

    function Wh(e, t) {
        return !t || "object" !== Bh(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Vh(e) {
        return (Vh = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Gh = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Fh(e, t)
        }(a, e);
        var t, n, r, o = Hh(a);

        function a(e) {
            var t, n = e.top, r = e.left, s = e.width, l = void 0 === s ? 300 : s, c = e.height,
                u = void 0 === c ? 200 : c, h = e.jsonString, d = e.id;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            n || 0 == n || (n = 50), r || 0 == r || (r = 50), t = o.call(this, {
                type: "barcode",
                top: n,
                left: r,
                width: l,
                height: u
            }), d && (t.id = d);
            var f = Object(i.b)("img").attr("id", "bar-" + t.id);
            f.on("load", (function (e) {
            })), t.barcodeImage = f;
            var g = Object(i.b)("div").css("position", "absolute").css("bottom", 0).css("width", "100%").css("height", "100%").child(f);
            t.content.child(g);
            return t.initMenu([{key: "del", title: "删除"}, {key: "divider"}, {
                key: "fixed",
                title: "固定"
            }]), t.initBarcodeJson(h), setTimeout((function () {
                t.initBarcode()
            }), 100), t
        }

        return t = a, (n = [{
            key: "getJsonData", value: function () {
                return !0 === this.exist && {
                    row: this.row,
                    col: this.col,
                    colspan: this.colspan,
                    rowspan: this.rowspan,
                    width: this.containerWidth,
                    height: this.containerHeight,
                    layer_id: this.id,
                    offsetX: this.offsetX,
                    offsetY: this.offsetY,
                    jsonString: this.getBarcodeJsonString()
                }
            }
        }, {
            key: "getCodeInfo", value: function () {
                return {
                    id: this.id,
                    type: this.type,
                    jsonString: this.getBarcodeJsonString(),
                    offset: [this.offsetX, this.offsetY]
                }
            }
        }, {
            key: "update", value: function (e) {
                var t = this;
                return new Promise((function (n, i) {
                    e.containerHeight && (t.containerHeight = e.containerHeight), e.containerWidth && (t.containerWidth = e.containerWidth), e.barcodeContent && t.initBarcode(e), n()
                }))
            }
        }, {
            key: "changeCellLayerStyle", value: function (e) {
                this.changeLittlePosition(e);
                var t = e.width, n = e.height;
                this.changeCellLayerSize(t, n)
            }
        }, {
            key: "changeCellLayerSize", value: function (e, t) {
                e && (this.containerWidth = e, this.el.css("width", "".concat(e, "px"))), t && (this.containerHeight = t, this.el.css("height", "".concat(t, "px")))
            }
        }, {
            key: "initBarcodeJson", value: function (e) {
                var t;
                t = e ? Object.assign({}, en, JSON.parse(e)) : en, this.barcodeJson = t
            }
        }, {
            key: "initBarcode", value: function (e) {
                e ? this.barcodeJson = Object.assign({}, en, e) : e = this.barcodeJson;
                var t = e.barcodeContent;
                document.getElementById("bar-".concat(this.id)) && (Ut()("#bar-" + this.id, t, e), this.initContainerStyle())
            }
        }, {
            key: "initContainerStyle", value: function () {
                var e = this.content.el.parentNode;
                this.containerWidth = e.offsetWidth, this.containerHeight = e.offsetHeight
            }
        }, {
            key: "getBarcodeJsonString", value: function () {
                var e = this.barcodeJson;
                return !e.containerWidth && this.containerWidth && (e.containerWidth = this.containerWidth), !e.containerHeight && this.containerHeight && (e.containerHeight = this.containerHeight), JSON.stringify(e)
            }
        }, {
            key: "getLayerType", value: function () {
                return "barcode"
            }
        }, {
            key: "drawImage", value: function (e, t, n, i, r, o) {
                var a = this;
                return new Promise((function (r) {
                    if (!1 === a.exist) r(); else {
                        var s = a.containerLeft, l = a.containerTop;
                        o && -1 != o.newTop && -1 != o.newLeft && (s = o.newLeft, l = o.newTop);
                        var c = parseInt(s) + (n ? n.x : 0) - (i ? i.l : 0),
                            u = parseInt(l) + (n ? n.y : 0) - (i ? i.t : 0);
                        !0 === a.fixed && (u += 25);
                        var h = a.barcodeImage.el.width, d = a.barcodeImage.el.height;
                        h || (h = a.containerWidth), d || (d = a.containerHeight);
                        var f = a.barcodeJson.barcodeContent, g = document.getElementById("bar-".concat(a.id));
                        if (g) {
                            Ut()("#bar-" + a.id, f, a.barcodeJson);
                            var p = g.cloneNode();
                            e.drawImage(p, a.npx(c, t), a.npx(u, t), a.npx(h, t), a.npx(d, t))
                        }
                        r()
                    }
                }))
            }
        }, {
            key: "getBase64", value: function (e) {
                var t = this;
                return new Promise((function (e) {
                    !1 === t.exist ? e() : e(t.getImageObject(t.barcodeImage.el, t.barcodeImage.el.width, t.barcodeImage.el.height))
                }))
            }
        }, {
            key: "getImageObject", value: function (e, t, n) {
                var i = document.createElement("canvas");
                i.width = t, i.height = n, i.style.width = t + "px", i.style.height = n + "px", i.getContext("2d").drawImage(e, 0, 0, t, n);
                var r = i.toDataURL();
                return {id: this.id, base64: r}
            }
        }, {
            key: "getPrintImage", value: function () {
                var e = this;
                return new Promise((function (t) {
                    if (!1 === e.exist) t(); else {
                        var n = e.barcodeJson.barcodeContent, i = document.getElementById("bar-".concat(e.id));
                        i ? (Ut()("#bar-" + e.id, n, e.barcodeJson), t(i.cloneNode())) : t()
                    }
                }))
            }
        }]) && jh(t.prototype, n), r && jh(t, r), a
    }(uh);

    function zh(e) {
        return (zh = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Zh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function $h(e, t, n) {
        return ($h = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = Uh(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function Kh(e, t) {
        return (Kh = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Xh(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Uh(e);
            if (t) {
                var r = Uh(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Yh(this, n)
        }
    }

    function Yh(e, t) {
        return !t || "object" !== zh(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Uh(e) {
        return (Uh = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Jh = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Kh(e, t)
        }(a, e);
        var t, n, r, o = Xh(a);

        function a(e, t) {
            var n, r = e.top, s = e.left, l = e.width, c = e.height, u = e.jsonString, h = e.id;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            l || (l = Qt.width), c || (c = Qt.height), r || 0 == r || (r = 50), s || 0 == s || (s = 50), (n = o.call(this, {
                type: "qrcode",
                top: r,
                left: s,
                width: l,
                height: c
            })).circles.hide(), h && (n.id = h), n.qrCodeId = "qr-" + n.id;
            var d = Object(i.b)("div").attr("id", n.qrCodeId),
                f = Object(i.b)("div").css("position", "absolute").css("bottom", 0).child(d);
            n.contentChild = f, n.content.child(f);
            return n.initMenu([{key: "del", title: "删除"}, {key: "divider"}, {
                key: "fixed",
                title: "固定"
            }]), n.initCodeJson(u), setTimeout((function () {
                n.initCodeImage()
            }), 100), n
        }

        return t = a, (n = [{
            key: "changePostionTop", value: function () {
                this.contentChild.css("top", 0)
            }
        }, {
            key: "getCodeInfo", value: function () {
                return {
                    id: this.id,
                    type: this.type,
                    jsonString: this.getCodeJsonString(),
                    offset: [this.offsetX, this.offsetY]
                }
            }
        }, {
            key: "getJsonData", value: function () {
                return !0 === this.exist && {
                    row: this.row,
                    col: this.col,
                    colspan: this.colspan,
                    rowspan: this.rowspan,
                    width: this.containerWidth,
                    height: this.containerHeight,
                    layer_id: this.id,
                    offsetX: this.offsetX,
                    offsetY: this.offsetY,
                    jsonString: this.getCodeJsonString()
                }
            }
        }, {
            key: "update", value: function (e) {
                var t = this;
                return new Promise((function (n, i) {
                    if (e.width) {
                        t.containerWidth = e.width;
                        var r = "".concat(parseInt(t.containerWidth, 10), "px");
                        t.el.css("width", r), e.width = parseInt(e.width)
                    }
                    if (e.height) {
                        t.containerHeight = e.height;
                        var o = "".concat(parseInt(t.containerHeight, 10), "px");
                        t.el.css("height", o), e.height = parseInt(e.height)
                    }
                    e.text && t.initCodeImage(e), n()
                }))
            }
        }, {
            key: "initCodeJson", value: function (e) {
                var t;
                t = e ? Object.assign({}, Qt, JSON.parse(e)) : Qt, this.codeJson = t
            }
        }, {
            key: "initCodeImage", value: function (e, t) {
                if (!1 === this.compare(e)) {
                    e ? this.codeJson = Object.assign({}, Qt, e) : e = this.codeJson;
                    var n = document.getElementById(this.qrCodeId);
                    n && (n.innerHTML = "", new Xt.a(n, this.codeJson))
                }
            }
        }, {
            key: "compare", value: function (e) {
                var t = this, n = !0;
                return e ? Object.keys(Qt).map((function (i) {
                    t.codeJson[i] != e[i] && (n = !1)
                })) : n = !1, n
            }
        }, {
            key: "getCodeJsonString", value: function () {
                return JSON.stringify(this.codeJson)
            }
        }, {
            key: "getLayerType", value: function () {
                return "qrcode"
            }
        }, {
            key: "drawImage", value: function (e, t, n, i, r, o) {
                var a = this;
                return new Promise((function (r) {
                    if (!1 === a.exist) r(); else {
                        var s = a.containerLeft, l = a.containerTop;
                        o && -1 != o.newTop && -1 != o.newLeft && (s = o.newLeft, l = o.newTop);
                        var c = parseInt(s) + (n ? n.x : 0) - (i ? i.l : 0),
                            u = parseInt(l) + (n ? n.y : 0) - (i ? i.t : 0);
                        !0 === a.fixed && (u += 25);
                        var h = document.getElementById(a.qrCodeId).lastChild, d = h.width, f = h.height;
                        e.drawImage(h, a.npx(c, t), a.npx(u, t), a.npx(d, t), a.npx(f, t)), r()
                    }
                }))
            }
        }, {
            key: "getBase64", value: function (e) {
                var t = this;
                return new Promise((function (e) {
                    if (!1 === t.exist) e(); else {
                        var n = document.getElementById(t.qrCodeId).lastChild;
                        e(t.getImageObject(n, n.width, n.height))
                    }
                }))
            }
        }, {
            key: "getImageObject", value: function (e, t, n) {
                var i = document.createElement("canvas");
                i.width = t, i.height = n, i.style.width = t + "px", i.style.height = n + "px", i.getContext("2d").drawImage(e, 0, 0, t, n);
                var r = i.toDataURL();
                return {id: this.id, base64: r}
            }
        }, {
            key: "changeCellLayerStyle", value: function (e) {
                $h(Uh(a.prototype), "changeLittlePosition", this).call(this, e);
                var t = e.width, n = e.height;
                this.changeCellLayerSize(t, n)
            }
        }, {
            key: "changeCellLayerSize", value: function (e, t) {
                if (e && t) {
                    var n = JSON.parse(JSON.stringify(this.codeJson)), i = e > t ? t : e;
                    n.width = i, n.height = i, this.update(n)
                }
            }
        }, {
            key: "getPrintImage", value: function () {
                var e = this;
                return new Promise((function (t) {
                    !1 === e.exist ? t() : t(document.getElementById(e.qrCodeId).lastChild)
                }))
            }
        }]) && Zh(t.prototype, n), r && Zh(t, r), a
    }(uh);

    function qh(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Qh = function () {
        function e(t) {
            var n = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.tag = t, this.change = function () {
            };
            var r = Y("rpBar.".concat(t.replace(/-[a-z]/g, (function (e) {
                    return e[1].toUpperCase()
                })))), o = Object(i.b)("div", "ty-bar-btn"), a = Object(i.b)("div"),
                s = Object(i.b)("button", t).html(r).on("click", (function () {
                    return n.change(n.tag)
                }));
            a.child(s), o.child(a), this.el = o, this.btn = s
        }

        var t, n, r;
        return t = e, (n = [{
            key: "click", value: function () {
                console.log("click")
            }
        }, {
            key: "setState", value: function (e) {
                this.el.disabled(e)
            }
        }]) && qh(t.prototype, n), r && qh(t, r), e
    }();

    function ed(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function td(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var nd = function () {
        function e() {
            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "1",
                n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "1";
            ed(this, e), this.page = t, this.total = n, this.tag = "input";
            var r = Object(i.b)("input").attr("type", "text").val(t), o = Object(i.b)("span"),
                a = Object(i.b)("div", "ty-bar-input").children(Object(i.b)("div", "btn-input").child(r), Object(i.b)("div", "btn-text").children(Object(i.b)("span").css("margin-left", "8px").html("/"), o.html(n)));
            this.el = a, this.input = r, this.countSpan = o, this.change = function () {
            }
        }

        var t, n, r;
        return t = e, (n = [{
            key: "initPage", value: function (e) {
                this.page = e
            }
        }, {
            key: "change", value: function (e) {
                console.log(e)
            }
        }, {
            key: "setState", value: function (e) {
                this.el.disabled(e)
            }
        }]) && td(t.prototype, n), r && td(t, r), e
    }();

    function id(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return rd(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return rd(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function rd(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function od(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var ad = ["print_all", "print_table"], sd = function () {
        function e(t) {
            var n = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.tag = t, this.change = function () {
            };
            var r = Y("rpBar.".concat(t.replace(/-[a-z]/g, (function (e) {
                    return e[1].toUpperCase()
                })))), o = Object(i.b)("div", "ty-bar-btn").css("overflow", "visible").css("z-index", 999),
                a = Object(i.b)("div").css("position", "relative"), s = Object(i.b)("button", t).html(r);
            a.child(s), o.child(a), this.itemList = Object(i.b)("div", "dropdown-list").css("display", "none"), this.initDropdownItem(ad), a.child(this.itemList), a.child(Object(i.b)("div").css("clear", "both")), o.on("mouseover", (function (e) {
                n.itemList.show()
            })).on("mouseout", (function (e) {
                n.itemList.hide()
            })), this.el = o
        }

        var t, n, r;
        return t = e, (n = [{
            key: "initDropdownItem", value: function (e) {
                var t, n = this, r = id(e);
                try {
                    var o = function () {
                        var e = t.value, r = Y("rpBar.".concat(e.replace(/-[a-z]/g, (function (e) {
                            return e[1].toUpperCase()
                        }))));
                        n.itemList.child(Object(i.b)("div", "dropdown-item").html(r).on("click", (function (t) {
                            n.change(e)
                        })))
                    };
                    for (r.s(); !(t = r.n()).done;) o()
                } catch (e) {
                    r.e(e)
                } finally {
                    r.f()
                }
            }
        }, {
            key: "initPage", value: function (e) {
                this.page = e
            }
        }, {
            key: "change", value: function (e) {
                console.log(e)
            }
        }, {
            key: "setState", value: function (e) {
                this.el.disabled(e)
            }
        }]) && od(t.prototype, n), r && od(t, r), e
    }();

    function ld(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var cd = function () {
        function e(t) {
            var n = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.tag = t, this.change = function () {
            };
            var r = Object(i.b)("div", "ty-slider-container"),
                o = Object(i.b)("input", "ty-slider").attr("type", "range").on("change", (function (e) {
                    n.handleChange(e.target.value)
                })), a = Object(i.b)("div", "ty-slider-tip").css("transform", "translateX(-50%)"),
                s = Object(i.b)("div", "ty-slider-tip-arrow"), l = Object(i.b)("div", "ty-slider-tip-text");
            a.children(s, l), r.children(o, a), this.el = r, this.tip = a, this.text = l, this.input = o, this.setSliderText(0)
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setState", value: function (e) {
                this.el.disabled(e)
            }
        }, {
            key: "handleChange", value: function (e) {
                this.left = e, this.input.val(e), this.tip.css("left", e + "%");
                var t = Math.ceil(e / 10);
                this.text.html(t), this.change(this.tag, t)
            }
        }, {
            key: "setSliderText", value: function (e) {
                this.input.val(e), this.text.html(e);
                var t = 10 * e;
                this.tip.css("left", t + "%"), 0 == e && this.text.html("打印清晰度")
            }
        }]) && ld(t.prototype, n), r && ld(t, r), e
    }();

    function ud(e) {
        return (ud = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function hd(e) {
        return function (e) {
            if (Array.isArray(e)) return bd(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || yd(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function dd(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function fd(e, t, n) {
        return (fd = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = vd(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function gd(e, t) {
        return (gd = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function pd(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = vd(e);
            if (t) {
                var r = vd(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return md(this, n)
        }
    }

    function md(e, t) {
        return !t || "object" !== ud(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function vd(e) {
        return (vd = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    function yd(e, t) {
        if (e) {
            if ("string" == typeof e) return bd(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? bd(e, t) : void 0
        }
    }

    function bd(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Cd(e, t) {
        var n = [];
        e && (n.push(e), t = t.filter((function (t) {
            return t != e
        })));
        var i, r = function (e, t) {
            var n;
            if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
                if (Array.isArray(e) || (n = yd(e)) || t && e && "number" == typeof e.length) {
                    n && (e = n);
                    var i = 0, r = function () {
                    };
                    return {
                        s: r, n: function () {
                            return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                        }, e: function (e) {
                            throw e
                        }, f: r
                    }
                }
                throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }
            var o, a = !0, s = !1;
            return {
                s: function () {
                    n = e[Symbol.iterator]()
                }, n: function () {
                    var e = n.next();
                    return a = e.done, e
                }, e: function (e) {
                    s = !0, o = e
                }, f: function () {
                    try {
                        a || null == n.return || n.return()
                    } finally {
                        if (s) throw o
                    }
                }
            }
        }(t);
        try {
            for (r.s(); !(i = r.n()).done;) {
                var o = i.value;
                n.push(o)
            }
        } catch (e) {
            r.e(e)
        } finally {
            r.f()
        }
        return n
    }

    var wd = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && gd(e, t)
        }(a, e);
        var t, n, r, o = pd(a);

        function a(e, t) {
            var n;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            var r = Cd(e, t || [10, 20, 30]).map((function (e) {
                return {key: e, title: "每页".concat(e, "条")}
            })), s = r.map((function (e) {
                return Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
                    n.setTitle("".concat(e.title)), e.type = "pageSize", n.change(e)
                })).child("".concat(e.title))
            }));
            return n = o.call.apply(o, [this, r[0].title, "100px", !0, "page-size"].concat(hd(s)))
        }

        return t = a, (n = [{
            key: "setRealPageSize", value: function (e) {
                fd(vd(a.prototype), "setTitle", this).call(this, "每页".concat(e, "条"))
            }
        }, {
            key: "resetOptions", value: function (e, t) {
                var n, r = this, o = Cd(e, t || [10, 20, 30]).map((function (e) {
                    return {key: e, title: "每页".concat(e, "条")}
                })).map((function (e) {
                    return Object(i.b)("div", "".concat(he, "-item")).on("click", (function () {
                        r.setTitle("".concat(e.title)), e.type = "pageSize", r.change(e)
                    })).child("".concat(e.title))
                }));
                (n = this.contentEl.html("")).children.apply(n, hd(o))
            }
        }, {
            key: "hideme", value: function () {
                console.log("this.el", this.el)
            }
        }]) && dd(t.prototype, n), r && dd(t, r), a
    }(Zr);

    function Id(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = function (e, t) {
                if (!e) return;
                if ("string" == typeof e) return xd(e, t);
                var n = Object.prototype.toString.call(e).slice(8, -1);
                "Object" === n && e.constructor && (n = e.constructor.name);
                if ("Map" === n || "Set" === n) return Array.from(e);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return xd(e, t)
            }(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function xd(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Ad(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var _d = ["exportExcel_all", "exportText_pdf", "exportExcel_pdf", "export_img"/*, "exportExcel_empty"*/], Sd = function () {
        function e(t) {
            var n = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.tag = t, this.change = function () {
            };
            var r = Y("rpBar.".concat(t.replace(/-[a-z]/g, (function (e) {
                    return e[1].toUpperCase()
                })))), o = Object(i.b)("div", "ty-bar-btn").css("overflow", "visible").css("z-index", 999),
                a = Object(i.b)("div").css("position", "relative"), s = Object(i.b)("button", t).html(r);
            a.child(s), o.child(a), this.itemList = Object(i.b)("div", "dropdown-list").css("display", "none"), this.initDropdownItem(_d), a.child(this.itemList), a.child(Object(i.b)("div").css("clear", "both")), o.on("mouseover", (function (e) {
                n.itemList.show()
            })).on("mouseout", (function (e) {
                n.itemList.hide()
            })), this.el = o
        }

        var t, n, r;
        return t = e, (n = [{
            key: "initDropdownItem", value: function (e) {
                var t, n = this, r = Id(e);
                try {
                    var o = function () {
                        var e = t.value, r = Y("rpBar.".concat(e.replace(/-[a-z]/g, (function (e) {
                            return e[1].toUpperCase()
                        })))), o = Object(i.b)("div", "dropdown-item");
                        o.attr("id", r), n.itemList.child(o.html(r).on("click", (function (t) {
                            n.change(e)
                        })))
                    };
                    for (r.s(); !(t = r.n()).done;) o()
                } catch (e) {
                    r.e(e)
                } finally {
                    r.f()
                }
            }
        }, {
            key: "initPage", value: function (e) {
                this.page = e
            }
        }, {
            key: "change", value: function (e) {
                console.log(e)
            }
        }, {
            key: "setState", value: function (e) {
                this.el.disabled(e)
            }
        }]) && Ad(t.prototype, n), r && Ad(t, r), e
    }();

    function kd(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Ld(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Td() {
        return Object(i.b)("div", "".concat(he, "-toolbar-divider"))
    }

    var Od = function () {
        function e(t, n) {
            var r = this, o = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
            kd(this, e), this.data = t, this.change = function () {
            }, this.widthFn = n, this.isHide = o, this.el = Object(i.b)("div", "ty-bar-container"), this.btns = Object(i.b)("div").css("display", "inline-flex");
            var a = t.settings.page || 1, s = t.settings.total || 1, l = t.settings.pageSizeList,
                c = t.getDefaultPageSize();
            this.items = [this.btn_first = new Qh("first"), Td(), this.btn_last = new Qh("last"), Td(), this.btn_input = new nd(a, s), Td(), this.page_size = new wd(c, l), Td(), this.btn_next = new Qh("next"), Td(), this.btn_end = new Qh("end"), Td(), this.btn_print = new sd("print"), Td(), this.btn_export = new Sd("export"), Td(), this.rp_slider = new cd("slider")];
            var u = function (e, n) {
                var i = t.settings, o = i.getPageResult, a = i.total, s = i.pageSize, l = void 0 === s ? 10 : s;
                Number(e) > a && (e = a), r.btn_input.input.el.value = e, t.settings.page = Number(e), o || "function" == typeof o || (o = function () {
                }), o(e, l, n)
            };
            this.btn_input.input.on("blur", (function (e) {
                e.target.value > 1 && (r.btn_first.btn.el.disabled = !1, r.btn_last.btn.el.disabled = !1), u(e.target.value, "input")
            })), this.btn_input.input.on("keydown", (function (e) {
                13 === e.keyCode && e.target.blur()
            })), 1 === a && (this.btn_first.btn.el.disabled = !0, this.btn_last.btn.el.disabled = !0), a >= s && (this.btn_next.btn.el.disabled = !0, this.btn_end.btn.el.disabled = !0), this.items.forEach((function (e) {
                r.btns.child(e.el), "input" != e.tag && (e.change = function () {
                    r.change.apply(r, arguments)
                })
            })), this.el.child(this.btns), o && this.el.hide()
        }

        var t, n, r;
        return t = e, (n = [{
            key: "addBackPreviousButton", value: function () {
                var e = this;
                this.previous_btn = new Qh("back_previous"), this.previous_btn.change = function () {
                    e.change.apply(e, arguments)
                };
                var t = Object(i.b)("div").css("margin-left", "auto").css("width", "100px").css("margin-right", "20px");
                t.child(this.previous_btn.el), this.el.child(t)
            }
        }, {
            key: "trigger", value: function (e) {
                this["".concat(e, "El")].click()
            }
        }, {
            key: "addClass", value: function (e) {
                this.el.addClass(e)
            }
        }, {
            key: "addStyle", value: function (e, t) {
                this.el.css(e, t)
            }
        }, {
            key: "setRealPageSize", value: function (e) {
                e && this.page_size.setRealPageSize(e)
            }
        }, {
            key: "setPrintDefinition", value: function (e) {
                this.rp_slider.handleChange(e)
            }
        }, {
            key: "setAvailableButton", value: function (e, t) {
                if (0 == e) this.el.hide(); else if (t && t.length > 0) for (var n = 1; n <= 9; n++) if (t.indexOf(n) < 0) {
                    var i = 2 * (n - 1), r = this.items[i];
                    if (r && (r.el.hide ? r.el.hide() : r.el.style.display = "none"), i > 0) {
                        var o = this.items[i - 1];
                        o && o.hide()
                    }
                }
            }
        }, {
            key: "reset", value: function () {
                if (!this.isHide) {
                    var e = this.data, t = e.rpbar;
                    if (t) {
                        this.setAvailableButton(t.show, t.btnList);
                        var n = e.settings.pageSizeList, i = e.getDefaultPageSize();
                        this.page_size.resetOptions(i, n), this.setRealPageSize(e.getCurrentPageSize())
                    }
                }
            }
        }]) && Ld(t.prototype, n), r && Ld(t, r), e
    }();

    function Rd(e) {
        return function (e) {
            if (Array.isArray(e)) return Ed(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || function (e, t) {
            if (!e) return;
            if ("string" == typeof e) return Ed(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            "Object" === n && e.constructor && (n = e.constructor.name);
            if ("Map" === n || "Set" === n) return Array.from(e);
            if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Ed(e, t)
        }(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Ed(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Pd(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Md(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Nd = function () {
        function e(t, n) {
            var r, o = this, a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "600px";
            Pd(this, e), this.title = t, this.titleSpan = Object(i.b)("span").html(this.title), this.el = Object(i.b)("div", "".concat(he, "-modal")).css("width", a).children(Object(i.b)("div", "".concat(he, "-modal-header")).children(new Wi("close").on("click.stop", (function () {
                return o.hide()
            })), this.titleSpan), (r = Object(i.b)("div", "".concat(he, "-modal-content"))).children.apply(r, Rd(n))).hide()
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setTitleText", value: function (e) {
                this.titleSpan.html(e)
            }
        }, {
            key: "setModalWidth", value: function (e) {
                this.el.css("width", e)
            }
        }, {
            key: "show", value: function () {
                var e = this;
                this.dimmer = Object(i.b)("div", "".concat(he, "-dimmer active")), document.body.appendChild(this.dimmer.el);
                var t = this.el.show().box(), n = t.width, r = t.height, o = document.documentElement,
                    a = o.clientHeight, s = o.clientWidth;
                this.el.offset({left: (s - n) / 2, top: (a - r) / 3}), window.xkeydownEsc = function (t) {
                    27 === t.keyCode && e.hide()
                }, Un(window, "keydown", window.xkeydownEsc)
            }
        }, {
            key: "hide", value: function () {
                this.el.hide(), document.body.removeChild(this.dimmer.el), Jn(window, "keydown", window.xkeydownEsc), delete window.xkeydownEsc
            }
        }]) && Md(t.prototype, n), r && Md(t, r), e
    }();

    function Dd(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Bd = function () {
        function e(t, n) {
            var r = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.vchange = function () {
            }, this.el = Object(i.b)("div", "".concat(he, "-form-input")), this.input = Object(i.b)("input", "").css("width", t).on("input", (function (e) {
                return r.vchange(e)
            })).attr("placeholder", n), this.el.child(this.input)
        }

        var t, n, r;
        return t = e, (n = [{
            key: "hint", value: function (e) {
                this.input.attr("placeholder", e)
            }
        }, {
            key: "val", value: function (e) {
                return this.input.val(e)
            }
        }, {
            key: "setNumberInput", value: function () {
                this.input.attr("type", "number"), this.input.css("padding-right", 0)
            }
        }]) && Dd(t.prototype, n), r && Dd(t, r), e
    }();

    function jd(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function Fd(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Hd = function () {
        function e(t, n, r) {
            var o = this, a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : function (e) {
                return e
            }, s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : function () {
            };
            jd(this, e), this.key = t, this.getTitle = a, this.vchange = function () {
            }, this.el = Object(i.b)("div", "".concat(he, "-form-select")), this.suggest = new Mi(n.map((function (e) {
                return {key: e, title: o.getTitle(e)}
            })), (function (e) {
                o.itemClick(e.key), s(e.key), o.vchange(e.key)
            }), r, this.el), this.el.children(this.itemEl = Object(i.b)("div", "input-text").html(this.getTitle(t)), this.suggest.el).on("click", (function () {
                return o.show()
            }))
        }

        var t, n, r;
        return t = e, (n = [{
            key: "show", value: function () {
                this.suggest.search("")
            }
        }, {
            key: "itemClick", value: function (e) {
                this.key = e, this.itemEl.html(this.getTitle(e))
            }
        }, {
            key: "val", value: function (e) {
                return void 0 !== e ? (this.key = e, this.itemEl.html(this.getTitle(e)), this) : this.key
            }
        }]) && Fd(t.prototype, n), r && Fd(t, r), e
    }();

    function Wd(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Vd = {number: /(^\d+$)|(^\d+(\.\d{0,4})?$)/, date: /^\d{4}-\d{1,2}-\d{1,2}$/}, Gd = function () {
        function e(t, n, r, o) {
            var a = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.label = "", this.rule = n, r && (this.label = Object(i.b)("label", "label").css("width", "".concat(o, "px")).html(r)), this.tip = Object(i.b)("div", "tip").child("tip").hide(), this.input = t, this.input.vchange = function () {
                return a.validate()
            }, this.el = Object(i.b)("div", "".concat(he, "-form-field")).children(this.label, t.el, this.tip)
        }

        var t, n, r;
        return t = e, (n = [{
            key: "isShow", value: function () {
                return "none" !== this.el.css("display")
            }
        }, {
            key: "show", value: function () {
                this.el.show()
            }
        }, {
            key: "hide", value: function () {
                return this.el.hide(), this
            }
        }, {
            key: "val", value: function (e) {
                return this.input.val(e)
            }
        }, {
            key: "hint", value: function (e) {
                this.input.hint(e)
            }
        }, {
            key: "validate", value: function () {
                var e = this.input, t = this.rule, n = this.tip, i = this.el, r = e.val();
                return t.required && /^\s*$/.test(r) ? (n.html(Y("validation.required")), i.addClass("error"), !1) : !t.type && !t.pattern || (t.pattern || Vd[t.type]).test(r) ? (i.removeClass("error"), !0) : (n.html(Y("validation.notMatch")), i.addClass("error"), !1)
            }
        }]) && Wd(t.prototype, n), r && Wd(t, r), e
    }();

    function zd(e) {
        return (zd = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Zd(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function $d(e, t) {
        return ($d = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Kd(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Yd(e);
            if (t) {
                var r = Yd(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Xd(this, n)
        }
    }

    function Xd(e, t) {
        return !t || "object" !== zd(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Yd(e) {
        return (Yd = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Ud = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && $d(e, t)
        }(n, e);
        var t = Kd(n);

        function n(e) {
            var i, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
            return Zd(this, n), (i = t.call(this, "div", "".concat(he, "-button ").concat(r))).child(Y("button.".concat(e))), i
        }

        return n
    }(i.a);

    function Jd(e) {
        return (Jd = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function qd(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Qd(e, t) {
        return (Qd = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function ef(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = nf(e);
            if (t) {
                var r = nf(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return tf(this, n)
        }
    }

    function tf(e, t) {
        return !t || "object" !== Jd(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function nf(e) {
        return (nf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var rf = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && Qd(e, t)
        }(a, e);
        var t, n, r, o = ef(a);

        function a() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            var t = new Gd(new Hd("cell", ["cell"], "100%", (function (e) {
                    return Y("dataValidation.modeType.".concat(e))
                })), {required: !0}, "".concat(Y("dataValidation.range"), ":"), 100),
                n = new Gd(new Bd("120px", "E3 or E3:F12"), {
                    required: !0,
                    pattern: /^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/
                }), r = new Gd(new Hd("list", ["list", "number", "date", "phone", "email"], "100%", (function (e) {
                    return Y("dataValidation.type.".concat(e))
                }), (function (t) {
                    return e.criteriaSelected(t)
                })), {required: !0}, "".concat(Y("dataValidation.criteria"), ":"), 100),
                s = new Gd(new Hd("be", ["be", "nbe", "eq", "neq", "lt", "lte", "gt", "gte"], "160px", (function (e) {
                    return Y("dataValidation.operator.".concat(e))
                }), (function (t) {
                    return e.criteriaOperatorSelected(t)
                })), {required: !0}).hide(), l = new Gd(new Bd("70px", "10"), {required: !0}).hide(),
                c = new Gd(new Bd("70px", "100"), {required: !0, type: "number"}).hide(),
                u = new Gd(new Bd("120px", "a,b,c"), {required: !0}),
                h = new Gd(new Bd("70px", "10"), {required: !0, type: "number"}).hide();
            return (e = o.call(this, Y("contextmenu.validation"), [Object(i.b)("div", "".concat(he, "-form-fields")).children(t.el, n.el), Object(i.b)("div", "".concat(he, "-form-fields")).children(r.el, s.el, l.el, c.el, h.el, u.el), Object(i.b)("div", "".concat(he, "-buttons")).children(new Ud("cancel").on("click", (function () {
                return e.btnClick("cancel")
            })), new Ud("remove").on("click", (function () {
                return e.btnClick("remove")
            })), new Ud("save", "primary").on("click", (function () {
                return e.btnClick("save")
            })))])).mf = t, e.rf = n, e.cf = r, e.of = s, e.minvf = l, e.maxvf = c, e.vf = h, e.svf = u, e.change = function () {
            }, e
        }

        return t = a, (n = [{
            key: "showVf", value: function (e) {
                var t = "date" === e ? "2018-11-12" : "10", n = this.vf;
                n.input.hint(t), n.show()
            }
        }, {
            key: "criteriaSelected", value: function (e) {
                var t = this.of, n = this.minvf, i = this.maxvf, r = this.vf, o = this.svf;
                "date" === e || "number" === e ? (t.show(), n.rule.type = e, i.rule.type = e, "date" === e ? (n.hint("2018-11-12"), i.hint("2019-11-12")) : (n.hint("10"), i.hint("100")), n.show(), i.show(), r.hide(), o.hide()) : ("list" === e ? o.show() : o.hide(), r.hide(), t.hide(), n.hide(), i.hide())
            }
        }, {
            key: "criteriaOperatorSelected", value: function (e) {
                if (e) {
                    var t = this.minvf, n = this.maxvf, i = this.vf;
                    if ("be" === e || "nbe" === e) t.show(), n.show(), i.hide(); else {
                        var r = this.cf.val();
                        i.rule.type = r, "date" === r ? i.hint("2018-11-12") : i.hint("10"), i.show(), t.hide(), n.hide()
                    }
                }
            }
        }, {
            key: "btnClick", value: function (e) {
                if ("cancel" === e) this.hide(); else if ("remove" === e) this.change("remove"), this.hide(); else if ("save" === e) {
                    for (var t = ["mf", "rf", "cf", "of", "svf", "vf", "minvf", "maxvf"], n = 0; n < t.length; n += 1) {
                        var i = this[t[n]];
                        if (i.isShow() && !i.validate()) return
                    }
                    var r = this.mf.val(), o = this.rf.val(), a = this.cf.val(), s = this.of.val(), l = this.svf.val();
                    "number" !== a && "date" !== a || (l = "be" === s || "nbe" === s ? [this.minvf.val(), this.maxvf.val()] : this.vf.val()), this.change("save", r, o, {
                        type: a,
                        operator: s,
                        required: !1,
                        value: l
                    }), this.hide()
                }
            }
        }, {
            key: "setValue", value: function (e) {
                if (e) {
                    var t = this.mf, n = this.rf, i = this.cf, r = this.of, o = this.svf, a = this.vf, s = this.minvf,
                        l = this.maxvf, c = e.mode, u = e.ref, h = e.validator || {type: "list"}, d = h.type,
                        f = h.operator, g = h.value;
                    t.val(c || "cell"), n.val(u), i.val(d), r.val(f), Array.isArray(g) ? (s.val(g[0]), l.val(g[1])) : (o.val(g || ""), a.val(g || "")), this.criteriaSelected(d), this.criteriaOperatorSelected(f)
                }
                this.show()
            }
        }]) && qd(t.prototype, n), r && qd(t, r), a
    }(Nd);

    function of(e) {
        return (of = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function af(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function sf(e, t) {
        return (sf = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function lf(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = uf(e);
            if (t) {
                var r = uf(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return cf(this, n)
        }
    }

    function cf(e, t) {
        return !t || "object" !== of(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function uf(e) {
        return (uf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var hf = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && sf(e, t)
        }(a, e);
        var t, n, r, o = lf(a);

        function a() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a);
            var t = new Gd(new Bd("120px", ""), {required: !0, type: "number"}, "请输入次数:");
            return (e = o.call(this, "", [Object(i.b)("div", "".concat(he, "-form-fields")).children(t.el), Object(i.b)("div", "".concat(he, "-buttons")).children(new Ud("cancel").on("click", (function () {
                return e.btnClick("cancel")
            })), new Ud("save", "primary").on("click", (function () {
                return e.btnClick("save")
            })))])).inputEle = t, e.change = function () {
            }, e.key = "", e
        }

        return t = a, (n = [{
            key: "open", value: function (e) {
                var t = e.title, n = e.width, i = e.key;
                this.setTitleText(t), this.setModalWidth(n + "px"), this.inputEle.input.setNumberInput(), this.key = i, this.show()
            }
        }, {
            key: "btnClick", value: function (e) {
                if ("cancel" === e) this.hide(); else if ("remove" === e) this.change("remove"), this.hide(); else if ("save" === e) {
                    var t = this.inputEle.val();
                    this.change(this.key, "save", t), this.hide()
                }
            }
        }, {
            key: "setValue", value: function (e) {
                if (e) {
                    var t = this.mf, n = this.rf, i = this.cf, r = this.of, o = this.svf, a = this.vf, s = this.minvf,
                        l = this.maxvf, c = e.mode, u = e.ref, h = e.validator || {type: "list"}, d = h.type,
                        f = h.operator, g = h.value;
                    t.val(c || "cell"), n.val(u), i.val(d), r.val(f), Array.isArray(g) ? (s.val(g[0]), l.val(g[1])) : (o.val(g || ""), a.val(g || "")), this.criteriaSelected(d), this.criteriaOperatorSelected(f)
                }
                this.show()
            }
        }]) && af(t.prototype, n), r && af(t, r), a
    }(Nd);

    function df(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function ff(e) {
        return Object(i.b)("div", "".concat(he, "-item ").concat(e))
    }

    function gf(e) {
        var t = this;
        return ff("state").child(Y("sort.".concat(e))).on("click.stop", (function () {
            return t.itemClick(e)
        }))
    }

    function pf(e) {
        var t = this, n = this.filterbEl, r = this.filterValues;
        n.html(""), Object.keys(e).forEach((function (o, a) {
            var s = e[o], l = r.includes(o) ? "checked" : "";
            n.child(Object(i.b)("div", "".concat(he, "-item state ").concat(l)).on("click.stop", (function () {
                return t.filterClick(a, o)
            })).children("" === o ? Y("filter.empty") : o, Object(i.b)("div", "label").html("(".concat(s, ")"))))
        }))
    }

    function mf() {
        var e = this.filterhEl, t = this.filterValues, n = this.values;
        e.html("".concat(t.length, " / ").concat(n.length)), e.checked(t.length === n.length)
    }

    var vf = function () {
        function e() {
            var t = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.filterbEl = Object(i.b)("div", "".concat(he, "-body")), this.filterhEl = Object(i.b)("div", "".concat(he, "-header state")).on("click.stop", (function () {
                return t.filterClick(0, "all")
            })), this.el = Object(i.b)("div", "".concat(he, "-sort-filter")).children(this.sortAscEl = gf.call(this, "asc"), this.sortDescEl = gf.call(this, "desc"), ff("divider"), Object(i.b)("div", "".concat(he, "-filter")).children(this.filterhEl, this.filterbEl), Object(i.b)("div", "".concat(he, "-buttons")).children(new Ud("cancel").on("click", (function () {
                return t.btnClick("cancel")
            })), new Ud("ok", "primary").on("click", (function () {
                return t.btnClick("ok")
            })))).hide(), this.ci = null, this.sortDesc = null, this.values = null, this.filterValues = []
        }

        var t, n, r;
        return t = e, (n = [{
            key: "btnClick", value: function (e) {
                if ("ok" === e) {
                    var t = this.ci, n = this.sort, i = this.filterValues;
                    this.ok && this.ok(t, n, "in", i)
                }
                this.hide()
            }
        }, {
            key: "itemClick", value: function (e) {
                this.sort = e;
                var t = this.sortAscEl, n = this.sortDescEl;
                t.checked("asc" === e), n.checked("desc" === e)
            }
        }, {
            key: "filterClick", value: function (e, t) {
                var n = this.filterbEl, r = this.filterValues, o = this.values, a = n.children();
                "all" === t ? a.length === r.length ? (this.filterValues = [], a.forEach((function (e) {
                    return Object(i.b)(e).checked(!1)
                }))) : (this.filterValues = Array.from(o), a.forEach((function (e) {
                    return Object(i.b)(e).checked(!0)
                }))) : Object(i.b)(a[e]).toggle("checked") ? r.push(t) : r.splice(r.findIndex((function (e) {
                    return e === t
                })), 1), mf.call(this)
            }
        }, {
            key: "set", value: function (e, t, n, i) {
                this.ci = e;
                var r = this.sortAscEl, o = this.sortDescEl;
                null !== i ? (this.sort = i.order, r.checked(i.asc()), o.checked(i.desc())) : (this.sortDesc = null, r.checked(!1), o.checked(!1)), this.values = Object.keys(t), this.filterValues = n ? Array.from(n.value) : Object.keys(t), pf.call(this, t, n), mf.call(this)
            }
        }, {
            key: "setOffset", value: function (e) {
                var t = this;
                this.el.offset(e).show();
                var n = 1;
                Qn(this.el, (function () {
                    n <= 0 && t.hide(), n -= 1
                }))
            }
        }, {
            key: "show", value: function () {
                this.el.show()
            }
        }, {
            key: "hide", value: function () {
                this.el.hide(), qn(this.el)
            }
        }]) && df(t.prototype, n), r && df(t, r), e
    }();

    function yf(e, t) {
        var n = Object(i.b)("div", "".concat(he, "-toast")), r = Object(i.b)("div", "".concat(he, "-dimmer active"));
        n.children(Object(i.b)("div", "".concat(he, "-toast-header")).children(new Wi("close").on("click.stop", (function () {
            return document.body.removeChild(n.el), void document.body.removeChild(r.el)
        })), e), Object(i.b)("div", "".concat(he, "-toast-content")).html(t)), document.body.appendChild(n.el), document.body.appendChild(r.el);
        var o = n.box(), a = o.width, s = o.height, l = document.documentElement, c = l.clientHeight, u = l.clientWidth;
        n.offset({left: (u - a) / 2, top: (c - s) / 3})
    }

    function bf(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Cf = function () {
        function e(t) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), this.msg = t, this.flag = !1
        }

        var t, n, r;
        return t = e, (n = [{
            key: "show", value: function (e) {
                var t, n, r, o, a, s = this;
                this.tipContainer = (t = this.msg, n = Object(i.b)("div", "ty-msg-container"), r = Object(i.b)("div", "ty-msg-notice"), o = Object(i.b)("div", "ty-msg-content"), (a = Object(i.b)("div")).css("display", "inline-block"), a.children(Object(i.b)("span", "ty-msg-icon").html("!"), Object(i.b)("span").html(t)), o.children(a), r.children(o), n.children(r), document.body.appendChild(n.el), n), setTimeout((function () {
                    document.body.removeChild(s.tipContainer.el)
                }), e)
            }
        }]) && bf(t.prototype, n), r && bf(t, r), e
    }();

    function wf(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var If = function () {
        function e(t) {
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e), t ? this.init(t) : this.exist = !1, this.width = "", this.height = ""
        }

        var t, n, i;
        return t = e, (n = [{
            key: "init", value: function (e) {
                if (!e) return this.exist = !1, void console.log("背景图片无");
                var t = e.div, n = e.base, i = e.path, r = e.repeat, o = e.width, a = e.height;
                if (this.div = t, this.base = n, this.path = i, !i) return this.div.cssRemoveKeys(["background-image"]), void (this.exist = !1);
                this.exist = !0;
                var s = this.path;
                s.indexOf("http") < 0 && (s = this.base + s), this.div.css("backgroundImage", "url('" + s + "')"), this.setRepeat(r), this.setSize(o, a)
            }
        }, {
            key: "setRepeat", value: function (e) {
                this.repeat = e, e ? this.div.css("backgroundRepeat", e) : this.div.css("backgroundRepeat", "no-repeat")
            }
        }, {
            key: "setSize", value: function (e, t) {
                this.width = e, this.height = t;
                var n = "";
                n += this.numberSize2px(e), n += " ", n += this.numberSize2px(t), this.div.css("backgroundSize", n)
            }
        }, {
            key: "numberSize2px", value: function (e) {
                return e ? (e + "").indexOf("%") > 0 ? e : (e + "").indexOf("px") < 0 ? e + "px" : e : "auto"
            }
        }, {
            key: "getInfo", value: function () {
                return !0 === this.exist && {
                    path: this.path,
                    repeat: this.repeat,
                    width: this.width,
                    height: this.height
                }
            }
        }, {
            key: "setPosition", value: function (e) {
                1 == e ? (this.div.css("backgroundPosition", "0 0"), this.top = 0, this.left = 0) : (this.div.css("backgroundPosition", "58px 24px"), this.top = 24, this.left = 58)
            }
        }, {
            key: "changePositionOfScroll", value: function (e, t) {
                var n = "".concat(this.top - t, "px"), i = "".concat(this.left - e, "px");
                this.div.css("backgroundPosition", i + " " + n)
            }
        }]) && wf(t.prototype, n), i && wf(t, i), e
    }(), xf = n(100);

    function Af(e) {
        return (Af = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function _f(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Sf(e, t, n) {
        return (Sf = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {
            var i = function (e, t) {
                for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = Of(e));) ;
                return e
            }(e, t);
            if (i) {
                var r = Object.getOwnPropertyDescriptor(i, t);
                return r.get ? r.get.call(n) : r.value
            }
        })(e, t, n || e)
    }

    function kf(e, t) {
        return (kf = Object.setPrototypeOf || function (e, t) {
            return e.__proto__ = t, e
        })(e, t)
    }

    function Lf(e) {
        var t = function () {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function () {
                }))), !0
            } catch (e) {
                return !1
            }
        }();
        return function () {
            var n, i = Of(e);
            if (t) {
                var r = Of(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else n = i.apply(this, arguments);
            return Tf(this, n)
        }
    }

    function Tf(e, t) {
        return !t || "object" !== Af(t) && "function" != typeof t ? function (e) {
            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return e
        }(e) : t
    }

    function Of(e) {
        return (Of = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
            return e.__proto__ || Object.getPrototypeOf(e)
        })(e)
    }

    var Rf = function (e) {
        !function (e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    writable: !0,
                    configurable: !0
                }
            }), t && kf(e, t)
        }(a, e);
        var t, n, r, o = Lf(a);

        function a() {
            var e;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, a), (e = o.call(this, "单元格斜线配置", "400px", "250px")).cellText = "", e.lineStart = "", e.modalDiv.css("top", "10%");
            var t = Object(i.b)("div").html("斜线文字以|分隔，如：学生|学科").css("margin", "0 0 2px 2px"),
                n = Object(i.b)("input", "ty-input").css("margin", 0).on("change", (function (t) {
                    e.cellText = t.target.value
                }));
            e.cellTextInput = n;
            var r = Object(i.b)("input").attr("type", "radio").attr("id", "jm-line-cell-".concat("lefttop")).attr("name", "jm-cell-line-start").val("lefttop").on("change", (function (t) {
                    e.switchRadio(t.target.value)
                })),
                s = Object(i.b)("input").attr("type", "radio").attr("id", "jm-line-cell-".concat("leftbottom")).attr("name", "jm-cell-line-start").val("leftbottom").on("change", (function (t) {
                    e.switchRadio(t.target.value)
                })),
                l = Object(i.b)("div").css("margin", "5px 0 0 2px").children(Object(i.b)("div", "ty-radio").children(r, Object(i.b)("label").css("display", "inline-block").html("从左上角作为起点划线").attr("for", "jm-line-cell-".concat("lefttop"))), Object(i.b)("div", "ty-radio").css("marginLeft", "25px").children(s, Object(i.b)("label").css("display", "inline-block").html("从左下角作为起点划线").attr("for", "jm-line-cell-".concat("leftbottom"))));
            return e.formParent.children(t, Object(i.b)("div").child(n), l), e.cellTextSetting = function (e) {
            }, e.ok = function () {
                var t = e.cellTextInput.val();
                e.cellTextSetting(t, e.lineStart), e.close()
            }, e
        }

        return t = a, (n = [{
            key: "close", value: function () {
                Sf(Of(a.prototype), "close", this).call(this)
            }
        }, {
            key: "openModal", value: function (e, t) {
                this.show(), e = e || "", this.cellTextInput.val(e), t && (this.lineStart = t, document.getElementById("jm-line-cell-".concat(t)).setAttribute("checked", "checked"))
            }
        }, {
            key: "switchRadio", value: function (e) {
                this.lineStart = e
            }
        }]) && _f(t.prototype, n), r && _f(t, r), a
    }(xf.a);

    function Ef(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = Pf(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function Pf(e, t) {
        if (e) {
            if ("string" == typeof e) return Mf(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Mf(e, t) : void 0
        }
    }

    function Mf(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Nf(e, t) {
        var n = e.rows, i = [], r = t.settings.printTable, o = t.settings.clearEmpty, a = 999, s = 0, l = 999, c = 0,
            u = {};
        if (n) for (var h = 0, d = Object.keys(n); h < d.length; h++) {
            var f = d[h], g = n[f];
            if (g && g.cells) {
                var p = g.cells;
                if (p) for (var m = 0, v = Object.keys(p); m < v.length; m++) {
                    var y = v[m], b = p[y], C = parseInt(y), w = parseInt(f), I = 0, x = 0, A = !0;
                    if (b) {
                        if (b.text) {
                            0 == b.text.trim().length && b.virtual && Hf(e, b.virtual, w, C, u);
                            var _ = b.text + "";
                            if (b.merge) {
                                var S = Df(b, w, C, i), k = S.maxRow;
                                I = S.maxCol, x = k
                            } else if (0 == _.trim().length) {
                                !0 === Bf(i, C, w) && (delete p[y], A = !1)
                            }
                        } else {
                            if (b.merge) {
                                var L = Df(b, w, C, i), T = L.maxRow;
                                I = L.maxCol, x = T
                            }
                            b.virtual ? (b.text = " ", Hf(e, b.virtual, w, C, u)) : (1 == o || "style" == Object.keys(b).toString()) && (delete p[y], A = !1)
                        }
                        !0 === A && (a > w && (a = w), s < w && (s = w), s < x && (s = x), l > C && (l = C), c < C && (c = C), c < I && (c = I))
                    }
                }
            }
        }
        var O = [];
        if (i.length > 0) {
            var R, E = Ef(i);
            try {
                for (E.s(); !(R = E.n()).done;) {
                    var P = jf(R.value);
                    O.indexOf(P) < 0 && O.push(P)
                }
            } catch (e) {
                E.e(e)
            } finally {
                E.f()
            }
        }
        if (e.merges = O, 1 == r) {
            var M = function (e) {
                var t = 0, n = 0, i = 999, r = 999;
                return Object.keys(e).map((function (o) {
                    var a = e[o], s = a.ri + a.rowspan, l = a.ci + a.colspan;
                    s > t && (t = s), l > n && (n = l), a.ri < i && (i = a.ri), a.ci < r && (r = a.ci)
                })), {maxRow: t, maxCol: n, minRow: i, minCol: r}
            }(u), N = M.maxRow, D = M.maxCol, B = M.minRow, j = M.minCol;
            s < N && (s = N), c < D && (c = D), a > B && (a = B), l > j && (l = j), t.setAllRange({
                sri: a,
                eri: s,
                sci: l,
                eci: c
            })
        }
    }

    function Df(e, t, n, i) {
        var r = e.merge, o = {sri: t, eri: t + r[0], sci: n, eci: n + r[1]};
        return i.push(o), {maxRow: o.eri, maxCol: o.eci}
    }

    function Bf(e, t, n) {
        for (var i = !1, r = 0; r < e.length; r++) {
            var o = e[r], a = o.sci, s = o.sri, l = o.eci, c = o.eri;
            if (s <= n && c >= n && a <= t && l >= t) {
                i = !0;
                break
            }
        }
        return i
    }

    function jf(e) {
        var t = e.sri, n = e.sci, i = e.eri, r = e.eci, o = u(n, t);
        return (i - t > 0 || r - n > 0) && (o = "".concat(o, ":").concat(u(r, i))), o
    }

    function Ff(e, t) {
        var n = !1;
        if (e) for (var i = 0; i < e.length; i++) {
            var r = e[i];
            if (t == r.layer_id) {
                n = r;
                break
            }
        }
        return n
    }

    function Hf(e, t, n, i, r) {
        var o = r[t];
        if (o) {
            var a = o.ri, s = o.ci;
            a < n && (o.ri = n), s > i && (o.ci = i), r[t] = o
        } else {
            var l = Ff(e.imgList, t);
            if (l || (l = Ff(e.chartList, t)) || (l = Ff(e.barcodeList, t)) || (l = Ff(e.qrcodeList, t)), l) {
                var c = l.colspan, u = l.rowspan;
                o = {ri: n, ci: i, colspan: parseInt(c), rowspan: parseInt(u)}, r[t] = o
            }
        }
    }

    function Wf(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    function Vf(e) {
        return (Vf = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
            return typeof e
        } : function (e) {
            return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
        })(e)
    }

    function Gf(e, t) {
        var n;
        if ("undefined" == typeof Symbol || null == e[Symbol.iterator]) {
            if (Array.isArray(e) || (n = Xf(e)) || t && e && "number" == typeof e.length) {
                n && (e = n);
                var i = 0, r = function () {
                };
                return {
                    s: r, n: function () {
                        return i >= e.length ? {done: !0} : {done: !1, value: e[i++]}
                    }, e: function (e) {
                        throw e
                    }, f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function () {
                n = e[Symbol.iterator]()
            }, n: function () {
                var e = n.next();
                return a = e.done, e
            }, e: function (e) {
                s = !0, o = e
            }, f: function () {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s) throw o
                }
            }
        }
    }

    function zf(e) {
        return function (e) {
            if (Array.isArray(e)) return Yf(e)
        }(e) || function (e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
        }(e) || Xf(e) || function () {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Zf(e, t) {
        var n = Object.keys(e);
        if (Object.getOwnPropertySymbols) {
            var i = Object.getOwnPropertySymbols(e);
            t && (i = i.filter((function (t) {
                return Object.getOwnPropertyDescriptor(e, t).enumerable
            }))), n.push.apply(n, i)
        }
        return n
    }

    function $f(e, t, n) {
        return t in e ? Object.defineProperty(e, t, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : e[t] = n, e
    }

    function Kf(e, t) {
        return function (e) {
            if (Array.isArray(e)) return e
        }(e) || function (e, t) {
            if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return;
            var n = [], i = !0, r = !1, o = void 0;
            try {
                for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); i = !0) ;
            } catch (e) {
                r = !0, o = e
            } finally {
                try {
                    i || null == s.return || s.return()
                } finally {
                    if (r) throw o
                }
            }
            return n
        }(e, t) || Xf(e, t) || function () {
            throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }

    function Xf(e, t) {
        if (e) {
            if ("string" == typeof e) return Yf(e, t);
            var n = Object.prototype.toString.call(e).slice(8, -1);
            return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Yf(e, t) : void 0
        }
    }

    function Yf(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var n = 0, i = new Array(t); n < t; n++) i[n] = e[n];
        return i
    }

    function Uf(e, t) {
        var n, i = this;
        return function () {
            for (var r = i, o = arguments.length, a = new Array(o), s = 0; s < o; s++) a[s] = arguments[s];
            var l = a;
            n || (n = setTimeout((function () {
                n = null, e.apply(r, l)
            }), t))
        }
    }

    function Jf() {
        var e = this.data, t = this.verticalScrollbar, n = this.horizontalScrollbar, i = e.getSelectedRect(), r = i.l,
            o = i.t, a = i.left, s = i.top, l = i.width, c = i.height, u = this.getTableOffset();
        if (Math.abs(a) + l > u.width) n.move({left: r + l - u.width}); else {
            var h = e.freezeTotalWidth();
            a < h && n.move({left: r - 1 - h})
        }
        if (Math.abs(s) + c > u.height) t.move({top: o + c - u.height - 1}); else {
            var d = e.freezeTotalHeight();
            s < d && t.move({top: o - 1 - d})
        }
    }

    function qf(e, t, n) {
        var i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
            r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4];
        if (-1 !== t || -1 !== n) {
            var o = this.table, a = this.selector, s = this.toolbar, l = (this.layerList, this.data.settings);
            if (l) {
                if (!0 === l.readOnly) return void a.setForReadonly(t, n);
                if (l.readOnlyCol && l.readOnlyCol.includes(n)) return void a.setForReadonly(t, n)
            }
            e ? a.setEnd(t, n, r) : a.set(t, n, i), s.reset(), o.render()
        }
    }

    function Qf(e, t) {
        var n = this.selector, i = this.data, r = i.rows, o = i.cols, a = Kf(n.indexes, 2), s = a[0], l = a[1],
            c = n.range, u = c.eri, h = c.eci;
        if (e) {
            var d = Kf(n.moveIndexes, 2);
            s = d[0], l = d[1]
        }
        "left" === t ? l > 0 && (l -= 1) : "right" === t ? (h !== l && (l = h), l < o.len - 1 && (l += 1)) : "up" === t ? s > 0 && (s -= 1) : "down" === t ? (u !== s && (s = u), s < r.len - 1 && (s += 1)) : "row-first" === t ? l = 0 : "row-last" === t ? l = o.len - 1 : "col-first" === t ? s = 0 : "col-last" === t && (s = r.len - 1), e && (n.moveIndexes = [s, l]), qf.call(this, e, s, l), Jf.call(this)
    }

    function eg(e) {
        if (0 === e.buttons && e.target.className !== "".concat(he, "-resizer-hover")) {
            var t = e.offsetX, n = e.offsetY, i = this.rowResizer, r = this.colResizer, o = this.tableEl, a = this.data,
                s = a.rows, l = a.cols;
            if (t > l.indexWidth && n > s.height) {
                i.hide(), r.hide();
                var c = a.scroll, u = c.x, h = c.y, d = t - (Number(a.printElWidth) - u);
                if (d < 62 && d > 58) {
                    var f = o.box(), g = {left: t, top: n - 12.5, height: 25, width: 8, print: !0};
                    r.printShow(g, {height: f.height})
                }
                var p = n - (Number(a.printElHeight) - h);
                if (p < 26 && p > 24) {
                    var m = o.box(), v = {left: t - 12, top: n, height: 8, width: 24, print: !0};
                    i.printShow(v, {width: m.width})
                }
            } else {
                var y = o.box(), b = a.getCellRectByXY(e.offsetX, e.offsetY);
                b.ri >= 0 && -1 === b.ci ? (b.width = l.indexWidth, i.show(b, {width: y.width})) : i.hide(), -1 === b.ri && b.ci >= 0 ? (b.height = s.height, r.show(b, {height: y.height})) : r.hide()
            }
        }
    }

    function tg(e) {
        var t = this.verticalScrollbar, n = this.horizontalScrollbar, i = this.data, r = t.scroll().top,
            o = n.scroll().left, a = i.rows, s = i.cols, l = e.deltaY, c = e.deltaX, u = function (e, t) {
                var n = e, i = 0;
                do {
                    i = t(n), n += 1
                } while (i <= 0);
                return i
            }, h = function (e) {
                if (e > 0) {
                    var n = i.scroll.ri + 1;
                    if (n < a.len) {
                        var o = u(n, (function (e) {
                            return a.getHeight(e)
                        }));
                        t.move({top: r + o - 1})
                    }
                } else {
                    var s = i.scroll.ri - 1;
                    if (s >= 0) {
                        var l = u(s, (function (e) {
                            return a.getHeight(e)
                        }));
                        t.move({top: 0 === s ? 0 : r - l})
                    }
                }
            }, d = Math.abs(l), f = Math.abs(c), g = Math.max(d, f);
        /Firefox/i.test(window.navigator.userAgent) && Uf(h(e.detail), 50), g === f && Uf(function (e) {
            if (e > 0) {
                var t = i.scroll.ci + 1;
                if (t < s.len) {
                    var r = u(t, (function (e) {
                        return s.getWidth(e)
                    }));
                    n.move({left: o + r - 1})
                }
            } else {
                var a = i.scroll.ci - 1;
                if (a >= 0) {
                    var l = u(a, (function (e) {
                        return s.getWidth(e)
                    }));
                    n.move({left: 0 === a ? 0 : o - l})
                }
            }
        }(c), 50), g === d && Uf(h(l), 50)
    }

    function ng(e, t) {
        var n = this.verticalScrollbar, i = this.horizontalScrollbar, r = n.scroll().top, o = i.scroll().left;
        "left" === e || "right" === e ? i.move({left: o - t}) : "up" !== e && "down" !== e || n.move({top: r - t})
    }

    function ig() {
        var e = this.data, t = this.verticalScrollbar, n = 0, i = 0, r = e.viewHeight();
        !0 === e.settings.readOnly ? (n = r, i = 0) : (n = r - e.rows.height, i = e.rows.height);
        var o = e.exceptRowTotalHeight(0, -1);
        t.set(n, e.rows.totalHeight() - o, i)
    }

    function rg() {
        var e = this.data, t = this.horizontalScrollbar, n = this.getTableOffset().width;
        e && t.set(n, e.cols.totalWidth())
    }

    function og() {
        var e = this.selector, t = this.data, n = this.editor, i = Kf(t.freeze, 2), r = i[0], o = i[1];
        if (r > 0 || o > 0) {
            var a = t.freezeTotalWidth(), s = t.freezeTotalHeight();
            n.setFreezeLengths(a, s)
        }
        e.resetAreaOffset()
    }

    function ag() {
        var e = this.data.getPxPrintSize(), t = e.pxWidth, n = e.pxHeight;
        this.data.setPrintPaperInfo(t, n), this.rpbar && this.rpbar.setPrintDefinition(10 * this.data.printConfig.definition)
    }

    function sg(e, t) {
        var n = e.rows;
        delete n.len;
        var i = 0, r = 0, o = 0, a = [];
        if (Object.keys(n).forEach((function (e) {
            var t, i = function (e) {
                for (var t = 1; t < arguments.length; t++) {
                    var n = null != arguments[t] ? arguments[t] : {};
                    t % 2 ? Zf(Object(n), !0).forEach((function (t) {
                        $f(e, t, n[t])
                    })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : Zf(Object(n)).forEach((function (t) {
                        Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
                    }))
                }
                return e
            }({}, n[e].cells);
            for (var r in i) {
                if (i[r].text) {
                    if (i[r].merge) i[i[r].merge[1] + parseInt(r)] = {text: " "}
                } else delete i[r]
            }
            i && (a = (t = a).concat.apply(t, zf(Object.keys(i))));
            var s = parseInt(e);
            s && s > o && (o = s)
        })), a) {
            var s = Math.max.apply(Math, zf(a));
            r = s;
            for (var l = e.cols, c = 0, u = 0; u <= s; u++) {
                c += l[u] ? l[u].width : t
            }
            i = c
        }
        return {width: i, maxCol: r, maxRow: o}
    }

    function lg(e) {
        if (this.data.settings.readOnly) {
            var t = sg(e, this.data.settings.col.width), n = t.width, i = t.maxCol, r = t.maxRow, o = e.cols.len;
            (!o || i > o) && (o = i), e.cols.len = parseInt(o) + 10, n > this.data.settings.view.width() ? (this.horizontalScrollbar.setDisabled(!1), this.verticalScrollbar.setIncreaseNum(0)) : (this.horizontalScrollbar.setDisabled(!0), this.verticalScrollbar.setIncreaseNum(15)), e.rows.len = parseInt(r) + 15, this.verticalScrollbar.move({top: 0})
        } else e.cols.len = this.data.settings.col.len
    }

    function cg(e) {
        var t = this.tableEl, n = this.overlayerEl, i = this.overlayerCEl, r = this.table, o = this.toolbar,
            a = this.selector, s = this.el, l = this.data, c = this.rpbar, u = this.getTableOffset(),
            h = this.getRect();
        t.attr(h), n.offset(h), l.settings.readOnly && (u.top = u.top - 25), i.offset(u), s.css("width", "".concat(h.width, "px")), ig.call(this), rg.call(this), og.call(this), r.render(this.data.printPaperWidth, this.data.printPaperHeight, e), o.reset(), a.reset(), c && 1 == l.settings.readOnly && c.reset()
    }

    function ug() {
        var e = this.data, t = this.selector;
        e.clearClipboard(), t.hideClipboard()
    }

    function hg() {
        var e = this.background.getInfo();
        this.onSettingEvent("background", e)
    }

    function dg() {
        var e = this.data.printConfig;
        this.onSettingEvent("print-setting", e)
    }

    function fg() {
        var e = this.data.rpbar;
        this.onSettingEvent("view-setting", e)
    }

    function gg() {
        var e = this;
        this.data.clearMerge().then((function (t) {
            t.length > 0 && e.custTip("清除历史合并单元格:" + JSON.stringify(t))
        }))
    }

    function pg(e, t) {
        if (t) {
            var n = t.top, i = t.left;
            this.loopBlockMenu.setPosition(i, n, e)
        } else this.loopBlockMenu.hide()
    }

    function mg(e, t) {
        for (var n = e.sci, i = e.sri, r = e.eci, o = e.eri, a = n; a <= r; a++) for (var s = i; s <= o; s++) t(s, a)
    }

    function vg(e) {
        for (var t = this.data, n = this.selector.range, i = n.sci, r = n.sri, o = n.eci, a = n.eri, s = "", l = i; l <= o && "" == s; l++) for (var c = r; c <= a; c++) {
            var u = t.getCell(c, l);
            if (u && u.text && u.text.indexOf("#{") >= 0) {
                var h = u.text.indexOf(".");
                h < 0 && (h = u.text.indexOf("_index")), s = u.text.substring(2, h);
                break
            }
        }
        return s
    }

    function yg(e, t) {
        return t.reduce((function (t, n) {
            return n in e && (t[n] = e[n]), t
        }), {})
    }

    function bg() {
        var e = this.data, t = this.selector, n = this.table, i = e.getNextLoopBlockIndex("zonedEditionList"),
            r = yg(t.range, ["sci", "sri", "eci", "eri"]);
        if (e.isDuplicateLoopBlock(r, "zonedEditionList")) this.custTip("该区域已存在分版设定，无法重复设置!"); else {
            mg(t.range, (function (t, n) {
                var r = e.getCell(t, n);
                r ? r.zonedEdition = i : e.setCustomCell(t, n, {text: " ", zonedEdition: i})
            }));
            var o = vg.call(this);
            o && (r.db = o), r.index = i, e.addLoopBlock(r, "zonedEditionList"), n.render()
        }
    }

    function Cg() {
        var e = this.data, t = this.selector, n = this.table, i = 0;
        mg(t.range, (function (t, n) {
            var r = e.getCell(t, n);
            r && (0 == i && (i = r.zonedEdition), r.zonedEdition = 0)
        }));
        var r = e.cancleLoopBlock(i, "zonedEditionList");
        wg.call(this, r, "zonedEdition"), n.render()
    }

    function wg(e, t) {
        if (e) for (var n = e.sri; n <= e.eri; n++) for (var i = e.sci; i <= e.eci; i++) {
            var r = this.data.getCell(n, i);
            r && (r[t] = 0)
        }
    }

    function Ig(e) {
        var t = vg.call(this);
        if (t && 0 != t.length) {
            var n = this.data, i = this.selector, r = (this.table, n.getNextLoopBlockIndex()),
                o = yg(i.range, ["sci", "sri", "eci", "eri"]);
            n.isDuplicateLoopBlock(o) ? this.custTip("该区域已存在循环块，无法重复设置!") : (mg(i.range, (function (e, t) {
                var i = n.getCell(e, t);
                i ? i.loopBlock = r : n.setCustomCell(e, t, {text: "", loopBlock: r})
            })), o.index = r, o.db = t, e && (o.loopTime = parseInt(e)), n.addLoopBlock(o))
        } else this.custTip("该区域无数据表达式，无法设置循环块!")
    }

    function xg() {
        var e = this.data, t = this.selector, n = this.table, i = 0;
        mg(t.range, (function (t, n) {
            var r = e.getCell(t, n);
            r && (0 == i && (i = r.loopBlock), r.loopBlock = 0)
        })), e.cancleLoopBlock(i), n.render()
    }

    function Ag() {
        var e = this.data, t = this.selector;
        e.copy(), t.showClipboard()
    }

    function _g() {
        var e = this.data, t = this.selector;
        e.cut(), t.showClipboard()
    }

    function Sg(e) {
        this.data.paste(e, (function (e) {
            return yf("Tip", e)
        })) && cg.call(this)
    }

    function kg() {
        var e = this.toolbar;
        e.paintformatActive() && (Sg.call(this, "format"), ug.call(this), e.paintformatToggle(), this.el.removeClass("gss"))
    }

    function Lg(e, t) {
        var n = e.width, i = e.height, r = e.top, o = e.left, a = parseInt(r) + parseInt(i),
            s = parseInt(o) + parseInt(n), l = parseInt(t.x), c = parseInt(t.y);
        return o = parseInt(o, 10), r = parseInt(r, 10), l <= s && l >= o && c <= a && c >= r
    }

    function Tg(e) {
        var t = this, n = this.selector, i = this.data, r = this.table, o = this.sortFilter;
        dp.call(this);
        var a = e.offsetX, s = e.offsetY;
        if (this.layerList && this.layerList.length > 0) {
            var l, c = {x: a, y: s}, u = Gf(this.layerList);
            try {
                for (u.s(); !(l = u.n()).done;) {
                    var h = l.value, d = h.getLayerRect(), f = d.width, g = d.height, p = d.row, m = d.col,
                        v = i.getRCPosition(p, m);
                    Object.assign(v, {
                        width: f,
                        height: g
                    }), h.isBackend && (this.insideLayerItem = h), h.isBackendImg && (this.insideLayerImg = h), !0 === Lg(v, c) && (console.log("在内部"), h.commonBackend || h.showContainer())
                }
            } catch (e) {
                u.e(e)
            } finally {
                u.f()
            }
        }
        console.log("鼠标点击事件,offsetX=" + a + ",offsetY=" + s);
        var y = e.target.className === "".concat(he, "-selector-corner");
        !0 === i.settings.readOnly && (s += 25);
        var b = i.getCellRectByXY(a, s), C = b.left, w = b.top, I = b.width, x = b.height;
        n.setCellRect(b);
        var A = b.ri, _ = b.ci, S = i.getCell(A, _);
        console.log("ri:" + A + ",ci:" + _, b), this.onSettingEvent("clickcell", Object.assign({}, S, {
            ri: A,
            ci: _,
            width: I,
            height: x
        }));
        var k = i.autoFilter;
        if (k.includes(A, _) && C + I - 20 < a && w + x - 20 < s) {
            var L = k.items(_, (function (e, t) {
                return i.rows.getCell(e, t)
            }));
            return o.set(_, L, k.getFilter(_), k.getSort(_)), void o.setOffset({left: C, top: w + x + 2})
        }
        e.shiftKey || (y ? n.showAutofill(A, _) : qf.call(this, !1, A, _), ei(window, (function (e) {
            var r = i.getCellRectByXY(e.offsetX, e.offsetY);
            A = r.ri, _ = r.ci, y ? n.showAutofill(A, _) : 1 !== e.buttons || e.shiftKey || qf.call(t, !0, A, _, !0, !0)
        }), (function () {
            y && i.autofill(n.arange, "all", (function (e) {
                return yf("Tip", e)
            })) && r.render(), n.hideAutofill(), kg.call(t)
        }))), y || 1 !== e.buttons || e.shiftKey && qf.call(this, !0, A, _), S && ["qrcode", "img", "barcode"].indexOf(S.display) >= 0 && Pg.call(this, S)
    }

    function Og() {
        var e = this.editor, t = this.data.getSelectedRect(), n = this.getTableOffset(), i = "top";
        t.top > n.height / 2 && (i = "bottom"), e.setOffset(t, i)
    }

    function Rg() {
        var e = this.editor, t = this.data;
        Og.call(this);
        var n = t.getSelectedCell(), i = t.getSelectedValidator();
        e.setCell(n, i), ug.call(this)
    }

    function Eg() {
        var e = this.editor, t = this.data;
        Og.call(this), e.setCellLayer(t.getSelectedCell()), ug.call(this)
    }

    function Pg(e) {
        var t, n = this.table, i = this.data, r = e.text, o = !0;
        if (r && "img" == e.display && ((r = (r + "").trim()).startsWith("#{") || r.startsWith("${")) && (o = !1), !0 === o && Eg.call(this), n.cellLayerList && n.cellLayerList.length > 0) for (var a = 0; a < n.cellLayerList.length; a++) {
            var s = n.cellLayerList[a];
            if (s.getLayerId() == e.rendered) {
                "img" === e.display ? (t = s.getImgOptions(), this.onSelectChart(t)) : "qrcode" === e.display || "barcode" === e.display ? (t = e.config ? Object.assign({}, s.getCodeInfo(), i.displayConfig[e.config]) : s.getCodeInfo(), this.onSelectChart(t)) : "chart" === e.display && (t = s.getChartOptions(), this.onSelectChart(t));
                break
            }
        }
    }

    function Mg(e, t) {
        if (this.layerList && this.layerList.length > 0) {
            var n, i = Gf(this.layerList);
            try {
                for (i.s(); !(n = i.n()).done;) {
                    n.value.scrollMove(e, t)
                }
            } catch (e) {
                i.e(e)
            } finally {
                i.f()
            }
        }
    }

    function Ng(e) {
        var t = this, n = this.data, i = this.table, r = this.selector;
        n.scrolly(e, (function () {
            r.resetBRLAreaOffset();
            n.getSelectedRect();
            Og.call(t), i.render().then((function () {
                setTimeout((function () {
                    Mg.call(t, parseInt(n.scroll.y, 10), !0)
                }), 15)
            }))
        }))
    }

    function Dg(e) {
        var t = this, n = this.data, i = this.table, r = this.selector;
        n.scrollx(e, (function () {
            r.resetBRTAreaOffset(), Og.call(t), i.render().then((function () {
                setTimeout((function () {
                    Mg.call(t, parseInt(n.scroll.x, 10), !1)
                }), 15)
            }))
        }))
    }

    function Bg(e) {
        var t = this.data.getCellLayerSizeByCol(e);
        t && t.length > 0 && this.table.changeCellLayerSize(t)
    }

    function jg(e) {
        var t = this.data.getCellLayerSizeByRow(e);
        t && t.length > 0 && this.table.changeCellLayerSize(t)
    }

    function Fg(e, t) {
        if (!0 === e.print) {
            var n = Number(this.data.printElHeight) + t;
            n <= 25 ? this.custTip("打印区域太小了,操作返回!") : (this.data.changeElHeight(n), this.table.changePrintLine(this.data.printElWidth, this.data.printElHeight))
        } else {
            var i = e.ri, r = this.table, o = this.selector;
            this.data.rows.setHeight(i, t), jg.call(this, i), r.render(), o.resetAreaOffset(), ig.call(this), Og.call(this)
        }
    }

    function Hg(e, t) {
        if (!0 === e.print) {
            var n = Number(this.data.printElWidth) + t;
            n <= 100 ? this.custTip("打印区域太小了,操作返回!") : (this.data.changeElWidth(n), this.table.changePrintLine(this.data.printElWidth, this.data.printElHeight))
        } else {
            var i = e.ci, r = this.table, o = this.selector;
            this.data.cols.setWidth(i, t), Bg.call(this, i), r.render(), o.resetAreaOffset(), rg.call(this), Og.call(this)
        }
    }

    function Wg(e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "finished", n = this.data,
            i = this.table, r = this.selector;
        if (!0 !== n.settings.readOnly) {
            if (e && e.startsWith("=DB")) {
                var o = Kf(r.indexes, 2), a = o[0], s = o[1];
                this.onValidate("editor", {ri: a, ci: s, text: e})
            }
            n.setSelectedCellText(e, t), "finished" === t && i.render()
        }
    }

    function Vg(e, t) {
        var n = this, i = this.data;
        if ("insert-row" === e) i.insert("row", t > 0 ? t : 1); else if ("delete-row" === e) i.delete("row"); else if ("insert-column" === e) i.insert("column", t > 0 ? t : 1); else if ("delete-column" === e) i.delete("column"); else if ("delete-cell" === e) i.deleteCell(); else if ("delete-cell-format" === e) i.deleteCell("format"); else if ("delete-cell-text" === e) i.deleteCell("text"), i.clearUndefinedRow(); else if ("cell-printable" === e) {
            var r = this.selector.range;
            this.data.changeData((function () {
                r.each((function (e, t) {
                    if (null !== n.data.rows.get(e)) {
                        var i = n.data.rows.getCell(e, t);
                        console.log("CELL", i), null !== i && (i.printable = !0)
                    }
                }))
            }))
        } else if ("cell-non-printable" === e) {
            var o = this.selector.range;
            this.data.changeData((function () {
                o.each((function (e, t) {
                    if (null !== n.data.rows.get(e)) {
                        var i = n.data.rows.getCell(e, t);
                        console.log("CELL", i), null !== i && (i.printable = !1)
                    }
                }))
            }))
        } else if ("cell-editable" === e) {
            var a = this.selector.range;
            this.data.changeData((function () {
                a.each((function (e, t) {
                    if (null !== n.data.rows.get(e)) {
                        var i = n.data.rows.getCell(e, t);
                        console.log("CELL", i), null !== i && (i.editable = !0)
                    }
                }))
            }))
        } else if ("cell-non-editable" === e) {
            var s = this.selector.range;
            this.data.changeData((function () {
                s.each((function (e, t) {
                    if (null !== n.data.rows.get(e)) {
                        var i = n.data.rows.getCell(e, t);
                        console.log("CELL", i), null !== i && (i.editable = !1)
                    }
                }))
            }))
        }
        ug.call(this), cg.call(this)
    }

    function Gg() {
        var e = this.data.settings, t = e.domain, n = e.uploadUrl;
        return n || (n = "/jmreport/upload"), t + n
    }

    function zg(e) {
        var t = this;
        Jt(e, Gg.call(this)).then((function (e) {
            $g.call(t, {src: e.message}), t.toolbar.InsertImgEl.img.el.value = ""
        })).catch((function (e) {
            t.custTip(e)
        }))
    }

    function Zg(e) {
        var t = this, n = this, i = this.data.settings, r = i.domain, o = i.uploadExcelUrl;
        o || (o = "/jmreport/importExcel"), Jt(e, r + o).then((function (e) {
            t.onUploadExcel(e)
        })).catch((function (e) {
            n.custTip(e)
        }))
    }

    function $g(e) {
        var t = this.selector.cellRect, n = t.left, i = t.top, r = t.ri, o = t.ci, a = this.data.settings, s = a.domain,
            l = a.viewLocalImage, c = this.toolbar,
            u = new vh({src: e.src, domain: s, viewLocalImage: l, top: i, left: n, toolbar: c}).initRCPosition(r, o);
        u.focusLayer(), qg.call(this, u, !1)
    }

    function Kg(e) {
        var t = this.data.settings, n = t.domain, i = t.viewLocalImage;
        console.log("图片参数", e);
        var r = e.src, o = e.width, a = e.height, s = e.row, l = e.col, c = e.isBackend, u = e.isBackendImg,
            h = e.commonBackend;
        console.log("this.datathis.datathis.data", this.data);
        var d = this.data.getRCPosition(s, l), f = d.top, g = d.left, p = this.toolbar, m = new vh({
            domain: n,
            viewLocalImage: i,
            src: r,
            top: f,
            left: g,
            width: o,
            height: a,
            isBackend: c,
            isBackendImg: u,
            commonBackend: h,
            toolbar: p
        }).initRCPosition(s, l);
        m.toggleFocus(!1), e.virtualCellRange && m.setVirtualCellRange(e.virtualCellRange), e.layer_id && m.setId(e.layer_id), (e.offsetX || e.offsetY) && m.updateOffset(e.offsetX, e.offsetY), qg.call(this, m, !0), (e.colspan || e.rowspan) && m.resetLayerSize(e.rowspan, e.colspan)
    }

    function Xg(e) {
        console.log("barcode参数", e);
        var t = e.jsonString, n = e.width, i = e.height, r = e.row, o = e.col, a = this.data.getRCPosition(r, o),
            s = a.top, l = a.left,
            c = new Gh({id: e.layer_id, jsonString: t, top: s, left: l, width: n, height: i}).initRCPosition(r, o);
        c.toggleFocus(!1), e.virtualCellRange && c.setVirtualCellRange(e.virtualCellRange), e.offsetX && e.offsetY && c.updateOffset(e.offsetX, e.offsetY), qg.call(this, c, !0), (e.colspan || e.rowspan) && c.resetLayerSize(e.rowspan, e.colspan)
    }

    function Yg(e) {
        console.log("qrcode参数", e);
        var t = e.jsonString, n = e.width, i = e.height, r = e.row, o = e.col, a = this.data.getRCPosition(r, o),
            s = a.top, l = a.left,
            c = new Jh({id: e.layer_id, jsonString: t, top: s, left: l, width: n, height: i}).initRCPosition(r, o);
        c.toggleFocus(!1), e.virtualCellRange && c.setVirtualCellRange(e.virtualCellRange), e.offsetX && e.offsetY && c.updateOffset(e.offsetX, e.offsetY), qg.call(this, c, !0), (e.colspan || e.rowspan) && c.resetLayerSize(e.rowspan, e.colspan)
    }

    function Ug(e, t, n) {
        var i = this, r = this.selector.cellRect, o = r.left, a = r.top, s = r.ri, l = r.ci,
            c = new Dh({top: a, left: o}).initRCPosition(s, l).setDomain(this.data.settings.domain);
        c.focusLayer(), np.call(this, c.id), c.initOption(e, t).then((function () {
            qg.call(i, c, !1), n && n(c.getChartOptions()), c.resize(), c.resetLayerSize()
        })).catch((function (e) {
            i.custTip(e)
        }))
    }

    function Jg(e) {
        var t = this, n = this.data.settings.readOnly, i = e.row, r = e.col, o = e.width, a = e.height, s = e.config,
            l = e.url, c = e.extData, u = e.backgroud, h = this.data.getRCPosition(i, r), d = h.top, f = h.left,
            g = new Dh({
                top: d,
                left: f,
                width: o,
                height: a,
                readOnly: n
            }).setDomain(this.data.settings.domain).setBackgroud(u).initChart(JSON.parse(s), l).initRCPosition(i, r).setChartExtData(c);
        g.toggleFocus(!1), qg.call(this, g, !0), g.resize(), e.virtualCellRange && g.setVirtualCellRange(e.virtualCellRange), e.layer_id && g.setId(e.layer_id), e.offsetX && e.offsetY && g.updateOffset(e.offsetX, e.offsetY), (e.colspan || e.rowspan) && g.resetLayerSize(e.rowspan, e.colspan), n && (g.showContainer(), g.addClickEvent((function (e) {
            t.onClickChart(e)
        })))
    }

    function qg(e, t) {
        var n = this;
        !1 === this.data.settings.showToolbar && e.disable(), e.change = function (t, i) {
            if ("fixed" === t) n.overlayerCEl.child(e.el); else if ("active" === t) n.el.child(e.el); else if ("selected" === t) np.call(n, i); else if ("delete" === t) rp.call(n, i); else if ("backgroud" === t) Qg.call(n, i); else if ("backend" === t) 1 == n.data.printConfig.isBackend ? n.custTip("已存在套打图,不可重复设置") : (n.overlayerCEl.child(e.el), tp.call(n, !0), i()); else if ("updateImage" === t) {
                var r = Gg.call(n);
                e.updateImage(r)
            }
        }, e.moveChange = function (t, i, r, o, a, s, l, c) {
            1 == l && ep.call(n, r, o, e.colspan, e.id);
            var u = n.data, h = u.getCellPositionByXy(i, t);
            a && (a + "").indexOf("px") > 0 && (a = Number((a + "").replace("px", ""))), s && (s + "").indexOf("px") > 0 && (s = Number((s + "").replace("px", "")));
            var d = u.getEndRowIndex(r, s).rowspan, f = u.getEndColIndex(o, a).colspan;
            c({row: h.ri, col: h.ci, left: h.left, top: h.top, rowspan: d, colspan: f})
        }, e.setFixed(t), !0 === t ? this.overlayerCEl.child(e.el) : this.el.child(e.el), this.layerList.push(e)
    }

    function Qg(e) {
        console.log(this.overlayerCEl);
        var t = "url('" + e + "')";
        this.el.css("backgroundImage", t)
    }

    function ep(e, t, n, i) {
        if (n) for (var r = 0; r < n; r++) this.data.clearVirtualCellByIndex(i, e, parseInt(t) + r); else this.data.clearRowVirtualCell(i)
    }

    function tp(e) {
        var t = this.data;
        t.printConfig.isBackend = e;
        var n = t.getPxPrintSize(), i = n.pxWidth, r = n.pxHeight;
        this.table.render(i, r)
    }

    function np(e) {
        var t, n = Gf(this.layerList);
        try {
            for (n.s(); !(t = n.n()).done;) {
                var i = t.value;
                if (0 != i.exist) if (i.id === e) {
                    if ("chart" === i.type) {
                        var r = i.getChartOptions();
                        this.selectedChartId = r.id, this.onSelectChart(r)
                    } else if ("img" === i.type) {
                        var o = i.getImgOptions();
                        this.selectedChartId = o.id, this.onSelectChart(o)
                    } else if ("barcode" === i.type || "qrcode" === i.type) {
                        var a = i.getCodeInfo();
                        this.selectedChartId = a.id, this.onSelectChart(a)
                    }
                } else 1 == i.fixed ? i.unselect() : i.fixedLayer()
            }
        } catch (e) {
            n.e(e)
        } finally {
            n.f()
        }
    }

    function ip() {
        for (var e = 0; e < this.layerList.length; e++) {
            var t = this.layerList[e];
            if (t.id === this.selectedChartId) {
                t.deleteLayer();
                break
            }
        }
    }

    function rp(e) {
        var t, n = Gf(this.layerList);
        try {
            for (n.s(); !(t = n.n()).done;) {
                var i = t.value;
                if (!1 === i.exist && i.id === e) {
                    var r, o = Gf(i.virtualCellRange);
                    try {
                        for (o.s(); !(r = o.n()).done;) {
                            var a, s = r.value;
                            (a = this.data).removeCell.apply(a, zf(s))
                        }
                    } catch (e) {
                        o.e(e)
                    } finally {
                        o.f()
                    }
                    break
                }
            }
        } catch (e) {
            n.e(e)
        } finally {
            n.f()
        }
        this.onChartDelete(e)
    }

    function op(e) {
        if (!e.rendered || !this.table.cellLayerRendered(e.rendered)) {
            console.log("cell.rendered addCellLayer", e.rendered);
            var t, n = e.left, i = e.top, r = e.ri, o = e.ci, a = e.width, s = e.height, l = e.text, c = e.config,
                u = this.data.getCellLayerConfig(c);
            if ("img" === e.display) {
                var h = this.data.settings, d = h.domain, f = h.viewLocalImage;
                t = new vh({
                    src: l,
                    domain: d,
                    viewLocalImage: f,
                    top: i,
                    left: n,
                    width: a + "",
                    height: s + ""
                }).initRCPosition(r, o)
            } else if ("qrcode" === e.display) {
                var g = a > s ? s : a, p = Object.assign({height: g, width: g}, u, {text: l});
                (t = new Jh({
                    top: i,
                    left: n,
                    width: p.width,
                    height: p.height,
                    jsonString: JSON.stringify(p)
                }, this.data.settings.win).initRCPosition(r, o)).changePostionTop()
            } else if ("barcode" === e.display) {
                var m = Object.assign({height: s, displayValue: !1}, u, {barcodeContent: l});
                t = new Gh({top: i, left: n, width: a, height: s, jsonString: JSON.stringify(m)}).initRCPosition(r, o)
            }
            t.fixedLayer(), t.disable(), t.addClass("cell-layer"), this.overlayerCEl.child(t.el), this.cellProp(r, o, {rendered: t.getLayerId()}, !1), this.table.addCellLayer(t)
        }
    }

    function ap() {
        var e = this;
        return new Promise((function (t) {
            var n, i = [], r = [], o = [], a = [], s = Gf(e.layerList);
            try {
                for (s.s(); !(n = s.n()).done;) {
                    var l = n.value, c = l.getJsonData();
                    if (!1 !== c) {
                        var u = l.getLayerType();
                        "img" === u ? i.push(c) : "chart" === u ? r.push(c) : "barcode" === u ? o.push(c) : "qrcode" === u && a.push(c)
                    }
                }
            } catch (e) {
                s.e(e)
            } finally {
                s.f()
            }
            t({background: e.background.getInfo(), imgList: i, chartList: r, barcodeList: o, qrcodeList: a})
        }))
    }

    function sp(e, t) {
        var n = this.data;
        if ("undo" === e) this.undo(); else if ("print-setting" === e) dg.call(this); else if ("view-setting" === e) fg.call(this); else if ("view" === e) window.open(n.settings.viewUrl); else if ("redo" === e) this.redo(); else if ("img" === e) zg.call(this, t); else if ("uploadExcel" === e) {
            if ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" !== t.type && "application/vnd.ms-excel" !== t.type) return void this.custTip("请选择Excel文件");
            Zg.call(this, t)
        } else if ("chart" === e) {
            var i = this.selector.cellRect, r = i.left, o = i.top, a = i.ri, s = i.ci;
            this.onAddChart({left: r, top: o, row: a, col: s})
        } else if ("barcode" === e) this.addBarcode(); else if ("qrcode" === e) "barcode" === t ? this.addBarcode() : this.addQrcode(); else if ("cell-exp" === e) this.cellExpressHandler(); else if ("cell-line" === e) this.cellLineHandler(); else if ("save" === e) this.saveReportData(); else if ("print" === e) n.printPage(this.layerList); else if ("paintformat" === e) !0 === t ? (Ag.call(this), this.el.addClass("gss")) : (ug.call(this), this.el.removeClass("gss")); else if ("clearformat" === e) Vg.call(this, "delete-cell-format"); else if ("link" === e) ; else if ("autofilter" === e) this.custTip("此功能正在开发"); else if ("freeze" === e) if (t) {
            var l = n.selector, c = l.ri, u = l.ci;
            this.freeze(c, u)
        } else this.freeze(0, 0); else if ("error" === e) this.custTip(t); else if ("format" === e && ["img", "barcode", "qrcode"].indexOf(t) >= 0) {
            var h = n.selector, d = h.ri, f = h.ci;
            this.cellProp(d, f, {display: t})
        } else {
            if (n.setSelectedCellAttr(e, t), "formula" !== e || n.selector.multiple() || Rg.call(this), "format" === e && "normal" === t) {
                var g = n.selector, p = g.ri, m = g.ci;
                this.clearCellFormat(p, m)
            }
            cg.call(this)
        }
    }

    function lp(e, t) {
        var n = this, i = this.data, r = null;
        if ("object" === Vf(e) && (r = e, e = e.type), "exportExcel_page" === e)
            this.onExportExcelPage(i.settings);
        else if ("back_previous" === e) this.onSettingEvent("back_previous");
        else if ("exportExcel_pdf" === e) this.onSettingEvent("pdf");
        else if ("export_img" === e) this.onSettingEvent("export_img");
        else if ("exportText_pdf" === e) this.onSettingEvent("iText_pdf");
        //else if ("exportExcel_empty" === e) this.onExportExcelEmpty(i.settings);
        else if ("exportExcel_all" === e) this.onExportExcelAll(i.settings);
        else if ("print_screen" === e) this.verticalScrollbar.move({top: 0}),
            setTimeout((function () {
            var e = n.table.cellLayerList;
            i.printPage(n.rpbar, n.layerList, e && e.length > 0)
        }), 500); else if ("pdf" === e) i.saveAsPdf(this.rpbar, this.layerList, this.data.settings.pdfName); else if ("print_all" === e) this.onSettingEvent("print_all"); else if ("print_selector" === e) i.printPageArea(this.rpbar, this.layerList); else if ("print_table" === e) this.onSettingEvent("print_table"); else if ("slider" === e) i.changePrintDegree(t); else if (["last", "next", "first", "end", "pageSize"].includes(e)) {
            var o = this.rpbar.btn_input.input.el, a = i.settings, s = a.getPageResult, l = a.page;
            s || "function" == typeof s || (s = function () {
            });
            var c = this.rpbar.btn_first.btn.el, u = this.rpbar.btn_next.btn.el, h = this.rpbar.btn_last.btn.el,
                d = this.rpbar.btn_end.btn.el, f = this.data.settings.total, g = void 0 === f ? 1 : f;
            c.disabled = !1, u.disabled = !1, h.disabled = !1, d.disabled = !1;
            var p = Number(l || 1);
            "last" === e ? (p -= 1) <= 1 && (c.disabled = !0, h.disabled = !0, p = 1) : "next" === e ? (p += 1) >= g && (u.disabled = !0, d.disabled = !0) : "first" === e ? (p = 1, c.disabled = !0, h.disabled = !0) : "end" === e ? (p = g, u.disabled = !0, d.disabled = !0) : "pageSize" === e && (i.settings.pageSize = r.key), o.value = p, this.data.settings.page = p, s(p, i.settings.pageSize, e)
        }
    }

    function cp(e, t, n, i) {
        this.data.setAutoFilter(e, t, n, i), cg.call(this)
    }

    function up() {
        var e = this.selector.cellRect, t = e.ri, n = e.ci;
        t >= 0 && n >= 0 ? this.contextMenu.hideMenuItem() : (-1 == t && this.contextMenu.hideMenuItem("delete-row"), -1 == n && this.contextMenu.hideMenuItem("delete-col"))
    }

    function hp() {
        this.tableCellInput = !1
    }

    function dp() {
        this.tableCellInput = !0
    }

    function fp() {
        var e, t, n, i, r, o, a = this, s = this.overlayerEl, l = this.rowResizer, c = this.colResizer,
            u = this.verticalScrollbar, h = this.horizontalScrollbar, d = this.editor, f = this.contextMenu,
            g = this.loopBlockMenu, p = this.data, m = this.toolbar, v = this.modalValidation, y = this.modalInput,
            b = this.sortFilter;
        s.on("mousemove", (function (e) {
            eg.call(a, e)
        })).on("mousedown", (function (e) {
            2 === e.buttons ? p.xyInSelectedRect(e.offsetX, e.offsetY) ? (up.call(a), f.setPosition(e.offsetX, e.offsetY), hp.call(a), e.stopPropagation()) : (Tg.call(a, e), up.call(a), f.setPosition(e.offsetX, e.offsetY), hp.call(a), e.stopPropagation()) : 2 === e.detail ? Rg.call(a) : (d.clear(), Tg.call(a, e))
        })).on("mousewheel.stop", (function (e) {
            tg.call(a, e)
        })), e = s.el, n = (t = {
            move: function (e, t) {
                ng.call(a, e, t)
            }
        }).move, i = t.end, r = 0, o = 0, Un(e, "touchstart", (function (e) {
            var t = e.touches[0], n = t.pageX, i = t.pageY;
            r = n, o = i
        })), Un(e, "touchmove", (function (e) {
            if (n) {
                var t = e.changedTouches[0], i = t.pageX, a = t.pageY, s = i - r, l = a - o;
                (Math.abs(s) > 10 || Math.abs(l) > 10) && (ti(s, l, e, n), r = i, o = a), e.preventDefault()
            }
        })), Un(e, "touchend", (function (e) {
            if (i) {
                var t = e.changedTouches[0], n = t.pageX, a = t.pageY;
                ti(n - r, a - o, e, i)
            }
        })), m.change = function (e, t) {
            return sp.call(a, e, t)
        }, b.ok = function (e, t, n, i) {
            return cp.call(a, e, t, n, i)
        }, l.finishedFn = function (e, t) {
            Fg.call(a, e, t)
        }, c.finishedFn = function (e, t) {
            Hg.call(a, e, t)
        }, u.moveFn = function (e, t) {
            Ng.call(a, e, t)
        }, h.moveFn = function (e, t) {
            Dg.call(a, e, t)
        }, d.change = function (e, t) {
            Wg.call(a, t, e)
        }, v.change = function (e) {
            if ("save" === e) {
                for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) n[i - 1] = arguments[i];
                p.addValidation.apply(p, n)
            } else p.removeValidation()
        }, f.itemClick = function (e, t) {
            "error" != e ? (dp.call(a), "validation" === e ? v.setValue(p.getSelectedValidation()) : "copy" === e ? Ag.call(a) : "cut" === e ? _g.call(a) : "paste" === e ? Sg.call(a, "all") : "paste-value" === e ? Sg.call(a, "text") : "paste-format" === e ? Sg.call(a, "format") : "background" === e ? hg.call(a) : "loop-block" === e || "zoned-edition" == e ? pg.call(a, e, t) : "clearMerge" === e ? gg.call(a) : "cancleBackend" === e ? (a.insideLayerItem && (a.insideLayerItem.cancelBackend(), tp.call(a, !1)), a.insideLayerImg && a.insideLayerImg.cancelBackendImg()) : Vg.call(a, e, t)) : a.custTip(t)
        }, g.itemClick = function (e, t) {
            "setting" === e ? "zoned-edition" == t ? bg.call(a) : Ig.call(a) : "cancel" === e ? "zoned-edition" == t ? Cg.call(a) : xg.call(a) : "loopTime" == e && a.modalInput.open({
                title: "设定循环块次数",
                width: 300,
                key: "loopTime"
            })
        }, y.change = function (e, t, n) {
            "loopTime" == e && "save" == t && Ig.call(a, n)
        }, Un(window, "resize", (function () {
            gp.call(a), a.reload()
        })), Un(window, "click", (function (e) {
            a.focusing = s.contains(e.target)
        })), Un(window, "keydown", (function (e) {
            if ("insert-row" !== e.target.name && "insert-column" !== e.target.name) {
                var t = e.keyCode || e.which;
                if (46 == t && (ip.call(a), e.preventDefault()), a.focusing) {
                    var n = e.key, i = e.ctrlKey, r = e.shiftKey, o = e.altKey, s = e.metaKey;
                    if (i || s) {
                        var l = "all";
                        switch (r && (l = "text"), o && (l = "format"), t) {
                            case 90:
                                a.undo(), e.preventDefault();
                                break;
                            case 83:
                                a.saveReportData(), e.preventDefault();
                                break;
                            case 89:
                                a.redo(), e.preventDefault();
                                break;
                            case 67:
                                Ag.call(a), e.preventDefault();
                                break;
                            case 88:
                                _g.call(a), e.preventDefault();
                                break;
                            case 85:
                                m.trigger("underline"), e.preventDefault();
                                break;
                            case 86:
                                Sg.call(a, l), e.preventDefault();
                                break;
                            case 37:
                                Qf.call(a, r, "row-first"), e.preventDefault();
                                break;
                            case 38:
                                Qf.call(a, r, "col-first"), e.preventDefault();
                                break;
                            case 39:
                                Qf.call(a, r, "row-last"), e.preventDefault();
                                break;
                            case 40:
                                Qf.call(a, r, "col-last"), e.preventDefault();
                                break;
                            case 32:
                                qf.call(a, !1, -1, p.selector.ci, !1), e.preventDefault();
                                break;
                            case 66:
                                m.trigger("bold");
                                break;
                            case 73:
                                m.trigger("italic")
                        }
                    } else {
                        switch (t) {
                            case 32:
                                r && qf.call(a, !1, p.selector.ri, -1, !1);
                                break;
                            case 27:
                                f.hide(), ug.call(a);
                                break;
                            case 37:
                                Qf.call(a, r, "left"), e.preventDefault();
                                break;
                            case 38:
                                Qf.call(a, r, "up"), e.preventDefault();
                                break;
                            case 39:
                                Qf.call(a, r, "right"), e.preventDefault();
                                break;
                            case 40:
                                Qf.call(a, r, "down"), e.preventDefault();
                                break;
                            case 9:
                                d.clear(), Qf.call(a, !1, r ? "left" : "right"), e.preventDefault();
                                break;
                            case 13:
                                d.clear(), Qf.call(a, !1, r ? "up" : "down"), a.selector.hideClipboard(), e.preventDefault();
                                break;
                            case 8:
                                Vg.call(a, "delete-cell-text"), e.preventDefault()
                        }
                        "Delete" === n ? (Vg.call(a, "delete-cell-text"), e.preventDefault()) : t >= 65 && t <= 90 || t >= 48 && t <= 57 || t >= 96 && t <= 105 || "=" === e.key ? !0 === a.tableCellInput && (Wg.call(a, e.key, "input"), Rg.call(a)) : 113 === t && Rg.call(a)
                    }
                }
            }
        }))
    }

    function gp() {
        var e = this.verticalScrollbar.height();
        this.verticalScrollbar.bottom(e)
    }

    function pp(e) {
        var t = this;
        "object" == Vf(e) && (e.style && Object.keys(e.style).map((function (n) {
            t.rpbar.addStyle(n, e.style[n])
        })), e.clazz && e.clazz.map((function (e) {
            t.rpbar.addClass(e)
        })))
    }

    function mp(e) {
        var t = this;
        return new Promise((function (n) {
            var i = t.layerList, r = t.data, o = [];
            if (i && i.length > 0) {
                var a, s = e.getContext("2d"), l = window.devicePixelRatio || 1, c = Gf(i);
                try {
                    for (c.s(); !(a = c.n()).done;) {
                        var u = a.value;
                        o.push(u.drawImage(s, l, 0, "", r.settings.downLoadImage, {newLeft: -1, newTop: -1}))
                    }
                } catch (e) {
                    c.e(e)
                } finally {
                    c.f()
                }
            }
            0 == o.length ? n() : Promise.all(o).then((function () {
                n()
            }))
        }))
    }

    var vp = function () {
        function e(t, n) {
            var r = this;
            !function (e, t) {
                if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
            }(this, e);
            var o = n.settings, a = o.view, s = o.showToolbar, l = o.showContextmenu, c = o.rpBar, u = o.readOnly,
                h = o.previousPage;
            this.el = Object(i.b)("div", "".concat(he, "-sheet")), this.layerList = [], this.cellLayerList = [], this.toolbar = new Qu(n, a.width, !s), !function (e) {
                return !!e && ("boolean" == typeof e && e || "object" == Vf(e) && 1 == e.show)
            }(c) ? t.children(this.toolbar.el, this.el) : (this.rpbar = new Od(n, a.width), 1 == h && this.rpbar.addBackPreviousButton(), this.rpbar.change = function (e, t) {
                return lp.call(r, e, t)
            }, t.children(this.toolbar.el, this.rpbar.el, this.el), pp.call(this, c), this.rpbar.setRealPageSize(n.settings.pageSize)), this.data = n, this.tableCellInput = !0, this.data.deleteEvent = function (e, t, n) {
                r.rowAndColDeleteHandler(e, t, n)
            }, this.tableEl = Object(i.b)("canvas", "".concat(he, "-table")), console.log("data.rows.height", n.rows.height), console.log("data.cols.minWidth", n.rows.height), this.rowResizer = new ri(!1, n.rows.minRowResizerHeight), this.colResizer = new ri(!0, n.cols.minColResizerHeight), 1 == n.settings.readOnly && (this.rowResizer.changeDisabled(), this.colResizer.changeDisabled()), this.verticalScrollbar = new ai(!0), this.horizontalScrollbar = new ai(!1), this.editor = new ar(Pe, (function () {
                return r.getTableOffset()
            }), n.rows.height, u), this.modalValidation = new rf, this.modalInput = new hf, this.contextMenu = new vr((function () {
                return r.getTableOffset()
            }), !l), this.loopBlockMenu = new Sr((function () {
                return r.getTableOffset()
            }), !l), this.selector = new _i(n), this.overlayerCEl = Object(i.b)("div", "".concat(he, "-overlayer-content")).children(this.editor.el, this.selector.el), this.overlayerEl = Object(i.b)("div", "".concat(he, "-overlayer")).child(this.overlayerCEl), this.sortFilter = new vf, this.el.children(this.tableEl, this.overlayerEl.el, this.rowResizer.el, this.colResizer.el, this.contextMenu.el, this.loopBlockMenu.el, this.modalValidation.el, this.modalInput.el, this.sortFilter.el), this.el.children(this.horizontalScrollbar.el, this.verticalScrollbar.el);
            this.table = new zt({
                toolbar: this.toolbar,
                rpbar: this.rpbar
            }, this.tableEl.el, n, this.layerList), this.table.cellRenderEvent = function (e) {
                op.call(r, e)
            }, fp.call(this), cg.call(this), qf.call(this, !1, 0, 0), this.onAddChart = function (e) {
            }, this.onSelectChart = function (e, t) {
            }, this.onClickChart = function (e) {
            }, this.onChartDelete = function (e) {
            }, this.addChart = function (e, t, n) {
                Ug.call(r, e, t, n)
            }, this.onUploadExcel = function (e) {
            }, this.onExportExcelPage = function () {
            }, this.onExportExcelAll = function () {
           // }, this.onExportExcelEmpty = function () {
            }, this.dbClickChart = function () {
            }, this.selectedChartId = "";
            var d = this.data.settings.background;
            d && (d = Object.assign({}, d, {
                div: this.el,
                base: this.data.settings.domain
            })), this.background = new If(d), this.table.setBackground(this.background), this.onSettingEvent = function () {
            }, this.onValidate = function () {
            }, this.onCellExpress = function () {
            }, this.lineCellModal = new Rf, this.lineCellModal.cellTextSetting = function (e, t) {
                r.setLineCellProperty(e, t)
            }
        }

        var t, n, r;
        return t = e, (n = [{
            key: "setBackground", value: function (e) {
                var t = Object.assign({div: this.el, base: this.data.settings.domain}, e);
                this.background.init(t), this.table.render()
            }
        }, {
            key: "loadData", value: function (e) {
                var t = this, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                return lg.call(this, e), this.clearLayer(), Nf(e, this.data), this.data.setData(e), e.imgList && e.imgList.map((function (e) {
                    Kg.call(t, e)
                })), e.chartList && e.chartList.map((function (e) {
                    Jg.call(t, e)
                })), e.barcodeList && e.barcodeList.map((function (e) {
                    Xg.call(t, e)
                })), e.qrcodeList && e.qrcodeList.map((function (e) {
                    Yg.call(t, e)
                })), n || (this.handleLayerCellRange(e), this.setBackground(e.background)), this.handleReportWidth(e), ag.call(this), cg.call(this, n), this
            }
        }, {
            key: "handleReportWidth", value: function (e) {
                console.log("data.printElWidth", e.printElWidth), console.log("this.data.settings.view.width()", this.data.settings.view.width()), this.el.css("width", Number(e.printElWidth) + 100 + "px"), this.data.printElWidth = e.printElWidth
            }
        }, {
            key: "handleLayerCellRange", value: function (e) {
                if (this.data.settings.readOnly) {
                    if (this.layerList && this.layerList.length > 0) {
                        var t, n = e.rows, i = this.getVirtualMap(n), r = Gf(this.layerList);
                        try {
                            for (r.s(); !(t = r.n()).done;) {
                                var o = t.value, a = o.getLayerId();
                                o.setVirtualCellRange(i[a])
                            }
                        } catch (e) {
                            r.e(e)
                        } finally {
                            r.f()
                        }
                    }
                } else this.deleteVirtualCell(e.rows)
            }
        }, {
            key: "getVirtualMap", value: function (e) {
                var t = {};
                return Object.keys(e).map((function (n) {
                    if (e[n]) {
                        var i = e[n].cells;
                        i && Object.keys(i).map((function (e) {
                            var r = i[e];
                            if (r) {
                                var o = r.virtual;
                                o && (t[o] || (t[o] = []), t[o].push([Number(n), Number(e)]))
                            }
                        }))
                    }
                })), t
            }
        }, {
            key: "deleteVirtualCell", value: function (e) {
                var t = this.data;
                Object.keys(e).map((function (n) {
                    if (e[n]) {
                        var i = e[n].cells;
                        i && Object.keys(i).map((function (e) {
                            var r = i[e];
                            r && (!r.virtual || r.merge || r.style || 0 == r.style || t.removeCell(n, e))
                        }))
                    }
                }))
            }
        }, {
            key: "removeExistLayer", value: function (e) {
                if (this.layerList && this.layerList.length > 0) for (var t = 0; t < this.layerList.length; t++) if (this.layerList[t].id == e) {
                    var n = window.document.getElementById(e);
                    n.parentNode.removeChild(n), this.layerList.splice(t, 1)
                }
            }
        }, {
            key: "freeze", value: function (e, t) {
                return this.data.setFreeze(e, t), cg.call(this), this
            }
        }, {
            key: "custTip", value: function (e) {
                this.tip_obj = new Cf(e), this.tip_obj.show(2e3)
            }
        }, {
            key: "undo", value: function () {
                this.data.undo(), cg.call(this)
            }
        }, {
            key: "redo", value: function () {
                this.data.redo(), cg.call(this)
            }
        }, {
            key: "reload", value: function () {
                return cg.call(this), this
            }
        }, {
            key: "renderTable", value: function () {
                cg.call(this)
            }
        }, {
            key: "getRect", value: function () {
                var e = this.data;
                return {width: e.viewWidth(), height: e.viewHeight()}
            }
        }, {
            key: "getTableOffset", value: function () {
                var e = this.data, t = e.rows, n = e.cols, i = this.getRect(), r = i.width, o = i.height;
                return {width: r - n.indexWidth, height: o - t.height, left: n.indexWidth, top: t.height}
            }
        }, {
            key: "refreshSelectedChart", value: function (e) {
                var t, n = this, i = Gf(this.layerList);
                try {
                    for (i.s(); !(t = i.n()).done;) {
                        var r = t.value;
                        !0 === r.selected && "chart" === r.type && r.refresh(e).catch((function (e) {
                            n.custTip(e)
                        }))
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
            }
        }, {
            key: "updateSeletedChart", value: function (e, t) {
                var n, i = this, r = Gf(this.layerList);
                try {
                    for (r.s(); !(n = r.n()).done;) {
                        var o = n.value;
                        !0 === o.selected && "chart" === o.type && o.update(e, t).catch((function (e) {
                            i.custTip(e)
                        }))
                    }
                } catch (e) {
                    r.e(e)
                } finally {
                    r.f()
                }
            }
        }, {
            key: "updateChartById", value: function (e, t) {
                var n = this;
                e || (e = this.selectedChartId);
                var i, r = !1, o = Gf(this.layerList);
                try {
                    for (o.s(); !(i = o.n()).done;) {
                        var a = i.value;
                        a.id === e && (r = !0, a.update(t).catch((function (e) {
                            n.custTip(e)
                        })))
                    }
                } catch (e) {
                    o.e(e)
                } finally {
                    o.f()
                }
                if (!1 === r) {
                    var s = this.table.getCellLayerById(e);
                    if (s) {
                        var l = s.designRow, c = s.designCol, u = this.data.cellRect(l, c), h = u.width, d = u.height,
                            f = h > d ? parseInt(d) : parseInt(h);
                        t.width && parseInt(t.width) > f && (t.width = f, this.custTip("宽度设置超出单元格,当前最大值:" + f)), t.height && parseInt(t.height) > f && (t.height = f, this.custTip("高度设置超出单元格,当前最大值:" + f)), s.update(t).then((function () {
                            n.data.addCellLayerConfig(l, c, t), n.cellText(l, c, t.text || "")
                        })).catch((function (e) {
                            n.custTip(e)
                        }))
                    }
                }
            }
        }, {
            key: "updateChartBackground", value: function (e, t) {
                e || (e = this.selectedChartId);
                var n, i = Gf(this.layerList);
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        r.id === e && r.updateBackground(t)
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
            }
        }, {
            key: "refreshChartData", value: function (e, t) {
                e || (e = this.selectedChartId);
                var n, i = Gf(this.layerList);
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        r.id === e && r.reloadData(t)
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
            }
        }, {
            key: "updateLayerOffset", value: function (e, t) {
                e || (e = this.selectedChartId);
                var n, i = Gf(this.layerList);
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        r.id === e && r.updateOffset.apply(r, zf(t))
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
            }
        }, {
            key: "updateChartExtData", value: function (e, t) {
                var n, i = Gf(this.layerList);
                try {
                    for (i.s(); !(n = i.n()).done;) {
                        var r = n.value;
                        r.id === e && r.setChartExtData(t)
                    }
                } catch (e) {
                    i.e(e)
                } finally {
                    i.f()
                }
            }
        }, {
            key: "getPrintCanvas", value: function (e) {
                return new Ln(this.rpbar, this.data, "multi", !0).setExistWin(e).getSingleCanvasForMultiPage()
            }
        }, {
            key: "getLayerBase64", value: function () {
                var e, t = [], n = Gf(this.layerList);
                try {
                    for (n.s(); !(e = n.n()).done;) {
                        var i = e.value;
                        t.push(i.getBase64(this.data.settings.downLoadImage))
                    }
                } catch (e) {
                    n.e(e)
                } finally {
                    n.f()
                }
                return Promise.all(t)
            }
        }, {
            key: "rowAndColDeleteHandler", value: function (e, t, n) {
                var i = this.layerList;
                if (i && i.length > 0) {
                    var r, o = Gf(i);
                    try {
                        for (o.s(); !(r = o.n()).done;) {
                            var a = r.value, s = Number(a.col), l = Number(a.row);
                            "row" == e ? t < l && (n > l - 1 && (n = l - 1), l -= n - t + 1, a.initRCPosition(l, s)) : "column" == e && t < s && (n > s - 1 && (n = s - 1), s -= n - t + 1, a.initRCPosition(l, s))
                        }
                    } catch (e) {
                        o.e(e)
                    } finally {
                        o.f()
                    }
                }
            }
        }, {
            key: "addBarcode", value: function () {
                var e = this.selector.cellRect, t = e.left, n = e.top, i = e.ri, r = e.ci,
                    o = new Gh({top: n, left: t}).initRCPosition(i, r);
                o.focusLayer(), qg.call(this, o, !1), np.call(this, o.id), o.resetLayerSize()
            }
        }, {
            key: "addQrcode", value: function () {
                var e = this.selector.cellRect, t = e.left, n = e.top, i = e.ri, r = e.ci,
                    o = new Jh({top: n, left: t}).initRCPosition(i, r);
                o.focusLayer(), qg.call(this, o, !1), np.call(this, o.id), o.resetLayerSize()
            }
        }, {
            key: "cellExpressHandler", value: function () {
                var e = this.data.selector, t = e.ri, n = e.ci, i = this.data.getCell(t, n), r = "";
                i && (r = i.text), this.onCellExpress(r)
            }
        }, {
            key: "cellLineHandler", value: function () {
                var e = "", t = "", n = this.data.selector, i = n.ri, r = n.ci, o = this.data.getCell(i, r);
                o && (e = o.text, t = o.lineStart), this.lineCellModal.openModal(e, t)
            }
        }, {
            key: "setSelectCellExpress", value: function (e) {
                var t = this.data.selector, n = t.ri, i = t.ci;
                this.data.setCellText(n, i, e), this.table.render()
            }
        }, {
            key: "setLineCellProperty", value: function (e, t) {
                var n = this.data.selector, i = n.ri, r = n.ci, o = this.data.getCell(i, r);
                o || (o = {}), (o.style || 0 == o.style) && !0 === function (e) {
                    var t = ["align", "strike", "textwrap", "underline", "valign"], n = !1;
                    if (e) for (var i = Object.keys(e), r = 0; r < i.length; r++) if (t.indexOf(i[r]) >= 0) {
                        n = !0;
                        break
                    }
                    return n
                }(this.data.styles[o.style]) && delete o.style, e && 0 != e.length || (t = ""), o.text = e, o.lineStart = t, this.data.setCustomCell(i, r, o), this.table.render()
            }
        }, {
            key: "cellText", value: function (e, t, n) {
                if (!n) {
                    new RegExp("[A-Z]+").test(t) ? t = l(t) : new RegExp("[a-z]+").test(t) && (t = l(t.toUpperCase()));
                    var i = this.data.getCell(e, t);
                    return i && i.text
                }
                this.data.setCellText(e, t, n), this.table.render()
            }
        }, {
            key: "cellProp", value: function (e, t, n) {
                var i = this, r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];
                if (n) {
                    var o = this.data.getCell(e, t);
                    if (o || (o = {text: ""}), "string" == typeof n) return o[n];
                    Object.keys(n).map((function (r) {
                        "display" == r && (i.clearLastCellDisplay(e, t), o.rendered = "", o.config = "", ["qrcode", "img", "barcode"].indexOf(n[r]) >= 0 && Eg.call(i)), o[r] = n[r]
                    })), this.data.setCustomCell(e, t, o), r && this.table.render()
                }
                return ""
            }
        }, {
            key: "clearCellFormat", value: function (e, t) {
                var n = this.data.getCell(e, t);
                n && n.display && (this.clearLastCellDisplay(e, t), n.rendered = "", n.display = "normal")
            }
        }, {
            key: "clearLastCellDisplay", value: function (e, t) {
                this.table.cellLayerList.filter((function (n) {
                    n.row == e && n.col == t && n.deleteCellLayer()
                }))
            }
        }, {
            key: "exportPdf", value: function (e) {
                this.data.saveAsPdf(this.rpbar, this.layerList, this.data.settings.pdfName, e)
            }
        }, {
            key: "printByQuery", value: function (e, t) {
                "table" == t ? this.data.printPageTable("", this.layerList, e) : "export_img" == t ? this.data.exportAllAsImage("", this.layerList, e) : this.data.printPageAll(this.rpbar, this.layerList, e)
            }
        }, {
            key: "updateEditor", value: function (e) {
                this.editor.updateProp(e)
            }
        }, {
            key: "clearLayer", value: function () {
                !function (e) {
                    if (e && e.length > 0) {
                        var t, n = Gf(e);
                        try {
                            for (n.s(); !(t = n.n()).done;) {
                                var i = t.value.getLayerId(), r = document.getElementById(i);
                                r && r.parentNode.removeChild(r)
                            }
                        } catch (e) {
                            n.e(e)
                        } finally {
                            n.f()
                        }
                        e = []
                    }
                }(this.table.cellLayerList)
            }
        }, {
            key: "saveReportData", value: function () {
                var e = this.data;
                ap.call(this).then((function (t) {
                    e.saveJsonData(t)
                }))
            }
        }, {
            key: "getReportSaveData", value: function () {
                var e = this.data;
                return ap.call(this).then((function (t) {
                    return e.getReportSaveData(t)
                }))
            }
        }, {
            key: "getAllChartInfo", value: function () {
                var e, t = [], n = Gf(this.layerList);
                try {
                    for (n.s(); !(e = n.n()).done;) {
                        var i = e.value;
                        if ("chart" === i.type && !0 === i.exist) {
                            var r = i.getChartOptions(), o = {id: r.id, name: r.options.title.text};
                            r.extData && (o.x = r.extData.axisX, o.y = r.extData.axisY, o.z = r.extData.series, o.db = r.extData.dbCode), t.push(o)
                        }
                    }
                } catch (e) {
                    n.e(e)
                } finally {
                    n.f()
                }
                return console.log("options", t), t
            }
        }, {
            key: "getPageInfo", value: function () {
                return {pageNo: this.rpbar.btn_input.input.el.value || 1, pageSize: this.data.settings.pageSize || 10}
            }
        }, {
            key: "updateCellSize", value: function (e) {
                var t = e.ri, n = e.ci, i = e.width, r = e.height, o = this.data, a = this.table, s = this.selector;
                i && (o.cols.setWidth(n, i), Bg.call(this, n)), r && (o.rows.setHeight(t, r), jg.call(this, t)), s.reset(), a.render()
            }
        }, {
            key: "getCanvas", value: function (e) {
                var t = this;
                e || (e = "image/png");
                var n = this.data.settings.pdfName || "test";
                return new Promise((function (r) {
                    t.table.renderAllRange(t.layerList).then((function () {
                        var r = t.table.el;
                        mp.call(t, r).then((function () {
                            var t = r.toDataURL(e), o = Object(i.b)("a").attr("download", n).attr("href", t);
                            document.body.appendChild(o.el), o.el.click(), document.body.removeChild(o.el)
                        }))
                    }))
                }))
            }
        }]) && Wf(t.prototype, n), r && Wf(t, r), e
    }();
    n(567);

    function yp(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }

    function bp(e, t) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
        }
    }

    var Cp = function () {
        function e(t) {
            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
            yp(this, e);
            var r = t;
            "string" == typeof t && (r = document.querySelector(t)), this.data = new Yn("sheet1", n);
            var o = Object(i.b)("div", "".concat(he)).on("contextmenu", (function (e) {
                return e.preventDefault()
            }));
            r.appendChild(o.el), this.sheet = new vp(o, this.data)
        }

        var t, n, r;
        return t = e, r = [{
            key: "locale", value: function (e, t) {
                J(e, t)
            }
        }], (n = [{
            key: "loadData", value: function (e) {
                var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                return console.log("================================================", e), this.sheet.loadData(e, t), this
            }
        }, {
            key: "getData", value: function () {
                return this.data.getData()
            }
        }, {
            key: "validate", value: function () {
                return this.data.validations.errors.size <= 0
            }
        }, {
            key: "change", value: function (e) {
                return this.data.change = e, this
            }
        }, {
            key: "onSave", value: function (e) {
                return this.data.saveData = e, this
            }
        }, {
            key: "trigger", value: function (e) {
                "save" === e && this.sheet.saveReportData()
            }
        }, {
            key: "getSaveData", value: function () {
                return this.sheet.getReportSaveData()
            }
        }, {
            key: "tip", value: function (e) {
                this.sheet.custTip(e)
            }
        }, {
            key: "onAddChart", value: function (e) {
                return this.sheet.onAddChart = e, this
            }
        }, {
            key: "onUploadExcel", value: function (e) {
                return this.sheet.onUploadExcel = e, this
            }
        }, {
            key: "onExportExcelPage", value: function (e) {
                return this.sheet.onExportExcelPage = e, this
            }
        }, {
            key: "onExportExcelAll", value: function (e) {
                return this.sheet.onExportExcelAll = e, this
            }
        }/*,{
            key: "onExportExcelEmpty", value: function (e) {
                return this.sheet.onExportExcelEmpty = e, this
            }
        }*/, {
            key: "onSelectChart", value: function (e) {
                return this.sheet.onSelectChart = e, this
            }
        }, {
            key: "onChartDelete", value: function (e) {
                return this.sheet.onChartDelete = e, this
            }
        }, {
            key: "onClickChart", value: function (e) {
                return this.sheet.onClickChart = e, this
            }
        }, {
            key: "addChart", value: function (e, t, n) {
                this.sheet.addChart(e, t, n)
            }
        }, {
            key: "registerMap", value: function (e, t) {
                Ch.a.registerMap(e, t)
            }
        }, {
            key: "refreshChart", value: function (e) {
                this.sheet.refreshSelectedChart(e)
            }
        }, {
            key: "updateChart", value: function (e, t) {
                this.sheet.updateChartById(e, t)
            }
        }, {
            key: "updateChartBackground", value: function (e, t) {
                this.sheet.updateChartBackground(e, t)
            }
        }, {
            key: "refreshChartData", value: function (e, t) {
                this.sheet.refreshChartData(e, t)
            }
        }, {
            key: "updateLayerOffset", value: function (e, t) {
                this.sheet.updateLayerOffset(e, t)
            }
        }, {
            key: "updateChartExtData", value: function (e, t) {
                this.sheet.updateChartExtData(e, t)
            }
        }, {
            key: "onChartDbClick", value: function (e) {
                return this.sheet.dbClickChart = e, this
            }
        }, {
            key: "getPrintCanvas", value: function (e) {
                return this.sheet.getPrintCanvas(e)
            }
        }, {
            key: "getLayerBase64", value: function () {
                return this.sheet.getLayerBase64()
            }
        }, {
            key: "setExpData", value: function (e) {
                this.data.setExpressionData(e)
            }
        }, {
            key: "onSettingEvent", value: function (e) {
                return this.sheet.onSettingEvent = e, this
            }
        }, {
            key: "setBackground", value: function (e) {
                this.sheet.setBackground(e)
            }
        }, {
            key: "onCellExpress", value: function (e) {
                return this.sheet.onCellExpress = e, this
            }
        }, {
            key: "setSelectCellExpress", value: function (e) {
                this.sheet.setSelectCellExpress(e)
            }
        }, {
            key: "cellText", value: function (e, t, n) {
                return this.sheet.cellText(e, t, n)
            }
        }, {
            key: "cellProp", value: function (e, t, n) {
                return this.sheet.cellProp(e, t, n)
            }
        }, {
            key: "exportPdf", value: function (e) {
                this.sheet.exportPdf(e)
            }
        }, {
            key: "printByQuery", value: function (e, t) {
                this.sheet.printByQuery(e, t)
            }
        }, {
            key: "onValidate", value: function (e) {
                return this.sheet.onValidate = e, this
            }
        }, {
            key: "updateEditor", value: function (e) {
                this.sheet.updateEditor(e)
            }
        }, {
            key: "render", value: function () {
                this.sheet.renderTable()
            }
        }, {
            key: "updatePrintConfig", value: function (e) {
                this.data.updatePrintConfig(e), this.sheet.renderTable()
            }
        }, {
            key: "getAllChartInfo", value: function () {
                return this.sheet.getAllChartInfo()
            }
        }, {
            key: "getPageInfo", value: function () {
                return this.sheet.getPageInfo()
            }
        }, {
            key: "getLayerList", value: function () {
                return this.sheet.layerList
            }
        }, {
            key: "updateOptions", value: function (e, t) {
                this.data.updateDataSettings(e, t), this.sheet.renderTable()
            }
        }, {
            key: "setViewButton", value: function (e) {
                this.data.updateRpBarData(e)
            }
        }, {
            key: "updateCellSize", value: function (e) {
                this.sheet.updateCellSize(e)
            }
        }, {
            key: "getCanvas", value: function () {
                return this.sheet.getCanvas()
            }
        }]) && bp(t.prototype, n), r && bp(t, r), e
    }(), wp = function (e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
        return new Cp(e, t)
    };
    window && (window.x = window.x || {}, window.x.spreadsheet = wp, window.x.spreadsheet.locale = function (e, t) {
        return J(e, t)
    });
    t.default = Cp
}]);
//# sourceMappingURL=jmsheet.js.map