PageSourceSearch

https://www.taiflex.com.tw/js/echarts.min.js

js taiflex.com.tw collected 2026-10-04 12:43:40 UTC 1,112,470 bytes, 20,944 lines download raw bytes

1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *   http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied.  See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20
21! function(t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(t.echarts = {}) }(this, function(t) {
22    "use strict";
23
24    function e(t, e) { "createCanvas" === t && (v_ = null), g_[t] = e }
25
26    function i(t) {
27        if (null == t || "object" != typeof t) return t;
28        var e = t,
29            n = l_.call(t);
30        if ("[object Array]" === n) { if (!O(t)) { e = []; for (var o = 0, a = t.length; o < a; o++) e[o] = i(t[o]) } } else if (s_[n]) {
31            if (!O(t)) {
32                var r = t.constructor;
33                if (t.constructor.from) e = r.from(t);
34                else { e = new r(t.length); for (var o = 0, a = t.length; o < a; o++) e[o] = i(t[o]) }
35            }
36        } else if (!r_[n] && !O(t) && !M(t)) { e = {}; for (var s in t) t.hasOwnProperty(s) && (e[s] = i(t[s])) }
37        return e
38    }
39
40    function n(t, e, o) {
41        if (!w(e) || !w(t)) return o ? i(e) : t;
42        for (var a in e)
43            if (e.hasOwnProperty(a)) {
44                var r = t[a],
45                    s = e[a];
46                !w(s) || !w(r) || y(s) || y(r) || M(s) || M(r) || b(s) || b(r) || O(s) || O(r) ? !o && a in t || (t[a] = i(e[a], !0)) : n(r, s, o)
47            }
48        return t
49    }
50
51    function o(t, e) { for (var i = t[0], o = 1, a = t.length; o < a; o++) i = n(i, t[o], e); return i }
52
53    function a(t, e) { for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); return t }
54
55    function r(t, e, i) { for (var n in e) e.hasOwnProperty(n) && (i ? null != e[n] : null == t[n]) && (t[n] = e[n]); return t }
56
57    function s() { return v_ || (v_ = m_().getContext("2d")), v_ }
58
59    function l(t, e) {
60        if (t) {
61            if (t.indexOf) return t.indexOf(e);
62            for (var i = 0, n = t.length; i < n; i++)
63                if (t[i] === e) return i
64        }
65        return -1
66    }
67
68    function u(t, e) {
69        function i() {}
70        var n = t.prototype;
71        i.prototype = e.prototype, t.prototype = new i;
72        for (var o in n) t.prototype[o] = n[o];
73        t.prototype.constructor = t, t.superClass = e
74    }
75
76    function h(t, e, i) { r(t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, i) }
77
78    function c(t) { if (t) return "string" != typeof t && "number" == typeof t.length }
79
80    function d(t, e, i) {
81        if (t && e)
82            if (t.forEach && t.forEach === h_) t.forEach(e, i);
83            else if (t.length === +t.length)
84            for (var n = 0, o = t.length; n < o; n++) e.call(i, t[n], n, t);
85        else
86            for (var a in t) t.hasOwnProperty(a) && e.call(i, t[a], a, t)
87    }
88
89    function f(t, e, i) { if (t && e) { if (t.map && t.map === f_) return t.map(e, i); for (var n = [], o = 0, a = t.length; o < a; o++) n.push(e.call(i, t[o], o, t)); return n } }
90
91    function p(t, e, i, n) { if (t && e) { if (t.reduce && t.reduce === p_) return t.reduce(e, i, n); for (var o = 0, a = t.length; o < a; o++) i = e.call(n, i, t[o], o, t); return i } }
92
93    function g(t, e, i) { if (t && e) { if (t.filter && t.filter === c_) return t.filter(e, i); for (var n = [], o = 0, a = t.length; o < a; o++) e.call(i, t[o], o, t) && n.push(t[o]); return n } }
94
95    function m(t, e) { var i = d_.call(arguments, 2); return function() { return t.apply(e, i.concat(d_.call(arguments))) } }
96
97    function v(t) { var e = d_.call(arguments, 1); return function() { return t.apply(this, e.concat(d_.call(arguments))) } }
98
99    function y(t) { return "[object Array]" === l_.call(t) }
100
101    function x(t) { return "function" == typeof t }
102
103    function _(t) { return "[object String]" === l_.call(t) }
104
105    function w(t) { var e = typeof t; return "function" === e || !!t && "object" == e }
106
107    function b(t) { return !!r_[l_.call(t)] }
108
109    function S(t) { return !!s_[l_.call(t)] }
110
111    function M(t) { return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument }
112
113    function I(t) { return t !== t }
114
115    function T(t) {
116        for (var e = 0, i = arguments.length; e < i; e++)
117            if (null != arguments[e]) return arguments[e]
118    }
119
120    function D(t, e) { return null != t ? t : e }
121
122    function A(t, e, i) { return null != t ? t : null != e ? e : i }
123
124    function C() { return Function.call.apply(d_, arguments) }
125
126    function L(t) { if ("number" == typeof t) return [t, t, t, t]; var e = t.length; return 2 === e ? [t[0], t[1], t[0], t[1]] : 3 === e ? [t[0], t[1], t[2], t[1]] : t }
127
128    function k(t, e) { if (!t) throw new Error(e) }
129
130    function P(t) { return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") }
131
132    function N(t) { t[y_] = !0 }
133
134    function O(t) { return t[y_] }
135
136    function E(t) {
137        function e(t, e) { i ? n.set(t, e) : n.set(e, t) }
138        var i = y(t),
139            n = this;
140        t instanceof E ? t.each(e) : t && d(t, e)
141    }
142
143    function R(t) { return new E(t) }
144
145    function z(t, e) { for (var i = new t.constructor(t.length + e.length), n = 0; n < t.length; n++) i[n] = t[n]; var o = t.length; for (n = 0; n < e.length; n++) i[n + o] = e[n]; return i }
146
147    function B() {}
148
149    function V(t, e) { var i = new __(2); return null == t && (t = 0), null == e && (e = 0), i[0] = t, i[1] = e, i }
150
151    function G(t, e) { return t[0] = e[0], t[1] = e[1], t }
152
153    function W(t) { var e = new __(2); return e[0] = t[0], e[1] = t[1], e }
154
155    function F(t, e, i) { return t[0] = e, t[1] = i, t }
156
157    function H(t, e, i) { return t[0] = e[0] + i[0], t[1] = e[1] + i[1], t }
158
159    function Z(t, e, i, n) { return t[0] = e[0] + i[0] * n, t[1] = e[1] + i[1] * n, t }
160
161    function U(t, e, i) { return t[0] = e[0] - i[0], t[1] = e[1] - i[1], t }
162
163    function X(t) { return Math.sqrt(j(t)) }
164
165    function j(t) { return t[0] * t[0] + t[1] * t[1] }
166
167    function Y(t, e, i) { return t[0] = e[0] * i, t[1] = e[1] * i, t }
168
169    function q(t, e) { var i = X(e); return 0 === i ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / i, t[1] = e[1] / i), t }
170
171    function K(t, e) { return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])) }
172
173    function $(t, e) { return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]) }
174
175    function J(t, e, i, n) { return t[0] = e[0] + n * (i[0] - e[0]), t[1] = e[1] + n * (i[1] - e[1]), t }
176
177    function Q(t, e, i) {
178        var n = e[0],
179            o = e[1];
180        return t[0] = i[0] * n + i[2] * o + i[4], t[1] = i[1] * n + i[3] * o + i[5], t
181    }
182
183    function tt(t, e, i) { return t[0] = Math.min(e[0], i[0]), t[1] = Math.min(e[1], i[1]), t }
184
185    function et(t, e, i) { return t[0] = Math.max(e[0], i[0]), t[1] = Math.max(e[1], i[1]), t }
186
187    function it() { this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), this.on("mouseup", this._dragEnd, this), this.on("globalout", this._dragEnd, this) }
188
189    function nt(t, e) { return { target: t, topTarget: e && e.topTarget } }
190
191    function ot(t, e, i) { return { type: t, event: i, target: e.target, topTarget: e.topTarget, cancelBubble: !1, offsetX: i.zrX, offsetY: i.zrY, gestureEvent: i.gestureEvent, pinchX: i.pinchX, pinchY: i.pinchY, pinchScale: i.pinchScale, wheelDelta: i.zrDelta, zrByTouch: i.zrByTouch, which: i.which } }
192
193    function at() {}
194
195    function rt(t, e, i) {
196        if (t[t.rectHover ? "rectContain" : "contain"](e, i)) {
197            for (var n, o = t; o;) {
198                if (o.clipPath && !o.clipPath.contain(e, i)) return !1;
199                o.silent && (n = !0), o = o.parent
200            }
201            return !n || A_
202        }
203        return !1
204    }
205
206    function st() { var t = new k_(6); return lt(t), t }
207
208    function lt(t) { return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t }
209
210    function ut(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t }
211
212    function ht(t, e, i) {
213        var n = e[0] * i[0] + e[2] * i[1],
214            o = e[1] * i[0] + e[3] * i[1],
215            a = e[0] * i[2] + e[2] * i[3],
216            r = e[1] * i[2] + e[3] * i[3],
217            s = e[0] * i[4] + e[2] * i[5] + e[4],
218            l = e[1] * i[4] + e[3] * i[5] + e[5];
219        return t[0] = n, t[1] = o, t[2] = a, t[3] = r, t[4] = s, t[5] = l, t
220    }
221
222    function ct(t, e, i) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + i[0], t[5] = e[5] + i[1], t }
223
224    function dt(t, e, i) {
225        var n = e[0],
226            o = e[2],
227            a = e[4],
228            r = e[1],
229            s = e[3],
230            l = e[5],
231            u = Math.sin(i),
232            h = Math.cos(i);
233        return t[0] = n * h + r * u, t[1] = -n * u + r * h, t[2] = o * h + s * u, t[3] = -o * u + h * s, t[4] = h * a + u * l, t[5] = h * l - u * a, t
234    }
235
236    function ft(t, e, i) {
237        var n = i[0],
238            o = i[1];
239        return t[0] = e[0] * n, t[1] = e[1] * o, t[2] = e[2] * n, t[3] = e[3] * o, t[4] = e[4] * n, t[5] = e[5] * o, t
240    }
241
242    function pt(t, e) {
243        var i = e[0],
244            n = e[2],
245            o = e[4],
246            a = e[1],
247            r = e[3],
248            s = e[5],
249            l = i * r - a * n;
250        return l ? (l = 1 / l, t[0] = r * l, t[1] = -a * l, t[2] = -n * l, t[3] = i * l, t[4] = (n * s - r * o) * l, t[5] = (a * o - i * s) * l, t) : null
251    }
252
253    function gt(t) { var e = st(); return ut(e, t), e }
254
255    function mt(t) { return t > O_ || t < -O_ }
256
257    function vt(t) { this._target = t.target, this._life = t.life || 1e3, this._delay 
257= t.delay || 0, this._initialized = !1, this.loop = null != t.loop && t.loop, this.gap = t.gap || 0, this.easing = t.easing || "Linear", this.onframe = t.onframe, this.ondestroy = t.ondestroy, this.onrestart = t.onrestart, this._pausedTime = 0, this._paused = !1 }
258
259    function yt(t) { return (t = Math.round(t)) < 0 ? 0 : t > 255 ? 255 : t }
260
261    function xt(t) { return (t = Math.round(t)) < 0 ? 0 : t > 360 ? 360 : t }
262
263    function _t(t) { return t < 0 ? 0 : t > 1 ? 1 : t }
264
265    function wt(t) { return yt(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 * 255 : parseInt(t, 10)) }
266
267    function bt(t) { return _t(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 : parseFloat(t)) }
268
269    function St(t, e, i) { return i < 0 ? i += 1 : i > 1 && (i -= 1), 6 * i < 1 ? t + (e - t) * i * 6 : 2 * i < 1 ? e : 3 * i < 2 ? t + (e - t) * (2 / 3 - i) * 6 : t }
270
271    function Mt(t, e, i) { return t + (e - t) * i }
272
273    function It(t, e, i, n, o) { return t[0] = e, t[1] = i, t[2] = n, t[3] = o, t }
274
275    function Tt(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t }
276
277    function Dt(t, e) { X_ && Tt(X_, e), X_ = U_.put(t, X_ || e.slice()) }
278
279    function At(t, e) {
280        if (t) {
281            e = e || [];
282            var i = U_.get(t);
283            if (i) return Tt(e, i);
284            var n = (t += "").replace(/ /g, "").toLowerCase();
285            if (n in Z_) return Tt(e, Z_[n]), Dt(t, e), e;
286            if ("#" !== n.charAt(0)) {
287                var o = n.indexOf("("),
288                    a = n.indexOf(")");
289                if (-1 !== o && a + 1 === n.length) {
290                    var r = n.substr(0, o),
291                        s = n.substr(o + 1, a - (o + 1)).split(","),
292                        l = 1;
293                    switch (r) {
294                        case "rgba":
295                            if (4 !== s.length) return void It(e, 0, 0, 0, 1);
296                            l = bt(s.pop());
297                        case "rgb":
298                            return 3 !== s.length ? void It(e, 0, 0, 0, 1) : (It(e, wt(s[0]), wt(s[1]), wt(s[2]), l), Dt(t, e), e);
299                        case "hsla":
300                            return 4 !== s.length ? void It(e, 0, 0, 0, 1) : (s[3] = bt(s[3]), Ct(s, e), Dt(t, e), e);
301                        case "hsl":
302                            return 3 !== s.length ? void It(e, 0, 0, 0, 1) : (Ct(s, e), Dt(t, e), e);
303                        default:
304                            return
305                    }
306                }
307                It(e, 0, 0, 0, 1)
308            } else { if (4 === n.length) return (u = parseInt(n.substr(1), 16)) >= 0 && u <= 4095 ? (It(e, (3840 & u) >> 4 | (3840 & u) >> 8, 240 & u | (240 & u) >> 4, 15 & u | (15 & u) << 4, 1), Dt(t, e), e) : void It(e, 0, 0, 0, 1); if (7 === n.length) { var u = parseInt(n.substr(1), 16); return u >= 0 && u <= 16777215 ? (It(e, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u, 1), Dt(t, e), e) : void It(e, 0, 0, 0, 1) } }
309        }
310    }
311
312    function Ct(t, e) {
313        var i = (parseFloat(t[0]) % 360 + 360) % 360 / 360,
314            n = bt(t[1]),
315            o = bt(t[2]),
316            a = o <= .5 ? o * (n + 1) : o + n - o * n,
317            r = 2 * o - a;
318        return e = e || [], It(e, yt(255 * St(r, a, i + 1 / 3)), yt(255 * St(r, a, i)), yt(255 * St(r, a, i - 1 / 3)), 1), 4 === t.length && (e[3] = t[3]), e
319    }
320
321    function Lt(t) {
322        if (t) {
323            var e, i, n = t[0] / 255,
324                o = t[1] / 255,
325                a = t[2] / 255,
326                r = Math.min(n, o, a),
327                s = Math.max(n, o, a),
328                l = s - r,
329                u = (s + r) / 2;
330            if (0 === l) e = 0, i = 0;
331            else {
332                i = u < .5 ? l / (s + r) : l / (2 - s - r);
333                var h = ((s - n) / 6 + l / 2) / l,
334                    c = ((s - o) / 6 + l / 2) / l,
335                    d = ((s - a) / 6 + l / 2) / l;
336                n === s ? e = d - c : o === s ? e = 1 / 3 + h - d : a === s && (e = 2 / 3 + c - h), e < 0 && (e += 1), e > 1 && (e -= 1)
337            }
338            var f = [360 * e, i, u];
339            return null != t[3] && f.push(t[3]), f
340        }
341    }
342
343    function kt(t, e) { var i = At(t); if (i) { for (var n = 0; n < 3; n++) i[n] = e < 0 ? i[n] * (1 - e) | 0 : (255 - i[n]) * e + i[n] | 0, i[n] > 255 ? i[n] = 255 : t[n] < 0 && (i[n] = 0); return zt(i, 4 === i.length ? "rgba" : "rgb") } }
344
345    function Pt(t) { var e = At(t); if (e) return ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) }
346
347    function Nt(t, e, i) {
348        if (e && e.length && t >= 0 && t <= 1) {
349            i = i || [];
350            var n = t * (e.length - 1),
351                o = Math.floor(n),
352                a = Math.ceil(n),
353                r = e[o],
354                s = e[a],
355                l = n - o;
356            return i[0] = yt(Mt(r[0], s[0], l)), i[1] = yt(Mt(r[1], s[1], l)), i[2] = yt(Mt(r[2], s[2], l)), i[3] = _t(Mt(r[3], s[3], l)), i
357        }
358    }
359
360    function Ot(t, e, i) {
361        if (e && e.length && t >= 0 && t <= 1) {
362            var n = t * (e.length - 1),
363                o = Math.floor(n),
364                a = Math.ceil(n),
365                r = At(e[o]),
366                s = At(e[a]),
367                l = n - o,
368                u = zt([yt(Mt(r[0], s[0], l)), yt(Mt(r[1], s[1], l)), yt(Mt(r[2], s[2], l)), _t(Mt(r[3], s[3], l))], "rgba");
369            return i ? { color: u, leftIndex: o, rightIndex: a, value: n } : u
370        }
371    }
372
373    function Et(t, e, i, n) { if (t = At(t)) return t = Lt(t), null != e && (t[0] = xt(e)), null != i && (t[1] = bt(i)), null != n && (t[2] = bt(n)), zt(Ct(t), "rgba") }
374
375    function Rt(t, e) { if ((t = At(t)) && null != e) return t[3] = _t(e), zt(t, "rgba") }
376
377    function zt(t, e) { if (t && t.length) { var i = t[0] + "," + t[1] + "," + t[2]; return "rgba" !== e && "hsva" !== e && "hsla" !== e || (i += "," + t[3]), e + "(" + i + ")" } }
378
379    function Bt(t, e) { return t[e] }
380
381    function Vt(t, e, i) { t[e] = i }
382
383    function Gt(t, e, i) { return (e - t) * i + t }
384
385    function Wt(t, e, i) { return i > .5 ? e : t }
386
387    function Ft(t, e, i, n, o) {
388        var a = t.length;
389        if (1 == o)
390            for (s = 0; s < a; s++) n[s] = Gt(t[s], e[s], i);
391        else
392            for (var r = a && t[0].length, s = 0; s < a; s++)
393                for (var l = 0; l < r; l++) n[s][l] = Gt(t[s][l], e[s][l], i)
394    }
395
396    function Ht(t, e, i) {
397        var n = t.length,
398            o = e.length;
399        if (n !== o)
400            if (n > o) t.length = o;
401            else
402                for (r = n; r < o; r++) t.push(1 === i ? e[r] : K_.call(e[r]));
403        for (var a = t[0] && t[0].length, r = 0; r < t.length; r++)
404            if (1 === i) isNaN(t[r]) && (t[r] = e[r]);
405            else
406                for (var s = 0; s < a; s++) isNaN(t[r][s]) && (t[r][s] = e[r][s])
407    }
408
409    function Zt(t, e, i) {
410        if (t === e) return !0;
411        var n = t.length;
412        if (n !== e.length) return !1;
413        if (1 === i) {
414            for (a = 0; a < n; a++)
415                if (t[a] !== e[a]) return !1
416        } else
417            for (var o = t[0].length, a = 0; a < n; a++)
418                for (var r = 0; r < o; r++)
419                    if (t[a][r] !== e[a][r]) return !1; return !0
420    }
421
422    function Ut(t, e, i, n, o, a, r, s, l) {
423        var u = t.length;
424        if (1 == l)
425            for (c = 0; c < u; c++) s[c] = Xt(t[c], e[c], i[c], n[c], o, a, r);
426        else
427            for (var h = t[0].length, c = 0; c < u; c++)
428                for (var d = 0; d < h; d++) s[c][d] = Xt(t[c][d], e[c][d], i[c][d], n[c][d], o, a, r)
429    }
430
431    function Xt(t, e, i, n, o, a, r) {
432        var s = .5 * (i - t),
433            l = .5 * (n - e);
434        return (2 * (e - i) + s + l) * r + (-3 * (e - i) - 2 * s - l) * a + s * o + e
435    }
436
437    function jt(t) { if (c(t)) { var e = t.length; if (c(t[0])) { for (var i = [], n = 0; n < e; n++) i.push(K_.call(t[n])); return i } return K_.call(t) } return t }
438
439    function Yt(t) { return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), "rgba(" + t.join(",") + ")" }
440
441    function qt(t) { var e = t[t.length - 1].value; return c(e && e[0]) ? 2 : 1 }
442
443    function Kt(t, e, i, n, o, a) {
444        var r = t._getter,
445            s = t._setter,
446            l = "spline" === e,
447            u = n.length;
448        if (u) {
449            var h, d = c(n[0].value),
450                f = !1,
451                p = !1,
452                g = d ? qt(n) : 0;
453            n.sort(function(t, e) { return t.time - e.time }), h = n[u - 1].time;
454            for (var m = [], v = [], y = n[0].value, x = !0, _ = 0; _ < u; _++) {
455                m.push(n[_].time / h);
456                var w = n[_].value;
457                if (d && Zt(w, y, g) || !d && w === y || (x = !1), y = w, "string" == typeof w) {
458                    var b = At(w);
459                    b ? (w = b, f = !0) : p = !0
460                }
461                v.push(w)
462            }
463            if (a || !x) {
464                for (var S = v[u - 1], _ = 0; _ < u - 1; _++) d ? Ht(v[_], S, g) : !isNaN(v[_]) || isNaN(S) || p || f || (v[_] = S);
465                d && Ht(r(t._target, o), S, g);
466                var M, I, T, D, A, C, L = 0,
467                    k = 0;
468                if (f) var P = [0, 0, 0, 0];
469                var N = new vt({
470                    target: t._target,
471                    life: h,
472                    loop: t._loop,
473                    delay: t._delay,
474                    onframe: function(t, e) {
475                        var i;
476                        if (e < 0) i = 0;
477                        else if (e < k) {
478                            for (i = M = Math.min(L + 1, u - 1); i >= 0 && !(m[i] <= e); i--);
479                            i = Math.min(i, u - 2)
480                        } else {
481                            for (i = L; i < u && !(m[i] > e); i++);
482                            i = Math.min(i - 1, u - 2)
483                        }
484                        L = i, k = e;
485                        var n = m[i + 1] - m[i];
486                        if (0 !== n)
487                            if (I = (e - m[i]) / n, l)
488                                if (D = v[i], T = v[0 === i ? i : i 
488- 1], A = v[i > u - 2 ? u - 1 : i + 1], C = v[i > u - 3 ? u - 1 : i + 2], d) Ut(T, D, A, C, I, I * I, I * I * I, r(t, o), g);
489                                else {
490                                    if (f) a = Ut(T, D, A, C, I, I * I, I * I * I, P, 1), a = Yt(P);
491                                    else {
492                                        if (p) return Wt(D, A, I);
493                                        a = Xt(T, D, A, C, I, I * I, I * I * I)
494                                    }
495                                    s(t, o, a)
496                                }
497                        else if (d) Ft(v[i], v[i + 1], I, r(t, o), g);
498                        else {
499                            var a;
500                            if (f) Ft(v[i], v[i + 1], I, P, 1), a = Yt(P);
501                            else {
502                                if (p) return Wt(v[i], v[i + 1], I);
503                                a = Gt(v[i], v[i + 1], I)
504                            }
505                            s(t, o, a)
506                        }
507                    },
508                    ondestroy: i
509                });
510                return e && "spline" !== e && (N.easing = e), N
511            }
512        }
513    }
514
515    function $t(t, e, i, n) { i < 0 && (t += i, i = -i), n < 0 && (e += n, n = -n), this.x = t, this.y = e, this.width = i, this.height = n }
516
517    function Jt(t) { for (var e = 0; t >= lw;) e |= 1 & t, t >>= 1; return t + e }
518
519    function Qt(t, e, i, n) {
520        var o = e + 1;
521        if (o === i) return 1;
522        if (n(t[o++], t[e]) < 0) {
523            for (; o < i && n(t[o], t[o - 1]) < 0;) o++;
524            te(t, e, o)
525        } else
526            for (; o < i && n(t[o], t[o - 1]) >= 0;) o++;
527        return o - e
528    }
529
530    function te(t, e, i) {
531        for (i--; e < i;) {
532            var n = t[e];
533            t[e++] = t[i], t[i--] = n
534        }
535    }
536
537    function ee(t, e, i, n, o) {
538        for (n === e && n++; n < i; n++) {
539            for (var a, r = t[n], s = e, l = n; s < l;) o(r, t[a = s + l >>> 1]) < 0 ? l = a : s = a + 1;
540            var u = n - s;
541            switch (u) {
542                case 3:
543                    t[s + 3] = t[s + 2];
544                case 2:
545                    t[s + 2] = t[s + 1];
546                case 1:
547                    t[s + 1] = t[s];
548                    break;
549                default:
550                    for (; u > 0;) t[s + u] = t[s + u - 1], u--
551            }
552            t[s] = r
553        }
554    }
555
556    function ie(t, e, i, n, o, a) {
557        var r = 0,
558            s = 0,
559            l = 1;
560        if (a(t, e[i + o]) > 0) {
561            for (s = n - o; l < s && a(t, e[i + o + l]) > 0;) r = l, (l = 1 + (l << 1)) <= 0 && (l = s);
562            l > s && (l = s), r += o, l += o
563        } else {
564            for (s = o + 1; l < s && a(t, e[i + o - l]) <= 0;) r = l, (l = 1 + (l << 1)) <= 0 && (l = s);
565            l > s && (l = s);
566            var u = r;
567            r = o - l, l = o - u
568        }
569        for (r++; r < l;) {
570            var h = r + (l - r >>> 1);
571            a(t, e[i + h]) > 0 ? r = h + 1 : l = h
572        }
573        return l
574    }
575
576    function ne(t, e, i, n, o, a) {
577        var r = 0,
578            s = 0,
579            l = 1;
580        if (a(t, e[i + o]) < 0) {
581            for (s = o + 1; l < s && a(t, e[i + o - l]) < 0;) r = l, (l = 1 + (l << 1)) <= 0 && (l = s);
582            l > s && (l = s);
583            var u = r;
584            r = o - l, l = o - u
585        } else {
586            for (s = n - o; l < s && a(t, e[i + o + l]) >= 0;) r = l, (l = 1 + (l << 1)) <= 0 && (l = s);
587            l > s && (l = s), r += o, l += o
588        }
589        for (r++; r < l;) {
590            var h = r + (l - r >>> 1);
591            a(t, e[i + h]) < 0 ? l = h : r = h + 1
592        }
593        return l
594    }
595
596    function oe(t, e) {
597        function i(i) {
598            var s = a[i],
599                u = r[i],
600                h = a[i + 1],
601                c = r[i + 1];
602            r[i] = u + c, i === l - 3 && (a[i + 1] = a[i + 2], r[i + 1] = r[i + 2]), l--;
603            var d = ne(t[h], t, s, u, 0, e);
604            s += d, 0 !== (u -= d) && 0 !== (c = ie(t[s + u - 1], t, h, c, c - 1, e)) && (u <= c ? n(s, u, h, c) : o(s, u, h, c))
605        }
606
607        function n(i, n, o, a) {
608            var r = 0;
609            for (r = 0; r < n; r++) u[r] = t[i + r];
610            var l = 0,
611                h = o,
612                c = i;
613            if (t[c++] = t[h++], 0 != --a)
614                if (1 !== n) {
615                    for (var d, f, p, g = s;;) {
616                        d = 0, f = 0, p = !1;
617                        do { if (e(t[h], u[l]) < 0) { if (t[c++] = t[h++], f++, d = 0, 0 == --a) { p = !0; break } } else if (t[c++] = u[l++], d++, f = 0, 1 == --n) { p = !0; break } } while ((d | f) < g);
618                        if (p) break;
619                        do {
620                            if (0 !== (d = ne(t[h], u, l, n, 0, e))) { for (r = 0; r < d; r++) t[c + r] = u[l + r]; if (c += d, l += d, (n -= d) <= 1) { p = !0; break } }
621                            if (t[c++] = t[h++], 0 == --a) { p = !0; break }
622                            if (0 !== (f = ie(u[l], t, h, a, 0, e))) { for (r = 0; r < f; r++) t[c + r] = t[h + r]; if (c += f, h += f, 0 === (a -= f)) { p = !0; break } }
623                            if (t[c++] = u[l++], 1 == --n) { p = !0; break }
624                            g--
625                        } while (d >= uw || f >= uw);
626                        if (p) break;
627                        g < 0 && (g = 0), g += 2
628                    }
629                    if ((s = g) < 1 && (s = 1), 1 === n) {
630                        for (r = 0; r < a; r++) t[c + r] = t[h + r];
631                        t[c + a] = u[l]
632                    } else { if (0 === n) throw new Error; for (r = 0; r < n; r++) t[c + r] = u[l + r] }
633                } else {
634                    for (r = 0; r < a; r++) t[c + r] = t[h + r];
635                    t[c + a] = u[l]
636                }
637            else
638                for (r = 0; r < n; r++) t[c + r] = u[l + r]
639        }
640
641        function o(i, n, o, a) {
642            var r = 0;
643            for (r = 0; r < a; r++) u[r] = t[o + r];
644            var l = i + n - 1,
645                h = a - 1,
646                c = o + a - 1,
647                d = 0,
648                f = 0;
649            if (t[c--] = t[l--], 0 != --n)
650                if (1 !== a) {
651                    for (var p = s;;) {
652                        var g = 0,
653                            m = 0,
654                            v = !1;
655                        do { if (e(u[h], t[l]) < 0) { if (t[c--] = t[l--], g++, m = 0, 0 == --n) { v = !0; break } } else if (t[c--] = u[h--], m++, g = 0, 1 == --a) { v = !0; break } } while ((g | m) < p);
656                        if (v) break;
657                        do {
658                            if (0 != (g = n - ne(u[h], t, i, n, n - 1, e))) { for (n -= g, f = (c -= g) + 1, d = (l -= g) + 1, r = g - 1; r >= 0; r--) t[f + r] = t[d + r]; if (0 === n) { v = !0; break } }
659                            if (t[c--] = u[h--], 1 == --a) { v = !0; break }
660                            if (0 != (m = a - ie(t[l], u, 0, a, a - 1, e))) { for (a -= m, f = (c -= m) + 1, d = (h -= m) + 1, r = 0; r < m; r++) t[f + r] = u[d + r]; if (a <= 1) { v = !0; break } }
661                            if (t[c--] = t[l--], 0 == --n) { v = !0; break }
662                            p--
663                        } while (g >= uw || m >= uw);
664                        if (v) break;
665                        p < 0 && (p = 0), p += 2
666                    }
667                    if ((s = p) < 1 && (s = 1), 1 === a) {
668                        for (f = (c -= n) + 1, d = (l -= n) + 1, r = n - 1; r >= 0; r--) t[f + r] = t[d + r];
669                        t[c] = u[h]
670                    } else { if (0 === a) throw new Error;
670 for (d = c - (a - 1), r = 0; r < a; r++) t[d + r] = u[r] }
671                } else {
672                    for (f = (c -= n) + 1, d = (l -= n) + 1, r = n - 1; r >= 0; r--) t[f + r] = t[d + r];
673                    t[c] = u[h]
674                }
675            else
676                for (d = c - (a - 1), r = 0; r < a; r++) t[d + r] = u[r]
677        }
678        var a, r, s = uw,
679            l = 0,
680            u = [];
681        a = [], r = [], this.mergeRuns = function() {
682            for (; l > 1;) {
683                var t = l - 2;
684                if (t >= 1 && r[t - 1] <= r[t] + r[t + 1] || t >= 2 && r[t - 2] <= r[t] + r[t - 1]) r[t - 1] < r[t + 1] && t--;
685                else if (r[t] > r[t + 1]) break;
686                i(t)
687            }
688        }, this.forceMergeRuns = function() {
689            for (; l > 1;) {
690                var t = l - 2;
691                t > 0 && r[t - 1] < r[t + 1] && t--, i(t)
692            }
693        }, this.pushRun = function(t, e) { a[l] = t, r[l] = e, l += 1 }
694    }
695
696    function ae(t, e, i, n) {
697        i || (i = 0), n || (n = t.length);
698        var o = n - i;
699        if (!(o < 2)) {
700            var a = 0;
701            if (o < lw) return a = Qt(t, i, n, e), void ee(t, i, n, i + a, e);
702            var r = new oe(t, e),
703                s = Jt(o);
704            do {
705                if ((a = Qt(t, i, n, e)) < s) {
706                    var l = o;
707                    l > s && (l = s), ee(t, i, i + l, i + a, e), a = l
708                }
709                r.pushRun(i, a), r.mergeRuns(), o -= a, i += a
710            } while (0 !== o);
711            r.forceMergeRuns()
712        }
713    }
714
715    function re(t, e) { return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel }
716
717    function se(t, e, i) {
718        var n = null == e.x ? 0 : e.x,
719            o = null == e.x2 ? 1 : e.x2,
720            a = null == e.y ? 0 : e.y,
721            r = null == e.y2 ? 0 : e.y2;
722        return e.global || (n = n * i.width + i.x, o = o * i.width + i.x, a = a * i.height + i.y, r = r * 
722i.height + i.y), n = isNaN(n) ? 0 : n, o = isNaN(o) ? 1 : o, a = isNaN(a) ? 0 : a, r = isNaN(r) ? 0 : r, t.createLinearGradient(n, a, o, r)
723    }
724
725    function le(t, e, i) {
726        var n = i.width,
727            o = i.height,
728            a = Math.min(n, o),
729            r = null == e.x ? .5 : e.x,
730            s = null == e.y ? .5 : e.y,
731            l = null == e.r ? .5 : e.r;
732        return e.global || (r = r * n + i.x, s = s * o + i.y, l *= a), t.createRadialGradient(r, s, 0, r, s, l)
733    }
734
735    function ue() { return !1 }
736
737    function he(t, e, i) {
738        var n = m_(),
739            o = e.getWidth(),
740            a = e.getHeight(),
741            r = n.style;
742        return r && (r.position = "absolute", r.left = 0, r.top = 0, r.width = o + "px", r.height = a + "px", n.setAttribute("data-zr-dom-id", t)), n.width = o * i, n.height = a * i, n
743    }
744
745    function ce(t) { if ("string" == typeof t) { var e = ww.get(t); return e && e.image } return t }
746
747    function de(t, e, i, n, o) {
748        if (t) {
749            if ("string" == typeof t) {
750                if (e && e.__zrImageSrc === t || !i) return e;
751                var a = ww.get(t),
752                    r = { hostEl: i, cb: n, cbPayload: o };
753                return a ? !pe(e = a.image) && a.pending.push(r) : (!e && (e = new Image), e.onload = fe, ww.put(t, e.__cachedImgObj = { image: e, pending: [r] }), e.src = e.__zrImageSrc = t), e
754            }
755            return t
756        }
757        return e
758    }
759
760    function fe() {
761        var t = this.__cachedImgObj;
762        this.onload = this.__cachedImgObj = null;
763        for (var e = 0; e < t.pending.length; e++) {
764            var i = t.pending[e],
765                n = i.cb;
766            n && n(this, i.cbPayload), i.hostEl.dirty()
767        }
768        t.pending.length = 0
769    }
770
771    function pe(t) { return t && t.width && t.height }
772
773    function ge(t, e) { var i = t + ":" + (e = e || Tw); if (bw[i]) return bw[i]; for (var n = (t + "").split("\n"), o = 0, a = 0, r = n.length; a < r; a++) o = Math.max(De(n[a], e).width, o); return Sw > Mw && (Sw = 0, bw = {}), Sw++, bw[i] = o, o }
774
775    function me(t, e, i, n, o, a, r) { return a ? ye(t, e, i, n, o, a, r) : ve(t, e, i, n, o, r) }
776
777    function ve(t, e, i, n, o, a) {
778        var r = Ae(t, e, o, a),
779            s = ge(t, e);
780        o && (s += o[1] + o[3]);
781        var l = r.outerHeight,
782            u = new $t(xe(0, s, i), _e(0, l, n), s, l);
783        return u.lineHeight = r.lineHeight, u
784    }
785
786    function ye(t, e, i, n, o, a, r) {
787        var s = Ce(t, { rich: a, truncate: r, font: e, textAlign: i, textPadding: o }),
788            l = s.outerWidth,
789            u = s.outerHeight;
790        return new $t(xe(0, l, i), _e(0, u, n), l, u)
791    }
792
793    function xe(t, e, i) { return "right" === i ? t -= e : "center" === i && (t -= e / 2), t }
794
795    function _e(t, e, i) { return "middle" === i ? t -= e / 2 : "bottom" === i && (t -= e), t }
796
797    function we(t, e, i) {
798        var n = e.x,
799            o = e.y,
800            a = e.height,
801            r = e.width,
802            s = a / 2,
803            l = "left",
804            u = "top";
805        switch (t) {
806            case "left":
807                n -= i, o += s, l = "right", u = "middle";
808                break;
809            case "right":
810                n += i + r, o += s, u = "middle";
811                break;
812            case "top":
813                n += r / 2, o -= i, l = "center", u = "bottom";
814                break;
815            case "bottom":
816                n += r / 2, o += a + i, l = "center";
817                break;
818            case "inside":
819                n += r / 2, o += s, l = "center", u = "middle";
820                break;
821            case "insideLeft":
822                n += i, o += s, u = "middle";
823                break;
824            case "insideRight":
825                n += r - i, o += s, l = "right", u = "middle";
826                break;
827            case "insideTop":
828                n += r / 2, o += i, l = "center";
829                break;
830            case "insideBottom":
831                n += r / 2, o += a - i, l = "center", u = "bottom";
832                break;
833            case "insideTopLeft":
834                n += i, o += i;
835                break;
836            case "insideTopRight":
837                n += r - i, o += i, l = "right";
838                break;
839            case "insideBottomLeft":
840                n += i, o += a - i, u = "bottom";
841                break;
842            case "insideBottomRight":
843                n += r - i, o += a - i, l = "right", u = "bottom"
844        }
845        return { x: n, y: o, textAlign: l, textVerticalAlign: u }
846    }
847
848    function be(t, e, i, n, o) {
849        if (!e) return "";
850        var a = (t + "").split("\n");
851        o = Se(e, i, n, o);
852        for (var r = 0, s = a.length; r < s; r++) a[r] = Me(a[r], o);
853        return a.join("\n")
854    }
855
856    function Se(t, e, i, n) {
857        (n = a({}, n)).font = e;
858        var i = D(i, "...");
859        n.maxIterations = D(n.maxIterations, 2);
860        var o = n.minChar = D(n.minChar, 0);
861        n.cnCharWidth = ge("国", e);
862        var r = n.ascCharWidth = ge("a", e);
863        n.placeholder = D(n.placeholder, "");
864        for (var s = t = Math.max(0, t - 1), l = 0; l < o && s >= r; l++) s -= r;
865        var u = ge(i);
866        return u > s && (i = "", u = 0), s = t - u, n.ellipsis = i, n.ellipsisWidth = u, n.contentWidth = s, n.containerWidth = t, n
867    }
868
869    function Me(t, e) {
870        var i = e.containerWidth,
871            n = e.font,
872            o = e.contentWidth;
873        if (!i) return "";
874        var a = ge(t, n);
875        if (a <= i) return t;
876        for (var r = 0;; r++) {
877            if (a <= o || r >= e.maxIterations) { t += e.ellipsis; break }
878            var s = 0 === r ? Ie(t, o, e.ascCharWidth, e.cnCharWidth) : a > 0 ? Math.floor(t.length * o / a) : 0;
879            a = ge(t = t.substr(0, s), n)
880        }
881        return "" === t && (t = e.placeholder), t
882    }
883
884    function Ie(t, e, i, n) {
885        for (var o = 0, a = 0, r = t.length; a < r && o < e; a++) {
886            var s = t.charCodeAt(a);
887            o += 0 <= s && s <= 127 ? i : n
888        }
889        return a
890    }
891
892    function Te(t) { return ge("国", t) }
893
894    function De(t, e) { return Dw.measureText(t, e) }
895
896    function Ae(t, e, i, n) {
897        null != t && (t += "");
898        var o = Te(e),
899            a = t ? t.split("\n") : [],
900            r = a.length * o,
901            s = r;
902        if (i && (s += i[0] + i[2]), t && n) {
903            var l = n.outerHeight,
904                u = n.outerWidth;
905            if (null != l && s > l) t = "", a = [];
906            else if (null != u)
907                for (var h = Se(u - (i ? i[1] + i[3] : 0), e, n.ellipsis, { minChar: n.minChar, placeholder: n.placeholder }), c = 0, d = a.length; c < d; c++) a[c] = Me(a[c], h)
908        }
909        return { lines: a, height: r, outerHeight: s, lineHeight: o }
910    }
911
912    function Ce(t, e) {
913        var i = { lines: [], width: 0, height: 0 };
914        if (null != t && (t += ""), !t) return i;
915        for (var n, o = Iw.lastIndex = 0; null != (n = Iw.exec(t));) {
916            var a = n.index;
917            a > o && Le(i, t.substring(o, a)), Le(i, n[2], n[1]), o = Iw.lastIndex
918        }
919        o < t.length && Le(i, t.substring(o, t.length));
920        var r = i.lines,
921            s = 0,
922            l = 0,
923            u = [],
924            h = e.textPadding,
925            c = e.truncate,
926            d = c && c.outerWidth,
927            f = c && c.outerHeight;
928        h && (null != d && (d -= h[1] + h[3]), null != f && (f -= h[0] + h[2]));
929        for (L = 0; L < r.length; L++) {
930            for (var p = r[L], g = 0, m = 0, v = 0; v < p.tokens.length; v++) {
931                var y = (k = p.tokens[v]).styleName && e.rich[k.styleName] || {},
932                    x = k.textPadding = y.textPadding,
933                    _ = k.font = y.font || e.font,
934                    w = k.textHeight = D(y.textHeight, Te(_));
935                if (x && (w += x[0] + x[2]), k.height = w, k.lineHeight = A(y.textLineHeight, e.textLineHeight, w), k.textAlign = y && y.textAlign || e.textAlign, k.textVerticalAlign = y && y.textVerticalAlign || "middle", null != f && s + k.lineHeight > f) return { lines: [], width: 0, height: 0 };
936                k.textWidth = ge(k.text, _);
937                var b = y.textWidth,
938                    S = null == b || "auto" === b;
939                if ("string" == typeof b && "%" === b.charAt(b.length - 1)) k.percentWidth = b, u.push(k), b = 0;
940                else {
941                    if (S) {
942                        b = k.textWidth;
943                        var M = y.textBackgroundColor,
944                            I = M && M.image;
945                        I && pe(I = ce(I)) && (b = Math.max(b, I.width * w / I.height))
946                    }
947                    var T = x ? x[1] + x[3] : 0;
948                    b += T;
949                    var C = null != d ? d - m : null;
950                    null != C && C < b && (!S || C < T ? (k.text = "", k.textWidth = b = 0) : (k.text = be(k.text, C - T, _, c.ellipsis, { minChar: c.minChar }), k.textWidth = ge(k.text, _), b = k.textWidth + T))
951                }
952                m += k.width = b, y && (g = Math.max(g, k.lineHeight))
953            }
954            p.width = m, p.lineHeight = g, s += g, l = Math.max(l, m)
955        }
956        i.outerWidth = i.width = D(e.textWidth, l), i.outerHeight = i.height = D(e.textHeight, s), h && (i.outerWidth += h[1] + h[3], i.outerHeight += h[0] + h[2]);
957        for (var L = 0; L < u.length; L++) {
958            var k = u[L],
959                P = k.percentWidth;
960            k.width = parseInt(P, 10) / 100 * l
961        }
962        return i
963    }
964
965    function Le(t, e, i) {
966        for (var n = "" === e, o = e.split("\n"), a = t.lines, r = 0; r < o.length; r++) {
967            var s = o[r],
968                l = { styleName: i, text: s, isLineHolder: !s && !n };
969            if (r) a.push({ tokens: [l] });
970            else {
971                var u = (a[a.length - 1] || (a[0] = { tokens: [] })).tokens,
972                    h = u.length;
973                1 === h && u[0].isLineHolder ? u[0] = l : (s || !h || n) && u.push(l)
974            }
975        }
976    }
977
978    function ke(t) { var e = (t.fontSize || t.fontFamily) && [t.fontStyle, t.fontWeight, (t.fontSize || 12) + "px", t.fontFamily || "sans-serif"].join(" "); return e && P(e) || t.textFont || t.font }
979
980    function Pe(t, e) {
981        var i, n, o, a, r = e.x,
982            s = e.y,
983            l = e.width,
984            u = e.height,
985            h = e.r;
986        l < 0 && (r += l, l = -l), u < 0 && (s += u, u = -u), "number" == typeof h ? i = n = o = a = h : h instanceof Array ? 1 === h.length ? i = n = o = a = h[0] : 2 === h.length ? (i = o = h[0], n = a = h[1]) : 3 === h.length ? (i = h[0], n = a = h[1], o = h[2]) : (i = h[0], n = h[1], o = h[2], a = h[3]) : i = n = o = a = 0;
987        var c;
988        i + n > l && (i *= l / (c = i + n), n *= l / c), o + a > l && (o *= l / (c = o + a), a *= l / c), n + o > u && (n *= u / (c = n + o), o *= u / c), i + a > u && (i *= u / (c = i + a), a *= u / c), t.moveTo(r + i, s), t.lineTo(r + l - n, s), 0 !== n && t.arc(r + l - n, s + n, n, -Math.PI / 2, 0), t.lineTo(r + l, s + u - o), 0 !== o && t.arc(r + l - o, s + u - o, o, 0, Math.PI / 2), t.lineTo(r + a, s + u), 0 !== a && t.arc(r + a, s + u - a, a, Math.PI / 2, Math.PI), t.lineTo(r, s + i), 0 !== i && t.arc(r + i, s + i, i, Math.PI, 1.5 * Math.PI)
989    }
990
991    function Ne(t) { return Oe(t), d(t.rich, Oe), t }
992
993    function Oe(t) { if (t) { t.font = ke(t); var e = t.textAlign; "middle" === e && (e = "center"), t.textAlign = null == e || Aw[e] ? e : "left"; var i = t.textVerticalAlign || t.textBaseline; "center" === i && (i = "middle"), t.textVerticalAlign = null == i || Cw[i] ? i : "top", t.textPadding && (t.textPadding = L(t.textPadding)) } }
994
995    function Ee(t, e, i, n, o) { n.rich ? ze(t, e, i, n, o) : Re(t, e, i, n, o) }
996
997    function Re(t, e, i, n, o) {
998        var a = Ue(e, "font", n.font || Tw),
999            r = n.textPadding,
1000            s = t.__textCotentBlock;
1001        s && !t.__dirty || (s = t.__textCotentBlock = Ae(i, a, r, n.truncate));
1002        var l = s.outerHeight,
1003            u = s.lines,
1004            h = s.lineHeight,
1005            c = Ze(l, n, o),
1006            d = c.baseX,
1007            f = c.baseY,
1008            p = c.textAlign,
1009            g = c.textVerticalAlign;
1010        Ve(e, n, o, d, f);
1011        var m = _e(f, l, g),
1012            v = d,
1013            y = m,
1014            x = We(n);
1015        if (x || r) {
1016            var _ = ge(i, a);
1017            r && (_ += r[1] + r[3]);
1018            var w = xe(d, _, p);
1019            x && Fe(t, e, n, w, m, _, l), r && (v = qe(d, p, r), y += r[0])
1020        }
1021        Ue(e, "textAlign", p || "left"), Ue(e, "textBaseline", "middle"), Ue(e, "shadowBlur", n.textShadowBlur || 0), Ue(e, "shadowColor", n.textShadowColor || "transparent"), Ue(e, "shadowOffsetX", n.textShadowOffsetX || 0), Ue(e, "shadowOffsetY", n.textShadowOffsetY || 0
1021), y += h / 2;
1022        var b = n.textStrokeWidth,
1023            S = Xe(n.textStroke, b),
1024            M = je(n.textFill);
1025        S && (Ue(e, "lineWidth", b), Ue(e, "strokeStyle", S)), M && Ue(e, "fillStyle", M);
1026        for (var I = 0; I < u.length; I++) S && e.strokeText(u[I], v, y), M && e.fillText(u[I], v, y), y += h
1027    }
1028
1029    function ze(t, e, i, n, o) {
1030        var a = t.__textCotentBlock;
1031        a && !t.__dirty || (a = t.__textCotentBlock = Ce(i, n)), Be(t, e, a, n, o)
1032    }
1033
1034    function Be(t, e, i, n, o) {
1035        var a = i.width,
1036            r = i.outerWidth,
1037            s = i.outerHeight,
1038            l = n.textPadding,
1039            u = Ze(s, n, o),
1040            h = u.baseX,
1041            c = u.baseY,
1042            d = u.textAlign,
1043            f = u.textVerticalAlign;
1044        Ve(e, n, o, h, c);
1045        var p = xe(h, r, d),
1046            g = _e(c, s, f),
1047            m = p,
1048            v = g;
1049        l && (m += l[3], v += l[0]);
1050        var y = m + a;
1051        We(n) && Fe(t, e, n, p, g, r, s);
1052        for (var x = 0; x < i.lines.length; x++) {
1053            for (var _, w = i.lines[x], b = w.tokens, S = b.length, M = w.lineHeight, I = w.width, T = 0, D = m, A = y, C = S - 1; T < S && (!(_ = b[T]).textAlign || "left" === _.textAlign);) Ge(t, e, _, n, M, v, D, "left"), I -= _.width, D += _.width, T++;
1054            for (; C >= 0 && "right" === (_ = b[C]).textAlign;) Ge(t, e, _, n, M, v, A, "right"), I -= _.width, A -= _.width, C--;
1055            for (D += (a - (D - m) - (y - A) - I) / 2; T <= C;) Ge(t, e, _ = b[T], n, M, v, D + _.width / 2, "center"), D += _.width, T++;
1056            v += M
1057        }
1058    }
1059
1060    function Ve(t, e, i, n, o) { if (i && e.textRotation) { var a = e.textOrigin; "center" === a ? (n = i.width / 2 + i.x, o = i.height / 2 + i.y) : a && (n = a[0] + i.x, o = a[1] + i.y), t.translate(n, o), t.rotate(-e.textRotation), t.translate(-n, -o) } }
1061
1062    function Ge(t, e, i, n, o, a, r, s) {
1063        var l = n.rich[i.styleName] || {},
1064            u = i.textVerticalAlign,
1065            h = a + o / 2;
1066        "top" === u ? h = a + i.height / 2 : "bottom" === u && (h = a + o - i.height / 2), !i.isLineHolder && We(l) && Fe(t, e, l, "right" === s ? r - i.width : "center" === s ? r - i.width / 2 : r, h - i.height / 2, i.width, i.height);
1067        var c = i.textPadding;
1068        c && (r = qe(r, s, c), h -= i.height / 2 - c[2] - i.textHeight / 2), Ue(e, "shadowBlur", A(l.textShadowBlur, n.textShadowBlur, 0)), Ue(e, "shadowColor", l.textShadowColor || n.textShadowColor || "transparent"), Ue(e, "shadowOffsetX", A(l.textShadowOffsetX, n.textShadowOffsetX, 0)), Ue(e, "shadowOffsetY", A(l.textShadowOffsetY, n.textShadowOffsetY, 0)), Ue(e, "textAlign", s), Ue(e, "textBaseline", "middle"), Ue(e, "font", i.font || Tw);
1069        var d = Xe(l.textStroke || n.textStroke, p),
1070            f = je(l.textFill || n.textFill),
1071            p = D(l.textStrokeWidth, n.textStrokeWidth);
1072        d && (Ue(e, "lineWidth", p), Ue(e, "strokeStyle", d), e.strokeText(i.text, r, h)), f && (Ue(e, "fillStyle", f), e.fillText(i.text, r, h))
1073    }
1074
1075    function We(t) { return t.textBackgroundColor || t.textBorderWidth && t.textBorderColor }
1076
1077    function Fe(t, e, i, n, o, a, r) {
1078        var s = i.textBackgroundColor,
1079            l = i.textBorderWidth,
1080            u = i.textBorderColor,
1081            h = _(s);
1082        if (Ue(e, "shadowBlur", i.textBoxShadowBlur || 0), Ue(e, "shadowColor", i.textBoxShadowColor || "transparent"), Ue(e, "shadowOffsetX", i.textBoxShadowOffsetX || 0), Ue(e, "shadowOffsetY", i.textBoxShadowOffsetY || 0), h || l && u) {
1083            e.beginPath();
1084            var c = i.textBorderRadius;
1085            c ? Pe(e, { x: n, y: o, width: a, height: r, r: c }) : e.rect(n, o, a, r), e.closePath()
1086        }
1087        if (h) Ue(e, "fillStyle", s), e.fill();
1088        else if (w(s)) {
1089            var d = s.image;
1090            (d = de(d, null, t, He, s)) && pe(d) && e.drawImage(d, n, o, a, r)
1091        }
1092        l && u && (Ue(e, "lineWidth", l), Ue(e, "strokeStyle", u), e.stroke())
1093    }
1094
1095    function He(t, e) { e.image = t }
1096
1097    function Ze(t, e, i) {
1098        var n = e.x || 0,
1099            o = e.y || 0,
1100            a = e.textAlign,
1101            r = e.textVerticalAlign;
1102        if (i) {
1103            var s = e.textPosition;
1104            if (s instanceof Array) n = i.x + Ye(s[0], i.width), o = i.y + Ye(s[1], i.height);
1105            else {
1106                var l = we(s, i, e.textDistance);
1107                n = l.x, o = l.y, a = a || l.textAlign, r = r || l.textVerticalAlign
1108            }
1109            var u = e.textOffset;
1110            u && (n += u[0], o += u[1])
1111        }
1112        return { baseX: n, baseY: o, textAlign: a, textVerticalAlign: r }
1113    }
1114
1115    function Ue(t, e, i) { return t[e] = dw(t, e, i), t[e] }
1116
1117    function Xe(t, e) { return null == t || e <= 0 || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t }
1118
1119    function je(t) { return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t }
1120
1121    function Ye(t, e) { return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t }
1122
1123    function qe(t, e, i) { return "right" === e ? t - i[1] : "center" === e ? t + i[3] / 2 - i[1] / 2 : t + i[3] }
1124
1125    function Ke(t, e) { return null != t && (t || e.textBackgroun
1125dColor || e.textBorderWidth && e.textBorderColor || e.textPadding) }
1126
1127    function $e(t) {
1128        t = t || {}, nw.call(this, t);
1129        for (var e in t) t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]);
1130        this.style = new pw(t.style, this), this._rect = null, this.__clipPaths = []
1131    }
1132
1133    function Je(t) { $e.call(this, t) }
1134
1135    function Qe(t) { return parseInt(t, 10) }
1136
1137    function ti(t) { return !!t && (!!t.__builtin__ || "function" == typeof t.resize && "function" == typeof t.refresh) }
1138
1139    function ei(t, e, i) { return Pw.copy(t.getBoundingRect()), t.transform && Pw.applyTransform(t.transform), Nw.width = e, Nw.height = i, !Pw.intersect(Nw) }
1140
1141    function ii(t, e) {
1142        if (t == e) return !1;
1143        if (!t || !e || t.length !== e.length) return !0;
1144        for (var i = 0; i < t.length; i++)
1145            if (t[i] !== e[i]) return !0
1146    }
1147
1148    function ni(t, e) {
1149        for (var i = 0; i < t.length; i++) {
1150            var n = t[i];
1151            n.setTransform(e), e.beginPath(), n.buildPath(e, n.shape), e.clip(), n.restoreTransform(e)
1152        }
1153    }
1154
1155    function oi(t, e) { var i = document.createElement("div"); return i.style.cssText = ["position:relative", "overflow:hidden", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0"].join(";") + ";", i }
1156
1157    function ai(t) { return t.getBoundingClientRect ? t.getBoundingClientRect() : { left: 0, top: 0 } }
1158
1159    function ri(t, e, i, n) { return i = i || {}, n || !a_.canvasSupported ? si(t, e, i) : a_.browser.firefox && null != e.layerX && e.layerX !== e.offsetX ? (i.zrX = e.layerX, i.zrY = e.layerY) : null != e.offsetX ? (i.zrX = e.offsetX, i.zrY = e.offsetY) : si(t, e, i), i }
1160
1161    function si(t, e, i) {
1162        var n = ai(t);
1163        i.zrX = e.clientX - n.left, i.zrY = e.clientY - n.top
1164    }
1165
1166    function li(t, e, i) {
1167        if (null != (e = e || window.event).zrX) return e;
1168        var n = e.type;
1169        if (n && n.indexOf("touch") >= 0) {
1170            var o = "touchend" != n ? e.targetTouches[0] : e.changedTouches[0];
1171            o && ri(t, o, e, i)
1172        } else ri(t, e, e, i), e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;
1173        var a = e.button;
1174        return null == e.which && void 0 !== a && Rw.test(e.type) && (e.which = 1 & a ? 1 : 2 & a ? 3 : 4 & a ? 2 : 0), e
1175    }
1176
1177    function ui(t, e, i) { Ew ? t.addEventListener(e, i) : t.attachEvent("on" + e, i) }
1178
1179    function hi(t, e, i) { Ew ? t.removeEventListener(e, i) : t.detachEvent("on" + e, i) }
1180
1181    function ci(t) { return t.which > 1 }
1182
1183    function di(t) {
1184        var e = t[1][0] - t[0][0],
1185            i = t[1][1] - t[0][1];
1186        return Math.sqrt(e * e + i * i)
1187    }
1188
1189    function fi(t) { return [(t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2] }
1190
1191    function pi(t) { return "mousewheel" === t && a_.browser.firefox ? "DOMMouseScroll" : t }
1192
1193    function gi(t, e, i) {
1194        var n = t._gestureMgr;
1195        "start" === i && n.clear();
1196        var o = n.recognize(e, t.handler.findHover(e.zrX, e.zrY, null).target, t.dom);
1197        if ("end" === i && n.clear(), o) {
1198            var a = o.type;
1199            e.gestureEvent = a, t.handler.dispatchToElement({ target: o.target }, a, o.event)
1200        }
1201    }
1202
1203    function mi(t) { t._touching = !0, clearTimeout(t._touchTimer), t._touchTimer = setTimeout(function() { t._touching = !1 }, 700) }
1204
1205    function vi(t) { var e = t.pointerType; return "pen" === e || "touch" === e }
1206
1207    function yi(t) {
1208        function e(t, e) { return function() { if (!e._touching) return t.apply(e, arguments) } }
1209        d(Fw, function(e) { t._handlers[e] = m(Uw[e], t) }), d(Zw, function(e) { t._handlers[e] = m(Uw[e], t) }), d(Ww, function(i) { t._handlers[i] = e(Uw[i], t) })
1210    }
1211
1212    function xi(t) {
1213        function e(e, i) { d(e, function(e) { ui(t, pi(e), i._handlers[e]) }, i) }
1214        D_.call(this), this.dom = t, this._touching = !1, this._touchTimer, this._gestureMgr = new Vw, this._handlers = {}, yi(this), a_.pointerEventsSupported ? e(Zw, this) : (a_.touchEventsSupported && e(Fw, this), e(Ww, this))
1215    }
1216
1217    function _i(t, e) { var i = new Kw(n_(), t, e); return qw[i.id] = i, i }
1218
1219    function wi(t, e) { Yw[t] = e }
1220
1221    function bi(t) { delete qw[t] }
1222
1223    function Si(t) { return t instanceof Array ? t : null == t ? [] : [t] }
1224
1225    function Mi(t, e, i) { if (t) { t[e] = t[e] || {}
1225, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {}; for (var n = 0, o = i.length; n < o; n++) { var a = i[n];!t.emphasis[e].hasOwnProperty(a) && t[e].hasOwnProperty(a) && (t.emphasis[e][a] = t[e][a]) } } }
1226
1227    function Ii(t) { return !Qw(t) || tb(t) || t instanceof Date ? t : t.value }
1228
1229    function Ti(t) { return Qw(t) && !(t instanceof Array) }
1230
1231    function Di(t, e) {
1232        e = (e || []).slice();
1233        var i = f(t || [], function(t, e) { return { exist: t } });
1234        return Jw(e, function(t, n) {
1235            if (Qw(t)) {
1236                for (o = 0; o < i.length; o++)
1237                    if (!i[o].option && null != t.id && i[o].exist.id === t.id + "") return i[o].option = t, void(e[n] = null);
1238                for (var o = 0; o < i.length; o++) { var a = i[o].exist; if (!(i[o].option || null != a.id && null != t.id || null == t.name || Li(t) || Li(a) || a.name !== t.name + "")) return i[o].option = t, void(e[n] = null) }
1239            }
1240        }), Jw(e, function(t, e) {
1241            if (Qw(t)) {
1242                for (var n = 0; n < i.length; n++) { var o = i[n].exist; if (!i[n].option && !Li(o) && null == t.id) { i[n].option = t; break } }
1243                n >= i.length && i.push({ option: t })
1244            }
1245        }), i
1246    }
1247
1248    function Ai(t) {
1249        var e = R();
1250        Jw(t, function(t, i) {
1251            var n = t.exist;
1252            n && e.set(n.id, t)
1253        }), Jw(t, function(t, i) {
1254            var n = t.option;
1255            k(!n || null == n.id || !e.get(n.id) || e.get(n.id) === t, "id duplicates: " + (n && n.id)), n && null != n.id && e.set(n.id, t), !t.keyInfo && (t.keyInfo = {})
1256        }), Jw(t, function(t, i) {
1257            var n = t.exist,
1258                o = t.option,
1259                a = t.keyInfo;
1260            if (Qw(o)) {
1261                if (a.name = null != o.name ? o.name + "" : n ? n.name : eb + i, n) a.id = n.id;
1262                else if (null != o.id) a.id = o.id + "";
1263                else {
1264                    var r = 0;
1265                    do { a.id = "\0" + a.name + "\0" + r++ } while (e.get(a.id))
1266                }
1267                e.set(a.id, t)
1268            }
1269        })
1270    }
1271
1272    function Ci(t) { var e = t.name; return !(!e || !e.indexOf(eb)) }
1273
1274    function Li(t) { return Qw(t) && t.id && 0 === (t.id + "").indexOf("\0_ec_\0") }
1275
1276    function ki(t, e) {
1277        function i(t, e, i) {
1278            for (var n = 0, o = t.length; n < o; n++)
1279                for (var a = t[n].seriesId, r = Si(t[n].dataIndex), s = i && i[a], l = 0, u = r.length; l < u; l++) {
1280                    var h = r[l];
1281                    s && s[h] ? s[h] = null : (e[a] || (e[a] = {}))[h] = 1
1282                }
1283        }
1284
1285        function n(t, e) {
1286            var i = [];
1287            for (var o in t)
1288                if (t.hasOwnProperty(o) && null != t[o])
1289                    if (e) i.push(+o);
1290                    else {
1291                        var a = n(t[o], !0);
1292                        a.length && i.push({ seriesId: o, dataIndex: a })
1293                    }
1294            return i
1295        }
1296        var o = {},
1297            a = {};
1298        return i(t || [], o), i(e || [], a, o), [n(o), n(a)]
1299    }
1300
1301    function Pi(t, e) { return null != e.dataIndexInside ? e.dataIndexInside : null != e.dataIndex ? y(e.dataIndex) ? f(e.dataIndex, function(e) { return t.indexOfRawIndex(e) }) : t.indexOfRawIndex(e.dataIndex) : null != e.name ? y(e.name) ? f(e.name, function(e) { return t.indexOfName(e) }) : t.indexOfName(e.name) : void 0 }
1302
1303    function Ni() { var t = "__\0ec_inner_" + nb++ + "_" + Math.random().toFixed(5); return function(e) { return e[t] || (e[t] = {}) } }
1304
1305    function Oi(t, e, i) {
1306        if (_(e)) {
1307            var n = {};
1308            n[e + "Index"] = 0, e = n
1309        }
1310        var o = i && i.defaultMainType;
1311        !o || Ei(e, o + "Index") || Ei(e, o + "Id") || Ei(e, o + "Name") || (e[o + "Index"] = 0);
1312        var a = {};
1313        return Jw(e, function(n, o) {
1314            var n = e[o];
1315            if ("dataIndex" !== o && "dataIndexInside" !== o) {
1316                var r = o.match(/^(\w+)(Index|Id|Name)$/) || [],
1317                    s = r[1],
1318                    u = (r[2] || "").toLowerCase();
1319                if (!(!s || !u || null == n || "index" === u && "none" === n || i && i.includeMainTypes && l(i.includeMainTypes, s) < 0)) {
1320                    var h = { mainType: s };
1321                    "index" === u && "all" === n || (h[u] = n);
1322                    var c = t.queryComponents(h);
1323                    a[s + "Models"] = c, a[s + "Model"] = c[0]
1324                }
1325            } else a[o] = n
1326        }), a
1327    }
1328
1329    function Ei(t, e) { return t && t.hasOwnProperty(e) }
1330
1331    function Ri(t, e, i) { t.setAttribute ? t.setAttribute(e, i) : t[e] = i }
1332
1333    function zi(t, e) { return t.getAttribute ? t.getAttribute(e) : t[e] }
1334
1335    function Bi(t) { var e = { main: "", sub: "" }; return t && (t = t.split(ob), e.main = t[0] || "", e.sub = t[1] || ""), e }
1336
1337    function Vi(t) { k(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal') }
1338
1339    function Gi(t, e) {
1340        t.$constructor = t, t.extend = function(t) {
1341            var e = this,
1342                i = function() { t.$constructor ? t.$constructor.apply(this, arguments) : e.apply(this, arguments) };
1343            return a(i.prototype, t), i.extend = this.extend, i.superCall = Fi, i.superApply = Hi, u(i, this), i.superClass = e, i
1344        }
1345    }
1346
1347    function Wi(t) {
1348        var e = ["__\0is_clz", rb++, Math.random().toFixed(3)].join("_");
1349        t.prototype[e] = !0, t.isInstance = function(t) { return !(!t || !t[e]) }
1350    }
1351
1352    function Fi(t, e) { var i = C(arguments, 2); return this.superClass.prototype[e].apply(t, i) }
1353
1354    function Hi(t, e, i) { return this.superClass.prototype[e].apply(t, i) }
1355
1356    function Zi(t, e) {
1357        function i(t) { var e = n[t.main]; return e && e[ab] || ((e = n[t.main] = {})[ab] = !0), e }
1358        e = e || {};
1359        var n = {};
1360        if (t.registerClass = function(t, e) { return e && (Vi(e), (e = Bi(e)).sub ? e.sub !== ab && (i(e)[e.sub] = t) : n[e.main] = t), t }, t.getClass = function(t, e, i) { var o = n[t];
vendor: 9,986 bytes, lines 1360-1588
1360 if (o && o[ab] && (o = e ? o[e] : null), i && !o) throw new Error(e ? "Component " + t + "." + (e || "") + " not exists. Load it first." : t + ".type should be specified."); return o }, t.getClassesByMainType = function(t) {
1361                t = Bi(t);
1362                var e = [],
1363                    i = n[t.main];
1364                return i && i[ab] ? d(i, function(t, i) { i !== ab && e.push(t) }) : e.push(i), e
1365            }, t.hasClass = function(t) { return t = Bi(t), !!n[t.main] }, t.getAllClassMainTypes = function() { var t = []; return d(n, function(e, i) { t.push(i) }), t }, t.hasSubTypes = function(t) { t = Bi(t); var e = n[t.main]; return e && e[ab] }, t.parseClassType = Bi, e.registerWhenExtend) {
1366            var o = t.extend;
1367            o && (t.extend = function(e) { var i = o.call(this, e); return t.registerClass(i, e.type) })
1368        }
1369        return t
1370    }
1371
1372    function Ui(t) { return t > -pb && t < pb }
1373
1374    function Xi(t) { return t > pb || t < -pb }
1375
1376    function ji(t, e, i, n, o) { var a = 1 - o; return a * a * (a * t + 3 * o * e) + o * o * (o * n + 3 * a * i) }
1377
1378    function Yi(t, e, i, n, o) { var a = 1 - o; return 3 * (((e - t) * a + 2 * (i - e) * o) * a + (n - i) * o * o) }
1379
1380    function qi(t, e, i, n, o, a) {
1381        var r = n + 3 * (e - i) - t,
1382            s = 3 * (i - 2 * e + t),
1383            l = 3 * (e - t),
1384            u = t - o,
1385            h = s * s - 3 * r * l,
1386            c = s * l - 9 * r * u,
1387            d = l * l - 3 * s * u,
1388            f = 0;
1389        if (Ui(h) && Ui(c)) Ui(s) ? a[0] = 0 : (M = -l / s) >= 0 && M <= 1 && (a[f++] = M);
1390        else {
1391            var p = c * c - 4 * h * d;
1392            if (Ui(p)) {
1393                var g = c / h,
1394                    m = -g / 2;
1395                (M = -s / r + g) >= 0 && M <= 1 && (a[f++] = M), m >= 0 && m <= 1 && (a[f++] = m)
1396            } else if (p > 0) {
1397                var v = fb(p),
1398                    y = h * s + 1.5 * r * (-c + v),
1399                    x = h * s + 1.5 * r * (-c - v);
1400                (M = (-s - ((y = y < 0 ? -db(-y, vb) : db(y, vb)) + (x = x < 0 ? -db(-x, vb) : db(x, vb)))) / (3 * r)) >= 0 && M <= 1 && (a[f++] = M)
1401            } else {
1402                var _ = (2 * h * s - 3 * r * c) / (2 * fb(h * h * h)),
1403                    w = Math.acos(_) / 3,
1404                    b = fb(h),
1405                    S = Math.cos(w),
1406                    M = (-s - 2 * b * S) / (3 * r),
1407                    m = (-s + b * (S + mb * Math.sin(w))) / (3 * r),
1408                    I = (-s + b * (S - mb * Math.sin(w))) / (3 * r);
1409                M >= 0 && M <= 1 && (a[f++] = M), m >= 0 && m <= 1 && (a[f++] = m), I >= 0 && I <= 1 && (a[f++] = I)
1410            }
1411        }
1412        return f
1413    }
1414
1415    function Ki(t, e, i, n, o) {
1416        var a = 6 * i - 12 * e + 6 * t,
1417            r = 9 * e + 3 * n - 3 * t - 9 * i,
1418            s = 3 * e - 3 * t,
1419            l = 0;
1420        if (Ui(r)) Xi(a) && (c = -s / a) >= 0 && c <= 1 && (o[l++] = c);
1421        else {
1422            var u = a * a - 4 * r * s;
1423            if (Ui(u)) o[0] = -a / (2 * r);
1424            else if (u > 0) {
1425                var h = fb(u),
1426                    c = (-a + h) / (2 * r),
1427                    d = (-a - h) / (2 * r);
1428                c >= 0 && c <= 1 && (o[l++] = c), d >= 0 && d <= 1 && (o[l++] = d)
1429            }
1430        }
1431        return l
1432    }
1433
1434    function $i(t, e, i, n, o, a) {
1435        var r = (e - t) * o + t,
1436            s = (i - e) * o + e,
1437            l = (n - i) * o + i,
1438            u = (s - r) * o + r,
1439            h = (l - s) * o + s,
1440            c = (h - u) * o + u;
1441        a[0] = t, a[1] = r, a[2] = u, a[3] = c, a[4] = c, a[5] = h, a[6] = l, a[7] = n
1442    }
1443
1444    function Ji(t, e, i, n, o, a, r, s, l, u, h) {
1445        var c, d, f, p, g, m = .005,
1446            v = 1 / 0;
1447        yb[0] = l, yb[1] = u;
1448        for (var y = 0; y < 1; y += .05) xb[0] = ji(t, i, o, r, y), xb[1] = ji(e, n, a, s, y), (p = M_(yb, xb)) < v && (c = y, v = p);
1449        v = 1 / 0;
1450        for (var x = 0; x < 32 && !(m < gb); x++) d = c - m, f = c + m, xb[0] = ji(t, i, o, r, d), xb[1] = ji(e, n, a, s, d), p = M_(xb, yb), d >= 0 && p < v ? (c = d, v = p) : (_b[0] = ji(t, i, o, r, f), _b[1] = ji(e, n, a, s, f), g = M_(_b, yb), f <= 1 && g < v ? (c = f, v = g) : m *= .5);
1451        return h && (h[0] = ji(t, i, o, r, c), h[1] = ji(e, n, a, s, c)), fb(v)
1452    }
1453
1454    function Qi(t, e, i, n) { var o = 1 - n; return o * (o * t + 2 * n * e) + n * n * i }
1455
1456    function tn(t, e, i, n) { return 2 * ((1 - n) * (e - t) + n * (i - e)) }
1457
1458    function en(t, e, i, n, o) {
1459        var a = t - 2 * e + i,
1460            r = 2 * (e - t),
1461            s = t - n,
1462            l = 0;
1463        if (Ui(a)) Xi(r) && (c = -s / r) >= 0 && c <= 1 && (o[l++] = c);
1464        else {
1465            var u = r * r - 4 * a * s;
1466            if (Ui(u))(c = -r / (2 * a)) >= 0 && c <= 1 && (o[l++] = c);
1467            else if (u > 0) {
1468                var h = fb(u),
1469                    c = (-r + h) / (2 * a),
1470                    d = (-r - h) / (2 * a);
1471                c >= 0 && c <= 1 && (o[l++] = c), d >= 0 && d <= 1 && (o[l++] = d)
1472            }
1473        }
1474        return l
1475    }
1476
1477    function nn(t, e, i) { var n = t + i - 2 * e; return 0 === n ? .5 : (t - e) / n }
1478
1479    function on(t, e, i, n, o) {
1480        var a = (e - t) * n + t,
1481            r = (i - e) * n + e,
1482            s = (r - a) * n + a;
1483        o[0] = t, o[1] = a, o[2] = s, o[3] = s, o[4] = r, o[5] = i
1484    }
1485
1486    function an(t, e, i, n, o, a, r, s, l) {
1487        var u, h = .005,
1488            c = 1 / 0;
1489        yb[0] = r, yb[1] = s;
1490        for (var d = 0; d < 1; d += .05) xb[0] = Qi(t, i, o, d), xb[1] = Qi(e, n, a, d), (m = M_(yb, xb)) < c && (u = d, c = m);
1491        c = 1 / 0;
1492        for (var f = 0; f < 32 && !(h < gb); f++) {
1493            var p = u - h,
1494                g = u + h;
1495            xb[0] = Qi(t, i, o, p), xb[1] = Qi(e, n, a, p);
1496            var m = M_(xb, yb);
1497            if (p >= 0 && m < c) u = p, c = m;
1498            else {
1499                _b[0] = Qi(t, i, o, g), _b[1] = Qi(e, n, a, g);
1500                var v = M_(_b, yb);
1501                g <= 1 && v < c ? (u = g, c = v) : h *= .5
1502            }
1503        }
1504        return l && (l[0] = Qi(t, i, o, u), l[1] = Qi(e, n, a, u)), fb(c)
1505    }
1506
1507    function rn(t, e, i) {
1508        if (0 !== t.length) {
1509            var n, o = t[0],
1510                a = o[0],
1511                r = o[0],
1512                s = o[1],
1513                l = o[1];
1514            for (n = 1; n < t.length; n++) o = t[n], a = wb(a, o[0]), r = bb(r, o[0]), s = wb(s, o[1]), l = bb(l, o[1]);
1515            e[0] = a, e[1] = s, i[0] = r, i[1] = l
1516        }
1517    }
1518
1519    function sn(t, e, i, n, o, a) { o[0] = wb(t, i), o[1] = wb(e, n), a[0] = bb(t, i), a[1] = bb(e, n) }
1520
1521    function ln(t, e, i, n, o, a, r, s, l, u) {
1522        var h, c = Ki,
1523            d = ji,
1524            f = c(t, i, o, r, Cb);
1525        for (l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0, h = 0; h < f; h++) {
1526            var p = d(t, i, o, r, Cb[h]);
1527            l[0] = wb(p, l[0]), u[0] = bb(p, u[0])
1528        }
1529        for (f = c(e, n, a, s, Lb), h = 0; h < f; h++) {
1530            var g = d(e, n, a, s, Lb[h]);
1531            l[1] = wb(g, l[1]), u[1] = bb(g, u[1])
1532        }
1533        l[0] = wb(t, l[0]), u[0] = bb(t, u[0]), l[0] = wb(r, l[0]), u[0] = bb(r, u[0]), l[1] = wb(e, l[1]), u[1] = bb(e, u[1]), l[1] = wb(s, l[1]), u[1] = bb(s, u[1])
1534    }
1535
1536    function un(t, e, i, n, o, a, r, s) {
1537        var l = nn,
1538            u = Qi,
1539            h = bb(wb(l(t, i, o), 1), 0),
1540            c = bb(wb(l(e, n, a), 1), 0),
1541            d = u(t, i, o, h),
1542            f = u(e, n, a, c);
1543        r[0] = wb(t, o, d), r[1] = wb(e, a, f), s[0] = bb(t, o, d), s[1] = bb(e, a, f)
1544    }
1545
1546    function hn(t, e, i, n, o, a, r, s, l) {
1547        var u = tt,
1548            h = et,
1549            c = Math.abs(o - a);
1550        if (c % Ib < 1e-4 && c > 1e-4) return s[0] = t - i, s[1] = e - n, l[0] = t + i, void(l[1] = e + n);
1551        if (Tb[0] = Mb(o) * i + t, Tb[1] = Sb(o) * n + e, Db[0] = Mb(a) * i + t, Db[1] = Sb(a) * n + e, u(s, Tb, Db), h(l, Tb, Db), (o %= Ib) < 0 && (o += Ib), (a %= Ib) < 0 && (a += Ib), o > a && !r ? a += Ib : o < a && r && (o += Ib), r) {
1552            var d = a;
1553            a = o, o = d
1554        }
1555        for (var f = 0; f < a; f += Math.PI / 2) f > o && (Ab[0] = Mb(f) * i + t, Ab[1] = Sb(f) * n + e, u(s, Ab, s), h(l, Ab, l))
1556    }
1557
1558    function cn(t, e, i, n, o, a, r) {
1559        if (0 === o) return !1;
1560        var s = o,
1561            l = 0,
1562            u = t;
1563        if (r > e + s && r > n + s || r < e - s && r < n - s || a > t + s && a > i + s || a < t - s && a < i - s) return !1;
1564        if (t === i) return Math.abs(a - t) <= s / 2;
1565        var h = (l = (e - n) / (t - i)) * a - r + (u = (t * n - i * e) / (t - i));
1566        return h * h / (l * l + 1) <= s / 2 * s / 2
1567    }
1568
1569    function dn(t, e, i, n, o, a, r, s, l, u, h) { if (0 === l) return !1; var c = l; return !(h > e + c && h > n + c && h > a + c && h > s + c || h < e - c && h < n - c && h < a - c && h < s - c || u > t + c && u > i + c && u > o + c && u > r + c || u < t - c && u < i - c && u < o - c && u < r - c) && Ji(t, e, i, n, o, a, r, s, u, h, null) <= c / 2 }
1570
1571    function fn(t, e, i, n, o, a, r, s, l) { if (0 === r) return !1; var u = r; return !(l > e + u && l > n + u && l > a + u || l < e - u && l < n - u && l < a - u || s > t + u && s > i + u && s > o + u || s < t - u && s < i - u && s < o - u) && an(t, e, i, n, o, a, s, l, null) <= u / 2 }
1572
1573    function pn(t) { return (t %= Zb) < 0 && (t += Zb), t }
1574
1575    function gn(t, e, i, n, o, a, r, s, l) {
1576        if (0 === r) return !1;
1577        var u = r;
1578        s -= t, l -= e;
1579        var h = Math.sqrt(s * s + l * l);
1580        if (h - u > i || h + u < i) return !1;
1581        if (Math.abs(n - o) % Ub < 1e-4) return !0;
1582        if (a) {
1583            var c = n;
1584            n = pn(o), o = pn(c)
1585        } else n = pn(n), o = pn(o);
1586        n > o && (o += Ub);
1587        var d = Math.atan2(l, s);
1588        return d < 0 && (d += Ub), d >= n && d <= o || d + Ub >
1588= n && d + Ub <= o
1589    }
1590
1591    function mn(t, e, i, n, o, a) {
1592        if (a > e && a > n || a < e && a < n) return 0;
1593        if (n === e) return 0;
1594        var r = n < e ? 1 : -1,
1595            s = (a - e) / (n - e);
1596        1 !== s && 0 !== s || (r = n < e ? .5 : -.5);
1597        var l = s * (i - t) + t;
1598        return l === o ? 1 / 0 : l > o ? r : 0
1599    }
1600
1601    function vn(t, e) { return Math.abs(t - e) < Yb }
1602
1603    function yn() {
1604        var t = Kb[0];
1605        Kb[0] = Kb[1], Kb[1] = t
1606    }
1607
1608    function xn(t, e, i, n, o, a, r, s, l, u) {
1609        if (u > e && u > n && u > a && u > s || u < e && u < n && u < a && u < s) return 0;
1610        var h = qi(e, n, a, s, u, qb);
1611        if (0 === h) return 0;
1612        for (var c, d, f = 0, p = -1, g = 0; g < h; g++) {
1613            var m = qb[g],
1614                v = 0 === m || 1 === m ? .5 : 1;
1615            ji(t, i, o, r, m) < l || (p < 0 && (p = Ki(e, n, a, s, Kb), Kb[1] < Kb[0] && p > 1 && yn(), c = ji(e, n, a, s, Kb[0]), p > 1 && (d = ji(e, n, a, s, Kb[1]))), 2 == p ? m < Kb[0] ? f += c < e ? v : -v : m < Kb[1] ? f += d < c ? v : -v : f += s < d ? v : -v : m < Kb[0] ? f += c < e ? v : -v : f += s < c ? v : -v)
1616        }
1617        return f
1618    }
1619
1620    function _n(t, e, i, n, o, a, r, s) {
1621        if (s > e && s > n && s > a || s < e && s < n && s < a) return 0;
1622        var l = en(e, n, a, s, qb);
1623        if (0 === l) return 0;
1624        var u = nn(e, n, a);
1625        if (u >= 0 && u <= 1) {
1626            for (var h = 0, c = Qi(e, n, a, u), d = 0; d < l; d++) {
1627                f = 0 === qb[d] || 1 === qb[d] ? .5 : 1;
1628                (p = Qi(t, i, o, qb[d])) < r || (qb[d] < u ? h += c < e ? f : -f : h += a < c ? f : -f)
1629            }
1630            return h
1631        }
1632        var f = 0 === qb[0] || 1 === qb[0] ? .5 : 1,
1633            p = Qi(t, i, o, qb[0]);
1634        return p < r ? 0 : a < e ? f : -f
1635    }
1636
1637    function wn(t, e, i, n, o, a, r, s) {
1638        if ((s -= e) > i || s < -i) return 0;
1639        u = Math.sqrt(i * i - s * s);
1640        qb[0] = -u, qb[1] = u;
1641        var l = Math.abs(n - o);
1642        if (l < 1e-4) return 0;
1643        if (l % jb < 1e-4) {
1644            n = 0, o = jb;
1645            p = a ? 1 : -1;
1646            return r >= qb[0] + t && r <= qb[1] + t ? p : 0
1647        }
1648        if (a) {
1649            var u = n;
1650            n = pn(o), o = pn(u)
1651        } else n = pn(n), o = pn(o);
1652        n > o && (o += jb);
1653        for (var h = 0, c = 0; c < 2; c++) {
1654            var d = qb[c];
1655            if (d + t > r) {
1656                var f = Math.atan2(s, d),
1657                    p = a ? 1 : -1;
1658                f < 0 && (f = jb + f), (f >= n && f <= o || f + jb >= n && f + jb <= o) && (f > Math.PI / 2 && f < 1.5 * Math.PI && (p = -p), h += p)
1659            }
1660        }
1661        return h
1662    }
1663
1664    function bn(t, e, i, n, o) {
1665        for (var a = 0, r = 0, s = 0, l = 0, u = 0, h = 0; h < t.length;) {
1666            var c = t[h++];
1667            switch (c === Xb.M && h > 1 && (i || (a += mn(r, s, l, u, n, o))), 1 == h && (l = r = t[h], u = s = t[h + 1]), c) {
1668                case Xb.M:
1669                    r = l = t[h++], s = u = t[h++];
1670                    break;
1671                case Xb.L:
1672                    if (i) { if (cn(r, s, t[h], t[h + 1], e, n, o)) return !0 } else a += mn(r, s, t[h], t[h + 1], n, o) || 0;
1673                    r = t[h++], s = t[h++];
1674                    break;
1675                case Xb.C:
1676                    if (i) { if (dn(r, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], e, n, o)) return !0 } else a += xn(r, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], n, o) || 0;
1677                    r = t[h++], s = t[h++];
1678                    break;
1679                case Xb.Q:
1680                    if (i) { if (fn(r, s, t[h++], t[h++], t[h], t[h + 1], e, n, o)) return !0 } else a += _n(r, s, t[h++], t[h++], t[h], t[h + 1], n, o) || 0;
1681                    r = t[h++], s = t[h++];
1682                    break;
1683                case Xb.A:
1684                    var d = t[h++],
1685                        f = t[h++],
1686                        p = t[h++],
1687                        g = t[h++],
1688                        m = t[h++],
1689                        v = t[h++],
1690                        y = (t[h++], 1 - t[h++]),
1691                        x = Math.cos(m) * p + d,
1692                        _ = Math.sin(m) * g + f;
1693                    h > 1 ? a += mn(r, s, x, _, n, o) : (l = x, u = _);
1694                    var w = (n - d) * g / p + d;
1695                    if (i) { if (gn(d, f, g, m, m + v, y, e, w, o)) return !0 } else a += wn(d, f, g, m, m + v, y, w, o);
1696                    r = Math.cos(m + v) * p + d, s = Math.sin(m + v) * g + f;
1697                    break;
1698                case Xb.R:
1699                    l = r = t[h++], u = s = t[h++];
1700                    var x = l + t[h++],
1701                        _ = u + t[h++];
1702                    if (i) { if (cn(l, u, x, u, e, n, o) || cn(x, u, x, _, e, n, o) || cn(x, _, l, _, e, n, o) || cn(l, _, l, u, e, n, o)) return !0 } else a += mn(x, u, x, _, n, o), a += mn(l, _, l, u, n, o);
1703                    break;
1704                case Xb.Z:
1705                    if (i) { if (cn(r, s, l, u, e, n, o)) return !0 } else a += mn(r, s, l, u, n, o);
1706                    r = l, s = u
1707            }
1708        }
1709        return i || vn(s, u) || (a += mn(r, s, l, u, n, o) || 0), 0 !== a
1710    }
1711
1712    function Sn(t, e, i) { return bn(t, 0, !1, e, i) }
1713
1714    function Mn(t, e, i, n) { return bn(t, e, !0, i, n) }
1715
1716    function In(t) { $e.call(this, t), this.path = null }
1717
1718    function Tn(t, e, i, n, o, a, r, s, l, u, h) {
1719        var c = l * (uS / 180),
1720            d = lS(c) * (t - i) / 2 + sS(c) * (e - n) / 2,
1721            f = -1 * sS(c) * (t - i) / 2 + lS(c) * (e - n) / 2,
1722            p = d * d / (r * r) + f * f / (s * s);
1723        p > 1 && (r *= rS(p), s *= rS(p));
1724        var g = (o === a ? -1 : 1) * rS((r * r * (s * s) - r * r * (f * f) - s * s * (d * d)) / (r * r * (f * f) + s * s * (d * d))) || 0,
1725            m = g * r * f / s,
1726            v = g * -s * d / r,
1727            y = (t + i) / 2 + lS(c) * m - sS(c) * v,
1728            x = (e + n) / 2 + sS(c) * m + lS(c) * v,
1729            _ = dS([1, 0], [(d - m) / r, (f - v) / s]),
1730            w = [(d - m) / r, (f - v) / s],
1731            b = [(-1 * d - m) / r, (-1 * f - v) / s],
1732            S = dS(w, b);
1733        cS(w, b) <= -1 && (S = uS), cS(w, b) >= 1 && (S = 0), 0 === a && S > 0 && (S -= 2 * uS), 1 === a && S < 0 && (S += 2 * uS), h.addData(u, y, x, r, s, _, S, c, a)
1734    }
1735
1736    function Dn(t) {
1737        if (!t) return [];
1738        var e, i = t.replace(/-/g, " -").replace(/  /g, " ").replace(/ /g, ",").replace(/,,/g, ",");
1739        for (e = 0; e < aS.length; e++) i = i.replace(new RegExp(aS[e], "g"), "|" + aS[e]);
1740        var n, o = i.split("|"),
1741            a = 0,
1742            r = 0,
1743            s = new Hb,
1744            l = Hb.CMD;
1745        for (e = 1; e < o.length; e++) {
1746            var u, h = o[e],
1747                c = h.charAt(0),
1748                d = 0,
1749                f = h.slice(1).replace(/e,-/g, "e-").split(",");
1750            f.length > 0 && "" === f[0] && f.shift();
1751            for (var p = 0; p < f.length; p++) f[p] = parseFloat(f[p]);
1752            for (; d < f.length && !isNaN(f[d]) && !isNaN(f[0]);) {
1753                var g, m, v, y, x, _, w, b = a,
1754                    S = r;
1755                switch (c) {
1756                    case "l":
1757                        a += f[d++], r += f[d++], u = l.L, s.addData(u, a, r);
1758                        break;
1759                    case "L":
1760                        a = f[d++], r = f[d++], u = l.L, s.addData(u, a, r);
1761                        break;
1762                    case "m":
1763                        a += f[d++], r += f[d++], u = l.M, s.addData(u, a, r), c = "l";
1764                        break;
1765                    case "M":
1766                        a = f[d++], r = f[d++], u = l.M, s.addData(u, a, r), c = "L";
1767                        break;
1768                    case "h":
1769                        a += f[d++], u = l.L, s.addData(u, a, r);
1770                        break;
1771                    case "H":
1772                        a = f[d++], u = l.L, s.addData(u, a, r);
1773                        break;
1774                    case "v":
1775                        r += f[d++], u = l.L, s.addData(u, a, r);
1776                        break;
1777                    case "V":
1778                        r = f[d++], u = l.L, s.addData(u, a, r);
1779                        break;
1780                    case "C":
1781                        u = l.C, s.addData(u, f[d++], f[d++], f[d++], f[d++], f[d++], f[d++]), a = f[d - 2], r = f[d - 1];
1782                        break;
1783                    case "c":
1784                        u = l.C, s.addData(u, f[d++] + a, f[d++] + r, f[d++] + a, f[d++] + r, f[d++] + a, f[d++] + r), a += f[d - 2], r += f[d - 1];
1785                        break;
1786                    case "S":
1787                        g = a, m = r;
1788                        var M = s.len(),
1789                            I = s.data;
1790                        n === l.C && (g += a - I[M - 4], m += r - I[M - 3]), u = l.C, b = f[d++], S = f[d++], a = f[d++], r = f[d++], s.addData(u, g, m, b, S, a, r);
1791                        break;
1792                    case "s":
1793                        g = a, m = r;
1794                        var M = s.len(),
1795                            I = s.data;
1796                        n === l.C && (g += a - I[M - 4], m += r - I[M - 3]), u = l.C, b = a + f[d++], S = r + f[d++], a += f[d++], r += f[d++], s.addData(u, g, m, b, S, a, r);
1797                        break;
1798                    case "Q":
1799                        b = f[d++], S = f[d++], a = f[d++], r = f[d++], u = l.Q, s.addData(u, b, S, a, r);
1800                        break;
1801                    case "q":
1802                        b = f[d++] + a, S = f[d++] + r, a += f[d++], r += f[d++], u = l.Q, s.addData(u, b, S, a, r);
1803                        break;
1804                    case "T":
1805                        g = a, m = r;
1806                        var M = s.len(),
1807                            I = s.data;
1808                        n === l.Q && (g += a - I[M - 4], m += r - I[M - 3]), a = f[d++], r = f[d++], u = l.Q, s.addData(u, g, m, a, r);
1809                        break;
1810                    case "t":
1811                        g = a, m = r;
1812                        var M = s.len(),
1813                            I = s.data;
1814                        n === l.Q && (g += a - I[M - 4], m += r - I[M - 3]), a += f[d++], r += f[d++], u = l.Q, s.addData(u, g, m, a, r);
1815                        break;
1816                    case "A":
1817                        v = f[d++], y = f[d++], x = f[d++], _ = f[d++], w = f[d++], Tn(b = a, S = r, a = f[d++], r = f[d++], _, w, v, y, x, u = l.A, s);
1818                        break;
1819                    case "a":
1820                        v = f[d++], y = f[d++], x = f[d++], _ = f[d++], w = f[d++], Tn(b = a, S = r, a += f[d++], r += f[d++], _, w, v, y, x, u = l.A, s)
1821                }
1822            }
1823            "z" !== c && "Z" !== c || (u = l.Z, s.addData(u)), n = u
1824        }
1825        return s.toStatic(), s
1826    }
1827
1828    function An(t, e) {
1829        var i = Dn(t);
1830        return e = e || {}, e.buildPath = function(t) {
1831            if (t.setData) t.setData(i.data), (e = t.getContext()) && t.rebuildPath(e);
1832            else {
1833                var e = t;
1834                i.rebuildPath(e)
1835            }
1836        }, e.applyTransform = function(t) { oS(i, t), this.dirty(!0) }, e
1837    }
1838
1839    function Cn(t, e) { return new In(An(t, e)) }
1840
1841    function Ln(t, e) { return In.extend(An(t, e)) }
1842
1843    function kn(t, e, i, n, o, a, r) {
1844        var s = .5 * (i - t),
1845            l = .5 * (n - e);
1846        return (2 * (e - i) + s + l) * r + (-3 * (e - i) - 2 * s - l) * a + s * o + e
1847    }
1848
1849    function Pn(t, e, i) {
1850        var n = e.points,
1851            o = e.smooth;
1852        if (n && n.length >= 2) {
1853            if (o && "spline" !== o) {
1854                var a = _S(n, o, i, e.smoothConstraint);
1855                t.moveTo(n[0][0], n[0][1]);
1856                for (var r = n.length, s = 0; s < (i ? r : r - 1); s++) {
1857                    var l = a[2 * s],
1858                        u = a[2 * s + 1],
1859                        h = n[(s + 1) % r];
1860                    t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1])
1861                }
1862            } else { "spline" === o && (n = xS(n, i)), t.moveTo(n[0][0], n[0][1]); for (var s = 1, c = n.length; s < c; s++) t.lineTo(n[s][0], n[s][1]) }
1863            i && t.closePath()
1864        }
1865    }
1866
1867    function Nn(t, e, i) {
1868        var n = t.cpx2,
1869            o = t.cpy2;
1870        return null === n || null === o ? [(i ? Yi : ji)(t.x1, t.cpx1, t.cpx2, t.x2, e), (i ? Yi : ji)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(i ? tn : Qi)(t.x1, t.cpx1, t.x2, e), (i ? tn : Qi)(t.y1, t.cpy1, t.y2, e)]
1871    }
1872
1873    function On(t) { $e.call(this, t), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.notClear = !0 }
1874
1875    function En(t) { return In.extend(t) }
1876
1877    function Rn(t, e, i, n) {
1878        var o = Cn(t, e),
1879            a = o.getBoundingRect();
1880        return i && ("center" === n && (i = Bn(i, a)), Vn(o, i)), o
1881    }
1882
1883    function zn(t, e, i) {
1884        var n = new Je({
1885            style: { image: t, x: e.x, y: e.y, width: e.width, height: e.height },
1886            onload: function(t) {
1887                if ("center" === i) {
1888                    var o = { width: t.width, height: t.height };
1889                    n.setStyle(Bn(e, o))
1890                }
1891            }
1892        });
1893        return n
1894    }
1895
1896    function Bn(t, e) {
1897        var i, n = e.width / e.height,
1898            o = t.height * n;
1899        return i = o <= t.width ? t.height : (o = t.width) / n, { x: t.x + t.width / 2 - o / 2, y: t.y + t.height / 2 - i / 2, width: o, height: i }
1900    }
1901
1902    function Vn(t, e) {
1903        if (t.applyTransform) {
1904            var i = t.getBoundingRect().calculateTransform(e);
1905            t.applyTransform(i)
1906        }
1907    }
1908
1909    function Gn(t) {
1910        var e = t.shape,
1911            i = t.style.lineWidth;
1912        return NS(2 * e.x1) === NS(2 * e.x2) && (e.x1 = e.x2 = Fn(e.x1, i, !0)), NS(2 * e.y1) === NS(2 * e.y2) && (e.y1 = e.y2 = Fn(e.y1, i, !0)), t
1913    }
1914
1915    function Wn(t) {
1916        var e = t.shape,
1917            i = t.style.lineWidth,
1918            n = e.x,
1919            o = e.y,
1920            a = e.width,
1921            r = e.height;
1922        return e.x = Fn(e.x, i, !0), e.y = Fn(e.y, i, !0), e.width = Math.max(Fn(n + a, i, !1) - e.x, 0 === a ? 0 : 1), e.height = Math.max(Fn(o + r, i, !1) - e.y, 0 === r ? 0 : 1), t
1923    }
1924
1925    function Fn(t, e, i) { var n = NS(2 * t); return (n + NS(e)) % 2 == 0 ? n / 2 : (n + (i ? 1 : -1)) / 2 }
1926
1927    function Hn(t) { return null != t && "none" != t }
1928
1929    function Zn(t) { return "string" == typeof t ? kt(t, -.1) : t }
1930
1931    function Un(t) {
1932        if (t.__hoverStlDirty) {
1933            var e = t.style.stroke,
1934                i = t.style.fill,
1935                n = t.__hoverStl;
1936            n.fill = n.fill || (Hn(i) ? Zn(i) : null), n.stroke = n.stroke || (Hn(e) ? Zn(e) : null);
1937            var o = {};
1938            for (var a in n) null != n[a] && (o[a] = t.style[a]);
1939            t.__normalStl = o, t.__hoverStlDirty = !1
1940        }
1941    }
1942
1943    function Xn(t) {
1944        if (!t.__isHover) {
1945            if (Un(t), t.useHoverLayer) t.__zr && t.__zr.addHover(t, t.__hoverStl);
1946            else {
1947                var e = t.style,
1948                    i = e.insideRollbackOpt;
1949                i && uo(e), e.extendFrom(t.__hoverStl), i && (lo(e, e.insideOriginalTextPosition, i), null == e.textFill && (e.textFill = i.autoColor)), t.dirty(!1), t.z2 += 1
1950            }
1951            t.__isHover = !0
1952        }
1953    }
1954
1955    function jn(t) {
1956        if (t.__isHover) {
1957            var e = t.__normalStl;
1958            t.useHoverLayer ? t.__zr && t.__zr.removeHover(t) : (e && t.setStyle(e), t.z2 -= 1), t.__isHover = !1
1959        }
1960    }
1961
1962    function Yn(t) { "group" === t.type ? t.traverse(function(t) { "group" !== t.type && Xn(t) }) : Xn(t) }
1963
1964    function qn(t) { "group" === t.type ? t.traverse(function(t) { "group" !== t.type && jn(t) }) : jn(t) }
1965
1966    function Kn(t, e) { t.__hoverStl = t.hoverStyle || e || {}, t.__hoverStlDirty = !0, t.__isHover && Un(t) }
1967
1968    function $n(t) { this.__hoverSilentOnTouch && t.zrByTouch || !this.__isEmphasis && Yn(this) }
1969
1970    function Jn(t) { this.__hoverSilentOnTouch && t.zrByTouch || !this.__isEmphasis && qn(this) }
1971
1972    function Qn() { this.__isEmphasis = !0, Yn(this) }
1973
1974    function to() { this.__isEmphasis = !1, qn(this) }
1975
1976    function eo(t, e, i) { t.__hoverSilentOnTouch = i && i.hoverSilentOnTouch, "group" === t.type ? t.traverse(function(t) { "group" !== t.type && Kn(t, e) }) : Kn(t, e), t.on("mouseover", $n).on("mouseout", Jn), t.on("emphasis", Qn).on("normal", to) }
1977
1978    function io(t, e, i, n, o, a, r) {
1979        var s, l = (o = o || RS).labelFetcher,
1980            u = o.labelDataIndex,
1981            h = o.labelDimIndex,
1982            c = i.getShallow("show"),
1983            d = n.getShallow("show");
1984        (c || d) && (l && (s = l.getFormattedLabel(u, "normal", null, h)), null == s && (s = x(o.defaultText) ? o.defaultText(u, o) : o.defaultText));
1985        var f = c ? s : null,
1986            p = d ? D(l ? l.getFormattedLabel(u, "emphasis", null, h) : null, s) : null;
1987        null == f && null == p || (no(t, i, a, o), no(e, n, r, o, !0)), t.text = f, e.text = p
1988    }
1989
1990    function no(t, e, i, n, o) { return oo(t, e, n, o), i && a(t, i), t.host && t.host.dirty && t.host.dirty(!1), t }
1991
1992    function oo(t, e, i, n) {
1993        if ((i = i || RS).isRectText) {
1994            var o = e.getShallow("position") || (n ? null : "inside");
1995            "outside" === o && (o = "top"), t.textPosition = o, t.textOffset = e.getShallow("offset");
1996            var a = e.getShallow("rotate");
1997            null != a && (a *= Math.PI / 180), t.textRotation = a, t.textDistance = D(e.getShallow("distance"), n ? null : 5)
1998        }
1999        var r, s = e.ecModel,
2000            l = s && s.option.textStyle,
2001            u = ao(e);
2002        if (u) {
2003            r = {};
2004            for (var h in u)
2005                if (u.hasOwnProperty(h)) {
2006                    var c = e.getModel(["rich", h]);
2007                    ro(r[h] = {}, c, l, i, n)
2008                }
2009        }
2010        return t.rich = r, ro(t, e, l, i, n, !0), i.forceRich && !i.textStyle && (i.textStyle = {}), t
2011    }
2012
2013    function ao(t) {
2014        for (var e; t && t !== t.ecModel;) {
2015            var i = (t.option || RS).rich;
2016            if (i) { e = e || {}; for (var n in i) i.hasOwnProperty(n) && (e[n] = 1) }
2017            t = t.parentModel
2018        }
2019        return e
2020    }
2021
2022    function ro(t, e, i, n, o, a) {
2023        if (i = !o && i || RS, t.textFill = so(e.getShallow("color"), n) || i.color, t.textStroke = so(e.getShallow("textBorderColor"), n) || i.textBorderColor, t.textStrokeWidth = D(e.getShallow("textBorderWidth"), i.textBorderWidth), !o) {
2024            if (a) {
2025                var r = t.textPosition;
2026                t.insideRollback = lo(t, r, n), t.insideOriginalTextPosition = r, t.insideRollbackOpt = n
2027            }
2028            null == t.textFill && (t.textFill = n.autoColor)
2029        }
2030        t.fontStyle = e.getShallow("fontStyle") || i.fontStyle, t.fontWeight = e.getShallow("fontWeight") || i.fontWeight, t.fontSize = e.getShallow("fontSize") || i.fontSize, t.fontFamily = e.getShallow("fontFamily") || i.fontFamily, t.textAlign = e.getShallow("align"), t.textVerticalAlign = e.getShallow("verticalAlign") || e.getShallow("baseline"), t.textLineHeight = e.getShallow("lineHeight"), t.textWidth = e.getShallow("width"), t.textHeight = e.getShallow("height"), t.textTag = e.getShallow("tag"), a && n.disableBox || (t.textBackgroundColor = so(e.getShallow("backgroundColor"), n), t.textPadding = e.getShallow("padding"), t.textBorderColor = so(e.getShallow("borderColor"), n), t.textBorderWidth = e.getShallow("borderWidth"), t.textBorderRadius = e.getShallow("borderRadius"), t.textBoxShadowColor = e.getShallow("shadowColor"), t.textBoxShadowBlur = e.getShallow("shadowBlur"), t.textBoxShadowOffsetX = e.getShallow("shadowOffsetX"), t.textBoxShadowOffsetY = e.getShallow("shadowOffsetY")), t.textShadowColor = e.getShallow("textShadowColor") || i.textShadowColor, t.textShadowBlur = e.getShallow("textShadowBlur") || i.textShadowBlur, t.textShadowOffsetX = e.getShallow("textShadowOffsetX") || i.textShadowOffsetX, t.textShadowOffsetY = e.getShallow("textShadowOffsetY") || i.textShadowOffsetY
2031    }
2032
2033    function so(t, e) { return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null }
2034
2035    function lo(t, e, i) { var n, o = i.useInsideStyle; return null == t.textFill && !1 !== o && (!0 === o || i.isRectText && e && "string" == typeof e && e.indexOf("inside") >= 0) && (n = { textFill: null, textStroke: t.textStroke, textStrokeWidth: t.textStrokeWidth }, t.textFill = "#fff", null == t.textStroke && (t.textStroke = i.autoColor, null == t.textStrokeWidth && (t.textStrokeWidth = 2))), n }
2036
2037    function uo(t) {
2038        var e = t.insideRollback;
2039        e && (t.textFill = e.textFill, t.textStroke = e.textStroke, t.textStrokeWidth = e.textStrokeWidth)
2040    }
2041
2042    function ho(t, e) { var i = e || e.getModel("textStyle"); return P([t.fontStyle || i && i.getShallow("fontStyle") || "", t.fontWeight || i && i.getShallow("fontWeight") || "", (t.fontSize || i && i.getShallow("fontSize") || 12) + "px", t.fontFamily || i && i.getShallow("fontFamily") || "sans-serif"].join(" ")) }
2043
2044    function co(t, e, i, n, o, a) {
2045        if ("function" == typeof o && (a = o, o = null), n && n.isAnimationEnabled()) {
2046            var r = t ? "Update" : "",
2047                s = n.getShallow("animationDuration" + r),
2048                l = n.getShallow("animationEasing" + r),
2049                u = n.getShallow("animationDelay" + r);
2050            "function" == typeof u && (u = u(o, n.getAnimationDelayParams ? n.getAnimationDelayParams(e, o) : null)), "function" == typeof s && (s = s(o)), s > 0 ? e.animateTo(i, s, u || 0, l, a, !!a) : (e.stopAnimation(), e.attr(i), a && a())
2051        } else e.stopAnimation(), e.attr(i), a && a()
2052    }
2053
2054    function fo(t, e, i, n, o) { co(!0, t, e, i, n, o) }
2055
2056    function po(t, e, i, n, o) { co(!1, t, e, i, n, o) }
2057
2058    function go(t, e) { for (var i = lt([]); t && t !== e;) ht(i, t.getLocalTransform(), i), t = t.parent; return i }
2059
2060    function mo(t, e, i) { return e && !c(e) && (e = E_.getLocalTransform(e)), i && (e = pt([], e)), Q([], t, e) }
2061
2062    function vo(t, e, i) {
2063        var n = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]),
2064            o = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]),
2065            a = ["left" === t ? -n : "right" === t ? n : 0, "top" === t ? -o : "bottom" === t ? o : 0];
2066        return a = mo(a, e, i), Math.abs(a[0]) > Math.abs(a[1]) ? a[0] > 0 ? "right" : "left" : a[1] > 0 ? "bottom" : "top"
2067    }
2068
2069    function yo(t, e, i, n) {
2070        function o(t) { var e = { position: W(t.position), rotation: t.rotation }; return t.shape && (e.shape = a({}, t.shape)), e }
2071        if (t && e) {
2072            var r = function(t) { var e = {}; return t.traverse(function(t) {!t.isGroup && t.anid && (e[t.anid] = t) }), e }(t);
2073            e.traverse(function(t) {
2074                if (!t.isGroup && t.anid) {
2075                    var e = r[t.anid];
2076                    if (e) {
2077                        var n = o(t);
2078                        t.attr(o(e)), fo(t, n, i, t.dataIndex)
2079                    }
2080                }
2081            })
2082        }
2083    }
2084
2085    function xo(t, e) {
2086        return f(t, function(t) {
2087            var i = t[0];
2088            i = OS(i, e.x), i = ES(i, e.x + e.width);
2089            var n = t[1];
2090            return n = OS(n, e.y), n = ES(n, e.y + e.height), [i, n]
2091        })
2092    }
2093
2094    function _o(t, e, i) { var n = (e = a({ rectHover: !0 }, e)).style = { strokeNoScale: !0 }; if (i = i || { x: -1, y: -1, width: 2, height: 2 }, t) return 0 === t.indexOf("image://") ? (n.image = t.slice(8), r(n, i), new Je(e)) : Rn(t.replace("path://", ""), e, i, "center") }
2095
2096    function wo(t, e, i) { this.parentModel = e, this.ecModel = i, this.option = t }
2097
2098    function bo(t, e, i) { for (var n = 0; n < e.length && (!e[n] || null != (t = t && "object" == typeof t ? t[e[n]] : null)); n++); return null == t && i && (t = i.get(e)), t }
2099
2100    function So(t, e) { var i = ZS(t).getParent; return i ? i.call(t, e) : t.parentModel }
2101
2102    function Mo(t) { return [t || "", US++, Math.random().toFixed(5)].join("_") }
2103
2104    function Io(t) { return t.replace(/^\s+/, "").replace(/\s+$/, "") }
2105
2106    function To(t, e, i, n) {
2107        var o = e[1] - e[0],
2108            a = i[1] - i[0];
2109        if (0 === o) return 0 === a ? i[0] : (i[0] + i[1]) / 2;
2110        if (n)
2111            if (o > 0) { if (t <= e[0]) return i[0]; if (t >= e[1]) return i[1] } else { if (t >= e[0]) return i[0]; if (t <= e[1]) return i[1] }
2112        else { if (t === e[0]) return i[0]; if (t === e[1]) return i[1] }
2113        return (t - e[0]) / o * a + i[0]
2114    }
2115
2116    function Do(t, e) {
2117        switch (t) {
2118            case "center":
2119            case "middle":
2120                t = "50%";
2121                break;
2122            case "left":
2123            case "top":
2124                t = "0%";
2125                break;
2126            case "right":
2127            case "bottom":
2128                t = "100%"
2129        }
2130        return "string" == typeof t ? Io(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? NaN : +t
2131    }
2132
2133    function Ao(t, e, i) { return null == e && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), i ? t : +t }
2134
2135    function Co(t) { return t.sort(function(t, e) { return t - e }), t }
2136
2137    function Lo(t) { if (t = +t, isNaN(t)) return 0; for (var e = 1, i = 0; Math.round(t * e) / e !== t;) e *= 10, i++; return i }
2138
2139    function ko(t) {
2140        var e = t.toString(),
2141            i = e.indexOf("e");
2142        if (i > 0) { var n = +e.slice(i + 1); return n < 0 ? -n : 0 }
2143        var o = e.indexOf(".");
2144        return o < 0 ? 0 : e.length - 1 - o
2145    }
2146
2147    function Po(t, e) {
2148        var i = Math.log,
2149            n = Math.LN10,
2150            o = Math.floor(i(t[1] - t[0]) / n),
2151            a = Math.round(i(Math.abs(e[1] - e[0])) / n),
2152            r = Math.min(Math.max(-o + a, 0), 20);
2153        return isFinite(r) ? r : 20
2154    }
2155
2156    function No(t, e, i) { if (!t[e]) return 0; var n = p(t, function(t, e) { return t + (isNaN(e) ? 0 : e) }, 0); if (0 === n) return 0; for (var o = Math.pow(10, i), a = f(t, function(t) { return (isNaN(t) ? 0 : t) / n * o * 100 }), r = 100 * o, s = f(a, function(t) { return Math.floor(t) }), l = p(s, function(t, e) { return t + e }, 0), u = f(a, function(t, e) { return t - s[e] }); l < r;) { for (var h = Number.NEGATIVE_INFINITY, c = null, d = 0, g = u.length; d < g; ++d) u[d] > h && (h = u[d], c = d);++s[c], u[c] = 0, ++l } return s[e] / o }
2157
2158    function Oo(t) { var e = 2 * Math.PI; return (t % e + e) % e }
2159
2160    function Eo(t) { return t > -XS && t < XS }
2161
2162    function Ro(t) { if (t instanceof Date) return t; if ("string" == typeof t) { var e = YS.exec(t); if (!e) return new Date(NaN); if (e[8]) { var i = +e[4] || 0; return "Z" !== e[8].toUpperCase() && (i -= e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, i, +(e[5] || 0), +e[6] || 0, +e[7] || 0)) } return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, +e[7] || 0) } return null == t ? new Date(NaN) : new Date(Math.round(t)) }
2163
2164    function zo(t) { return Math.pow(10, Bo(t)) }
2165
2166    function Bo(t) { return Math.floor(Math.log(t) / Math.LN10) }
2167
2168    function Vo(t, e) {
2169        var i, n = Bo(t),
2170            o = Math.pow(10, n),
2171            a = t / o;
2172        return i = e ? a < 1.5 ? 1 : a < 2.5 ? 2 : a < 4 ? 3 : a < 7 ? 5 : 10 : a < 1 ? 1 : a < 2 ? 2 : a < 3 ? 3 : a < 5 ? 5 : 10, t = i * o, n >= -20 ? +t.toFixed(n < 0 ? -n : 0) : t
2173    }
2174
2175    function Go(t) {
2176        function e(t, i, n) { return t.interval[n] < i.interval[n] || t.interval[n] === i.interval[n] && (t.close[n] - i.close[n] == (n ? -1 : 1) || !n && e(t, i, 1)) }
2177        t.sort(function(t, i) { return e(t, i, 0) ? -1 : 1 });
2178        for (var i = -1 / 0, n = 1, o = 0; o < t.length;) {
2179            for (var a = t[o].interval, r = t[o].close, s = 0; s < 2; s++) a[s] <= i && (a[s] = i, r[s] = s ? 1 : 1 - n), i = a[s], n = r[s];
2180            a[0] === a[1] && r[0] * r[1] != 1 ? t.splice(o, 1) : o++
2181        }
2182        return t
2183    }
2184
2185    function Wo(t) { return t - parseFloat(t) >= 0 }
2186
2187    function Fo(t) { return isNaN(t) ? "-" : (t = (t + "").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (t.length > 1 ? "." + t[1] : "") }
2188
2189    function Ho(t, e) { return t = (t || "").toLowerCase().replace(/-(.)/g, function(t, e) { return e.toUpperCase() }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t }
2190
2191    function Zo(t) { return null == t ? "" : (t + "").replace($S, function(t, e) { return JS[e] }) }
2192
2193    function Uo(t, e, i) {
2194        y(e) || (e = [e]);
2195        var n = e.length;
2196        if (!n) return "";
2197        for (var o = e[0].$vars || [], a = 0; a < o.length; a++) {
2198            var r = QS[a];
2199            t = t.replace(tM(r), tM(r, 0))
2200        }
2201        for (var s = 0; s < n; s++)
2202            for (var l = 0; l < o.length; l++) {
2203                var u = e[s][o[l]];
2204                t = t.replace(tM(QS[l], s), i ? Zo(u) : u)
2205            }
2206        return t
2207    }
2208
2209    function Xo(t, e, i) { return d(e, function(e, n) { t = t.replace("{" + n + "}", i ? Zo(e) : e) }), t }
2210
2211    function jo(t, e) {
2212        var i = (t = _(t) ? { color: t, extraCssText: e } : t || {}).color,
2213            n = t.type,
2214            e = t.extraCssText;
2215        return i ? "subItem" === n ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + Zo(i) + ";" + (e || "") + '"></span>' : '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + Zo(i) + ";" + (e || "") + '"></span>' : ""
2216    }
2217
2218    function Yo(t, e) { return t += "", "0000".substr(0, e - t.length) + t }
2219
2220    function qo(t, e, i) {
2221        "week" !== t && "month" !== t && "quarter" !== t && "half-year" !== t && "year" !== t || (t = "MM-dd\nyyyy");
2222        var n = Ro(e),
2223            o = i ? "UTC" : "",
2224            a = n["get" + o + "FullYear"](),
2225            r = n["get" + o + "Month"]() + 1,
2226            s = n["get" + o + "Date"](),
2227            l = n["get" + o + "Hours"](),
2228            u = n["get" + o + "Minutes"](),
2229            h = n["get" + o + "Seconds"](),
2230            c = n["get" + o + "Milliseconds"]();
2231        return t = t.replace("MM", Yo(r, 2)).replace("M", r).replace("yyyy", a).replace("yy", a % 100).replace("dd", Yo(s, 2)).replace("d", s).replace("hh", Yo(l, 2)).replace("h", l).replace("mm", Yo(u, 2)).replace("m", u).replace("ss", Yo(h, 2)).replace("s", h).replace("SSS", Yo(c, 3))
2232    }
2233
2234    function Ko(t) { return t ? t.charAt(0).toUpperCase() + t.substr(1) : t }
2235
2236    function $o(t, e, i, n, o) {
2237        var a = 0,
2238            r = 0;
2239        null == n && (n = 1 / 0), null == o && (o = 1 / 0);
2240        var s = 0;
2241        e.eachChild(function(l, u) {
2242            var h, c, d = l.position,
2243                f = l.getBoundingRect(),
2244                p = e.childAt(u + 1),
2245                g = p && p.getBoundingRect();
2246            if ("horizontal" === t) {
2247                var m = f.width + (g ? -g.x + f.x : 0);
2248                (h = a + m) > n || l.newline ? (a = 0, h = m, r += s + i, s = f.height) : s = Math.max(s, f.height)
2249            } else {
2250                var v = f.height + (g ? -g.y + f.y : 0);
2251                (c = r + v) > o || l.newline ? (a += s + i, r = 0, c = v, s = f.width) : s = Math.max(s, f.width)
2252            }
2253            l.newline || (d[0] = a, d[1] = r, "horizontal" === t ? a = h + i : r = c + i)
2254        })
2255    }
2256
2257    function Jo(t, e, i) {
2258        var n = e.width,
2259            o = e.height,
2260            a = Do(t.x, n),
2261            r = Do(t.y, o),
2262            s = Do(t.x2, n),
2263            l = Do(t.y2, o);
2264        return (isNaN(a) || isNaN(parseFloat(t.x))) && (a = 0), (isNaN(s) || isNaN(parseFloat(t.x2))) && (s = n), (isNaN(r) || isNaN(parseFloat(t.y))) && (r = 0), (isNaN(l) || isNaN(parseFloat(t.y2))) && (l = o), i = KS(i || 0), { width: Math.max(s - a - i[1] - i[3], 0), height: Math.max(l - r - i[0] - i[2], 0) }
2265    }
2266
2267    function Qo(t, e, i) {
2268        i = KS(i || 0);
2269        var n = e.width,
2270            o = e.height,
2271            a = Do(t.left, n),
2272            r = Do(t.top, o),
2273            s = Do(t.right, n),
2274            l = Do(t.bottom, o),
2275            u = Do(t.width, n),
2276            h = Do(t.height, o),
2277            c = i[2] + i[0],
2278            d = i[1] + i[3],
2279            f = t.aspect;
2280        switch (isNaN(u) && (u = n - s - d - a), isNaN(h) && (h = o - l - c - r), null != f && (isNaN(u) && isNaN(h) && (f > n / o ? u = .8 * n : h = .8 * o), isNaN(u) && (u = f * h), isNaN(h) && (h = u / f)), isNaN(a) && (a = n - s - u - d), isNaN(r) && (r = o - l - h - c), t.left || t.right) {
2281            case "center":
2282                a = n / 2 - u / 2 - i[3];
2283                break;
2284            case "right":
2285                a = n - u - d
2286        }
2287        switch (t.top || t.bottom) {
2288            case "middle":
2289            case "center":
2290                r = o / 2 - h / 2 - i[0];
2291                break;
2292            case "bottom":
2293                r = o - h - c
2294        }
2295        a = a || 0, r = r || 0, isNaN(u) && (u = n - d - a - (s || 0)), isNaN(h) && (h = o - c - r - (l || 0));
2296        var p = new $t(a + i[3], r + i[0], u, h);
2297        return p.margin = i, p
2298    }
2299
2300    function ta(t, e, i, n, o) {
2301        var a = !o || !o.hv || o.hv[0],
2302            s = !o || !o.hv || o.hv[1],
2303            l = o && o.boundingMode || "all";
2304        if (a || s) {
2305            var u;
2306            if ("raw" === l) u = "group" === t.type ? new $t(0, 0, +e.width || 0, +e.height || 0
2306) : t.getBoundingRect();
2307            else if (u = t.getBoundingRect(), t.needLocalTransform()) {
2308                var h = t.getLocalTransform();
2309                (u = u.clone()).applyTransform(h)
2310            }
2311            e = Qo(r({ width: u.width, height: u.height }, e), i, n);
2312            var c = t.position,
2313                d = a ? e.x - u.x : 0,
2314                f = s ? e.y - u.y : 0;
2315            t.attr("position", "raw" === l ? [d, f] : [c[0] + d, c[1] + f])
2316        }
2317    }
2318
2319    function ea(t, e) { return null != t[rM[e][0]] || null != t[rM[e][1]] && null != t[rM[e][2]] }
2320
2321    function ia(t, e, i) {
2322        function n(i, n) {
2323            var r = {},
2324                l = 0,
2325                u = {},
2326                h = 0;
2327            if (oM(i, function(e) { u[e] = t[e] }), oM(i, function(t) { o(e, t) && (r[t] = u[t] = e[t]), a(r, t) && l++, a(u, t) && h++ }), s[n]) return a(e, i[1]) ? u[i[2]] = null : a(e, i[2]) && (u[i[1]] = null), u;
2328            if (2 !== h && l) { if (l >= 2) return r; for (var c = 0; c < i.length; c++) { var d = i[c]; if (!o(r, d) && o(t, d)) { r[d] = t[d]; break } } return r }
2329            return u
2330        }
2331
2332        function o(t, e) { return t.hasOwnProperty(e) }
2333
2334        function a(t, e) { return null != t[e] && "auto" !== t[e] }
2335
2336        function r(t, e, i) { oM(t, function(t) { e[t] = i[t] }) }!w(i) && (i = {});
2337        var s = i.ignoreSize;
2338        !y(s) && (s = [s, s]);
2339        var l = n(rM[0], 0),
2340            u = n(rM[1], 1);
2341        r(rM[0], t, l), r(rM[1], t, u)
2342    }
2343
2344    function na(t) { return oa({}, t) }
2345
2346    function oa(t, e) { return e && t && oM(aM, function(i) { e.hasOwnProperty(i) && (t[i] = e[i]) }), t }
2347
2348    function aa(t, e) {
2349        for (var i = t.length, n = 0; n < i; n++)
2350            if (t[n].length > e) return t[n];
2351        return t[i - 1]
2352    }
2353
2354    function ra(t) {
2355        var e = t.get("coordinateSystem"),
2356            i = { coordSysName: e, coordSysDims: [], axisMap: R(), categoryAxisMap: R() },
2357            n = gM[e];
2358        if (n) return n(t, i, i.axisMap, i.categoryAxisMap), i
2359    }
2360
2361    function sa(t) { return "category" === t.get("type") }
2362
2363    function la(t) { this.fromDataset = t.fromDataset, this.data = t.data || (t.sourceFormat === xM ? {} : []), this.sourceFormat = t.sourceFormat || _M, this.seriesLayoutBy = t.seriesLayoutBy || bM, this.dimensionsDefine = t.dimensionsDefine, this.encodeDefine = t.encodeDefine && R(t.encodeDefine), this.startIndex = t.startIndex || 0, this.dimensionsDetectCount = t.dimensionsDetectCount }
2364
2365    function ua(t) {
2366        var e = t.option.source,
2367            i = _M;
2368        if (S(e)) i = wM;
2369        else if (y(e))
2370            for (var n = 0, o = e.length; n < o; n++) { var a = e[n]; if (null != a) { if (y(a)) { i = vM; break } if (w(a)) { i = yM; break } } } else if (w(e)) {
2371                for (var r in e)
2372                    if (e.hasOwnProperty(r) && c(e[r])) { i = xM; break }
2373            } else if (null != e) throw new Error("Invalid data");
2374        MM(t).sourceFormat = i
2375    }
2376
2377    function ha(t) { return MM(t).source }
2378
2379    function ca(t) { MM(t).datasetMap = R() }
2380
2381    function da(t) {
2382        var e = t.option,
2383            i = e.data,
2384            n = S(i) ? wM : mM,
2385            o = !1,
2386            a = e.seriesLayoutBy,
2387            r = e.sourceHeader,
2388            s = e.dimensions,
2389            l = ya(t);
2390        if (l) {
2391            var u = l.option;
2392            i = u.source, n = MM(l).sourceFormat, o = !0, a = a || u.seriesLayoutBy, null == r && (r = u.sourceHeader), s = s || u.dimensions
2393        }
2394        var h = fa(i, n, a, r, s),
2395            c = e.encode;
2396        !c && l && (c = va(t, l, i, n, a, h)), MM(t).source = new la({ data: i, fromDataset: o, seriesLayoutBy: a, sourceFormat: n, dimensionsDefine: h.dimensionsDefine, startIndex: h.startIndex, dimensionsDetectCount: h.dimensionsDetectCount, encodeDefine: c })
2397    }
2398
2399    function fa(t, e, i, n, o) {
2400        if (!t) return { dimensionsDefine: pa(o) };
2401        var a, r, s;
2402        if (e === vM) "auto" === n || null == n ? ga(function(t) { null != t && "-" !== t && (_(t) ? null == r && (r = 1) : r = 0) }, i, t, 10) : r = n ? 1 : 0, o || 1 !== r || (o = [], ga(function(t, e) { o[e] = null != t ? t : "" }, i, t)), a = o ? o.length : i === SM ? t.length : t[0] ? t[0].length : null;
2403        else if (e === yM) o || (o = ma(t), s = !0);
2404        else if (e === xM) o || (o = [], s = !0, d(t, function(t, e) { o.push(e) }));
2405        else if (e === mM) {
2406            var l = Ii(t[0]);
2407            a = y(l) && l.length || 1
2408        }
2409        var u;
2410        return s && d(o, function(t, e) { "name" === (w(t) ? t.name : t) && (u = e) }), { startIndex: r, dimensionsDefine: pa(o), dimensionsDetectCount: a, potentialNameDimIndex: u }
2411    }
2412
2413    function pa(t) {
2414        if (t) {
2415            var e = R();
2416            return f(t, function(t, i) {
2417                if (null == (t = a({}, w(t) ? t : { name: t })).name) return t;
2418                t.name += "", null == t.displayName && (t.displayName = t.name);
2419                var n = e.get(t.name);
2420                return n ? t.name += "-" + n.count++ : e.set(t.name, { count: 1 }), t
2421            })
2422        }
2423    }
2424
2425    function ga(t, e, i, n) {
2426        if (null == n && (n = 1 / 0), e === SM)
2427            for (a = 0; a < i.length && a < n; a++) t(i[a] ? i[a][0] : null, a);
2428        else
2429            for (var o = i[0] || [], a = 0; a < o.length && a < n; a++) t(o[a], a)
2430    }
2431
2432    function ma(t) { for (var e, i = 0; i < t.length && !(e = t[i++]);); if (e) { var n = []; return d(e, function(t, e) { n.push(e) }), n } }
2433
2434    function va(t, e, i, n, o, a) {
2435        var r = ra(t),
2436            s = {},
2437            l = [],
2438            u = [],
2439            h = t.subType,
2440            c = R(["pie", "map", "funnel"]),
2441            f = R(["line", "bar", "pictorialBar", "scatter", "effectScatter", "candlestick", "boxplot"]);
2442        if (r && null != f.get(h)) {
2443            var p = t.ecModel,
2444                g = MM(p).datasetMap,
2445                m = e.uid + "_" + o,
2446                v = g.get(m) || g.set(m, { categoryWayDim: 1, valueWayDim: 0 });
2447            d(r.coordSysDims, function(t) {
2448                if (null == r.firstCategoryDimIndex) {
2449                    e = v.valueWayDim++;
2450                    s[t] = e, u.push(e)
2451                } else if (r.categoryAxisMap.get(t)) s[t] = 0, l.push(0);
2452                else {
2453                    var e = v.categoryWayDim++;
2454                    s[t] = e, u.push(e)
2455                }
2456            })
2457        } else if (null != c.get(h)) {
2458            for (var y, x = 0; x < 5 && null == y; x++) _a(i, n, o, a.dimensionsDefine, a.startIndex, x) || (y = x);
2459            if (null != y) {
2460                s.value = y;
2461                var _ = a.potentialNameDimIndex || Math.max(y - 1, 0);
2462                u.push(_), l.push(_)
2463            }
2464        }
2465        return l.length && (s.itemName = l), u.length && (s.seriesName = u), s
2466    }
2467
2468    function ya(t) { var e = t.option; if (!e.data) return t.ecModel.getComponent("dataset", e.datasetIndex || 0) }
2469
2470    function xa(t, e) { return _a(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e) }
2471
2472    function _a(t, e, i, n, o, a) {
2473        function r(t) { return (null == t || !isFinite(t) || "" === t) && (!(!_(t) || "-" === t) || void 0) }
2474        var s;
2475        if (S(t)) return !1;
2476        var l;
2477        if (n && (l = w(l = n[a]) ? l.name : l), e === vM)
2478            if (i === SM) {
2479                for (var u = t[a], h = 0; h < (u || []).length && h < 5; h++)
2480                    if (null != (s = r(u[o + h]))) return s
2481            } else
2482                for (h = 0; h < t.length && h < 5; h++) { var c = t[o + h]; if (c && null != (s = r(c[a]))) return s } else if (e === yM) {
2483                    if (!l) return;
2484                    for (h = 0; h < t.length && h < 5; h++)
2485                        if ((d = t[h]) && null != (s = r(d[l]))) return s
2486                } else if (e === xM) {
2487            if (!l) return;
2488            if (!(u = t[l]) || S(u)) return !1;
2489            for (h = 0; h < u.length && h < 5; h++)
2490                if (null != (s = r(u[h]))) return s
2491        } else if (e === mM)
2492            for (h = 0; h < t.length && h < 5; h++) {
2493                var d = t[h],
2494                    f = Ii(d);
2495                if (!y(f)) return !1;
2496                if (null != (s = r(f[a]))) return s
2497            }
2498        return !1
2499    }
2500
2501    function wa(t, e) {
2502        if (e) {
2503            var i = e.seiresIndex,
2504                n = e.seriesId,
2505                o = e.seriesName;
2506            return null != i && t.componentIndex !== i || null != n && t.id !== n || null != o && t.name !== o
2507        }
2508    }
2509
2510    function ba(t, e) {
2511        var o = t.color && !t.colorLayer;
2512        d(e, function(e, a) { "colorLayer" === a && o || hM.hasClass(a) || ("object" == typeof e ? t[a] = t[a] ? n(t[a], e, !1) : i(e) : null == t[a] && (t[a] = e)) })
2513    }
2514
2515    function Sa(t) { t = t, this.option = {}, this.option[IM] = 1, this._componentsMap = R({ series: [] }), this._seriesIndices, this._seriesIndicesMap, ba(t, this._theme.option), n(t, dM, !1), this.mergeOption(t) }
2516
2517    function Ma(t, e) { y(e) || (e = e ? [e] : []); var i = {}; return d(e, function(e) { i[e] = (t.get(e) || []).slice() }), i }
2518
2519    function Ia(t, e, i) { return e.type ? e.type : i ? i.subType : hM.determineSubType(t, e) }
2520
2521    function Ta(t, e) { t._seriesIndicesMap = R(t._seriesIndices = f(e, function(t) { return t.componentIndex }) || []) }
2522
2523    function Da(t, e) { return e.hasOwnProperty("subType") ? g(t, function(t) { return t.subType === e.subType }) : t }
2524
2525    function Aa(t) { d(DM, function(e) { this[e] = m(t[e], t) }, this) }
2526
2527    function Ca() { this._coordinateSystems = [] }
2528
2529    function La(t) { this._api = t, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, this._currentMediaIndices = [], this._optionBackup, this._newBaseOption }
2530
2531    function ka(t, e, i) {
2532        var n, o, a = [],
2533            r = [],
2534            s = t.timeline;
2535        if (t.baseOption && (o = t.baseOption), (s || t.options) && (o = o || {}, a = (t.options || []).slice()), t.media) {
2536            o = o || {};
2537            var l = t.media;
2538            CM(l, function(t) { t && t.option && (t.query ? r.push(t) : n || (n = t)) })
2539        }
2540        return o || (o = t), o.timeline || (o.timeline = s), CM([o].concat(a).concat(f(r, function(t) { return t.option })), function(t) { CM(e, function(e) { e(t, i) }) }), { baseOption: o, timelineOptions: a, mediaDefault: n, mediaList: r }
2541    }
2542
2543    function Pa(t, e, i) {
2544        var n = { width: e, height: i, aspectratio: e / i },
2545            o = !0;
2546        return d(t, function(t, e) {
2547            var i = e.match(NM);
2548            if (i && i[1] && i[2]) {
2549                var a = i[1],
2550                    r = i[2].toLowerCase();
2551                Na(n[r], t, a) || (o = !1)
2552            }
2553        }), o
2554    }
2555
2556    function Na(t, e, i) { return "min" === i ? t >= e : "max" === i ? t <= e : t === e }
2557
2558    function Oa(t, e) { return t.join(",") === e.join(",") }
2559
2560    function Ea(t, e) {
2561        CM(e = e || {}, function(e, i) {
2562            if (null != e) {
2563                var n = t[i];
2564                if (hM.hasClass(i)) {
2565                    e = Si(e);
2566                    var o = Di(n = Si(n), e);
2567                    t[i] = kM(o, function(t) { return t.option && t.exist ? PM(t.exist, t.option, !0) : t.exist || t.option })
2568                } else t[i] = PM(n, e, !0)
2569            }
2570        })
2571    }
2572
2573    function Ra(t) {
2574        var e = t && t.itemStyle;
2575        if (e)
2576            for (var i = 0, o = RM.length; i < o; i++) {
2577                var a = RM[i],
2578                    r = e.normal,
2579                    s = e.emphasis;
2580                r && r[a] && (t[a] = t[a] || {}, t[a].normal ? n(t[a].normal, r[a]) : t[a].normal = r[a], r[a] = null), s && s[a] && (t[a] = t[a] || {}, t[a].emphasis ? n(t[a].emphasis, s[a]) : t[a].emphasis = s[a], s[a] = null)
2581            }
2582    }
2583
2584    function za(t, e, i) {
2585        if (t && t[e] && (t[e].normal || t[e].emphasis)) {
2586            var n = t[e].normal,
2587                o = t[e].emphasis;
2588            n && (i ? (t[e].normal = t[e].emphasis = null, r(t[e], n)) : t[e] = n), o && (t.emphasis = t.emphasis || {}
2588, t.emphasis[e] = o)
2589        }
2590    }
2591
2592    function Ba(t) { za(t, "itemStyle"), za(t, "lineStyle"), za(t, "areaStyle"), za(t, "label"), za(t, "labelLine"), za(t, "upperLabel"), za(t, "edgeLabel") }
2593
2594    function Va(t, e) {
2595        var i = EM(t) && t[e],
2596            n = EM(i) && i.textStyle;
2597        if (n)
2598            for (var o = 0, a = ib.length; o < a; o++) {
2599                var e = ib[o];
2600                n.hasOwnProperty(e) && (i[e] = n[e])
2601            }
2602    }
2603
2604    function Ga(t) { t && (Ba(t), Va(t, "label"), t.emphasis && Va(t.emphasis, "label")) }
2605
2606    function Wa(t) {
2607        if (EM(t)) {
2608            Ra(t), Ba(t), Va(t, "label"), Va(t, "upperLabel"), Va(t, "edgeLabel"), t.emphasis && (Va(t.emphasis, "label"), Va(t.emphasis, "upperLabel"), Va(t.emphasis, "edgeLabel"));
2609            var e = t.markPoint;
2610            e && (Ra(e), Ga(e));
2611            var i = t.markLine;
2612            i && (Ra(i), Ga(i));
2613            var n = t.markArea;
2614            n && Ga(n);
2615            var o = t.data;
2616            if ("graph" === t.type) {
2617                o = o || t.nodes;
2618                var a = t.links || t.edges;
2619                if (a && !S(a))
2620                    for (s = 0; s < a.length; s++) Ga(a[s]);
2621                d(t.categories, function(t) { Ba(t) })
2622            }
2623            if (o && !S(o))
2624                for (s = 0; s < o.length; s++) Ga(o[s]);
2625            if ((e = t.markPoint) && e.data)
2626                for (var r = e.data, s = 0; s < r.length; s++) Ga(r[s]);
2627            if ((i = t.markLine) && i.data)
2628                for (var l = i.data, s = 0; s < l.length; s++) y(l[s]) ? (Ga(l[s][0]), Ga(l[s][1])) : Ga(l[s]);
2629            "gauge" === t.type ? (Va(t, "axisLabel"), Va(t, "title"), Va(t, "detail")) : "treemap" === t.type ? (za(t.breadcrumb, "itemStyle"), d(t.levels, function(t) { Ba(t) })) : "tree" === t.type && Ba(t.leaves)
2630        }
2631    }
2632
2633    function Fa(t) { return y(t) ? t : t ? [t] : [] }
2634
2635    function Ha(t) { return (y(t) ? t[0] : t) || {} }
2636
2637    function Za(t, e) { e = e.split(","); for (var i = t, n = 0; n < e.length && null != (i = i && i[e[n]]); n++); return i }
2638
2639    function Ua(t, e, i, n) {
2640        e = e.split(",");
2641        for (var o, a = t, r = 0; r < e.length - 1; r++) null == a[o = e[r]] && (a[o] = {}), a = a[o];
2642        (n || null == a[e[r]]) && (a[e[r]] = i)
2643    }
2644
2645    function Xa(t) { d(BM, function(e) { e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]]) }) }
2646
2647    function ja(t) {
2648        d(t, function(e, i) {
2649            var n = [],
2650                o = [NaN, NaN],
2651                a = [e.stackResultDimension, e.stackedOverDimension],
2652                r = e.data,
2653                s = e.isStackedByIndex,
2654                l = r.map(a, function(a, l, u) {
2655                    var h = r.get(e.stackedDimension, u);
2656                    if (isNaN(h)) return o;
2657                    var c, d;
2658                    s ? d = r.getRawIndex(u) : c = r.get(e.stackedByDimension, u);
2659                    for (var f = NaN, p = i - 1; p >= 0; p--) { var g = t[p]; if (s || (d = g.data.rawIndexOf(g.stackedByDimension, c)), d >= 0) { var m = g.data.getByRawIndex(g.stackResultDimension, d); if (h >= 0 && m > 0 || h <= 0 && m < 0) { h += m, f = m; break } } }
2660                    return n[0] = h, n[1] = f, n
2661                });
2662            r.hostModel.setData(l), e.data = l
2663        })
2664    }
2665
2666    function Ya(t, e) {
2667        la.isInstance(t) || (t = la.seriesDataToSource(t)), this._source = t;
2668        var i = this._data = t.data,
2669            n = t.sourceFormat;
2670        n === wM && (this._offset = 0, this._dimSize = e, this._data = i), a(this, FM[n === vM ? n + "_" + t.seriesLayoutBy : n])
2671    }
2672
2673    function qa() { return this._data.length }
2674
2675    function Ka(t) { return this._data[t] }
2676
2677    function $a(t) { for (var e = 0; e < t.length; e++) this._data.push(t[e]) }
2678
2679    function Ja(t, e, i, n) { return null != i ? t[i] : t }
2680
2681    function Qa(t, e, i, n) { return tr(t[n], this._dimensionInfos[e]) }
2682
2683    function tr(t, e) { var i = e && e.type; if ("ordinal" === i) { var n = e && e.ordinalMeta; return n ? n.parseAndCollect(t) : t } return "time" === i && "number" != typeof t && null != t && "-" !== t && (t = +Ro(t)), null == t || "" === t ? NaN : +t }
2684
2685    function er(t, e, i) {
2686        if (t) {
2687            var n = t.getRawDataItem(e);
2688            if (null != n) {
2689                var o, a, r = t.getProvider().getSource().sourceFormat,
2690                    s = t.getDimensionInfo(i);
2691                return s && (o = s.name, a = s.index), HM[r](n, e, a, o)
2692            }
2693        }
2694    }
2695
2696    function ir(t, e, i) { if (t) { var n = t.getProvider().getSource().sourceFormat; if (n === mM || n === yM) { var o = t.getRawDataItem(e); return n !== mM || w(o) || (o = null), o ? o[i] : void 0 } } }
2697
2698    function nr(t) { return new or(t) }
2699
2700    function or(t) { t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty, this._dirty = !0, this.context }
2701
2702    function ar(t, e, i, n, o, a) { YM.reset(i, n, o, a), t._callingProgress = e, t._callingProgress({ start: i, end: n, count: n - i, next: YM.next }, t.context) }
2703
2704    function rr(t, e) { t._dueIndex = t._outputDueEnd = t._dueEnd = 0, t._settedOutputEnd = null; var i, n;!e && t._reset && ((i = t._reset(t.context)) && i.progress && (n = i.forceFirstProgress, i = i.progress), y(i) && !i.length && (i = null)), t._progress = i, t._modBy = t._modDataCount = null; var o = t._downstream; return o && o.dirty(), n }
2705
2706    function sr(t) {
2707        var e = t.name;
2708        Ci(t) || (t.name = lr(t) || e)
2709    }
2710
2711    function lr(t) {
2712        var e = t.getRawData(),
2713            i = [];
2714        return d(e.mapDimension("seriesName", !0), function(t) {
2715            var n = e.getDimensionInfo(t);
2716            n.displayName && i.push(n.displayName)
2717        }), i.join(" ")
2718    }
2719
2720    function ur(t) { return t.model.getRawData().count() }
2721
2722    function hr(t) { var e = t.model; return e.setData(e.getRawData().cloneShallow()), cr }
2723
2724    function cr(t, e) { t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData) }
2725
2726    function dr(t, e) { d(t.CHANGABLE_METHODS, function(i) { t.wrapMethod(i, v(fr, e)) }) }
2727
2728    function fr(t) {
2729        var e = pr(t);
2730        e && e.setOutputEnd(this.count())
2731    }
2732
2733    function pr(t) {
2734        var e = (t.ecModel || {}).scheduler,
2735            i = e && e.getPipeline(t.uid);
2736        if (i) {
2737            var n = i.currentTask;
2738            if (n) {
2739                var o = n.agentStubMap;
2740                o && (n = o.get(t.uid))
2741            }
2742            return n
2743        }
2744    }
2745
2746    function gr() { this.group = new sw, this.uid = Mo("viewChart"), this.renderTask = nr({ plan: yr, reset: xr }), this.renderTask.context = { view: this } }
2747
2748    function mr(t, e) {
2749        if (t && (t.trigger(e), "group" === t.type))
2750            for (var i = 0; i < t.childCount(); i++) mr(t.childAt(i), e)
2751    }
2752
2753    function vr(t, e, i) {
2754        var n = Pi(t, e);
2755        null != n ? d(Si(n), function(e) { mr(t.getItemGraphicEl(e), i) }) : t.eachItemGraphicEl(function(t) { mr(t, i) })
2756    }
2757
2758    function yr(t) { return eI(t.model) }
2759
2760    function xr(t) {
2761        var e = t.model,
2762            i = t.ecModel,
2763            n = t.api,
2764            o = t.payload,
2765            a = e.pipelineContext.progressiveRender,
2766            r = t.view,
2767            s = o && tI(o).updateMethod,
2768            l = a ? "incrementalPrepareRender" : s && r[s] ? s : "render";
2769        return "render" !== l && r[l](e, i, n, o), nI[l]
2770    }
2771
2772    function _r(t, e, i) {
2773        function n() { h = (new Date).getTime(), c = null, t.apply(r, s || []) }
2774        var o, a, r, s, l, u = 0,
2775            h = 0,
2776            c = null;
2777        e = e || 0;
2778        var d = function() {
2779            o = (new Date).getTime(), r = this, s = arguments;
2780            var t = l || e,
2781                d = l || i;
2782            l = null, a = o - (d ? u : h) - t, clearTimeout(c), d ? c = setTimeout(n, t) : a >= 0 ? n() : c = setTimeout(n, -a), u = o
2783        };
2784        return d.clear = function() { c && (clearTimeout(c), c = null) }, d.debounceNextCall = function(t) { l = t }, d
2785    }
2786
2787    function wr(t, e, i, n) {
2788        var o = t[e];
2789        if (o) {
2790            var a = o[oI] || o,
2791                r = o[rI];
2792            if (o[aI] !== i || r !== n) {
2793                if (null == i || !n) return t[e] = a;
2794                (o = t[e] = _r(a, i, "debounce" === n))[oI] = a, o[rI] = n, o[aI] = i
2795            }
2796            return o
2797        }
2798    }
2799
2800    function br(t, e) {
2801        var i = t[e];
2802        i && i[oI] && (t[e] = i[oI])
2803    }
2804
2805    function Sr(t, e, i, n) {
2806        this.ecInstance = t, this.api = e, this.unfinished;
2807        var i = this._dataProcessorHandlers = i.slice(),
2808            n = this._visualHandlers = n.slice();
2809        this._allHandlers = i.concat(n), this._stageTaskMap = R()
2810    }
2811
2812    function Mr(t, e, i, n, o) {
2813        function a(t, e) { return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id)) }
2814        o = o || {};
2815        var r;
2816        d(e, function(e, s) {
2817            if (!o.visualType || o.visualType === e.visualType) {
2818                var l = t._stageTaskMap.get(e.uid),
2819                    u = l.seriesTaskMap,
2820                    h = l.overallTask;
2821                if (h) {
2822                    var c, d = h.agentStubMap;
2823                    d.each(function(t) { a(o, t) && (t.dirty(), c = !0) }), c && h.dirty(), dI(h, n);
2824                    var f = t.getPerformArgs(h, o.block);
2825                    d.each(function(t) { t.perform(f) }), r |= h.perform(f)
2826                } else u && u.each(function(s, l) {
2827                    a(o, s) && s.dirty();
2828                    var u = t.getPerformArgs(s, o.block);
2829                    u.skip = !e.performRawSeries && i.isSeriesFiltered(s.context.model), dI(s, n), r |= s.perform(u)
2830                })
2831            }
2832        }), t.unfinished |= r
2833    }
2834
2835    function Ir(t, e, i, n, o) {
2836        function a(i) {
2837            var a = i.uid,
2838                s = r.get(a) || r.set(a, nr({ plan: kr, reset: Pr, count: Or }));
2839            s.context = { model: i, ecModel: n, api: o, useClearVisual: e.isVisual && !e.isLayout, plan: e.plan, reset: e.reset, scheduler: t }, Er(t, i, s)
2840        }
2841        var r = i.seriesTaskMap || (i.seriesTaskMap = R()),
2842            s = e.seriesType,
2843            l = e.getTargetSeries;
2844        e.createOnAllSeries ? n.eachRawSeries(a) : s ? n.eachRawSeriesByType(s, a) : l && l(n, o).each(a);
2845        var u = t._pipelineMap;
2846        r.each(function(t, e) { u.get(e) || (t.dispose(), r.removeKey(e)) })
2847    }
2848
2849    function Tr(t, e, i, n, o) {
2850        function a(e) {
2851            var i = e.uid,
2852                n = s.get(i);
2853            n || (n = s.set(i, nr({ reset: Ar, onDirty: Lr })), r.dirty()), n.context = { model: e, overallProgress: h, modifyOutputEnd: c }, n.agent = r, n.__block = h, Er(t, e, n)
2854        }
2855        var r = i.overallTask = i.overallTask || nr({ reset: Dr });
2856        r.context = { ecModel: n, api: o, overallReset: e.overallReset, scheduler: t };
2857        var s = r.agentStubMap = r.agentStubMap || R(),
2858            l = e.seriesType,
2859            u = e.getTargetSeries,
2860            h = !0,
2861            c = e.modifyOutputEnd;
2862        l ? n.eachRawSeriesByType(l, a) : u ? u(n, o).each(a) : (h = !1, d(n.getSeries(), a));
2863        var f = t._pipelineMap;
2864        s.each(function(t, e) { f.get(e) || (t.dispose(), r.dirty(), s.removeKey(e)) })
2865    }
2866
2867    function Dr(t) { t.overallReset(t.ecModel, t.api, t.payload) }
2868
2869    function Ar(t, e) { return t.overallProgress && Cr }
2870
2871    function Cr() { this.agent.dirty(), this.getDownstream().dirty() }
2872
2873    function Lr() { this.agent && this.agent.dirty() }
2874
2875    function kr(t) { return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload) }
2876
2877    function Pr(t) { t.useClearVisual && t.data.clearAllVisual(); var e = t.resetDefines = Si(t.reset(t.model, t.ecModel, t.api, t.payload)); return e.length > 1 ? f(e, function(t, e) { return Nr(e) }) : fI }
2878
2879    function Nr(t) {
2880        return function(e, i) {
2881            var n = i.data,
2882                o = i.resetDefines[t];
2883            if (o && o.dataEach)
2884                for (var a = e.start; a < e.end; a++) o.dataEach(n, a);
2885            else o && o.progress && o.progress(e, n)
2886        }
2887    }
2888
2889    function Or(t) { return t.data.count() }
2890
2891    function Er(t, e, i) {
2892        var n = e.uid,
2893            o = t._pipelineMap.get(n);
2894        !o.head && (o.head = i), o.tail && o.tail.pipe(i), o.tail = i, i.__idxInPipeline = o.count++, i.__pipeline = o
2895    }
2896
2897    function Rr(t) { pI = null; try { t(gI, mI) } catch (t) {} return pI }
2898
2899    function zr(t, e) { for (var i in e.prototype) t[i] = B }
2900
2901    function Br(t) { return function(e, i, n) { e = e && e.toLowerCase(), D_.prototype[t].call(this, e, i, n) } }
2902
2903    function Vr() { D_.call(this) }
2904
2905    function Gr(t, e, n) {
2906        function o(t, e) { return t.__prio - e.__prio }
2907        n = n || {}, "string" == typeof e && (e = HI[e]), this.id, this.group, this._dom = t;
2908        var a = this._zr = _i(t, { renderer: n.renderer || "canvas", devicePixelRatio: n.devicePixelRatio, width: n.width, height: n.height });
2909        this._throttledZrFlush = _r(m(a.flush, a), 17), (e = i(e)) && GM(e, !0), this._theme = e, this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], this._componentsMap = {}, this._coordSysMgr = new Ca;
2910        var r = this._api = os(this);
2911        ae(FI, o), ae(VI, o), this._scheduler = new Sr(this, r, VI, FI), D_.call(this), this._messageCenter = new Vr, this._initEvents(), this.resize = m(this.resize, this), this._pendingActions = [], a.animation.on("frame", this._onframe, this), Yr(a, this), N(this)
2912    }
2913
2914    function Wr(t, e, i) {
2915        var n, o = this._model,
2916            a = this._coordSysMgr.getCoordinateSystems();
2917        e = Oi(o, e);
2918        for (var r = 0; r < a.length; r++) { var s = a[r]; if (s[t] && null != (n = s[t](o, e, i))) return n }
2919    }
2920
2921    function Fr(t) {
2922        var e = t._model,
2923            i = t._scheduler;
2924        i.restorePipelines(e), i.prepareStageTasks(), qr(t, "component", e, i), qr(t, "chart", e, i), i.plan()
2925    }
2926
2927    function Hr(t, e, i, n, o) {
2928        function a(n) { n && n.__alive && n[e] && n[e](n.__model, r, t._api, i) }
2929        var r = t._model;
2930        if (n) {
2931            var s = {};
2932            s[n + "Id"] = i[n + "Id"], s[n + "Index"] = i[n + "Index"], s[n + "Name"] = i[n + "Name"];
2933            var l = { mainType: n, query: s };
2934            o && (l.subType = o);
2935            var u = i.excludeSeriesId;
2936            null != u && (u = R(Si(u))), r && r.eachComponent(l, function(e) { u && null != u.get(e.id) || a(t["series" === n ? "_chartsMap" : "_componentsMap"][e.__viewId]) }, t)
2937        } else bI(t._componentsViews.concat(t._chartsViews), a)
2938    }
2939
2940    function Zr(t, e) {
2941        var i = t._chartsMap,
2942            n = t._scheduler;
2943        e.eachSeries(function(t) { n.updateStreamModes(t, i[t.__viewId]) })
2944    }
2945
2946    function Ur(t, e) {
2947        var i = t.type,
2948            n = t.escapeConnect,
2949            o = zI[i],
2950            s = o.actionInfo,
2951            l = (s.update || "update").split(":"),
2952            u = l.pop();
2953        l = null != l[0] && II(l[0]), this[kI] = !0;
2954        var h = [t],
2955            c = !1;
2956        t.batch && (c = !0, h = f(t.batch, function(e) { return e = r(a({}, e), t), e.batch = null, e }));
2957        var d, p = [],
2958            g = "highlight" === i || "downplay" === i;
2959        bI(h, function(t) { d = o.action(t, this._model, this._api), (d = d || a({}, t)).type = s.event || d.type, p.push(d), g ? Hr(this, u, t, "series") : l && Hr(this, u, t, l.main, l.sub) }
2959, this), "none" === u || g || l || (this[PI] ? (Fr(this), EI.update.call(this, t), this[PI] = !1) : EI[u].call(this, t)), d = c ? { type: s.event || i, escapeConnect: n, batch: p } : p[0], this[kI] = !1, !e && this._messageCenter.trigger(d.type, d)
2960    }
2961
2962    function Xr(t) {
2963        for (var e = this._pendingActions; e.length;) {
2964            var i = e.shift();
2965            Ur.call(this, i, t)
2966        }
2967    }
2968
2969    function jr(t) {!t && this.trigger("updated") }
2970
2971    function Yr(t, e) { t.on("rendered", function() { e.trigger("rendered"), !t.animation.isFinished() || e[PI] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished") }) }
2972
2973    function qr(t, e, i, n) {
2974        function o(t) {
2975            var e = "_ec_" + t.id + "_" + t.type,
2976                o = s[e];
2977            if (!o) {
2978                var h = II(t.type);
2979                (o = new(a ? $M.getClass(h.main, h.sub) : gr.getClass(h.sub))).init(i, u), s[e] = o, r.push(o), l.add(o.group)
2980            }
2981            t.__viewId = o.__id = e, o.__alive = !0, o.__model = t, o.group.__ecComponentInfo = { mainType: t.mainType, index: t.componentIndex }, !a && n.prepareView(o, t, i, u)
2982        }
2983        for (var a = "component" === e, r = a ? t._componentsViews : t._chartsViews, s = a ? t._componentsMap : t._chartsMap, l = t._zr, u = t._api, h = 0; h < r.length; h++) r[h].__alive = !1;
2984        a ? i.eachComponent(function(t, e) { "series" !== t && o(e) }) : i.eachSeries(o);
2985        for (h = 0; h < r.length;) {
2986            var c = r[h];
2987            c.__alive ? h++ : (!a && c.renderTask.dispose(), l.remove(c.group), c.dispose(i, u), r.splice(h, 1), delete s[c.__id], c.__id = c.group.__ecComponentInfo = null)
2988        }
2989    }
2990
2991    function Kr(t) { t.clearColorPalette(), t.eachSeries(function(t) { t.clearColorPalette() }) }
2992
2993    function $r(t, e, i, n) { Jr(t, e, i, n), bI(t._chartsViews, function(t) { t.__alive = !1 }), Qr(t, e, i, n), bI(t._chartsViews, function(t) { t.__alive || t.remove(e, i) }) }
2994
2995    function Jr(t, e, i, n, o) {
2996        bI(o || t._componentsViews, function(t) {
2997            var o = t.__model;
2998            t.render(o, e, i, n), ns(o, t)
2999        })
3000    }
3001
3002    function Qr(t, e, i, n, o) {
3003        var a, r = t._scheduler;
3004        e.eachSeries(function(e) {
3005            var i = t._chartsMap[e.__viewId];
3006            i.__alive = !0;
3007            var s = i.renderTask;
3008            r.updatePayload(s, n), o && o.get(e.uid) && s.dirty(), a |= s.perform(r.getPerformArgs(s)), i.group.silent = !!e.get("silent"), ns(e, i), is(e, i)
3009        }), r.unfinished |= a, es(t._zr, e), uI(t._zr.dom, e)
3010    }
3011
3012    function ts(t, e) { bI(WI, function(i) { i(t, e) }) }
3013
3014    function es(t, e) {
3015        var i = t.storage,
3016            n = 0;
3017        i.traverse(function(t) { t.isGroup || n++ }), n > e.get("hoverLayerThreshold") && !a_.node && i.traverse(function(t) { t.isGroup || (t.useHoverLayer = !0) })
3018    }
3019
3020    function is(t, e) {
3021        var i = t.get("blendMode") || null;
3022        e.group.traverse(function(t) { t.isGroup || t.style.blend !== i && t.setStyle("blend", i), t.eachPendingDisplayable && t.eachPendingDisplayable(function(t) { t.setStyle("blend", i) }) })
3023    }
3024
3025    function ns(t, e) {
3026        var i = t.get("z"),
3027            n = t.get("zlevel");
3028        e.group.traverse(function(t) { "group" !== t.type && (null != i && (t.z = i), null != n && (t.zlevel = n)) })
3029    }
3030
3031    function os(t) {
3032        var e = t._coordSysMgr;
3033        return a(new Aa(t), {
3034            getCoordinateSystems: m(e.getCoordinateSystems, e),
3035            getComponentByElement: function(e) {
3036                for (; e;) {
3037                    var i = e.__ecComponentInfo;
3038                    if (null != i) return t._model.getComponent(i.mainType, i.index);
3039                    e = e.parent
3040                }
3041            }
3042        })
3043    }
3044
3045    function as(t) {
3046        function e(t, e) { for (var n = 0; n < t.length; n++) t[n][i] = e }
3047        var i = "__connectUpdateStatus";
3048        bI(BI, function(n, o) {
3049            t._messageCenter.on(o, function(n) {
3050                if (XI[t.group] && 0 !== t[i]) {
3051                    if (n && n.escapeConnect) return;
3052                    var o = t.makeActionFromEvent(n),
3053                        a = [];
3054                    bI(UI, function(e) { e !== t && e.group === t.group && a.push(e) }), e(a, 0), bI(a, function(t) { 1 !== t[i] && t.dispatchAction(o) }), e(a, 2)
3055                }
3056            })
3057        })
3058    }
3059
3060    function rs(t) { XI[t] = !1 }
3061
3062    function ss(t) { return UI[zi(t, qI)] }
3063
3064    function ls(t, e) { HI[t] = e }
3065
3066    function us(t) { GI.push(t) }
3067
3068    function hs(t, e) { gs(VI, t, e, DI) }
3069
3070    function cs(t, e, i) {
3071        "function" == typeof e && (i = e, e = "");
3072        var n = MI(t) ? t.type : [t, t = { event: e }][0];
3073        t.event = (t.event || n).toLowerCase(), e = t.event, wI(NI.test(n) && NI.test(e)), zI[n] || (zI[n] = { action: i, actionInfo: t }), BI[e] = n
3074    }
3075
3076    function ds(t, e) { Ca.register(t, e) }
3077
3078    function fs(t, e) { gs(FI, t, e, AI, "layout") }
3079
3080    function ps(t, e) { gs(FI, t, e, CI, "visual") }
3081
3082    function gs(t, e, i, n, o) {
3083        (SI(e) || MI(e)) && (i = e, e = n);
3084        var a = Sr.wrapStageHandler(i, o);
3085        return a.__prio = e, a.__raw = i, t.push(a), a
3086    }
3087
3088    function ms(t, e) { ZI[t] = e }
3089
3090    function vs(t) { return hM.extend(t) }
3091
3092    function ys(t) { return $M.extend(t) }
3093
3094    function xs(t) { return KM.extend(t) }
3095
3096    function _s(t) { return gr.extend(t) }
3097
3098    function ws(t) { return KI[t] }
3099
3100    function bs(t) { return t }
3101
3102    function Ss(t, e, i, n, o) { this._old = t, this._new = e, this._oldKeyGetter = i || bs, this._newKeyGetter = n || bs, this.context = o }
3103
3104    function Ms(t, e, i, n, o) {
3105        for (var a = 0; a < t.length; a++) {
3106            var r = "_ec_" + o[n](t[a], a),
3107                s = e[r];
3108            null == s ? (i.push(r), e[r] = a) : (s.length || (e[r] = s = [s]), s.push(a))
3109        }
3110    }
3111
3112    function Is(t) {
3113        var e = {},
3114            i = e.encode = {},
3115            n = R(),
3116            o = [],
3117            a = [];
3118        d(t.dimensions, function(e) {
3119            var r = t.getDimensionInfo(e),
3120                s = r.coordDim;
3121            if (s) {
3122                var l = i[s];
3123                i.hasOwnProperty(s) || (l = i[s] = []), l[r.coordDimIndex] = e, r.isExtraCoord || (n.set(s, 1), Ds(r.type) && (o[0] = e)), r.defaultTooltip && a.push(e)
3124            }
3125            QI.each(function(t, e) {
3126                var n = i[e];
3127                i.hasOwnProperty(e) || (n = i[e] = []);
3128                var o = r.otherDims[e];
3129                null != o && !1 !== o && (n[o] = r.name)
3130            })
3131        });
3132        var r = [],
3133            s = {};
3134        n.each(function(t, e) {
3135            var n = i[e];
3136            s[e] = n[0], r = r.concat(n)
3137        }), e.dataDimsOnCoord = r, e.encodeFirstDimNotExtra = s;
3138        var l = i.label;
3139        l && l.length && (o = l.slice());
3140        var u = i.tooltip;
3141        return u && u.length ? a = u.slice() : a.length || (a = o.slice()), i.defaultedLabel = o, i.defaultedTooltip = a, e
3142    }
3143
3144    function Ts(t) { return "category" === t ? "ordinal" : "time" === t ? "time" : "float" }
3145
3146    function Ds(t) { return !("ordinal" === t || "time" === t) }
3147
3148    function As(t) { return t._rawCount > 65535 ? nT : oT }
3149
3150    function Cs(t) { var e = t.constructor; return e === Array ? t.slice() : new e(t) }
3151
3152    function Ls(t, e) { d(aT.concat(e.__wrappedMethods || []), function(i) { e.hasOwnProperty(i) && (t[i] = e[i]) }), t.__wrappedMethods = e.__wrappedMethods, d(rT, function(n) { t[n] = i(e[n]) }), t._calculationInfo = a(e._calculationInfo) }
3153
3154    function ks(t) {
3155        var e = t._invertedIndicesMap;
3156        d(e, function(i, n) { var o = t._dimensionInfos[n].ordinalMeta; if (o) { i = e[n] = new nT(o.categories.length); for (a = 0; a < i.length; a++) i[a] = NaN; for (var a = 0; a < t._count; a++) i[t.get(n, a)] = a } })
3157    }
3158
3159    function Ps(t, e, i) {
3160        var n;
3161        if (null != e) {
3162            var o = t._chunkSize,
3163                a = Math.floor(i / o),
3164                r = i % o,
3165                s = t.dimensions[e],
3166                l = t._storage[s][a];
3167            if (l) {
3168                n = l[r];
3169                var u = t._dimensionInfos[s].ordinalMeta;
3170                u && u.categories.length && (n = u.categories[n])
3171            }
3172        }
3173        return n
3174    }
3175
3176    function Ns(t) { return t }
3177
3178    function Os(t) { return t < this._count && t >= 0 ? this._indices[t] : -1 }
3179
3180    function Es(t, e) { var i = t._idList[e]; return null == i && (i = Ps(t, t._idDimIdx, e)), null == i && (i = eT + e), i }
3181
3182    function Rs(t) { return y(t) || (t = [t]), t }
3183
3184    function zs(t, e) {
3185        var i = t.dimensions,
3186            n = new sT(f(i, t.getDimensionInfo, t), t.hostModel);
3187        Ls(n, t);
3188        for (var o = n._storage = {}, a = t._storage, r = 0; r < i.length; r++) {
3189            var s = i[r];
3190            a[s] && (l(e, s) >= 0 ? (o[s] = Bs(a[s]), n._rawExtent[s] = Vs(), n._extent[s] = null) : o[s] = a[s])
3191        }
3192        return n
3193    }
3194
3195    function Bs(t) { for (var e = new Array(t.length), i = 0; i < t.length; i++) e[i] = Cs(t[i]); return e }
3196
3197    function Vs() { return [1 / 0, -1 / 0] }
3198
3199    function Gs(t, e, n) {
3200        function o(t, e, i) { null != QI.get(e) ? t.otherDims[e] = i : (t.coordDim = e, t.coordDimIndex = i, h.set(e, !0)) }
3201        la.isInstance(e) || (e = la.seriesDataToSource(e)), n = n || {}, t = (t || []).slice();
3202        for (var s = (n.dimsDef || []).slice(), l = R(n.encodeDef), u = R(), h = R(), c = [], f = Ws(e, t, s, n.dimCount), p = 0; p < f; p++) {
3203            var g = s[p] = a({}, w(s[p]) ? s[p] : { name: s[p] }),
3204                m = g.name,
3205                v = c[p] = { otherDims: {} };
3206            null != m && null == u.get(m) && (v.name = v.displayName = m, u.set(m, p)), null != g.type && (v.type = g.type), null != g.displayName && (v.displayName = g.displayName)
3207        }
3208        l.each(function(t, e) {
3209            t = Si(t).slice();
3210            var i = l.set(e, []);
3211            d(t, function(t, n) { _(t) && (t = u.get(t)), null != t && t < f && (i[n] = t, o(c[t], e, n)) })
3212        });
3213        var y = 0;
3214        d(t, function(t, e) {
3215            var n, t, a, s;
3216            if (_(t)) n = t, t = {};
3217            else {
3218                n = t.name;
3219                var u = t.ordinalMeta;
3220                t.ordinalMeta = null, (t = i(t)).ordinalMeta = u, a = t.dimsDef, s = t.otherDims, t.name = t.coordDim = t.coordDimIndex = t.dimsDef = t.otherDims = null
3221            }
3222            var h = Si(l.get(n));
3223            if (!h.length)
3224                for (var f = 0; f < (a && a.length || 1); f++) {
3225                    for (; y < c.length && null != c[y].coordDim;) y++;
3226                    y < c.length && h.push(y++)
3227                }
3228            d(h, function(e, i) {
3229                var l = c[e];
3230                if (o(r(l, t), n, i), null == l.name && a) { var u = a[i];!w(u) && (u = { name: u }
3230), l.name = l.displayName = u.name, l.defaultTooltip = u.defaultTooltip }
3231                s && r(l.otherDims, s)
3232            })
3233        });
3234        var x = n.generateCoord,
3235            b = n.generateCoordCount,
3236            S = null != b;
3237        b = x ? b || 1 : 0;
3238        for (var M = x || "value", I = 0; I < f; I++) null == (v = c[I] = c[I] || {}).coordDim && (v.coordDim = Fs(M, h, S), v.coordDimIndex = 0, (!x || b <= 0) && (v.isExtraCoord = !0), b--), null == v.name && (v.name = Fs(v.coordDim, u)), null == v.type && xa(e, I, v.name) && (v.type = "ordinal");
3239        return c
3240    }
3241
3242    function Ws(t, e, i, n) {
3243        var o = Math.max(t.dimensionsDetectCount || 1, e.length, i.length, n || 0);
3244        return d(e, function(t) {
3245            var e = t.dimsDef;
3246            e && (o = Math.max(o, e.length))
3247        }), o
3248    }
3249
3250    function Fs(t, e, i) {
3251        if (i || null != e.get(t)) {
3252            for (var n = 0; null != e.get(t + n);) n++;
3253            t += n
3254        }
3255        return e.set(t, !0), t
3256    }
3257
3258    function Hs(t, e, i) {
3259        var n, o, a, r, s = (i = i || {}).byIndex,
3260            l = i.stackedCoordDimension,
3261            u = !(!t || !t.get("stack"));
3262        if (d(e, function(t, i) { _(t) && (e[i] = t = { name: t }), u && !t.isExtraCoord && (s || n || !t.ordinalMeta || (n = t), o || "ordinal" === t.type || "time" === t.type || l && l !== t.coordDim || (o = t)) }), !o || s || n || (s = !0), o) {
3263            a = "__\0ecstackresult", r = "__\0ecstackedover", n && (n.createInvertedIndices = !0);
3264            var h = o.coordDim,
3265                c = o.type,
3266                f = 0;
3267            d(e, function(t) { t.coordDim === h && f++ }), e.push({ name: a, coordDim: h, coordDimIndex: f, type: c, isExtraCoord: !0, isCalculationCoord: !0 }), f++, e.push({ name: r, coordDim: r, coordDimIndex: f, type: c, isExtraCoord: !0, isCalculationCoord: !0 })
3268        }
3269        return { stackedDimension: o && o.name, stackedByDimension: n && n.name, isStackedByIndex: s, stackedOverDimension: r, stackResultDimension: a }
3270    }
3271
3272    function Zs(t, e) { return !!e && e === t.getCalculationInfo("stackedDimension") }
3273
3274    function Us(t, e) { return Zs(t, e) ? t.getCalculationInfo("stackResultDimension") : e }
3275
3276    function Xs(t, e, i) {
3277        i = i || {}, la.isInstance(t) || (t = la.seriesDataToSource(t));
3278        var n, o = e.get("coordinateSystem"),
3279            a = Ca.get(o),
3280            r = ra(e);
3281        r && (n = f(r.coordSysDims, function(t) {
3282            var e = { name: t },
3283                i = r.axisMap.get(t);
3284            if (i) {
3285                var n = i.get("type");
3286                e.type = Ts(n)
3287            }
3288            return e
3289        })), n || (n = a && (a.getDimensionsInfo ? a.getDimensionsInfo() : a.dimensions.slice()) || ["x", "y"]);
3290        var s, l, u = hT(t, { coordDimensions: n, generateCoord: i.generateCoord });
3291        r && d(u, function(t, e) {
3292            var i = t.coordDim,
3293                n = r.categoryAxisMap.get(i);
3294            n && (null == s && (s = e), t.ordinalMeta = n.getOrdinalMeta()), null != t.otherDims.itemName && (l = !0)
3295        }), l || null == s || (u[s].otherDims.itemName = 0);
3296        var h = Hs(e, u),
3297            c = new sT(u, e);
3298        c.setCalculationInfo(h);
3299        var p = null != s && js(t) ? function(t, e, i, n) { return n === s ? i : this.defaultDimValueGetter(t, e, i, n) } : null;
3300        return c.hasItemOption = !1, c.initData(t, null, p), c
3301    }
3302
3303    function js(t) { if (t.sourceFormat === mM) { var e = Ys(t.data || []); return null != e && !y(Ii(e)) } }
3304
3305    function Ys(t) { for (var e = 0; e < t.length && null == t[e];) e++; return t[e] }
3306
3307    function qs(t) { this._setting = t || {}, this._extent = [1 / 0, -1 / 0], this._interval = 0, this.init && this.init.apply(this, arguments) }
3308
3309    function Ks(t) { this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, this._map }
3310
3311    function $s(t) { return t._map || (t._map = R(t.categories)) }
3312
3313    function Js(t) { return w(t) && null != t.value ? t.value : t + "" }
3314
3315    function Qs(t, e, i, n) {
3316        var o = {},
3317            a = t[1] - t[0],
3318            r = o.interval = Vo(a / e, !0);
3319        null != i && r < i && (r = o.interval = i), null != n && r > n && (r = o.interval = n);
3320        var s = o.intervalPrecision = tl(r);
3321        return il(o.niceTickExtent = [pT(Math.ceil(t[0] / r) * r, s), pT(Math.floor(t[1] / r) * r, s)], t), o
3322    }
3323
3324    function tl(t) { return ko(t) + 2 }
3325
3326    function el(t, e, i) { t[e] = Math.max(Math.min(t[e], i[1]), i[0]) }
3327
3328    function il(t, e) {!isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), el(t, 0, e), el(t, 1, e), t[0] > t[1] && (t[0] = t[1]) }
3329
3330    function nl(t, e, i, n) {
3331        var o = [];
3332        if (!t) return o;
3333        e[0] < i[0] && o.push(e[0]);
3334        for (var a = i[0]; a <= i[1] && (o.push(a), (a = pT(a + t, n)) !== o[o.length - 1]);)
3335            if (o.length > 1e4) return [];
3336        return e[1] > (o.length ? o[o.length - 1] : i[1]) && o.push(e[1]), o
3337    }
3338
3339    function ol(t) { return t.get("stack") || vT + t.seriesIndex }
3340
3341    function al(t) { return t.dim + t.index }
3342
3343    function rl(t) {
3344        var e = [],
3345            i = t.axis;
3346        if ("category" === i.type) {
3347            for (var n = i.getBandWidth(), o = 0; o < t.count; o++) e.push(r({ bandWidth: n, axisKey: "axis0", stackId: vT + o }, t));
3348            for (var a = ul(e), s = [], o = 0; o < t.count; o++) {
3349                var l = a.axis0[vT + o];
3350                l.offsetCenter = l.offset + l.width / 2, s.push(l)
3351            }
3352            return s
3353        }
3354    }
3355
3356    function sl(t, e) { var i = []; return e.eachSeriesByType(t, function(t) { dl(t) && !fl(t) && i.push(t) }), i }
3357
3358    function ll(t) {
3359        var e = [];
3360        return d(t, function(t) {
3361            var i = t.getData(),
3362                n = t.coordinateSystem.getBaseAxis(),
3363                o = n.getExtent(),
3364                a = "category" === n.type ? n.getBandWidth() : Math.abs(o[1] - o[0]) / i.count(),
3365                r = Do(t.get("barWidth"), a),
3366                s = Do(t.get("barMaxWidth"), a),
3367                l = t.get("barGap"),
3368                u = t.get("barCategoryGap");
3369            e.push({ bandWidth: a, barWidth: r, barMaxWidth: s, barGap: l, barCategoryGap: u, axisKey: al(n), stackId: ol(t) })
3370        }), ul(e)
3371    }
3372
3373    function ul(t) {
3374        var e = {};
3375        d(t, function(t, i) {
3376            var n = t.axisKey,
3377                o = t.bandWidth,
3378                a = e[n] || { bandWidth: o, remainedWidth: o, autoWidthCount: 0, categoryGap: "20%", gap: "30%", stacks: {} },
3379                r = a.stacks;
3380            e[n] = a;
3381            var s = t.stackId;
3382            r[s] || a.autoWidthCount++, r[s] = r[s] || { width: 0, maxWidth: 0 };
3383            var l = t.barWidth;
3384            l && !r[s].width && (r[s].width = l, l = Math.min(a.remainedWidth, l), a.remainedWidth -= l);
3385            var u = t.barMaxWidth;
3386            u && (r[s].maxWidth = u);
3387            var h = t.barGap;
3388            null != h && (a.gap = h);
3389            var c = t.barCategoryGap;
3390            null != c && (a.categoryGap = c)
3391        });
3392        var i = {};
3393        return d(e, function(t, e) {
3394            i[e] = {};
3395            var n = t.stacks,
3396                o = t.bandWidth,
3397                a = Do(t.categoryGap, o),
3398                r = Do(t.gap, 1),
3399                s = t.remainedWidth,
3400                l = t.autoWidthCount,
3401                u = (s - a) / (l + (l - 1) * r);
3402            u = Math.max(u, 0), d(n, function(t, e) {
3403                var i = t.maxWidth;
3404                i && i < u && (i = Math.min(i, s), t.width && (i = Math.min(i, t.width)), s -= i, t.width = i, l--)
3405            }), u = (s - a) / (l + (l - 1) * r), u = Math.max(u, 0);
3406            var h, c = 0;
3407            d(n, function(t, e) { t.width || (t.width = u), h = t, c += t.width * (1 + r) }), h && (c -= h.width * r);
3408            var f = -c / 2;
3409            d(n, function(t, n) { i[e][n] = i[e][n] || { offset: f, width: t.width }, f += t.width * (1 + r) })
3410        }), i
3411    }
3412
3413    function hl(t, e, i) { if (t && e) { var n = t[al(e)]; return null != n && null != i && (n = n[ol(i)]), n } }
3414
3415    function cl(t, e) {
3416        var i = sl(t, e),
3417            n = ll(i),
3418            o = {};
3419        d(i, function(t) {
3420            var e = t.getData(),
3421                i = t.coordinateSystem,
3422                a = i.getBaseAxis(),
3423                r = ol(t),
3424                s = n[al(a)][r],
3425                l = s.offset,
3426                u = s.width,
3427                h = i.getOtherAxis(a),
3428                c = t.get("barMinHeight") || 0;
3429            o[r] = o[r] || [], e.setLayout({ offset: l, size: u });
3430            for (var d = e.mapDimension(h.dim), f = e.mapDimension(a.dim), p = Zs(e, d), g = h.isHorizontal(), m = pl(a, h, p), v = 0, y = e.count(); v < y; v++) {
3431                var x = e.get(d, v),
3432                    _ = e.get(f, v);
3433                if (!isNaN(x)) {
3434                    var w = x >= 0 ? "p" : "n",
3435                        b = m;
3436                    p && (o[r][_] || (o[r][_] = { p: m, n: m }), b = o[r][_][w]);
3437                    var S, M, I, T;
3438                    if (g) S = b, M = (D = i.dataToPoint([x, _]))[1] + l, I = D[0] - m, T = u, Math.abs(I) < c && (I = (I < 0 ? -1 : 1) * c), p && (o[r][_][w] += I);
3439                    else {
3440                        var D = i.dataToPoint([_, x]);
3441                        S = D[0] + l, M = b, I = u, T = D[1] - m, Math.abs(T) < c && (T = (T <= 0 ? -1 : 1) * c), p && (o[r][_][w] += T)
3442                    }
3443                    e.setItemLayout(v, { x: S, y: M, width: I, height: T })
3444                }
3445            }
3446        }, this)
3447    }
3448
3449    function dl(t) { return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type }
3450
3451    function fl(t) { return t.pipelineContext && t.pipelineContext.large }
3452
3453    function pl(t, e, i) { return l(t.getAxesOnZeroOf(), e) >= 0 || i ? e.toGlobalCoord(e.dataToCoord(0)) : e.getGlobalExtent()[0] }
3454
3455    function gl(t, e) { return CT(t, AT(e)) }
3456
3457    function ml(t, e) {
3458        var i, n, o, a = t.type,
3459            r = e.getMin(),
3460            s = e.getMax(),
3461            l = null != r,
3462            u = null != s,
3463            h = t.getExtent();
3464        "ordinal" === a ? i = e.getCategories().length : (y(n = e.get("boundaryGap")) || (n = [n || 0, n || 0]), "boolean" == typeof n[0] && (n = [0, 0]), n[0] = Do(n[0], 1), n[1] = Do(n[1], 1), o = h[1] - h[0] || Math.abs(h[0])), null == r && (r = "ordinal" === a ? i ? 0 : NaN : h[0] - n[0] * o), null == s && (s = "ordinal" === a ? i ? i - 1 : NaN : h[1] + n[1] * o), "dataMin" === r ? r = h[0] : "function" == typeof r && (r = r({ min: h[0], max: h[1] })), "dataMax" === s ? s = h[1] : "function" == typeof s && (s = s({ min: h[0], max: h[1] })), (null == r || !isFinite(r)) && (r = NaN), (null == s || !isFinite(s)) && (s = NaN), t.setBlank(I(r) || I(s) || "ordinal" === a && !t.getOrdinalMeta().categories.length), e.getNeedCrossZero() && (r > 0 && s > 0 && !l && (r = 0), r < 0 && s < 0 && !u && (s = 0));
3465        var c = e.ecModel;
3466        if (c && "time" === a) {
3467            var f, p = sl("bar", c);
3468            if (d(p, function(t) { f |= t.getBaseAxis() === e.axis }), f) {
3469                var g = ll(p),
3470                    m = vl(r, s, e, g);
3471                r = m.min, s = m.max
3472            }
3473        }
3474        return [r, s]
3475    }
3476
3477    function vl(t, e, i, n) {
3478        var o = i.axis.getExtent(),
3479            a = o[1] - o[0],
3480            r = hl(n, i.axis);
3481        if (void 0 === r) return { min: t, max: e };
3482        var s = 1 / 0;
3483        d(r, function(t) { s = Math.min(t.offset, s) });
3484        var l = -1 / 0;
3485        d(r, function(t) { l = Math.max(t.offset + t.width, l) }), s = Math.abs(s), l = Math.abs(l);
3486        var u = s + l,
3487            h = e - t,
3488            c = h / (1 - (s + l) / a) - h;
3489        return e += c * (l / u), t -= c * (s / u), { min: t, max: e }
3490    }
3491
3492    function yl(t, e) {
3493        var i = ml(t, e),
3494            n = null != e.getMin(),
3495            o = null != e.getMax(),
3496            a = e.get("splitNumber");
3497        "log" === t.type && (t.base = e.get("logBase"));
3498        var r = t.type;
3499        t.setExtent(i[0], i[1]), t.niceExtent({ splitNumber: a, fixMin: n, fixMax: o, minInterval: "interval" === r || "time" === r ? e.get("minInterval") : null, maxInterval: "interval" === r || "time" === r ? e.get("maxInterval") : null });
3500        var s = e.get("interval");
3501        null != s && t.setInterval && t.setInterval(s)
3502    }
3503
3504    function xl(t, e) {
3505        if (e = e || t.get("type")) switch (e) {
3506            case "category":
3507                return new fT(t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), [1 / 0, -1 / 0]);
3508            case "value":
3509                return new mT;
3510            default:
3511                return (qs.getClass(e) || mT).create(t)
3512        }
3513    }
3514
3515    function _l(t) {
3516        var e = t.scale.getExtent(),
3517            i = e[0],
3518            n = e[1];
3519        return !(i > 0 && n > 0 || i < 0 && n < 0)
3520    }
3521
3522    function wl(t) {
3523        var e = t.getLabelModel().get("formatter"),
3524            i = "category" === t.type ? t.scale.getExtent()[0] : null;
3525        return "string" == typeof e ? e = function(t) { return function(e) { return t.replace("{value}", null != e ? e : "") } }(e) : "function" == typeof e ? function(n, o) { return null != i && (o = n - i), e(bl(t, n), o) } : function(e) { return t.scale.getLabel(e) }
3526    }
3527
3528    function bl(t, e) { return "category" === t.type ? t.scale.getLabel(e) : e }
3529
3530    function Sl(t) {
3531        var e = t.model,
3532            i = t.scale;
3533        if (e.get("axisLabel.show") && !i.isBlank()) {
3534            var n, o, a = "category" === t.type,
3535                r = i.getExtent();
3536            o = a ? i.count() : (n = i.getTicks()).length;
3537            var s, l = t.getLabelModel(),
3538                u = wl(t),
3539                h = 1;
3540            o > 40 && (h = Math.ceil(o / 40));
3541            for (var c = 0; c < o; c += h) {
3542                var d = u(n ? n[c] : r[0] + c),
3543                    f = Ml(l.getTextRect(d), l.get("rotate") || 0);
3544                s ? s.union(f) : s = f
3545            }
3546            return s
3547        }
3548    }
3549
3550    function Ml(t, e) {
3551        var i = e * Math.PI / 180,
3552            n = t.plain(),
3553            o = n.width,
3554            a = n.height,
3555            r = o * Math.cos(i) + a * Math.sin(i),
3556            s = o * Math.sin(i) + a * Math.cos(i);
3557        return new $t(n.x, n.y, r, s)
3558    }
3559
3560    function Il(t, e) {
3561        if ("image" !== this.type) {
3562            var i = this.style,
3563                n = this.shape;
3564            n && "line" === n.symbolType ? i.stroke = t : this.__isEmptyBrush ? (i.stroke = t, i.fill = e || "#fff") : (i.fill && (i.fill = t), i.stroke && (i.stroke = t)), this.dirty(!1)
3565        }
3566    }
3567
3568    function Tl(t, e, i, n, o, a, r) {
3569        var s = 0 === t.indexOf("empty");
3570        s && (t = t.substr(5, 1).toLowerCase() + t.substr(6));
3571        var l;
3572        return l = 0 === t.indexOf("image://") ? zn(t.slice(8), new $t(e, i, n, o), r ? "center" : "cover") : 0 === t.indexOf("path://") ? Rn(t.slice(7), {}, new $t(e, i, n, o), r ? "center" : "cover") : new FT({ shape: { symbolType: t, x: e, y: i, width: n, height: o } }), l.__isEmptyBrush = s, l.setColor = Il, l.setColor(a), l
3573    }
3574
3575    function Dl(t, e) { return Math.abs(t - e) < UT }
3576
3577    function Al(t, e, i) {
3578        var n = 0,
3579            o = t[0];
3580        if (!o) return !1;
3581        for (var a = 1; a < t.length; a++) {
3582            var r = t[a];
3583            n += mn(o[0], o[1], r[0], r[1], e, i), o = r
3584        }
3585        var s = t[0];
3586        return Dl(o[0], s[0]) && Dl(o[1], s[1]) || (n += mn(o[0], o[1], s[0], s[1], e, i)), 0 !== n
3587    }
3588
3589    function Cl(t, e, i) {
3590        if (this.name = t, this.geometries = e, i) i = [i[0], i[1]];
3591        else {
3592            var n = this.getBoundingRect();
3593            i = [n.x + n.width / 2, n.y + n.height / 2]
3594        }
3595        this.center = i
3596    }
3597
3598    function Ll(t) {
3599        if (!t.UTF8Encoding) return t;
3600        var e = t.UTF8Scale;
3601        null == e && (e = 1024);
3602        for (var i = t.features, n = 0; n < i.length; n++)
3603            for (var o = i[n].geometry, a = o.coordinates, r = o.encodeOffsets, s = 0; s < a.length; s++) {
3604                var l = a[s];
3605                if ("Polygon" === o.type) a[s] = kl(l, r[s], e);
3606                else if ("MultiPolygon" === o.type)
3607                    for (var u = 0; u < l.length; u++) {
3608                        var h = l[u];
3609                        l[u] = kl(h, r[s][u], e)
3610                    }
3611            }
3612        return t.UTF8Encoding = !1, t
3613    }
3614
3615    function kl(t, e, i) {
3616        for (var n = [], o = e[0], a = e[1], r = 0; r < t.length; r += 2) {
3617            var s = t.charCodeAt(r) - 64,
3618                l = t.charCodeAt(r + 1) - 64;
3619            s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), o = s += o, a = l += a, n.push([s / i, l / i])
3620        }
3621        return n
3622    }
3623
3624    function Pl(t) { return "category" === t.type ? Ol(t) : zl(t) }
3625
3626    function Nl(t, e) { return "category" === t.type ? Rl(t, e) : { ticks: t.scale.getTicks() } }
3627
3628    function Ol(t) {
3629        var e = t.getLabelModel(),
3630            i = El(t, e);
3631        return !e.get("show") || t.scale.isBlank() ? { labels: [], labelCategoryInterval: i.labelCategoryInterval } : i
3632    }
3633
3634    function El(t, e) {
3635        var i = Bl(t, "labels"),
3636            n = Xl(e),
3637            o = Vl(i, n);
3638        if (o) return o;
3639        var a, r;
3640        return a = x(n) ? Ul(t, n) : Zl(t, r = "auto" === n ? Wl(t) : n), Gl(i, n, { labels: a, labelCategoryInterval: r })
3641    }
3642
3643    function Rl(t, e) {
3644        var i = Bl(t, "ticks"),
3645            n = Xl(e),
3646            o = Vl(i, n);
3647        if (o) return o;
3648        var a, r;
3649        if (e.get("show") && !t.scale.isBlank() || (a = []), x(n)) a = Ul(t, n, !0);
3650        else if ("auto" === n) {
3651            var s = El(t, t.getLabelModel());
3652            r = s.labelCategoryInterval, a = f(s.labels, function(t) { return t.tickValue })
3653        } else a = Zl(t, r = n, !0);
3654        return Gl(i, n, { ticks: a, tickCategoryInterval: r })
3655    }
3656
3657    function zl(t) {
3658        var e = t.scale.getTicks(),
3659            i = wl(t);
3660        return { labels: f(e, function(e, n) { return { formattedLabel: i(e, n), rawLabel: t.scale.getLabel(e), tickValue: e } }) }
3661    }
3662
3663    function Bl(t, e) { return jT(t)[e] || (jT(t)[e] = []) }
3664
3665    function Vl(t, e) {
3666        for (var i = 0; i < t.length; i++)
3667            if (t[i].key === e) return t[i].value
3668    }
3669
3670    function Gl(t, e, i) { return t.push({ key: e, value: i }), i }
3671
3672    function Wl(t) { var e = jT(t).autoInterval; return null != e ? e : jT(t).autoInterval = t.calculateCategoryInterval() }
3673
3674    function Fl(t) {
3675        var e = Hl(t),
3676            i = wl(t),
3677            n = (e.axisRotate - e.labelRotate) / 180 * Math.PI,
3678            o = t.scale,
3679            a = o.getExtent(),
3680            r = o.count();
3681        if (a[1] - a[0] < 1) return 0;
3682        var s = 1;
3683        r > 40 && (s = Math.max(1, Math.floor(r / 40)));
3684        for (var l = a[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(n)), c = Math.abs(u * Math.sin(n)), d = 0, f = 0; l <= a[1]; l += s) {
3685            var p = 0,
3686                g = 0,
3687                m = me(i(l), e.font, "center", "top");
3688            p = 1.3 * m.width, g = 1.3 * m.height, d = Math.max(d, p, 7), f = Math.max(f, g, 7)
3689        }
3690        var v = d / h,
3691            y = f / c;
3692        isNaN(v) && (v = 1 / 0), isNaN(y) && (y = 1 / 0);
3693        var x = Math.max(0, Math.floor(Math.min(v, y))),
3694            _ = jT(t.model),
3695            w = _.lastAutoInterval,
3696            b = _.lastTickCount;
3697        return null != w && null != b && Math.abs(w - x) <= 1 && Math.abs(b - r) <= 1 && w > x ? x = w : (_.lastTickCount = r, _.lastAutoInterval = x), x
3698    }
3699
3700    function Hl(t) { var e = t.getLabelModel(); return { axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0, labelRotate: e.get("rotate") || 0, font: e.getFont() } }
3701
3702    function Zl(t, e, i) {
3703        function n(t) { l.push(i ? t : { formattedLabel: o(t), rawLabel: a.getLabel(t), tickValue: t }) }
3704        var o = wl(t),
3705            a = t.scale,
3706            r = a.getExtent(),
3707            s = t.getLabelModel(),
3708            l = [],
3709            u = Math.max((e || 0) + 1, 1),
3710            h = r[0],
3711            c = a.count();
3712        0 !== h && u > 1 && c / u > 2 && (h = Math.round(Math.ceil(h / u) * u));
3713        var d = { min: s.get("showMinLabel"), max: s.get("showMaxLabel") };
3714        d.min && h !== r[0] && n(r[0]);
3715        for (var f = h; f <= r[1]; f += u) n(f);
3716        return d.max && f !== r[1] && n(r[1]), l
3717    }
3718
3719    function Ul(t, e, i) {
3720        var n = t.scale,
3721            o = wl(t),
3722            a = [];
3723        return d(n.getTicks(), function(t) {
3724            var r = n.getLabel(t);
3725            e(t, r) && a.push(i ? t : { formattedLabel: o(t), rawLabel: r, tickValue: t })
3726        }), a
3727    }
3728
3729    function Xl(t) { var e = t.get("interval"); return null == e ? "auto" : e }
3730
3731    function jl(t, e) {
3732        var i = (t[1] - t[0]) / e / 2;
3733        t[0] += i, t[1] -= i
3734    }
3735
3736    function Yl(t, e, i, n, o) {
3737        function a(t, e) { return h ? t > e : t < e }
3738        var r = e.length;
3739        if (t.onBand && !n && r) {
3740            var s, l = t.getExtent();
3741            if (1 === r) e[0].coord = l[0], s = e[1] = { coord: l[0] };
3742            else {
3743                var u = e[1].coord - e[0].coord;
3744                d(e, function(t) {
3745                    t.coord -= u / 2;
3746                    var e = e || 0;
3747                    e % 2 > 0 && (t.coord -= u / (2 * (e + 1)))
3748                }), s = { coord: e[r - 1].coord + u }, e.push(s)
3749            }
3750            var h = l[0] > l[1];
3751            a(e[0].coord, l[0]) && (o ? e[0].coord = l[0] : e.shift()), o && a(l[0], e[0].coord) && e.unshift({ coord: l[0] }), a(l[1], s.coord) && (o ? s.coord = l[1] : e.pop()), o && a(s.coord, l[1]) && e.push({ coord: l[1] })
3752        }
3753    }
3754
3755    function ql(t, e) {
3756        var i = t.mapDimension("defaultedLabel", !0),
3757            n = i.length;
3758        if (1 === n) return er(t, e, i[0]);
3759        if (n) {
3760            for (var o = [], a = 0; a < i.length; a++) {
3761                var r = er(t, e, i[a]);
3762                o.push(r)
3763            }
3764            return o.join(" ")
3765        }
3766    }
3767
3768    function Kl(t, e, i) { sw.call(this), this.updateData(t, e, i) }
3769
3770    function $l(t) { return [t[0] / 2, t[1] / 2] }
3771
3772    function Jl(t, e) { this.parent.drift(t, e) }
3773
3774    function Ql(t) { this.group = new sw, this._symbolCtor = t || Kl }
3775
3776    function tu(t, e, i, n) { return e && !isNaN(e[0]) && !isNaN(e[1]) && !(n.isIgnore && n.isIgnore(i)) && !(n.clipShape && !n.clipShape.contain(e[0], e[1])) && "none" !== t.getItemVisual(i, "symbol") }
3777
3778    function eu(t) { return null == t || w(t) || (t = { isIgnore: t }), t || {} }
3779
3780    function iu(t) { var e = t.hostModel; return { itemStyle: e.getModel("itemStyle").getItemStyle(["color"]), hoverItemStyle: e.getModel("emphasis.itemStyle").getItemStyle(), symbolRotate: e.get("symbolRotate"), symbolOffset: e.get("symbolOffset"), hoverAnimation: e.get("hoverAnimation"), labelModel: e.getModel("label"), hoverLabelModel: e.getModel("emphasis.label"), cursorStyle: e.get("cursor") } }
3781
3782    function nu(t, e, i) {
3783        var n, o = t.getBaseAxis(),
3784            a = t.getOtherAxis(o),
3785            r = ou(a, i),
3786            s = o.dim,
3787            l = a.dim,
3788            u = e.mapDimension(l),
3789            h = e.mapDimension(s),
3790            c = "x" === l || "radius" === l ? 1 : 0,
3791            d = f(t.dimensions, function(t) { return e.mapDimension(t) }),
3792            p = e.getCalculationInfo("stackResultDimension");
3793        return (n |= Zs(e, d[0])) && (d[0] = p), (n |= Zs(e, d[1])) && (d[1] = p), { dataDimsForPoint: d, valueStart: r, valueAxisDim: l, baseAxisDim: s, stacked: !!n, valueDim: u, baseDim: h, baseDataOffset: c, stackedOverDimension: e.getCalculationInfo("stackedOverDimension") }
3794    }
3795
3796    function ou(t, e) {
3797        var i = 0,
3798            n = t.scale.getExtent();
3799        return "start" === e ? i = n[0] : "end" === e ? i = n[1] : n[0] >
3799 0 ? i = n[0] : n[1] < 0 && (i = n[1]), i
3800    }
3801
3802    function au(t, e, i, n) {
3803        var o = NaN;
3804        t.stacked && (o = i.get(i.getCalculationInfo("stackedOverDimension"), n)), isNaN(o) && (o = t.valueStart);
3805        var a = t.baseDataOffset,
3806            r = [];
3807        return r[a] = i.get(t.baseDim, n), r[1 - a] = o, e.dataToPoint(r)
3808    }
3809
3810    function ru(t, e) { var i = []; return e.diff(t).add(function(t) { i.push({ cmd: "+", idx: t }) }).update(function(t, e) { i.push({ cmd: "=", idx: e, idx1: t }) }).remove(function(t) { i.push({ cmd: "-", idx: t }) }).execute(), i }
3811
3812    function su(t) { return isNaN(t[0]) || isNaN(t[1]) }
3813
3814    function lu(t, e, i, n, o, a, r, s, l, u, h) { return "none" !== u && u ? uu.apply(this, arguments) : hu.apply(this, arguments) }
3815
3816    function uu(t, e, i, n, o, a, r, s, l, u, h) {
3817        for (var c = 0, d = i, f = 0; f < n; f++) {
3818            var p = e[d];
3819            if (d >= o || d < 0) break;
3820            if (su(p)) { if (h) { d += a; continue } break }
3821            if (d === i) t[a > 0 ? "moveTo" : "lineTo"](p[0], p[1]);
3822            else if (l > 0) {
3823                var g = e[c],
3824                    m = "y" === u ? 1 : 0,
3825                    v = (p[m] - g[m]) * l;
3826                uD(cD, g), cD[m] = g[m] + v, uD(dD, p), dD[m] = p[m] - v, t.bezierCurveTo(cD[0], cD[1], dD[0], dD[1], p[0], p[1])
3827            } else t.lineTo(p[0], p[1]);
3828            c = d, d += a
3829        }
3830        return f
3831    }
3832
3833    function hu(t, e, i, n, o, a, r, s, l, u, h) {
3834        for (var c = 0, d = i, f = 0; f < n; f++) {
3835            var p = e[d];
3836            if (d >= o || d < 0) break;
3837            if (su(p)) { if (h) { d += a; continue } break }
3838            if (d === i) t[a > 0 ? "moveTo" : "lineTo"](p[0], p[1]), uD(cD, p);
3839            else if (l > 0) {
3840                var g = d + a,
3841                    m = e[g];
3842                if (h)
3843                    for (; m && su(e[g]);) m = e[g += a];
3844                var v = .5,
3845                    y = e[c];
3846                if (!(m = e[g]) || su(m)) uD(dD, p);
3847                else {
3848                    su(m) && !h && (m = p), U(hD, m, y);
3849                    var x, _;
3850                    if ("x" === u || "y" === u) {
3851                        var w = "x" === u ? 0 : 1;
3852                        x = Math.abs(p[w] - y[w]), _ = Math.abs(p[w] - m[w])
3853                    } else x = S_(p, y), _ = S_(p, m);
3854                    lD(dD, p, hD, -l * (1 - (v = _ / (_ + x))))
3855                }
3856                rD(cD, cD, s), sD(cD, cD, r), rD(dD, dD, s), sD(dD, dD, r), t.bezierCurveTo(cD[0], cD[1], dD[0], dD[1], p[0], p[1]), lD(cD, p, hD, l * v)
3857            } else t.lineTo(p[0], p[1]);
3858            c = d, d += a
3859        }
3860        return f
3861    }
3862
3863    function cu(t, e) {
3864        var i = [1 / 0, 1 / 0],
3865            n = [-1 / 0, -1 / 0];
3866        if (e)
3867            for (var o = 0; o < t.length; o++) {
3868                var a = t[o];
3869                a[0] < i[0] && (i[0] = a[0]), a[1] < i[1] && (i[1] = a[1]), a[0] > n[0] && (n[0] = a[0]), a[1] > n[1] && (n[1] = a[1])
3870            }
3871        return { min: e ? i : n, max: e ? n : i }
3872    }
3873
3874    function du(t, e) {
3875        if (t.length === e.length) {
3876            for (var i = 0; i < t.length; i++) {
3877                var n = t[i],
3878                    o = e[i];
3879                if (n[0] !== o[0] || n[1] !== o[1]) return
3880            }
3881            return !0
3882        }
3883    }
3884
3885    function fu(t) { return "number" == typeof t ? t : t ? .5 : 0 }
3886
3887    function pu(t) {
3888        var e = t.getGlobalExtent();
3889        if (t.onBand) {
3890            var i = t.getBandWidth() / 2 - 1,
3891                n = e[1] > e[0] ? 1 : -1;
3892            e[0] += n * i, e[1] -= n * i
3893        }
3894        return e
3895    }
3896
3897    function gu(t, e, i) { if (!i.valueDim) return []; for (var n = [], o = 0, a = e.count(); o < a; o++) n.push(au(i, t, e, o)); return n }
3898
3899    function mu(t, e, i, n) {
3900        var o = pu(t.getAxis("x")),
3901            a = pu(t.getAxis("y")),
3902            r = t.getBaseAxis().isHorizontal(),
3903            s = Math.min(o[0], o[1]),
3904            l = Math.min(a[0], a[1]),
3905            u = Math.max(o[0], o[1]) - s,
3906            h = Math.max(a[0], a[1]) - l;
3907        if (i) s -= .5, u += .5, l -= .5, h += .5;
3908        else {
3909            var c = n.get("lineStyle.width") || 2,
3910                d = n.get("clipOverflow") ? c / 2 : Math.max(u, h);
3911            r ? (l -= d, h += 2 * d) : (s -= d, u += 2 * d)
3912        }
3913        var f = new SS({ shape: { x: s, y: l, width: u, height: h } });
3914        return e && (f.shape[r ? "width" : "height"] = 0, po(f, { shape: { width: u, height: h } }, n)), f
3915    }
3916
3917    function vu(t, e, i, n) {
3918        var o = t.getAngleAxis(),
3919            a = t.getRadiusAxis().getExtent().slice();
3920        a[0] > a[1] && a.reverse();
3921        var r = o.getExtent(),
3922            s = Math.PI / 180;
3923        i && (a[0] -= .5, a[1] += .5);
3924        var l = new vS({ shape: { cx: Ao(t.cx, 1), cy: Ao(t.cy, 1), r0: Ao(a[0], 1), r: Ao(a[1], 1), startAngle: -r[0] * s, endAngle: -r[1] * s, clockwise: o.inverse } });
3925        return e && (l.shape.endAngle = -r[0] * s, po(l, { shape: { endAngle: -r[1] * s } }, n)), l
3926    }
3927
3928    function yu(t, e, i, n) { return "polar" === t.type ? vu(t, e, i, n) : mu(t, e, i, n) }
3929
3930    function xu(t, e, i) {
3931        for (var n = e.getBaseAxis(), o = "x" === n.dim || "radius" === n.dim ? 0 : 1, a = [], r = 0; r < t.length - 1; r++) {
3932            var s = t[r + 1],
3933                l = t[r];
3934            a.push(l);
3935            var u = [];
3936            switch (i) {
3937                case "end":
3938                    u[o] = s[o], u[1 - o] = l[1 - o], a.push(u);
3939                    break;
3940                case "middle":
3941                    var h = (l[o] + s[o]) / 2,
3942                        c = [];
3943                    u[o] = c[o] = h, u[1 - o] = l[1 - o], c[1 - o] = s[1 - o], a.push(u), a.push(c);
3944                    break;
3945                default:
3946                    u[o] = l[o], u[1 - o] = s[1 - o], a.push(u)
3947            }
3948        }
3949        return t[r] && a.push(t[r]), a
3950    }
3951
3952    function _u(t, e) {
3953        var i = t.getVisual("visualMeta");
3954        if (i && i.length && t.count() && "cartesian2d" === e.type) {
3955            for (var n, o, a = i.length - 1; a >= 0; a--) {
3956                var r = i[a].dimension,
3957                    s = t.dimensions[r],
3958                    l = t.getDimensionInfo(s);
3959                if ("x" === (n = l && l.coordDim) || "y" === n) { o = i[a]; break }
3960            }
3961            if (o) {
3962                var u = e.getAxis(n),
3963                    h = f(o.stops, function(t) { return { coord: u.toGlobalCoord(u.dataToCoord(t.value)), color: t.color } }),
3964                    c = h.length,
3965                    p = o.outerColors.slice();
3966                c && h[0].coord > h[c - 1].coord && (h.reverse(), p.reverse());
3967                var g = h[0].coord - 10,
3968                    m = h[c - 1].coord + 10,
3969                    v = m - g;
3970                if (v < .001) return "transparent";
3971                d(h, function(t) { t.offset = (t.coord - g) / v }), h.push({ offset: c ? h[c - 1].offset : .5, color: p[1] || "transparent" }), h.unshift({ offset: c ? h[0].offset : .5, color: p[0] || "transparent" });
3972                var y = new LS(0, 0, 0, 0, h, !0);
3973                return y[n] = g, y[n + "2"] = m, y
3974            }
3975        }
3976    }
3977
3978    function wu(t, e, i) {
3979        var n = t.get("showAllSymbol"),
3980            o = "auto" === n;
3981        if (!n || o) {
3982            var a = i.getAxesByScale("ordinal")[0];
3983            if (a && (!o || !bu(a, e))) {
3984                var r = e.mapDimension(a.dim),
3985                    s = {};
3986                return d(a.getViewLabels(), function(t) { s[t.tickValue] = 1 }),
3987                    function(t) { return !s.hasOwnProperty(e.get(r, t)) }
3988            }
3989        }
3990    }
3991
3992    function bu(t, e) {
3993        var i = t.getExtent(),
3994            n = Math.abs(i[1] - i[0]) / t.scale.count();
3995        isNaN(n) && (n = 0);
3996        for (var o = e.count(), a = Math.max(1, Math.round(o / 5)), r = 0; r < o; r += a)
3997            if (1.5 * Kl.getSymbolSize(e, r)[t.isHorizontal() ? 1 : 0] > n) return !1;
3998        return !0
3999    }
4000
4001    function Su(t) { return this._axes[t] }
4002
4003    function Mu(t) { xD.call(this, t) }
4004
4005    function Iu(t, e) { return e.type || (e.data ? "category" : "value") }
4006
4007    function Tu(t, e, i) { return t.getCoordSysModel() === e }
4008
4009    function Du(t, e, i) { this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this._initCartesian(t, e, i), this.model = t }
4010
4011    function Au(t, e, i) {
4012        i.getAxesOnZeroOf = function() { return n ? [n] : [] };
4013        var n, o = t[e],
4014            a = i.model,
4015            r = a.get("axisLine.onZero"),
4016            s = a.get("axisLine.onZeroAxisIndex");
4017        if (r)
4018            if (null == s) {
4019                for (var l in o)
4020                    if (o.hasOwnProperty(l) && Cu(o[l])) { n = o[l]; break }
4021            } else Cu(o[s]) && (n = o[s])
4022    }
4023
4024    function Cu(t) { return t && "category" !== t.type && "time" !== t.type && _l(t) }
4025
4026    function Lu(t, e) {
4027        var i = t.getExtent(),
4028            n = i[0] + i[1];
4029        t.toGlobalCoord = "x" === t.dim ? function(t) { return t + e } : function(t) { return n - t + e }, t.toLocalCoord = "x" === t.dim ? function(t) { return t - e } : function(t) { return n - t + e }
4030    }
4031
4032    function ku(t, e) { return f(AD, function(e) { return t.getReferringComponents(e)[0] }) }
4033
4034    function Pu(t) { return "cartesian2d" === t.get("coordinateSystem") }
4035
4036    function Nu(t) { var e = { componentType: t.mainType }; return e[t.mainType + "Index"] = t.componentIndex, e }
4037
4038    function Ou(t, e, i, n) {
4039        var o, a, r = Oo(i - t.rotation),
4040            s = n[0] > n[1],
4041            l = "start" === e && !s || "start" !== e && s;
4042        return Eo(r - CD / 2) ? (a = l ? "bottom" : "top", o = "center") : Eo(r - 1.5 * CD) ? (a = l ? "top" : "bottom", o = "center") : (a = "middle", o = r < 1.5 * CD && r > CD / 2 ? l ? "left" : "right" : l ? "right" : "left"), { rotation: r, textAlign: o, textVerticalAlign: a }
4043    }
4044
4045    function Eu(t) { var e = t.get("tooltip"); return t.get("silent") || !(t.get("triggerEvent") || e && e.show) }
4046
4047    function Ru(t, e, i) {
4048        var n = t.get("axisLabel.showMinLabel"),
4049            o = t.get("axisLabel.showMaxLabel");
4050        e = e || [], i = i || [];
4051        var a = e[0],
4052            r = e[1],
4053            s = e[e.length - 1],
4054            l = e[e.length - 2],
4055            u = i[0],
4056            h = i[1],
4057            c = i[i.length - 1],
4058            d = i[i.length - 2];
4059        !1 === n ? (zu(a), zu(u)) : Bu(a, r) && (n ? (zu(r), zu(h)) : (zu(a), zu(u))), !1 === o ? (zu(s), zu(c)) : Bu(l, s) && (o ? (zu(l), zu(d)) : (zu(s), zu(c)))
4060    }
4061
4062    function zu(t) { t && (t.ignore = !0) }
4063
4064    function Bu(t, e, i) {
4065        var n = t && t.getBoundingRect().clone(),
4066            o = e && e.getBoundingRect().clone();
4067        if (n && o) { var a = lt([]); return dt(a, a, -t.rotation), n.applyTransform(ht([], a, t.getLocalTransform())), o.applyTransform(ht([], a, e.getLocalTransform())), n.intersect(o) }
4068    }
4069
4070    function Vu(t) { return "middle" === t || "center" === t }
4071
4072    function Gu(t, e, i) {
4073        var n = e.axis;
4074        if (e.get("axisTick.show") && !n.scale.isBlank()) {
4075            for (var o = e.getModel("axisTick"), a = o.getModel("lineStyle"), s = o.get("length"), l = n.getTicksCoords(), u = [], h = [], c = t._transform, d = [], f = 0; f < l.length; f++) {
4076                var p = l[f].coord;
4077                u[0] = p, u[1] = 0, h[0] = p, h[1] = i.tickDirection * s, c && (Q(u, u, c), Q(h, h, c));
4078                var g = new MS(Gn({ anid: "tick_" + l[f].tickValue, shape: { x1: u[0], y1: u[1], x2: h[0], y2: h[1] }, style: r(a.getLineStyle(), { stroke: e.get("axisLine.lineStyle.color") }), z2: 2, silent: !0 }));
4079                t.group.add(g), d.push(g)
4080            }
4081            return d
4082        }
4083    }
4084
4085    function Wu(t, e, i) {
4086        var n = e.axis;
4087        if (T(i.axisLabelShow, e.get("axisLabel.show")) && !n.scale.isBlank()) {
4088            var o = e.getModel("axisLabel"),
4089                a = o.get("margin"),
4090                r = n.getViewLabels(),
4091                s = (T(i.labelRotate, o.get("rotate")) || 0) * CD / 180,
4092                l = PD(i.rotation, s, i.labelDirection),
4093                u = e.getCategories(!0),
4094                h = [],
4095                c = Eu(e),
4096                f = e.get("triggerEvent");
4097            return d(r, function(r, s) {
4098                var d = r.tickValue,
4099                    p = r.formattedLabel,
4100                    g = r.rawLabel,
4101                    m = o;
4102                u && u[d] && u[d].textStyle && (m = new wo(u[d].textStyle, o, e.ecModel));
4103                var v = m.getTextColor() || e.get("axisLine.lineStyle.color"),
4104                    y = [n.dataToCoord(d), i.labelOffset + i.labelDirection * a],
4105                    x = new fS({ anid: "label_" + d, position: y, rotation: l.rotation, silent: c, z2: 10 });
4106                no(x.style, m, { text: p, textAlign: m.getShallow("align", !0) || l.textAlign, textVerticalAlign: m.getShallow("verticalAlign", !0) || m.getShallow("baseline", !0) || l.textVerticalAlign, textFill: "function" == typeof v ? v("category" === n.type ? g : "value" === n.type ? d + "" : d, s) : v }), f && (x.eventData = Nu(e), x.eventData.targetType = "axisLabel", x.eventData.value = g), t._dumbGroup.add(x), x.updateTransform(), h.push(x), t.group.add(x), x.decomposeTransform()
4107            }), h
4108        }
4109    }
4110
4111    function Fu(t, e) { var i = { axesInfo: {}, seriesInvolved: !1, coordSysAxesInfo: {}, coordSysMap: {} }; return Hu(i, t, e), i.seriesInvolved && Uu(i, t), i }
4112
4113    function Hu(t, e, i) {
4114        var n = e.getComponent("tooltip"),
4115            o = e.getComponent("axisPointer"),
4116            a = o.get("link", !0) || [],
4117            r = [];
4118        ND(i.getCoordinateSystems(), function(i) {
4119            function s(n, s, l) {
4120                var c = l.model.getModel("axisPointer", o),
4121                    d = c.get("show");
4122                if (d && ("auto" !== d || n || $u(c))) {
4123                    null == s && (s = c.get("triggerTooltip"));
4124                    var f = (c = n ? Zu(l, h, o, e, n, s) : c).get("snap"),
4125                        p = Ju(l.model),
4126                        g = s || f || "category" === l.type,
4127                        m = t.axesInfo[p] = { key: p, axis: l, coordSys: i, axisPointerModel: c, triggerTooltip: s, involveSeries: g, snap: f, useHandle: $u(c), seriesModels: [] };
4128                    u[p] = m, t.seriesInvolved |= g;
4129                    var v = Xu(a, l);
4130                    if (null != v) {
4131                        var y = r[v] || (r[v] = { axesInfo: {} });
4132                        y.axesInfo[p] = m, y.mapper = a[v].mapper, m.linkGroup = y
4133                    }
4134                }
4135            }
4136            if (i.axisPointerEnabled) {
4137                var l = Ju(i.model),
4138                    u = t.coordSysAxesInfo[l] = {};
4139                t.coordSysMap[l] = i;
4140                var h = i.model.getModel("tooltip", n);
4141                if (ND(i.getAxes(), OD(s, !1, null)), i.getTooltipAxes && n && h.get("show")) {
4142                    var c = "axis" === h.get("trigger"),
4143                        d = "cross" === h.get("axisPointer.type"),
4144                        f = i.getTooltipAxes(h.get("axisPointer.axis"));
4145                    (c || d) && ND(f.baseAxes, OD(s, !d || "cross", c)), d && ND(f.otherAxes, OD(s, "cross", !1))
4146                }
4147            }
4148        })
4149    }
4150
4151    function Zu(t, e, n, o, a, s) {
4152        var l = e.getModel("axisPointer"),
4153            u = {};
4154        ND(["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"], function(t) { u[t] = i(l.get(t)) }), u.snap = "category" !== t.type && !!s, "cross" === l.get("type") && (u.type = "line");
4155        var h = u.label || (u.label = {});
4156        if (null == h.show && (h.show = !1), "cross" === a) {
4157            var c = l.get("label.show");
4158            if (h.show = null == c || c, !s) {
4159                var d = u.lineStyle = l.get("crossStyle");
4160                d && r(h, d.textStyle)
4161            }
4162        }
4163        return t.model.getModel("axisPointer", new wo(u, n, o))
4164    }
4165
4166    function Uu(t, e) {
4167        e.eachSeries(function(e) {
4168            var i = e.coordinateSystem,
4169                n = e.get("tooltip.trigger", !0),
4170                o = e.get("tooltip.show", !0);
4171            i && "none" !== n && !1 !== n && "item" !== n && !1 !== o && !1 !== e.get("axisPointer.show", !0) && ND(t.coordSysAxesInfo[Ju(i.model)], function(t) {
4172                var n = t.axis;
4173                i.getAxis(n.dim) === n && (t.seriesModels.push(e), null == t.seriesDataCount && (t.seriesDataCount = 0), t.seriesDataCount += e.getData().count())
4174            })
4175        }, this)
4176    }
4177
4178    function Xu(t, e) { for (var i = e.model, n = e.dim, o = 0; o < t.length; o++) { var a = t[o] || {}; if (ju(a[n + "AxisId"], i.id) || ju(a[n + "AxisIndex"], i.componentIndex) || ju(a[n + "AxisName"], i.name)) return o } }
4179
4180    function ju(t, e) { return "all" === t || y(t) && l(t, e) >= 0 || t === e }
4181
4182    function Yu(t) {
4183        var e = qu(t);
4184        if (e) {
4185            var i = e.axisPointerModel,
4186                n = e.axis.scale,
4187                o = i.option,
4188                a = i.get("status"),
4189                r = i.get("value");
4190            null != r && (r = n.parse(r));
4191            var s = $u(i);
4192            null == a && (o.status = s ? "show" : "hide");
4193            var l = n.getExtent().slice();
4194            l[0] > l[1] && l.reverse(), (null == r || r > l[1]) && (r = l[1]), r < l[0] && (r = l[0]), o.value = r, s && (o.status = e.axis.scale.isBlank() ? "hide" : "show")
4195        }
4196    }
4197
4198    function qu(t) { var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; return e && e.axesInfo[Ju(t)] }
4199
4200    function Ku(t) { var e = qu(t); return e && e.axisPointerModel }
4201
4202    function $u(t) { return !!t.get("handle.show") }
4203
4204    function Ju(t) { return t.type + "||" + t.id }
4205
4206    function Qu(t, e, i, n, o, a) {
4207        var r = ED.getAxisPointerClass(t.axisPointerClass);
4208        if (r) {
4209            var s = Ku(e);
4210            s ? (t._axisPointer || (t._axisPointer = new r)).render(e, s, n, a) : th(t, n)
4211        }
4212    }
4213
4214    function th(t, e, i) {
4215        var n = t._axisPointer;
4216        n && n.dispose(e, i), t._axisPointer = null
4217    }
4218
4219    function eh(t, e, i) {
4220        i = i || {};
4221        var n = t.coordinateSystem,
4222            o = e.axis,
4223            a = {},
4224            r = o.getAxesOnZeroOf()[0],
4225            s = o.position,
4226            l = r ? "onZero" : s,
4227            u = o.dim,
4228            h = n.getRect(),
4229            c = [h.x, h.x + h.width, h.y, h.y + h.height],
4230            d = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 },
4231            f = e.get("offset") || 0,
4232            p = "x" === u ? [c[2] - f, c[3] + f] : [c[0] - f, c[1] + f];
4233        if (r) {
4234            var g = r.toGlobalCoord(r.dataToCoord(0));
4235            p[d.onZero] = Math.max(Math.min(g, p[1]), p[0])
4236        }
4237        a.position = ["y" === u ? p[d[l]] : c[0], "x" === u ? p[d[l]] : c[3]], a.rotation = Math.PI / 2 * ("x" === u ? 0 : 1);
4238        var m = { top: -1, bottom: 1, left: -1, right: 1 };
4239        a.labelDirection = a.tickDirection = a.nameDirection = m[s], a.labelOffset = r ? p[d[s]] - p[d.onZero] : 0, e.get("axisTick.inside") && (a.tickDirection = -a.tickDirection), T(i.labelInside, e.get("axisLabel.inside")) && (a.labelDirection = -a.labelDirection);
4240        var v = e.get("axisLabel.rotate");
4241        return a.labelRotate = "top" === l ? -v : v, a.z2 = 1, a
4242    }
4243
4244    function ih(t, e, i, n, o, a, r) { io(t, e, i.getModel("label"), i.getModel("emphasis.label"), { labelFetcher: o, labelDataIndex: a, defaultText: ql(o.getData(), a), isRectText: !0, autoColor: n }), nh(t), nh(e) }
4245
4246    function nh(t, e) { "outside" === t.textPosition && (t.textPosition = e) }
4247
4248    function oh(t, e, i) { i.style.text = null, fo(i, { shape: { width: 0 } }, e, t, function() { i.parent && i.parent.remove(i) }) }
4249
4250    function ah(t, e, i) { i.style.text = null, fo(i, { shape: { r: i.shape.r0 } }, e, t, function() { i.parent && i.parent.remove(i) }) }
4251
4252    function rh(t, e, i, n, o, a, s, l) {
4253        var u = e.getItemVisual(i, "color"),
4254            h = e.getItemVisual(i, "opacity"),
4255            c = n.getModel("itemStyle"),
4256            d = n.getModel("emphasis.itemStyle").getBarItemStyle();
4257        l || t.setShape("r", c.get("barBorderRadius") || 0), t.useStyle(r({ fill: u, opacity: h }, c.getBarItemStyle()));
4258        var f = n.getShallow("cursor");
4259        f && t.attr("cursor", f);
4260        var p = s ? o.height > 0 ? "bottom" : "top" : o.width > 0 ? "left" : "right";
4261        l || ih(t.style, d, n, u, a, i, p), eo(t, d)
4262    }
4263
4264    function sh(t, e) { var i = t.get(HD) || 0; return Math.min(i, Math.abs(e.width), Math.abs(e.height)) }
4265
4266    function lh(t, e, i) {
4267        var n = t.getData(),
4268            o = [],
4269            a = n.getLayout("valueAxisHorizontal") ? 1 : 0;
4270        o[1 - a] = n.getLayout("valueAxisStart");
4271        var r = new XD({ shape: { points: n.getLayout("largePoints") }, incremental: !!i, __startPoint: o, __valueIdx: a });
4272        e.add(r), uh(r, t, n)
4273    }
4274
4275    function uh(t, e, i) {
4276        var n = i.getVisual("borderColor") || i.getVisual("color"),
4277            o = e.getModel("itemStyle").getItemStyle(["color", "borderColor"]);
4278        t.useStyle(o), t.style.fill = null, t.style.stroke = n, t.style.lineWidth = i.getLayout("barWidth")
4279    }
4280
4281    function hh(t, e, i, n) {
4282        var o = e.getData(),
4283            a = this.dataIndex,
4284            r = o.getName(a),
4285            s = e.get("selectedOffset");
4286        n.dispatchAction({ type: "pieToggleSelect", from: t, name: r, seriesId: e.id }), o.each(function(t) { ch(o.getItemGraphicEl(t), o.getItemLayout(t), e.isSelected(o.getName(t)), s, i) })
4287    }
4288
4289    function ch(t, e, i, n, o) {
4290        var a = (e.startAngle + e.endAngle) / 2,
4291            r = Math.cos(a),
4292            s = Math.sin(a),
4293            l = i ? n : 0,
4294            u = [r * l, s * l];
4295        o ? t.animate().when(200, { position: u }).start("bounceOut") : t.attr("position", u)
4296    }
4297
4298    function dh(t, e) {
4299        function i() { a.ignore = a.hoverIgnore, r.ignore = r.hoverIgnore }
4300
4301        function n() { a.ignore = a.normalIgnore, r.ignore = r.normalIgnore }
4302        sw.call(this);
4303        var o = new vS({ z2: 2 }),
4304            a = new bS,
4305            r = new fS;
4306        this.add(o), this.add(a), this.add(r), this.updateData(t, e, !0), this.on("emphasis", i).on("normal", n).on("mouseover", i).on("mouseout", n)
4307    }
4308
4309    function fh(t, e, i, n, o, a, r) {
4310        function s(e, i) { for (var n = e; n >= 0 && (t[n].y -= i, !(n > 0 && t[n].y > t[n - 1].y + t[n - 1].height)); n--); }
4311
4312        function l(t, e, i, n, o, a) {
4313            for (var r = e ? Number.MAX_VALUE : 0, s = 0, l = t.length; s < l; s++)
4314                if ("center" !== t[s].position) {
4315                    var u = Math.abs(t[s].y - n),
4316                        h = t[s].len,
4317                        c = t[s].len2,
4318                        d = u < o + h ? Math.sqrt((o + h + c) * (o + h + c) - u * u) : Math.abs(t[s].x - i);
4319                    e && d >= r && (d = r - 10), !e && d <= r && (d = r + 10), t[s].x = i + d * a, r = d
4320                }
4321        }
4322        t.sort(function(t, e) { return t.y - e.y });
4323        for (var u, h = 0, c = t.length, d = [], f = [], p = 0; p < c; p++)(u = t[p].y - h) < 0 && function(e, i, n, o) {
4324            for (var a = e; a < i; a++)
4325                if (t[a].y += n, a > e && a + 1 < i && t[a + 1].y > t[a].y + t[a].height) return void s(a, n / 2);
4326            s(i - 1, n / 2)
4327        }(p, c, -u), h = t[p].y + t[p].height;
4328        r - h < 0 && s(c - 1, h - r);
4329        for (p = 0; p < c; p++) t[p].y >= i ? f.push(t[p]) : d.push(t[p]);
4330        l(d, !1, e, i, n, o), l(f, !0, e, i, n, o)
4331    }
4332
4333    function ph(t, e, i, n, o, a) {
4334        for (var r = [], s = [], l = 0; l < t.length; l++) t[l].x < e ? r.push(t[l]) : s.push(t[l]);
4335        fh(s, e, i, n, 1, o, a), fh(r, e, i, n, -1, o, a);
4336        for (l = 0; l < t.length; l++) {
4337            var u = t[l].linePoints;
4338            if (u) {
4339                var h = u[1][0] - u[2][0];
4340                t[l].x < e ? u[2][0] = t[l].x + 3 : u[2][0] = t[l].x - 3, u[1][1] = u[2][1] = t[l].y, u[1][0] = u[2][0] + h
4341            }
4342        }
4343    }
4344
4345    function gh() { this.group = new sw }
4346
4347    function mh(t, e, i) { qT.call(this, t, e, i), this.type = "value", this.angle = 0, this.name = "", this.model }
4348
4349    function vh(t, e, i) {
4350        this._model = t, this.dimensions = [], this._indicatorAxes = f(t.getIndicatorModels(), function(t, e) {
4351            var i = "indicator_" + e,
4352                n = new mh(i, new mT);
4353            return n.name = t.get("name"), n.model = t, t.axis = n, this.dimensions.push(i), n
4354        }, this), this.resize(t, i), this.cx, this.cy, this.r, this.startAngle
4355    }
4356
4357    function yh(t, e) { return r({ show: e }, t) }
4358
4359    function xh(t) { return y(t) || (t = [+t, +t]), t }
4360
4361    function _h() { E_.call(this) }
4362
4363    function wh(t) { this.name = t, this.zoomLimit, E_.call(this), this._roamTransformable = new _h, this._rawTransformable = new _h, this._center, this._zoom }
4364
4365    function bh(t, e, i, n) {
4366        var o = i.seriesModel,
4367            a = o ? o.coordinateSystem : null;
4368        return a === this ? a[t](n) : null
4369    }
4370
4371    function Sh(t, e, i, n, o) { wh.call(this, t), this.map = e, this._nameCoordMap = R(), this.loadGeoJson(i, n, o) }
4372
4373    function Mh(t, e, i, n) {
4374        var o = i.geoModel,
4375            a = i.seriesModel,
4376            r = o ? o.coordinateSystem : a ? a.coordinateSystem || (a.getReferringComponents("geo")[0] || {}).coordinateSystem : null;
4377        return r === this ? r[t](n) : null
4378    }
4379
4380    function Ih(t, e) {
4381        var i = t.get("boundingCoords");
4382        if (null != i) {
4383            var n = i[0],
4384                o = i[1];
4385            isNaN(n[0]) || isNaN(n[1]) || isNaN(o[0]) || isNaN(o[1]) || this.setBoundingRect(n[0], n[1], o[0] - n[0], o[1] - n[1])
4386        }
4387        var a, r = this.getBoundingRect(),
4388            s = t.get("layoutCenter"),
4389            l = t.get("layoutSize"),
4390            u = e.getWidth(),
4391            h = e.getHeight(),
4392            c = t.get("aspectScale") || .75,
4393            d = r.width / r.height * c,
4394            f = !1;
4395        s && l && (s = [Do(s[0], u), Do(s[1], h)], l = Do(l, Math.min(u, h)), isNaN(s[0]) || isNaN(s[1]) || isNaN(l) || (f = !0));
4396        if (f) {
4397            var p = {};
4398            d > 1 ? (p.width = l, p.height = l / d) : (p.height = l, p.width = l * d), p.y = s[1] - p.height / 2, p.x = s[0] - p.width / 2
4399        } else(a = t.getBoxLayoutParams()).aspect = d, p = Qo(a, { width: u, height: h });
4400        this.setViewRect(p.x, p.y, p.width, p.height), this.setCenter(t.get("center")), this.setZoom(t.get("zoom"))
4401    }
4402
4403    function Th(t, e) { d(e.get("geoCoord"), function(e, i) { t.addGeoCoord(i, e) }) }
4404
4405    function Dh(t, e, i) { Lh(t)[e] = i }
4406
4407    function Ah(t, e, i) {
4408        var n = Lh(t);
4409        n[e] === i && (n[e] = null)
4410    }
4411
4412    function Ch(t, e) { return !!Lh(t)[e] }
4413
4414    function Lh(t) { return t[xA] || (t[xA] = {}) }
4415
4416    function kh(t) {
4417        this.pointerChecker, this._zr = t, this._opt = {};
4418        var e = m,
4419            n = e(Ph, this),
4420            o = e(Nh, this),
4421            a = e(Oh, this),
4422            s = e(Eh, this),
4423            l = e(Rh, this);
4424        D_.call(this), this.setPointerChecker = function(t) { this.pointerChecker = t }, this.enable = function(e, u) { this.disable(), this._opt = r(i(u) || {}, { zoomOnMouseWheel: !0, moveOnMouseMove: !0, preventDefaultMouseMove: !0 }), null == e && (e = !0), !0 !== e && "move" !== e && "pan" !== e || (t.on("mousedown", n), t.on("mousemove", o), t.on("mouseup", a)), !0 !== e && "scale" !== e && "zoom" !== e || (t.on("mousewheel", s), t.on("pinch", l)) }, this.disable = function() { t.off("mousedown", n), t.off("mousemove", o), t.off("mouseup", a), t.off("mousewheel", s), t.off("pinch", l) }, this.dispose = this.disable, this.isDragging = function() { return this._dragging }, this.isPinching = function() { return this._pinching }
4425    }
4426
4427    function Ph(t) {
4428        if (!(ci(t) || t.target && t.target.draggable)) {
4429            var e = t.offsetX,
4430                i = t.offsetY;
4431            this.pointerChecker && this.pointerChecker(t, e, i) && (this._x = e, this._y = i, this._dragging = !0)
4432        }
4433    }
4434
4435    function Nh(t) {
4436        if (!ci(t) && Bh(this, "moveOnMouseMove", t) && this._dragging && "pinch" !== t.gestureEvent && !Ch(this._zr, "globalPan")) {
4437            var e = t.offsetX,
4438                i = t.offsetY,
4439                n = this._x,
4440                o = this._y,
4441                a = e - n,
4442                r = i - o;
4443            this._x = e, this._y = i, this._opt.preventDefaultMouseMove && zw(t.event), this.trigger("pan", a, r, n, o, e, i)
4444        }
4445    }
4446
4447    function Oh(t) { ci(t) || (this._dragging = !1) }
4448
4449    function Eh(t) {
4450        if (Bh(this, "zoomOnMouseWheel", t) && 0 !== t.wheelDelta) {
4451            var e = t.wheelDelta > 0 ? 1.1 : 1 / 1.1;
4452            zh.call(this, t, e, t.offsetX, t.offsetY)
4453        }
4454    }
4455
4456    function Rh(t) {
4457        if (!Ch(this._zr, "globalPan")) {
4458            var e = t.pinchScale > 1 ? 1.1 : 1 / 1.1;
4459            zh.call(this, t, e, t.pinchX, t.pinchY)
4460        }
4461    }
4462
4463    function zh(t, e, i, n) { this.pointerChecker && this.pointerChecker(t, i, n) && (zw(t.event), this.trigger("zoom", e, i, n)) }
4464
4465    function Bh(t, e, i) { var n = t._opt[e]; return n && (!_(n) || i.event[n + "Key"]) }
4466
4467    function Vh(t, e, i) {
4468        var n = t.target,
4469            o = n.position;
4470        o[0] += e, o[1] += i, n.dirty()
4471    }
4472
4473    function Gh(t, e, i, n) {
4474        var o = t.target,
4475            a = t.zoomLimit,
4476            r = o.position,
4477            s = o.scale,
4478            l = t.zoom = t.zoom || 1;
4479        if (l *= e, a) {
4480            var u = a.min || 0,
4481                h = a.max || 1 / 0;
4482            l = Math.max(Math.min(h, l), u)
4483        }
4484        var c = l / t.zoom;
4485        t.zoom = l, r[0] -= (i - r[0]) * (c - 1), r[1] -= (n - r[1]) * (c - 1), s[0] *= c, s[1] *= c, o.dirty()
4486    }
4487
4488    function Wh(t, e, i) {
4489        var n = e.getComponentByElement(t.topTarget),
4490            o = n && n.coordinateSystem;
4491        return n && n !== i && !_A[n.mainType] && o && o.model !== i
4492    }
4493
4494    function Fh(t, e) {
4495        var i = t.getItemStyle(),
4496            n = t.get("areaColor");
4497        return null != n && (i.fill = n), i
4498    }
4499
4500    function Hh(t, e, i, n, o) {
4501        i.off("click"), i.off("mousedown"), e.get("selectedMode") && (i.on("mousedown", function() { t._mou
4501seDownFlag = !0 }), i.on("click", function(a) {
4502            if (t._mouseDownFlag) {
4503                t._mouseDownFlag = !1;
4504                for (var r = a.target; !r.__regions;) r = r.parent;
4505                if (r) {
4506                    var s = { type: ("geo" === e.mainType ? "geo" : "map") + "ToggleSelect", batch: f(r.__regions, function(t) { return { name: t.name, from: o.uid } }) };
4507                    s[e.mainType + "Id"] = e.id, n.dispatchAction(s), Zh(e, i)
4508                }
4509            }
4510        }))
4511    }
4512
4513    function Zh(t, e) { e.eachChild(function(e) { d(e.__regions, function(i) { e.trigger(t.isSelected(i.name) ? "emphasis" : "normal") }) }) }
4514
4515    function Uh(t, e) {
4516        var i = new sw;
4517        this._controller = new kh(t.getZr()), this._controllerHost = { target: e ? i : null }, this.group = i, this._updateGroup = e, this._mouseDownFlag
4518    }
4519
4520    function Xh(t, e, i) {
4521        var n = t.getZoom(),
4522            o = t.getCenter(),
4523            a = e.zoom,
4524            r = t.dataToPoint(o);
4525        if (null != e.dx && null != e.dy) {
4526            r[0] -= e.dx, r[1] -= e.dy;
4527            o = t.pointToData(r);
4528            t.setCenter(o)
4529        }
4530        if (null != a) {
4531            if (i) {
4532                var s = i.min || 0,
4533                    l = i.max || 1 / 0;
4534                a = Math.max(Math.min(n * a, l), s) / n
4535            }
4536            t.scale[0] *= a, t.scale[1] *= a;
4537            var u = t.position,
4538                h = (e.originX - u[0]) * (a - 1),
4539                c = (e.originY - u[1]) * (a - 1);
4540            u[0] -= h, u[1] -= c, t.updateTransform();
4541            o = t.pointToData(r);
4542            t.setCenter(o), t.setZoom(a * n)
4543        }
4544        return { center: t.getCenter(), zoom: t.getZoom() }
4545    }
4546
4547    function jh(t, e) {
4548        var i = {};
4549        return d(t, function(t) {
4550            t.each(t.mapDimension("value"), function(e, n) {
4551                var o = "ec-" + t.getName(n);
4552                i[o] = i[o] || [], isNaN(e) || i[o].push(e)
4553            })
4554        }), t[0].map(t[0].mapDimension("value"), function(n, o) { for (var a = "ec-" + t[0].getName(o), r = 0, s = 1 / 0, l = -1 / 0, u = i[a].length, h = 0; h < u; h++) s = Math.min(s, i[a][h]), l = Math.max(l, i[a][h]), r += i[a][h]; var c; return c = "min" === e ? s : "max" === e ? l : "average" === e ? r / u : r, 0 === u ? NaN : c })
4555    }
4556
4557    function Yh(t) {
4558        var e = t.mainData,
4559            i = t.datas;
4560        i || (i = { main: e }, t.datasAttr = { main: "data" }), t.datas = t.mainData = null, tc(e, i, t), wA(i, function(i) { wA(e.TRANSFERABLE_METHODS, function(e) { i.wrapMethod(e, v(qh, t)) }) }), e.wrapMethod("cloneShallow", v($h, t)), wA(e.CHANGABLE_METHODS, function(i) { e.wrapMethod(i, v(Kh, t)) }), k(i[e.dataType] === e)
4561    }
4562
4563    function qh(t, e) {
4564        if (Qh(this)) {
4565            var i = a({}, this[bA]);
4566            i[this.dataType] = e, tc(e, i, t)
4567        } else ec(e, this.dataType, this[SA], t);
4568        return e
4569    }
4570
4571    function Kh(t, e) { return t.struct && t.struct.update(this), e }
4572
4573    function $h(t, e) { return wA(e[bA], function(i, n) { i !== e && ec(i.cloneShallow(), n, e, t) }), e }
4574
4575    function Jh(t) { var e = this[SA]; return null == t || null == e ? e : e[bA][t] }
4576
4577    function Qh(t) { return t[SA] === t }
4578
4579    function tc(t, e, i) { t[bA] = {}, wA(e, function(e, n) { ec(e, n, t, i) }) }
4580
4581    function ec(t, e, i, n) { i[bA][e] = t, t[SA] = i, t.dataType = e, n.struct && (t[n.structAttr] = n.struct, n.struct[n.datasAttr[e]] = t), t.getLinkedData = Jh }
4582
4583    function ic(t, e, i) { this.root, this.data, this._nodes = [], this.hostModel = t, this.levelModels = f(e || [], function(e) { return new wo(e, t, t.ecModel) }), this.leavesModel = new wo(i || {}, t, t.ecModel) }
4584
4585    function nc(t, e) {
4586        var i = e.children;
4587        t.parentNode !== e && (i.push(t), t.parentNode = e)
4588    }
4589
4590    function oc(t) {
4591        t.hierNode = { defaultAncestor: null, ancestor: t, prelim: 0, modifier: 0, change: 0, shift: 0, i: 0, thread: null };
4592        for (var e, i, n = [t]; e = n.pop();)
4593            if (i = e.children, e.isExpand && i.length)
4594                for (var o = i.length - 1; o >= 0; o--) {
4595                    var a = i[o];
4596                    a.hierNode = { defaultAncestor: null, ancestor: a, prelim: 0, modifier: 0, change: 0, shift: 0, i: o, thread: null }, n.push(a)
4597                }
4598    }
4599
4600    function ac(t, e) {
4601        var i = t.isExpand ? t.children : [],
4602            n = t.parentNode.children,
4603            o = t.hierNode.i ? n[t.hierNode.i - 1] : null;
4604        if (i.length) {
4605            hc(t);
4606            var a = (i[0].hierNode.prelim + i[i.length - 1].hierNode.prelim) / 2;
4607            o ? (t.hierNode.prelim = o.hierNode.prelim + e(t, o), t.hierNode.modifier = t.hierNode.prelim - a) : t.hierNode.prelim = a
4608        } else o && (t.hierNode.prelim = o.hierNode.prelim + e(t, o));
4609        t.parentNode.hierNode.defaultAncestor = cc(t, o, t.parentNode.hierNode.defaultAncestor || n[0], e)
4610    }
4611
4612    function rc(t) {
4613        var e = t.hierNode.prelim + t.parentNode.hierNode.modifier;
4614        t.setLayout({ x: e }, !0), t.hierNode.modifier += t.parentNode.hierNode.modifier
4615    }
4616
4617    function sc(t) { return arguments.length ? t : mc }
4618
4619    function lc(t, e) { var i = {}; return t -= Math.PI / 2, i.x = e * Math.cos(t), i.y = e * Math.sin(t), i }
4620
4621    function uc(t, e) { return Qo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) }
4622
4623    function hc(t) {
4624        for (var e = t.children, i = e.length, n = 0, o = 0; --i >= 0;) {
4625            var a = e[i];
4626            a.hierNode.prelim += n, a.hierNode.modifier += n, o += a.hierNode.change, n += a.hierNode.shift + o
4627        }
4628    }
4629
4630    function cc(t, e, i, n) {
4631        if (e) {
4632            for (var o = t, a = t, r = a.parentNode.children[0], s = e, l = o.hierNode.modifier, u = a.hierNode.modifier, h = r.hierNode.modifier, c = s.hierNode.modifier; s = dc(s), a = fc(a), s && a;) {
4633                o = dc(o), r = fc(r), o.hierNode.ancestor = t;
4634                var d = s.hierNode.prelim + c - a.hierNode.prelim - u + n(s, a);
4635                d > 0 && (gc(pc(s, t, i), t, d), u += d, l += d), c += s.hierNode.modifier, u += a.hierNode.modifier, l += o.hierNode.modifier, h += r.hierNode.modifier
4636            }
4637            s && !dc(o) && (o.hierNode.thread = s, o.hierNode.modifier += c - l), a && !fc(r) && (r.hierNode.thread = a, r.hierNode.modifier += u - h, i = t)
4638        }
4639        return i
4640    }
4641
4642    function dc(t) { var e = t.children; return e.length && t.isExpand ? e[e.length - 1] : t.hierNode.thread }
4643
4644    function fc(t) { var e = t.children; return e.length && t.isExpand ? e[0] : t.hierNode.thread }
4645
4646    function pc(t, e, i) { return t.hierNode.ancestor.parentNode === e.parentNode ? t.hierNode.ancestor : i }
4647
4648    function gc(t, e, i) {
4649        var n = i / (e.hierNode.i - t.hierNode.i);
4650        e.hierNode.change -= n, e.hierNode.shift += i, e.hierNode.modifier += i, e.hierNode.prelim += i, t.hierNode.change += n
4651    }
4652
4653    function mc(t, e) { return t.parentNode === e.parentNode ? 1 : 2 }
4654
4655    function vc(t, e) { var i = t.getItemLayout(e); return i && !isNaN(i.x) && !isNaN(i.y) && "none" !== t.getItemVisual(e, "symbol") }
4656
4657    function yc(t, e, i) { return i.itemModel = e, i.itemStyle = e.getModel("itemStyle").getItemStyle(), i.hoverItemStyle = e.getModel("emphasis.itemStyle").getItemStyle(), i.lineStyle = e.getModel("lineStyle").getLineStyle(), i.labelModel = e.getModel("label"), i.hoverLabelModel = e.getModel("emphasis.label"), !1 === t.isExpand && 0 !== t.children.length ? i.symbolInnerColor = i.itemStyle.fill : i.symbolInnerColor = "#fff", i }
4658
4659    function xc(t, e, i, n, o, a) {
4660        var s = !i,
4661            l = t.tree.getNodeByDataIndex(e),
4662            a = yc(l, l.getModel(), a),
4663            u = t.tree.root,
4664            h = l.parentNode === u ? l : l.parentNode || l,
4665            c = t.getItemGraphicEl(h.dataIndex),
4666            d = h.getLayout(),
4667            f = c ? { x: c.position[0], y: c.position[1], rawX: c.__radialOldRawX, rawY: c.__radialOldRawY } : d,
4668            p = l.getLayout();
4669        s ? (i = new Kl(t, e, a)).attr("position", [f.x, f.y]) : i.updateData(t, e, a), i.__radialOldRawX = i.__radialRawX, i.__radialOldRawY = i.__radialRawY, i.__radialRawX = p.rawX, i.__radialRawY = p.rawY, n.add(i), t.setItemGraphicEl(e, i), fo(i, { position: [p.x, p.y] }, o);
4670        var g = i.getSymbolPath();
4671        if ("radial" === a.layout) {
4672            var m, v, y = u.children[0],
4673                x = y.getLayout(),
4674                _ = y.children.length;
4675            if (p.x === x.x && !0 === l.isExpand) {
4676                var w = {};
4677                w.x = (y.children[0].getLayout().x + y.children[_ - 1].getLayout().x) / 2, w.y = (y.children[0].getLayout().y + y.children[_ - 1].getLayout().y) / 2, (m = Math.atan2(w.y - x.y, w.x - x.x)) < 0 && (m = 2 * Math.PI + m), (v = w.x < x.x) && (m -= Math.PI)
4678            } else(m = Math.atan2(p.y - x.y, p.x - x.x)) < 0 && (m = 2 * Math.PI + m), 0 === l.children.length || 0 !== l.children.length && !1 === l.isExpand ? (v = p.x < x.x) && (m -= Math.PI) : (v = p.x > x.x) || (m -= Math.PI);
4679            var b = v ? "left" : "right";
4680            g.setStyle({ textPosition: b, textRotation: -m, textOrigin: "center", verticalAlign: "middle" })
4681        }
4682        if (l.parentNode && l.parentNode !== u) {
4683            var S = i.__edge;
4684            S || (S = i.__edge = new TS({ shape: wc(a, f, f), style: r({ opacity: 0 }, a.lineStyle) })), fo(S, { shape: wc(a, d, p), style: { opacity: 1 } }, o), n.add(S)
4685        }
4686    }
4687
4688    function _c(t, e, i, n, o, a) {
4689        for (var r, s = t.tree.getNodeByDataIndex(e), l = t.tree.root, a = yc(s, s.getModel(), a), u = s.parentNode === l ? s : s.parentNode || s; null == (r = u.getLayout());) u = u.parentNode === l ? u : u.parentNode || u;
4690        fo(i, { position: [r.x + 1, r.y + 1] }, o, function() { n.remove(i), t.setItemGraphicEl(e, null) }), i.fadeOut(null, { keepLabel: !0 });
4691        var h = i.__edge;
4692        h && fo(h, { shape: wc(a, r, r), style: { opacity: 0 } }, o, function() { n.remove(h) })
4693    }
4694
4695    function wc(t, e, i) {
4696        var n, o, a, r, s = t.orient;
4697        if ("radial" === t.layout) {
4698            var l = e.rawX,
4699                u = e.rawY,
4700                h = i.rawX,
4701                c = i.rawY,
4702                d = lc(l, u),
4703                f = lc(l, u + (c - u) * t.curvature),
4704                p = lc(h, c + (u - c) * t.curvature),
4705                g = lc(h, c);
4706            return { x1: d.x, y1: d.y, x2: g.x, y2: g.y, cpx1: f.x, cpy1: f.y, cpx2: p.x, cpy2: p.y }
4707        }
4708        var l = e.x,
4709            u = e.y,
4710            h = i.x,
4711            c = i.y;
4712        return "LR" !== s && "RL" !== s || (n = l + (h - l) * t.curvature, o = u, a = h + (l - h) * t.curvature, r = c), "TB" !== s && "BT" !== s || (n = l, o = u + (c - u) * t.curvature, a = h, r = c + (u - c) * t.curvature), { x1: l, y1: u, x2: h, y2: c, cpx1: n, cpy1: o, cpx2: a, cpy2: r }
4713    }
4714
4715    function bc(t, e, i) {
4716        for (var n, o = [t], a = []; n = o.pop();)
4717            if (a.push(n), n.isExpand) {
4718                var r = n.children;
4719                if (r.length)
4720                    for (var s = 0; s < r.length; s++) o.push(r[s])
4721            }
4722        for (; n = a.pop();) e(n, i)
4723    }
4724
4725    function Sc(t, e) {
4726        for (var i, n = [t]; i = n.pop();)
4727            if (e(i), i.isExpand) {
4728                var o = i.children;
4729                if (o.length)
4730                    for (var a = o.length - 1; a >= 0; a--) n.push(o[a])
4731            }
4732    }
4733
4734    function Mc(t, e) {
4735        var i = uc(t, e);
4736        t.layoutInfo = i;
4737        var n = t.get("layout"),
4738            o = 0,
4739            a = 0,
4740            r = null;
4741        "radial" === n ? (o = 2 * Math.PI, a = Math.min(i.height, i.width) / 2, r = sc(function(t, e) { return (t.parentNode === e.parentNode ? 1 : 2) / t.depth })) : (o = i.width, a = i.height, r = sc());
4742        var s = t.getData().tree.root,
4743            l = s.children[0];
4744        if (l) {
4745            oc(s), bc(l, ac, r), s.hierNode.modifier = -l.hierNode.prelim, Sc(l, rc);
4746            var u = l,
4747                h = l,
4748                c = l;
4749            Sc(l, function(t) {
4750                var e = t.getLayout().x;
4751                e < u.getLayout().x && (u = t), e > h.getLayout().x && (h = t), t.depth > c.depth && (c = t)
4752            });
4753            var d = u === h ? 1 : r(u, h) / 2,
4754                f = d - u.getLayout().x,
4755                p = 0,
4756                g = 0,
4757                m = 0,
4758                v = 0;
4759            if ("radial" === n) p = o / (h.getLayout().x + d + f), g = a / (c.depth - 1 || 1), Sc(l, function(t) {
4760                m = (t.getLayout().x + f) * p, v = (t.depth - 1) * g;
4761                var e = lc(m, v);
4762                t.setLayout({ x: e.x, y: e.y, rawX: m, rawY: v }, !0)
4763            });
4764            else { var y = t.getOrient(); "RL" === y || "LR" === y ? (g = a / (h.getLayout().x + d + f), p = o / (c.depth - 1 || 1), Sc(l, function(t) { v = (t.getLayout().x + f) * g, m = "LR" === y ? (t.depth - 1) * p : o - (t.depth - 1) * p, t.setLayout({ x: m, y: v }, !0) })) : "TB" !== y && "BT" !== y || (p = o / (h.getLayout().x + d + f), g = a / (c.depth - 1 || 1), Sc(l, function(t) { m = (t.getLayout().x + f) * p, v = "TB" === y ? (t.depth - 1) * g : a - (t.depth - 1) * g, t.setLayout({ x: m, y: v }, !0) })) }
4765        }
4766    }
4767
4768    function Ic(t, e, i) {
4769        if (t && l(e, t.type) >= 0) {
4770            var n = i.getData().tree.root,
4771                o = t.targetNode;
4772            if (o && n.contains(o)) return { node: o };
4773            var a = t.targetNodeId;
4774            if (null != a && (o = n.getNodeById(a))) return { node: o }
4775        }
4776    }
4777
4778    function Tc(t) { for (var e = []; t;)(t = t.parentNode) && e.push(t); return e.reverse() }
4779
4780    function Dc(t, e) { return l(Tc(t), e) >= 0 }
4781
4782    function Ac(t, e) {
4783        for (var i = []; t;) {
4784            var n = t.dataIndex;
4785            i.push({ name: t.name, dataIndex: n, value: e.getRawValue(n) }), t = t.parentNode
4786        }
4787        return i.reverse(), i
4788    }
4789
4790    function Cc(t) {
4791        var e = 0;
4792        d(t.children, function(t) {
4793            Cc(t);
4794            var i = t.value;
4795            y(i) && (i = i[0]), e += i
4796        });
4797        var i = t.value;
4798        y(i) && (i = i[0]), (null == i || isNaN(i)) && (i = e), i < 0 && (i = 0), y(t.value) ? t.value[0] = i : t.value = i
4799    }
4800
4801    function Lc(t, e) {
4802        var i = e.get("color");
4803        if (i) {
4804            var n;
4805            return d(t = t || [], function(t) {
4806                var e = new wo(t),
4807                    i = e.get("color");
4808                (e.get("itemStyle.color") || i && "none" !== i) && (n = !0)
4809            }), n || ((t[0] || (t[0] = {})).color = i.slice()), t
4810        }
4811    }
4812
4813    function kc(t) { this.group = new sw, t.add(this.group) }
4814
4815    function Pc(t, e, i, n, o, a) {
4816        var r = [
4817            [o ? t : t - IA, e],
4818            [t + i, e],
4819            [t + i, e + n],
4820            [o ? t : t - IA, e + n]
4821        ];
4822        return !a && r.splice(2, 0, [t + i + IA, e + n / 2]), !o && r.push([t, e + n / 2]), r
4823    }
4824
4825    function Nc(t, e, i) { t.eventData = { componentType: "series", componentSubType: "treemap", seriesIndex: e.componentIndex, seriesName: e.name, seriesType: "treemap", selfType: "breadcrumb", nodeData: { dataIndex: i && i.dataIndex, name: i && i.name }, treePathInfo: i && Ac(i, e) } }
4826
4827    function Oc() {
4828        var t, e = [],
4829            i = {};
4830        return {
4831            add: function(t, n, o, a, r) { return _(a) && (r = a, a = 0), !i[t.id] && (i[t.id] = 1, e.push({ el: t, target: n, time: o, delay: a, easing: r }), !0) },
4832            done: function(e) { return t = e, this },
4833            start: function() {
4834                for (var n = e.length, o = 0, a = e.length; o < a; o++) {
4835                    var r = e[o];
4836                    r.el.animateTo(r.target, r.time, r.delay, r.easing, function() {--n || (e.length = 0, i = {}, t && t()) })
4837                }
4838                return this
4839            }
4840        }
4841    }
4842
4843    function Ec(t, e, n, o, r, s, l, u, h, c) {
4844        function d(t, e) { w ? !t.invisible && s.push(t) : (e(), t.__tmWillVisible || (t.invisible = !1)) }
4845
4846        function f(e, n, o, a, r, s) {
4847            var u = l.getModel(),
4848                h = T(t.getFormattedLabel(l.dataIndex, "normal", null, null, s ? "upperLabel" : "label"), u.get("name"));
4849            if (!s && v.isLeafRoot) {
4850                var c = t.get("drillDownIcon", !0);
4851                h = c ? c + " " + h : h
4852            }
4853            var d = u.getModel(s ? PA : LA),
4854                f = u.getModel(s ? NA : kA),
4855                p = d.getShallow("show");
4856            io(e, n, d, f, { defaultText: p ? h : null, autoColor: o, isRectText: !0 }), s && (e.textRect = i(s)), e.truncate = p && d.get("ellipsis") ? { outerWidth: a, outerHeight: r, minChar: 2 } : null
4857        }
4858
4859        function p(t, i, o, a) {
4860            var s = null != S && n[t][S],
4861                l = r[t];
4862            return s ? (n[t][S] = null, g(l, s, t)) : w || ((s = new i({ z: Rc(o, a) })).__tmDepth = o, s.__tmStorageName = t, m(l, s, t)), e[t][b] = s
4863        }
4864
4865        function g(t, e, i) {
4866            (t[b] = {}).old = "nodeGroup" === i ? e.position.slice() : a({}, e.shape)
4867        }
4868
4869        function m(t, e, i) {
4870            var n = t[b] = {},
4871                a = l.parentNode;
4872            if (a && (!o || "drillDown" === o.direction)) {
4873                var s = 0,
4874                    u = 0,
4875                    h = r.background[a.getRawIndex()];
4876                !o && h && h.old && (s = h.old.width, u = h.old.height), n.old = "nodeGroup" === i ? [0, u] : { x: s, y: u, width: 0, height: 0 }
4877            }
4878            n.fadein = "nodeGroup" !== i
4879        }
4880        if (l) {
4881            var v = l.getLayout();
4882            if (v && v.isInView) {
4883                var y = v.width,
4884                    x = v.height,
4885                    _ = v.borderWidth,
4886                    w = v.invisible,
4887                    b = l.getRawIndex(),
4888                    S = u && u.getRawIndex(),
4889                    M = l.viewChildren,
4890                    I = v.upperHeight,
4891                    D = M && M.length,
4892                    A = l.getModel("itemStyle"),
4893                    C = l.getModel("emphasis.itemStyle"),
4894                    L = p("nodeGroup", DA);
4895                if (L) {
4896                    if (h.add(L), L.attr("position", [v.x || 0, v.y || 0]), L.__tmNodeWidth = y, L.__tmNodeHeight = x, v.isAboveViewRoot) return L;
4897                    var k = p("background", AA, c, EA);
4898                    if (k && function(e, i, n) {
4899                            i.dataIndex = l.dataIndex, i.seriesIndex = t.seriesIndex, i.setShape({ x: 0, y: 0, width: y, height: x });
4900                            var o = l.getVisual("borderColor", !0),
4901                                a = C.get("borderColor");
4902                            d(i, function() {
4903                                var t = BA(A);
4904                                t.fill = o;
4905                                var e = zA(C);
4906                                if (e.fill = a, n) {
4907                                    var r = y - 2 * _;
4908                                    f(t, e, o, r, I, { x: _, y: 0, width: r, height: I })
4909                                } else t.text = e.text = null;
4910                                i.setStyle(t), eo(i, e)
4911                            }), e.add(i)
4912                        }(L, k, D && v.upperHeight), !D) {
4913                        var P = p("content", AA, c, RA);
4914                        P && function(e, i) {
4915                            i.dataIndex = l.dataIndex, i.seriesIndex = t.seriesIndex;
4916                            var n = Math.max(y - 2 * _, 0),
4917                                o = Math.max(x - 2 * _, 0);
4918                            i.culling = !0, i.setShape({ x: _, y: _, width: n, height: o });
4919                            var a = l.getVisual("color", !0);
4920                            d(i, function() {
4921                                var t = BA(A);
4922                                t.fill = a;
4923                                var e = zA(C);
4924                                f(t, e, a, n, o), i.setStyle(t), eo(i, e)
4925                            }), e.add(i)
4926                        }(L, P)
4927                    }
4928                    return L
4929                }
4930            }
4931        }
4932    }
4933
4934    function Rc(t, e) { var i = t * OA + e; return (i - 1) / i }
4935
4936    function zc(t) {
4937        var e = t.pieceList;
4938        t.hasSpecialVisual = !1, d(e, function(e, i) { e.originIndex = i, null != e.visual && (t.hasSpecialVisual = !0) })
4939    }
4940
4941    function Bc(t) {
4942        var e = t.categories,
4943            i = t.visual,
4944            n = t.categoryMap = {};
4945        if (WA(e, function(t, e) { n[t] = e }), !y(i)) {
4946            var o = [];
4947            w(i) ? WA(i, function(t, e) {
4948                var i = n[e];
4949                o[null != i ? i : HA] = t
4950            }) : o[HA] = i, i = jc(t, o)
4951        }
4952        for (var a = e.length - 1; a >= 0;
4952 a--) null == i[a] && (delete n[e[a]], e.pop())
4953    }
4954
4955    function Vc(t, e) {
4956        var i = t.visual,
4957            n = [];
4958        w(i) ? WA(i, function(t) { n.push(t) }) : null != i && n.push(i);
4959        var o = { color: 1, symbol: 1 };
4960        e || 1 !== n.length || o.hasOwnProperty(t.type) || (n[1] = n[0]), jc(t, n)
4961    }
4962
4963    function Gc(t) { return { applyVisual: function(e, i, n) { e = this.mapValueToVisual(e), n("color", t(i("color"), e)) }, _doMap: Uc([0, 1]) } }
4964
4965    function Wc(t) { var e = this.option.visual; return e[Math.round(To(t, [0, 1], [0, e.length - 1], !0))] || {} }
4966
4967    function Fc(t) { return function(e, i, n) { n(t, this.mapValueToVisual(e)) } }
4968
4969    function Hc(t) { var e = this.option.visual; return e[this.option.loop && t !== HA ? t % e.length : t] }
4970
4971    function Zc() { return this.option.visual[0] }
4972
4973    function Uc(t) { return { linear: function(e) { return To(e, t, this.option.visual, !0) }, category: Hc, piecewise: function(e, i) { var n = Xc.call(this, i); return null == n && (n = To(e, t, this.option.visual, !0)), n }, fixed: Zc } }
4974
4975    function Xc(t) {
4976        var e = this.option,
4977            i = e.pieceList;
4978        if (e.hasSpecialVisual) { var n = i[ZA.findPieceIndex(t, i)]; if (n && n.visual) return n.visual[this.type] }
4979    }
4980
4981    function jc(t, e) { return t.visual = e, "color" === t.type && (t.parsedVisual = f(e, function(t) { return At(t) })), e }
4982
4983    function Yc(t, e, i) { return t ? e <= i : e < i }
4984
4985    function qc(t, e, i, n, o, a) {
4986        var r = t.getModel(),
4987            s = t.getLayout();
4988        if (s && !s.invisible && s.isInView) {
4989            var l, u = t.getModel(YA),
4990                h = Kc(u, e, i[t.depth], n),
4991                c = u.get("borderColor"),
4992                f = u.get("borderColorSaturation");
4993            null != f && (c = Jc(f, l = $c(h))), t.setVisual("borderColor", c);
4994            var p = t.viewChildren;
4995            if (p && p.length) {
4996                var g = td(t, r, s, u, h, p);
4997                d(p, function(t, e) {
4998                    (t.depth >= o.length || t === o[t.depth]) && qc(t, id(r, h, t, e, g, a), i, n, o, a)
4999                })
5000            } else l = $c(h), t.setVisual("color", l)
5001        }
5002    }
5003
5004    function Kc(t, e, i, n) {
5005        var o = a({}, e);
5006        return d(["color", "colorAlpha", "colorSaturation"], function(a) {
5007            var r = t.get(a, !0);
5008            null == r && i && (r = i[a]), null == r && (r = e[a]), null == r && (r = n.get(a)), null != r && (o[a] = r)
5009        }), o
5010    }
5011
5012    function $c(t) {
5013        var e = Qc(t, "color");
5014        if (e) {
5015            var i = Qc(t, "colorAlpha"),
5016                n = Qc(t, "colorSaturation");
5017            return n && (e = Et(e, null, null, n)), i && (e = Rt(e, i)), e
5018        }
5019    }
5020
5021    function Jc(t, e) { return null != e ? Et(e, null, null, t) : null }
5022
5023    function Qc(t, e) { var i = t[e]; if (null != i && "none" !== i) return i }
5024
5025    function td(t, e, i, n, o, a) {
5026        if (a && a.length) {
5027            var r = ed(e, "color") || null != o.color && "none" !== o.color && (ed(e, "colorAlpha") || ed(e, "colorSaturation"));
5028            if (r) {
5029                var s = e.get("visualMin"),
5030                    l = e.get("visualMax"),
5031                    u = i.dataExtent.slice();
5032                null != s && s < u[0] && (u[0] = s), null != l && l > u[1] && (u[1] = l);
5033                var h = e.get("colorMappingBy"),
5034                    c = { type: r.name, dataExtent: u, visual: r.range };
5035                "color" !== c.type || "index" !== h && "id" !== h ? c.mappingMethod = "linear" : (c.mappingMethod = "category", c.loop = !0);
5036                var d = new ZA(c);
5037                return d.__drColorMappingBy = h, d
5038            }
5039        }
5040    }
5041
5042    function ed(t, e) { var i = t.get(e); return jA(i) && i.length ? { name: e, range: i } : null }
5043
5044    function id(t, e, i, n, o, r) {
5045        var s = a({}, e);
5046        if (o) {
5047            var l = o.type,
5048                u = "color" === l && o.__drColorMappingBy,
5049                h = "index" === u ? n : "id" === u ? r.mapIdToIndex(i.getId()) : i.getValue(t.get("visualDimension"));
5050            s[l] = o.mapValueToVisual(h)
5051        }
5052        return s
5053    }
5054
5055    function nd(t, e, i, n) {
5056        var o, a;
5057        if (!t.isRemoved()) {
5058            var r = t.getLayout();
5059            o = r.width, a = r.height;
5060            var s = (f = t.getModel()).get(tC),
5061                l = f.get(eC) / 2,
5062                u = fd(f),
5063                h = Math.max(s, u),
5064                c = s - l,
5065                d = h - l,
5066                f = t.getModel();
5067            t.setLayout({ borderWidth: s, upperHeight: h, upperLabelHeight: u }, !0);
5068            var p = (o = KA(o - 2 * c, 0)) * (a = KA(a - c - d, 0)),
5069                g = od(t, f, p, e, i, n);
5070            if (g.length) {
5071                var m = { x: c, y: d, width: o, height: a },
5072                    v = $A(o, a),
5073                    y = 1 / 0,
5074                    x = [];
5075                x.area = 0;
5076                for (var _ = 0, w = g.length; _ < w;) {
5077                    var b = g[_];
5078                    x.push(b), x.area += b.getLayout().area;
5079                    var S = ld(x, v, e.squareRatio);
5080                    S <= y ? (_++, y = S) : (x.area -= x.pop().getLayout().area, ud(x, v, m, l, !1), v = $A(m.width, m.height), x.length = x.area = 0, y = 1 / 0)
5081                }
5082                if (x.length && ud(x, v, m, l, !0), !i) {
5083                    var M = f.get("childrenVisibleMin");
5084                    null != M && p < M && (i = !0)
5085                }
5086                for (var _ = 0, w = g.length; _ < w; _++) nd(g[_], e, i, n + 1)
5087            }
5088        }
5089    }
5090
5091    function od(t, e, i, n, o, a) {
5092        var r = t.children || [],
5093            s = n.sort;
5094        "asc" !== s && "desc" !== s && (s = null);
5095        var l = null != n.leafDepth && n.leafDepth <= a;
5096        if (o && !l) return t.viewChildren = [];
5097        rd(r = g(r, function(t) { return !t.isRemoved() }), s);
5098        var u = sd(e, r, s);
5099        if (0 === u.sum) return t.viewChildren = [];
5100        if (u.sum = ad(e, i, u.sum, s, r), 0 === u.sum) return t.viewChildren = [];
5101        for (var h = 0, c = r.length; h < c; h++) {
5102            var d = r[h].getValue() / u.sum * i;
5103            r[h].setLayout({ area: d })
5104        }
5105        return l && (r.length && t.setLayout({ isLeafRoot: !0 }, !0), r.length = 0), t.viewChildren = r, t.setLayout({ dataExtent: u.dataExtent }, !0), r
5106    }
5107
5108    function ad(t, e, i, n, o) {
5109        if (!n) return i;
5110        for (var a = t.get("visibleMin"), r = o.length, s = r, l = r - 1; l >= 0; l--) {
5111            var u = o["asc" === n ? r - l - 1 : l].getValue();
5112            u / i * e < a && (s = l, i -= u)
5113        }
5114        return "asc" === n ? o.splice(0, r - s) : o.splice(s, r - s), i
5115    }
5116
5117    function rd(t, e) { return e && t.sort(function(t, i) { var n = "asc" === e ? t.getValue() - i.getValue() : i.getValue() - t.getValue(); return 0 === n ? "asc" === e ? t.dataIndex - i.dataIndex : i.dataIndex - t.dataIndex : n }), t }
5118
5119    function sd(t, e, i) {
5120        for (var n = 0, o = 0, a = e.length; o < a; o++) n += e[o].getValue();
5121        var r = t.get("visualDimension");
5122        if (e && e.length)
5123            if ("value" === r && i) s = [e[e.length - 1].getValue(), e[0].getValue()], "asc" === i && s.reverse();
5124            else {
5125                var s = [1 / 0, -1 / 0];
5126                QA(e, function(t) {
5127                    var e = t.getValue(r);
5128                    e < s[0] && (s[0] = e), e > s[1] && (s[1] = e)
5129                })
5130            }
5131        else s = [NaN, NaN];
5132        return { sum: n, dataExtent: s }
5133    }
5134
5135    function ld(t, e, i) {
5136        for (var n, o = 0, a = 1 / 0, r = 0, s = t.length; r < s; r++)(n = t[r].getLayout().area) && (n < a && (a = n), n > o && (o = n));
5137        var l = t.area * t.area,
5138            u = e * e * i;
5139        return l ? KA(u * o / l, l / (u * a)) : 1 / 0
5140    }
5141
5142    function ud(t, e, i, n, o) {
5143        var a = e === i.width ? 0 : 1,
5144            r = 1 - a,
5145            s = ["x", "y"],
5146            l = ["width", "height"],
5147            u = i[s[a]],
5148            h = e ? t.area / e : 0;
5149        (o || h > i[l[r]]) && (h = i[l[r]]);
5150        for (var c = 0, d = t.length; c < d; c++) {
5151            var f = t[c],
5152                p = {},
5153                g = h ? f.getLayout().area / h : 0,
5154                m = p[l[r]] = KA(h - 2 * n, 0),
5155                v = i[s[a]] + i[l[a]] - u,
5156                y = c === d - 1 || v < g ? v : g,
5157                x = p[l[a]] = KA(y - 2 * n, 0);
5158            p[s[r]] = i[s[r]] + $A(n, m / 2), p[s[a]] = u + $A(n, x / 2), u += y, f.setLayout(p, !0)
5159        }
5160        i[s[r]] += h, i[l[r]] -= h
5161    }
5162
5163    function hd(t, e, i, n, o) {
5164        var a = (e || {}).node,
5165            r = [n, o];
5166        if (!a || a === i) return r;
5167        for (var s, l = n * o, u = l * t.option.zoomToNodeRatio; s = a.parentNode;) {
5168            for (var h = 0, c = s.children, d = 0, f = c.length; d < f; d++) h += c[d].getValue();
5169            var p = a.getValue();
5170            if (0 === p) return r;
5171            u *= h / p;
5172            var g = s.getModel(),
5173                m = g.get(tC);
5174            (u += 4 * m * m + (3 * m + Math.max(m, fd(g))) * Math.pow(u, .5)) > jS && (u = jS), a = s
5175        }
5176        u < l && (u = l);
5177        var v = Math.pow(u / l, .5);
5178        return [n * v, o * v]
5179    }
5180
5181    function cd(t, e, i) {
5182        if (e) return { x: e.x, y: e.y };
5183        var n = { x: 0, y: 0 };
5184        if (!i) return n;
5185        var o = i.node,
5186            a = o.getLayout();
5187        if (!a) return n;
5188        for (var r = [a.width / 2, a.height / 2], s = o; s;) {
5189            var l = s.getLayout();
5190            r[0] += l.x, r[1] += l.y, s = s.parentNode
5191        }
5192        return { x: t.width / 2 - r[0], y: t.height / 2 - r[1] }
5193    }
5194
5195    function dd(t, e, i, n, o) {
5196        var a = t.getLayout(),
5197            r = i[o],
5198            s = r && r === t;
5199        if (!(r && !s || o === i.length && t !== n)) {
5200            t.setLayout({ isInView: !0, invisible: !s && !e.intersect(a), isAboveViewRoot: s }, !0);
5201            var l = new $t(e.x - a.x, e.y - a.y, e.width, e.height);
5202            QA(t.viewChildren || [], function(t) { dd(t, l, i, n, o + 1) })
5203        }
5204    }
5205
5206    function fd(t) { return t.get(iC) ? t.get(nC) : 0 }
5207
5208    function pd(t) { return "_EC_" + t }
5209
5210    function gd(t, e) { this.id = null == t ? "" : t, this.inEdges = [], this.outEdges = [], this.edges = [], this.hostGraph, this.dataIndex = null == e ? -1 : e }
5211
5212    function md(t, e, i) { this.node1 = t, this.node2 = e, this.dataIndex = null == i ? -1 : i }
5213
5214    function vd(t) { return isNaN(+t.cpx1) || isNaN(+t.cpy1) }
5215
5216    function yd(t) { return "_" + t + "Type" }
5217
5218    function xd(t, e, i) {
5219        var n = e.getItemVisual(i, "color"),
5220            o = e.getItemVisual(i, t),
5221            a = e.getItemVisual(i, t + "Size");
5222        if (o && "none" !== o) { y(a) || (a = [a, a]); var r = Tl(o, -a[0] / 2, -a[1] / 2, a[0], a[1], n); return r.name = t, r }
5223    }
5224
5225    function _d(t) { var e = new dC({ name: "line" }); return wd(e.shape, t), e }
5226
5227    function wd(t, e) {
5228        var i = e[0],
5229            n = e[1],
5230            o = e[2];
5231        t.x1 = i[0], t.y1 = i[1], t.x2 = n[0], t.y2 = n[1], t.percent = 1, o ? (t.cpx1 = o[0], t.cpy1 = o[1]) : (t.cpx1 = NaN, t.cpy1 = NaN)
5232    }
5233
5234    function bd(t, e, i) { sw.call(this), this._createLine(t, e, i) }
5235
5236    function Sd(t) { this._ctor = t || bd, this.group = new sw }
5237
5238    function Md(t, e, i, n) {
5239        if (Ad(e.getItemLayout(i))) {
5240            var o = new t._ctor(e, i, n);
5241            e.setItemGraphicEl(i, o), t.group.add(o)
5242        }
5243    }
5244
5245    function Id(t, e, i, n, o, a) {
5246        var r = e.getItemGraphicEl(n);
5247        Ad(i.getItemLayout(o)) ? (r ? r.updateData(i, o, a) : r = new t._ctor(i, o, a), i.setItemGraphicEl(o, r), t.group.add(r)) : t.group.remove(r)
5248    }
5249
5250    function Td(t) { var e = t.hostModel; return { lineStyle: e.getModel("lineStyle").getLineStyle(), hoverLineStyle: e.getModel("emphasis.lineStyle").getLineStyle(), labelModel: e.getModel("label"), hoverLabelModel: e.getModel("emphasis.label") } }
5251
5252    function Dd(t) { return isNaN(t[0]) || isNaN(t[1]) }
5253
5254    function Ad(t) { return !Dd(t[0]) && !Dd(t[1]) }
5255
5256    function Cd(t, e, i) {
5257        for (var n, o = t[0], a = t[1], r = t[2], s = 1 / 0, l = i * i, u = .1, h = .1; h <= .9; h += .1) mC[0] = xC(o[0], a[0], r[0], h), mC[1] = xC(o[1], a[1], r[1], h), (f = wC(_C(mC, e) - l)) < s && (s = f, n = h);
5258        for (var c = 0; c < 32; c++) {
5259            var d = n + u;
5260            vC[0] = xC(o[0], a[0], r[0], n), vC[1] = xC(o[1], a[1], r[1], n), yC[0] = xC(o[0], a[0], r[0], d), yC[1] = xC(o[1], a[1], r[1], d);
5261            var f = _C(vC, e) - l;
5262            if (wC(f) < .01) break;
5263            var p = _C(yC, e) - l;
5264            u /= 2, f < 0 ? p >= 0 ? n += u : n -= u : p >= 0 ? n -= u : n += u
5265        }
5266        return n
5267    }
5268
5269    function Ld(t, e) { return t.getVisual("opacity") || t.getModel().get(e) }
5270
5271    function kd(t, e, i) {
5272        var n = t.getGraphicEl(),
5273            o = Ld(t, e);
5274        null != i && (null == o && (o = 1), o *= i), n.downplay && n.downplay(), n.traverse(function(t) { "group" !== t.type && t.setStyle("opacity", o) })
5275    }
5276
5277    function Pd(t, e) {
5278        var i = Ld(t, e),
5279            n = t.getGraphicEl();
5280        n.highlight && n.highlight(), n.traverse(function(t) { "group" !== t.type && t.setStyle("opacity", i) })
5281    }
5282
5283    function Nd(t) { return t instanceof Array || (t = [t, t]), t }
5284
5285    function Od(t) {
5286        var e = t.coordinateSystem;
5287        if (!e || "view" === e.type) {
5288            var i = t.getGraph();
5289            i.eachNode(function(t) {
5290                var e = t.getModel();
5291                t.setLayout([+e.get("x"), +e.get("y")])
5292            }), Ed(i)
5293        }
5294    }
5295
5296    function Ed(t) {
5297        t.eachEdge(function(t) {
5298            var e = t.getModel().get("lineStyle.curveness") || 0,
5299                i = W(t.node1.getLayout()),
5300                n = W(t.node2.getLayout()),
5301                o = [i, n]; + e && o.push([(i[0] + n[0]) / 2 - (i[1] - n[1]) * e, (i[1] + n[1]) / 2 - (n[0] - i[0]) * e]), t.setLayout(o)
5302        })
5303    }
5304
5305    function Rd(t) {
5306        var e = t.coordinateSystem;
5307        if (!e || "view" === e.type) {
5308            var i = e.getBoundingRect(),
5309                n = t.getData(),
5310                o = n.graph,
5311                a = 0,
5312                r = n.getSum("value"),
5313                s = 2 * Math.PI / (r || n.count()),
5314                l = i.width / 2 + i.x,
5315                u = i.height / 2 + i.y,
5316                h = Math.min(i.width, i.height) / 2;
5317            o.eachNode(function(t) {
5318                var e = t.getValue("value");
5319                a += s * (r ? e : 1) / 2, t.setLayout([h * Math.cos(a) + l, h * Math.sin(a) + u]), a += s * (r ? e : 1) / 2
5320            }), n.setLayout({ cx: l, cy: u }), o.eachEdge(function(t) {
5321                var e, i = t.getModel().get("lineStyle.curveness") || 0,
5322                    n = W(t.node1.getLayout()),
5323                    o = W(t.node2.getLayout()),
5324                    a = (n[0] + o[0]) / 2,
5325                    r = (n[1] + o[1]) / 2; + i && (e = [l * (i *= 3) + a * (1 - i), u * i + r * (1 - i)]), t.setLayout([n, o, e])
5326            })
5327        }
5328    }
5329
5330    function zd(t, e, i) {
5331        for (var n = i.rect, o = n.width, a = n.height, r = [n.x + o / 2, n.y + a / 2], s = null == i.gravity ? .1 : i.gravity, l = 0; l < t.length; l++) {
5332            var u = t[l];
5333            u.p || (u.p = V(o * (Math.random() - .5) + r[0], a * (Math.random() - .5) + r[1])), u.pp = W(u.p), u.edges = null
5334        }
5335        var h = .6;
5336        return {
5337            warmUp: function() { h = .5 },
5338            setFixed: function(e) { t[e].fixed = !0 },
5339            setUnfixed: function(e) { t[e].fixed = !1 },
5340            step: function(i) {
5341                for (var n = [], o = t.length, a = 0; a < e.length; a++) {
5342                    var l = e[a],
5343                        u = l.n1;
5344                    U(n, (p = l.n2).p, u.p);
5345                    var c = X(n) - l.d,
5346                        d = p.w / (u.w + p.w);
5347                    isNaN(d) && (d = 0), q(n, n), !u.fixed && IC(u.p, u.p, n, d * c * h), !p.fixed && IC(p.p, p.p, n, -(1 - d) * c * h)
5348                }
5349                for (a = 0; a < o; a++)(v = t[a]).fixed || (U(n, r, v.p), IC(v.p, v.p, n, s * h));
5350                for (a = 0; a < o; a++)
5351                    for (var u = t[a], f = a + 1; f < o; f++) {
5352                        var p = t[f];
5353                        U(n, p.p, u.p), 0 === (c = X(n)) && (F(n, Math.random() - .5, Math.random() - .5), c = 1);
5354                        var g = (u.rep + p.rep) / c / c;
5355                        !u.fixed && IC(u.pp, u.pp, n, g), !p.fixed && IC(p.pp, p.pp, n, -g)
5356                    }
5357                for (var m = [], a = 0; a < o; a++) {
5358                    var v = t[a];
5359                    v.fixed || (U(m, v.p, v.pp), IC(v.p, v.p, m, h), G(v.pp, v.p))
5360                }
5361                h *= .992, i && i(t, e, h < .01)
5362            }
5363        }
5364    }
5365
5366    function Bd(t, e, i) { var n = t.getBoxLayoutParams(); return n.aspect = i, Qo(n, { width: e.getWidth(), height: e.getHeight() }) }
5367
5368    function Vd(t, e) {
5369        var i = t.get("center"),
5370            n = e.getWidth(),
5371            o = e.getHeight(),
5372            a = Math.min(n, o);
5373        return { cx: Do(i[0], e.getWidth()), cy: Do(i[1], e.getHeight()), r: Do(t.get("radius"), a / 2) }
5374    }
5375
5376    function Gd(t, e) { return e && ("string" == typeof e ? t = e.replace("{value}", null != t ? t : "") : "function" == typeof e && (t = e(t))), t }
5377
5378    function Wd(t, e) {
5379        function i() { a.ignore = a.hoverIgnore, r.ignore = r.hoverIgnore }
5380
5381        function n() { a.ignore = a.normalIgnore, r.ignore = r.normalIgnore }
5382        sw.call(this);
5383        var o = new wS,
5384            a = new bS,
5385            r = new fS;
5386        this.add(o), this.add(a), this.add(r), this.updateData(t, e, !0), this.on("emphasis", i).on("normal", n).on("mouseover", i).on("mouseout", n)
5387    }
5388
5389    function Fd(t, e) { return Qo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) }
5390
5391    function Hd(t, e) { for (var i = t.mapDimension("value"), n = t.mapArray(i, function(t) { return t }), o = [], a = "ascending" === e, r = 0, s = t.count(); r < s; r++) o[r] = r; return "function" == typeof e ? o.sort(e) : "none" !== e && o.sort(function(t, e) { return a ? n[t] - n[e] : n[e] - n[t] }), o }
5392
5393    function Zd(t) {
5394        t.each(function(e) {
5395            var i, n, o, a, r = t.getItemModel(e),
5396                s = r.getModel("label").get("position"),
5397                l = r.getModel("labelLine"),
5398                u = t.getItemLayout(e),
5399                h = u.points,
5400                c = "inner" === s || "inside" === s || "center" === s;
5401            if (c) i = "center", a = [
5402                [n = (h[0][0] + h[1][0] + h[2][0] + h[3][0]) / 4, o = (h[0][1] + h[1][1] + h[2][1] + h[3][1]) / 4],
5403                [n, o]
5404            ];
5405            else {
5406                var d, f, p, g = l.get("length");
5407                "left" === s ? (d = (h[3][0] + h[0][0]) / 2, f = (h[3][1] + h[0][1]) / 2, n = (p = d - g) - 5, i = "right") : (d = (h[1][0] + h[2][0]) / 2, f = (h[1][1] + h[2][1]) / 2, n = (p = d + g) + 5, i = "left");
5408                var m = f;
5409                a = [
5410                    [d, f],
5411                    [p, m]
5412                ], o = m
5413            }
5414            u.label = { linePoints: a, x: n, y: o, verticalAlign: "middle", textAlign: i, inside: c }
5415        })
5416    }
5417
5418    function Ud(t) {
5419        if (!t.parallel) {
5420            var e = !1;
5421            d(t.series, function(t) { t && "parallel" === t.type && (e = !0) }), e && (t.parallel = [{}])
5422        }
5423    }
5424
5425    function Xd(t) {
5426        d(Si(t.parallelAxis), function(e) {
5427            if (w(e)) {
5428                var i = e.parallelIndex || 0,
5429                    o = Si(t.parallel)[i];
5430                o && o.parallelAxisDefault && n(e, o.parallelAxisDefault, !1)
5431            }
5432        })
5433    }
5434
5435    function jd(t, e) { var i = t[e] - t[1 - e]; return { span: Math.abs(i), sign: i > 0 ? -1 : i < 0 ? 1 : e ? -1 : 1 } }
5436
5437    function Yd(t, e) { return Math.min(e[1], Math.max(e[0], t)) }
5438
5439    function qd(t, e, i) { this._axesMap = R(), this._axesLayout = {}, this.dimensions = t.dimensions, this._rect, this._model = t, this._init(t, e, i) }
5440
5441    function Kd(t, e) { return OC(EC(t, e[0]), e[1]) }
5442
5443    function $d(t, e) { var i = e.layoutLength / (e.axisCount - 1); return { position: i * t, axisNameAvailableWidth: i, axisLabelShow: !0 } }
5444
5445    function Jd(t, e) {
5446        var i, n, o = e.layoutLength,
5447            a = e.axisExpandWidth,
5448            r = e.axisCount,
5449            s = e.axisCollapseWidth,
5450            l = e.winInnerIndices,
5451            u = s,
5452            h = !1;
5453        return t < l[0] ? (i = t * s, n = s) : t <= l[1] ? (i = e.axisExpandWindow0Pos + t * a - e.axisExpandWindow[0], u = a, h = !0) : (i = o - (r - 1 - t) * s, n = s), { position: i, axisNameAvailableWidth: u, axisLabelShow: h, nameTruncateMaxWidth: n }
5454    }
5455
5456    function Qd(t) { D_.call(this), this._zr = t, this.group = new sw, this._brushType, this._brushOption, this._panels, this._track = [], this._dragging, this._covers = [], this._creatingCover, this._creatingPanel, this._enableGlobalPan, this._uid = "brushController_" + eL++, this._handlers = {}, HC(iL, function(t, e) { this._handlers[e] = m(t, this) }, this) }
5457
5458    function tf(t, e) {
5459        var o = t._zr;
5460        t._enableGlobalPan || Dh(o, $C, t._uid), HC(t._handlers, function(t, e) { o.on(e, t) }), t._brushType = e.brushType, t._brushOption = n(i(tL), e, !0)
5461    }
5462
5463    function ef(t) {
5464        var e = t._zr;
5465        Ah(e, $C, t._uid), HC(t._handlers, function(t, i) { e.off(i, t) }), t._brushType = t._brushOption = null
5466    }
5467
5468    function nf(t, e) { var i = nL[e.brushType].createCover(t, e); return i.__brushOption = e, rf(i, e), t.group.add(i), i }
5469
5470    function of(t, e) { var i = lf(e); return i.endCreating && (i.endCreating(t, e), rf(e, e.__brushOption)), e }
5471
5472    function af(t, e) {
5473        var i = e.__brushOption;
5474        lf(e).updateCoverShape(t, e, i.range, i)
5475    }
5476
5477    function rf(t, e) {
5478        var i = e.z;
5479        null == i && (i = YC), t.traverse(function(t) { t.z = i, t.z2 = i })
5480    }
5481
5482    function sf(t, e) { lf(e).updateCommon(t, e), af(t, e) }
5483
5484    function lf(t) { return nL[t.__brushOption.brushType] }
5485
5486    function uf(t, e, i) { var n = t._panels; if (!n) return !0; var o, a = t._transform; return HC(n, function(t) { t.isTargetByCursor(e, i, a) && (o = t) }), o }
5487
5488    function hf(t, e) { var i = t._panels; if (!i) return !0; var n = e.__brushOption.panelId; return null == n || i[n] }
5489
5490    function cf(t) {
5491        var e = t._covers,
5492            i = e.length;
5493        return HC(e, function(e) { t.group.remove(e) }, t), e.length = 0, !!i
5494    }
5495
5496    function df(t, e) {
5497        var n = ZC(t._covers, function(t) {
5498            var e = t.__brushOption,
5499                n = i(e.range);
5500            return { brushType: e.brushType, panelId: e.panelId, range: n }
5501        });
5502        t.trigger("brush", n, { isEnd: !!e.isEnd, removeOnClick: !!e.removeOnClick })
5503    }
5504
5505    function ff(t) {
5506        var e = t._track;
5507        if (!e.length) return !1;
5508        var i = e[e.length - 1],
5509            n = e[0],
5510            o = i[0] - n[0],
5511            a = i[1] - n[1];
5512        return jC(o * o + a * a, .5) > qC
5513    }
5514
5515    function pf(t) { var e = t.length - 1; return e < 0 && (e = 0), [t[0], t[e]] }
5516
5517    function gf(t, e, i, n) { var o = new sw; return o.add(new SS({ name: "main", style: xf(i), silent: !0, draggable: !0, cursor: "move", drift: FC(t, e, o, "nswe"), ondragend: FC(df, e, { isEnd: !0 }) })), HC(n, function(i) { o.add(new SS({ name: i, style: { opacity: 0 }, draggable: !0, silent: !0, invisible: !0, drift: FC(t, e, o, i), ondragend: FC(df, e, { isEnd: !0 }) })) }), o }
5518
5519    function mf(t, e, i, n) {
5520        var o = n.brushStyle.lineWidth || 0,
5521            a = XC(o, KC),
5522            r = i[0][0],
5523            s = i[1][0],
5524            l = r - o / 2,
5525            u = s - o / 2,
5526            h = i[0][1],
5527            c = i[1][1],
5528            d = h - a + o / 2,
5529            f = c - a + o / 2,
5530            p = h - r,
5531            g = c - s,
5532            m = p + o,
5533            v = g + o;
5534        yf(t, e, "main", r, s, p, g), n.transformable && (yf(t, e, "w", l, u, a, v), yf(t, e, "e", d, u, a, v), yf(t, e, "n", l, u, m, a), yf(t, e, "s", l, f, m, a), yf(t, e, "nw", l, u, a, a), yf(t, e, "ne", d, u, a, a), yf(t, e, "sw", l, f, a, a), yf(t, e, "se", d, f, a, a))
5535    }
5536
5537    function vf(t, e) {
5538        var i = e.__brushOption,
5539            n = i.transformable,
5540            o = e.childAt(0);
5541        o.useStyle(xf(i)), o.attr({ silent: !n, cursor: n ? "move" : "default" }), HC(["w", "e", "n", "s", "se", "sw", "ne", "nw"], function(i) {
5542            var o = e.childOfName(i),
5543                a = bf(t, i);
5544            o && o.attr({ silent: !n, invisible: !n, cursor: n ? QC[a] + "-resize" : null })
5545        })
5546    }
5547
5548    function yf(t, e, i, n, o, a, r) {
5549        var s = e.childOfName(i);
5550        s && s.setShape(Df(Tf(t, e, [
5551            [n, o],
5552            [n + a, o + r]
5553        ])))
5554    }
5555
5556    function xf(t) { return r({ strokeNoScale: !0 }, t.brushStyle) }
5557
5558    function _f(t, e, i, n) {
5559        var o = [UC(t, i), UC(e, n)],
5560            a = [XC(t, i), XC(e, n)];
5561        return [
5562            [o[0], a[0]],
5563            [o[1], a[1]]
5564        ]
5565    }
5566
5567    function wf(t) { return go(t.group) }
5568
5569    function bf(t, e) {
5570        if (e.length > 1) return ("e" === (n = [bf(t, (e = e.split(""))[0]), bf(t, e[1])])[0] || "w" === n[0]) && n.reverse(), n.join("");
5571        var i = { left: "w", right: "e", top: "n", bottom: "s" },
5572            n = vo({ w: "left", e: "right", n: "top", s: "bottom" }[e], wf(t));
5573        return i[n]
5574    }
5575
5576    function Sf(t, e, i, n, o, a, r, s) {
5577        var l = n.__brushOption,
5578            u = t(l.range),
5579            h = If(i, a, r);
5580        HC(o.split(""), function(t) {
5581            var e = JC[t];
5582            u[e[0]][e[1]] += h[e[0]]
5583        }), l.range = e(_f(u[0][0], u[1][0], u[0][1], u[1][1])), sf(i, n), df(i, { isEnd: !1 })
5584    }
5585
5586    function Mf(t, e, i, n, o) {
5587        var a = e.__brushOption.range,
5588            r = If(t, i, n);
5589        HC(a, function(t) { t[0] += r[0], t[1] += r[1] }), sf(t, e), df(t, { isEnd: !1 })
5590    }
5591
5592    function If(t, e, i) {
5593        var n = t.group,
5594            o = n.transformCoordToLocal(e, i),
5595            a = n.transformCoordToLocal(0, 0);
5596        return [o[0] - a[0], o[1] - a[1]]
5597    }
5598
5599    function Tf(t, e, n) { var o = hf(t, e); return o && !0 !== o ? o.clipPath(n, t._transform) : i(n) }
5600
5601    function Df(t) {
5602        var e = UC(t[0][0], t[1][0]),
5603            i = UC(t[0][1], t[1][1]);
5604        return { x: e, y: i, width: XC(t[0][0], t[1][0]) - e, height: XC(t[0][1], t[1][1]) - i }
5605    }
5606
5607    function Af(t, e, i) {
5608        if (t._brushType) {
5609            var n = t._zr,
5610                o = t._covers,
5611                a = uf(t, e, i);
5612            if (!t._dragging)
5613                for (var r = 0; r < o.length; r++) { var s = o[r].__brushOption; if (a && (!0 === a || s.panelId === a.panelId) && nL[s.brushType].contain(o[r], i[0], i[1])) return }
5614            a && n.setCursorStyle("crosshair")
5615        }
5616    }
5617
5618    function Cf(t) {
5619        var e = t.event;
5620        e.preventDefault && e.preventDefault()
5621    }
5622
5623    function Lf(t, e, i) { return t.childOfName("main").contain(e, i) }
5624
5625    function kf(t, e, n, o) {
5626        var a, r = t._creatingCover,
5627            s = t._creatingPanel,
5628            l = t._brushOption;
5629        if (t._track.push(n.slice()), ff(t) || r) {
5630            if (s && !r) {
5631                "single" === l.brushMode && cf(t);
5632                var u = i(l);
5633                u.brushType = Pf(u.brushType, s), u.panelId = !0 === s ? null : s.panelId, r = t._creatingCover = nf(t, u), t._covers.push(r)
5634            }
5635            if (r) {
5636                var h = nL[Pf(t._brushType, s)];
5637                r.__brushOption.range = h.getCreatingRange(Tf(t, r, t._track)), o && (of(t, r), h.updateCommon(t, r)), af(t, r), a = { isEnd: o }
5638            }
5639        } else o && "single" === l.brushMode && l.removeOnClick && uf(t, e, n) && cf(t) && (a = { isEnd: o, removeOnClick: !0 });
5640        return a
5641    }
5642
5643    function Pf(t, e) { return "auto" === t ? e.defaultBrushType : t }
5644
5645    function Nf(t) {
5646        if (this._dragging) {
5647            Cf(t);
5648            var e = kf(this, t, this.group.transformCoordToLocal(t.offsetX, t.offsetY), !0);
5649            this._dragging = !1, this._track = [], this._creatingCover = null, e && df(this, e)
5650        }
5651    }
5652
5653    function Of(t) {
5654        return {
5655            createCover: function(e, i) {
5656                return gf(FC(Sf, function(e) { var i = [e, [0, 100]]; return t && i.reverse(), i }, function(e) { return e[t] }), e, i, [
5657                    ["w", "e"],
5658                    ["n", "s"]
5659                ][t])
5660            },
5661            getCreatingRange: function(e) { var i = pf(e); return [UC(i[0][t], i[1][t]), XC(i[0][t], i[1][t])] },
5662            updateCoverShape: function(e, i, n, o) {
5663                var a, r = hf(e, i);
5664                if (!0 !== r && r.getLinearBrushOtherExtent) a = r.getLinearBrushOtherExtent(t, e._transform);
5665                else {
5666                    var s = e._zr;
5667                    a = [0, [s.getWidth(), s.getHeight()][1 - t]]
5668                }
5669                var l = [n, a];
5670                t && l.reverse(), mf(e, i, l, o)
5671            },
5672            updateCommon: vf,
5673            contain: Lf
5674        }
5675    }
5676
5677    function Ef(t) {
5678        return t = Bf(t),
5679            function(e, i) { return xo(e, t) }
5680    }
5681
5682    function Rf(t, e) {
5683        return t = Bf(t),
5684            function(i) {
5685                var n = null != e ? e : i,
5686                    o = n ? t.width : t.height,
5687                    a = n ? t.x : t.y;
5688                return [a, a + (o || 0)]
5689            }
5690    }
5691
5692    function zf(t, e, i) {
5693        return t = Bf(t),
5694            function(n, o, a) { return t.contain(o[0], o[1]) && !Wh(n, e, i) }
5695    }
5696
5697    function Bf(t) { return $t.create(t) }
5698
5699    function Vf(t, e, i) { return i && "axisAreaSelect" === i.type && e.findComponents({ mainType: "parallelAxis", query: i })[0] === t }
5700
5701    function Gf(t) { var e = t.axis; return f(t.activeIntervals, function(t) { return { brushType: "lineX", panelId: "pl", range: [e.dataToCoord(t[0], !0), e.dataToCoord(t[1], !0)] } }) }
5702
5703    function Wf(t, e) { return e.getComponent("parallel", t.get("parallelIndex")) }
5704
5705    function Ff(t, e) { var i = t._model; return i.get("axisExpandable") && i.get("axisExpandTriggerOn") === e }
5706
5707    function Hf(t, e) {
5708        if (!t.encodeDefine) {
5709            var i = e.ecModel.getComponent("parallel", e.get("parallelIndex"));
5710            if (i) {
5711                var n = t.encodeDefine = R();
5712                d(i.dimensions, function(t) {
5713                    var e = Zf(t);
5714                    n.set(t, e)
5715                })
5716            }
5717        }
5718    }
5719
5720    function Zf(t) { return +t.replace("dim", "") }
5721
5722    function Uf(t, e, i) {
5723        var n = t.model,
5724            o = t.getRect(),
5725            a = new SS({ shape: { x: o.x, y: o.y, width: o.width, height: o.height } }),
5726            r = "horizontal" === n.get("layout") ? "width" : "height";
5727        return a.setShape(r, 0), po(a, { shape: { width: o.width, height: o.height } }, e, i), a
5728    }
5729
5730    function Xf(t, e, i, n) {
5731        for (var o = [], a = 0; a < i.length; a++) {
5732            var r = i[a],
5733                s = t.get(t.mapDimension(r), e);
5734            Kf(s, n.getAxis(r).type) || o.push(n.dataToPoint(s, r))
5735        }
5736        return o
5737    }
5738
5739    function jf(t, e, i, n, o) {
5740        var a = Xf(t, i, n, o),
5741            r = new bS({ shape: { points: a }, silent: !0, z2: 10 });
5742        return e.add(r), t.setItemGraphicEl(i, r), r
5743    }
5744
5745    function Yf(t) { var e = t.get("smooth", !0); return !0 === e && (e = sL), { lineStyle: t.getModel("lineStyle").getLineStyle(), smooth: null != e ? e : sL } }
5746
5747    function qf(t, e, i, n) {
5748        var o = n.lineStyle;
5749        e.hasItemOption && (o = e.getItemModel(i).getModel("lineStyle").getLineStyle()), t.useStyle(o);
5750        var a = t.style;
5751        a.fill = null, a.stroke = e.getItemVisual(i, "color"), a.opacity = e.getItemVisual(i, "opacity"), n.smooth && (t.shape.smooth = n.smooth)
5752    }
5753
5754    function Kf(t, e) { return "category" === e ? null == t : null == t || isNaN(t) }
5755
5756    function $f(t, e, i) { var n = new SS({ shape: { x: t.x - 10, y: t.y - 10, width: 0, height: t.height + 20 } }); return po(n, { shape: { width: t.width + 20, height: t.height + 20 } }, e, i), n }
5757
5758    function Jf() {
5759        function t(e, n) {
5760            if (n >= i.length) return e;
5761            for (var o = -1, a = e.length, r = i[n++], s = {}, l = {}; ++o < a;) {
5762                var u = r(e[o]),
5763                    h = l[u];
5764                h ? h.push(e[o]) : l[u] = [e[o]]
5765            }
5766            return d(l, function(e, i) { s[i] = t(e, n) }), s
5767        }
5768
5769        function e(t, o) {
5770            if (o >= i.length) return t;
5771            var a = [],
5772                r = n[o++];
5773            return d(t, function(t, i) { a.push({ key: i, values: e(t, o) }) }), r ? a.sort(function(t, e) { return r(t.key, e.key) }) : a
5774        }
5775        var i = [],
5776            n = [];
5777        return { key: function(t) { return i.push(t), this }, sortKeys: function(t) { return n[i.length - 1] = t, this }, entries: function(i) { return e(t(i, 0), 0) } }
5778    }
5779
5780    function Qf(t, e) { return Qo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }) }
5781
5782    function tp(t, e, i, n, o, a, r) { ip(t, e, i, o), ap(t, e, a, n, r), dp(t) }
5783
5784    function ep(t) {
5785        d(t, function(t) {
5786            var e = gp(t.outEdges, xp),
5787                i = gp(t.inEdges, xp),
5788                n = Math.max(e, i);
5789            t.setLayout({ value: n }, !0)
5790        })
5791    }
5792
5793    function ip(t, e, i, n) {
5794        for (var o = [], a = [], r = [], s = [], l = 0, u = 0; u < e.length; u++) o[u] = 1;
5795        for (u = 0; u < t.length; u++) a[u] = t[u].inEdges.length, 0 === a[u] && r.push(t[u]);
5796        for (; r.length;) d(r, function(n) {
5797            n.setLayout({ x: l }, !0), n.setLayout({ dx: i }, !0), d(n.outEdges, function(i) {
5798                var n = e.indexOf(i);
5799                o[n] = 0;
5800                var r = i.node2,
5801                    l = t.indexOf(r);
5802                0 == --a[l] && s.push(r)
5803            })
5804        }), ++l, r = s, s = [];
5805        for (u = 0; u < o.length; u++);
5806        np(t, l), op(t, (n - i) / (l - 1))
5807    }
5808
5809    function np(t, e) { d(t, function(t) { t.outEdges.length || t.setLayout({ x: e - 1 }, !0) }) }
5810
5811    function op(t, e) {
5812        d(t, function(t) {
5813            var i = t.getLayout().x * e;
5814            t.setLayout({ x: i }, !0)
5815        })
5816    }
5817
5818    function ap(t, e, i, n, o) {
5819        var a = Jf().key(function(t) { return t.getLayout().x }
5819).sortKeys(yp).entries(t).map(function(t) { return t.values });
5820        rp(t, a, e, i, n), sp(a, n, i);
5821        for (var r = 1; o > 0; o--) lp(a, r *= .99), sp(a, n, i), hp(a, r), sp(a, n, i)
5822    }
5823
5824    function rp(t, e, i, n, o) {
5825        var a = [];
5826        d(e, function(t) {
5827            var e = t.length,
5828                i = 0;
5829            d(t, function(t) { i += t.getLayout().value });
5830            var r = (n - (e - 1) * o) / i;
5831            a.push(r)
5832        }), a.sort(function(t, e) { return t - e });
5833        var r = a[0];
5834        d(e, function(t) {
5835            d(t, function(t, e) {
5836                t.setLayout({ y: e }, !0);
5837                var i = t.getLayout().value * r;
5838                t.setLayout({ dy: i }, !0)
5839            })
5840        }), d(i, function(t) {
5841            var e = +t.getValue() * r;
5842            t.setLayout({ dy: e }, !0)
5843        })
5844    }
5845
5846    function sp(t, e, i) {
5847        d(t, function(t) {
5848            var n, o, a, r = 0,
5849                s = t.length;
5850            for (t.sort(vp), a = 0; a < s; a++) {
5851                if (n = t[a], (o = r - n.getLayout().y) > 0) {
5852                    l = n.getLayout().y + o;
5853                    n.setLayout({ y: l }, !0)
5854                }
5855                r = n.getLayout().y + n.getLayout().dy + e
5856            }
5857            if ((o = r - e - i) > 0) { var l = n.getLayout().y - o; for (n.setLayout({ y: l }, !0), r = n.getLayout().y, a = s - 2; a >= 0; --a)(o = (n = t[a]).getLayout().y + n.getLayout().dy + e - r) > 0 && (l = n.getLayout().y - o, n.setLayout({ y: l }, !0)), r = n.getLayout().y }
5858        })
5859    }
5860
5861    function lp(t, e) {
5862        d(t.slice().reverse(), function(t) {
5863            d(t, function(t) {
5864                if (t.outEdges.length) {
5865                    var i = gp(t.outEdges, up) / gp(t.outEdges, xp),
5866                        n = t.getLayout().y + (i - mp(t)) * e;
5867                    t.setLayout({ y: n }, !0)
5868                }
5869            })
5870        })
5871    }
5872
5873    function up(t) { return mp(t.node2) * t.getValue() }
5874
5875    function hp(t, e) {
5876        d(t, function(t) {
5877            d(t, function(t) {
5878                if (t.inEdges.length) {
5879                    var i = gp(t.inEdges, cp) / gp(t.inEdges, xp),
5880                        n = t.getLayout().y + (i - mp(t)) * e;
5881                    t.setLayout({ y: n }, !0)
5882                }
5883            })
5884        })
5885    }
5886
5887    function cp(t) { return mp(t.node1) * t.getValue() }
5888
5889    function dp(t) {
5890        d(t, function(t) { t.outEdges.sort(fp), t.inEdges.sort(pp) }), d(t, function(t) {
5891            var e = 0,
5892                i = 0;
5893            d(t.outEdges, function(t) { t.setLayout({ sy: e }, !0), e += t.getLayout().dy }), d(t.inEdges, function(t) { t.setLayout({ ty: i }, !0), i += t.getLayout().dy })
5894        })
5895    }
5896
5897    function fp(t, e) { return t.node2.getLayout().y - e.node2.getLayout().y }
5898
5899    function pp(t, e) { return t.node1.getLayout().y - e.node1.getLayout().y }
5900
5901    function gp(t, e) {
5902        for (var i = 0, n = t.length, o = -1; ++o < n;) {
5903            var a = +e.call(t, t[o], o);
5904            isNaN(a) || (i += a)
5905        }
5906        return i
5907    }
5908
5909    function mp(t) { return t.getLayout().y + t.getLayout().dy / 2 }
5910
5911    function vp(t, e) { return t.getLayout().y - e.getLayout().y }
5912
5913    function yp(t, e) { return t - e }
5914
5915    function xp(t) { return t.getValue() }
5916
5917    function _p(t, e, i, n, o) {
5918        var a = t.ends,
5919            r = new pL({ shape: { points: o ? bp(a, n, t) : a } });
5920        return wp(t, r, e, i, o), r
5921    }
5922
5923    function wp(t, e, i, n, o) {
5924        var a = i.hostModel;
5925        (0, BS[o ? "initProps" : "updateProps"])(e, { shape: { points: t.ends } }, a, n);
5926        var r = i.getItemModel(n),
5927            s = r.getModel(dL),
5928            l = i.getItemVisual(n, "color"),
5929            u = s.getItemStyle(["borderColor"]);
5930        u.stroke = l, u.strokeNoScale = !0, e.useStyle(u), e.z2 = 100, eo(e, r.getModel(fL).getItemStyle())
5931    }
5932
5933    function bp(t, e, i) { return f(t, function(t) { return t = t.slice(), t[e] = i.initBaseline, t }) }
5934
5935    function Sp(t) {
5936        var e = [],
5937            i = [];
5938        return t.eachSeriesByType("boxplot", function(t) {
5939            var n = t.getBaseAxis(),
5940                o = l(i, n);
5941            o < 0 && (o = i.length, i[o] = n, e[o] = { axis: n, seriesModels: [] }), e[o].seriesModels.push(t)
5942        }), e
5943    }
5944
5945    function Mp(t) {
5946        var e, i, n = t.axis,
5947            o = t.seriesModels,
5948            a = o.length,
5949            r = t.boxWidthList = [],
5950            s = t.boxOffsetList = [],
5951            l = [];
5952        if ("category" === n.type) i = n.getBandWidth();
5953        else {
5954            var u = 0;
5955            mL(o, function(t) { u = Math.max(u, t.getData().count()) }), e = n.getExtent(), Math.abs(e[1] - e[0])
5956        }
5957        mL(o, function(t) {
5958            var e = t.get("boxWidth");
5959            y(e) || (e = [e, e]), l.push([Do(e[0], i) || 0, Do(e[1], i) || 0])
5960        });
5961        var h = .8 * i - 2,
5962            c = h / a * .3,
5963            d = (h - c * (a - 1)) / a,
5964            f = d / 2 - h / 2;
5965        mL(o, function(t, e) { s.push(f), f += c + d, r.push(Math.min(Math.max(d, l[e][0]), l[e][1])) })
5966    }
5967
5968    function Ip(t, e, i) {
5969        function n(t, i, n) {
5970            var o = s.get(i, n),
5971                a = [];
5972            a[u] = t, a[h] = o;
5973            var l;
5974            return isNaN(t) || isNaN(o) ? l = [NaN, NaN] : (l = r.dataToPoint(a))[u] += e, l
5975        }
5976
5977        function o(t, e, i) {
5978            var n = e.slice(),
5979                o = e.slice();
5980            n[u] += l, o[u] -= l, i ? t.push(n, o) : t.push(o, n)
5981        }
5982
5983        function a(t, e) {
5984            var i = e.slice(),
5985                n = e.slice();
5986            i[u] -= l, n[u] += l, t.push(i, n)
5987        }
5988        var r = t.coordinateSystem,
5989            s = t.getData(),
5990            l = i / 2,
5991            u = "horizontal" === t.get("layout") ? 0 : 1,
5992            h = 1 - u,
5993            c = ["x", "y"],
5994            d = s.mapDimension(c[u]),
5995            f = s.mapDimension(c[h], !0);
5996        if (!(null == d || f.length < 5))
5997            for (var p = 0; p < s.count(); p++) {
5998                var g = s.get(d, p),
5999                    m = n(g, f[2], p),
6000                    v = n(g, f[0], p),
6001                    y = n(g, f[1], p),
6002                    x = n(g, f[3], p),
6003                    _ = n(g, f[4], p),
6004                    w = [];
6005                o(w, y, 0), o(w, x, 1), w.push(v, y, _, x), a(w, v), a(w, _), a(w, m), s.setItemLayout(p, { initBaseline: m[h], ends: w })
6006            }
6007    }
6008
6009    function Tp(t, e, i) { var n = t.ends; return new _L({ shape: { points: i ? Ap(n, t) : n }, z2: 100 }) }
6010
6011    function Dp(t, e, i, n) {
6012        var o = e.getItemModel(i),
6013            a = o.getModel(vL),
6014            r = e.getItemVisual(i, "color"),
6015            s = e.getItemVisual(i, "borderColor") || r,
6016            l = a.getItemStyle(xL);
6017        t.useStyle(l), t.style.strokeNoScale = !0, t.style.fill = r, t.style.stroke = s, t.__simpleBox = n, eo(t, o.getModel(yL).getItemStyle())
6018    }
6019
6020    function Ap(t, e) { return f(t, function(t) { return t = t.slice(), t[1] = e.initBaseline, t }) }
6021
6022    function Cp(t, e, i) {
6023        var n = t.getData(),
6024            o = n.getLayout("largePoints"),
6025            a = new wL({ shape: { points: o }, __sign: 1 });
6026        e.add(a);
6027        var r = new wL({ shape: { points: o }, __sign: -1 });
6028        e.add(r), Lp(1, a, t, n), Lp(-1, r, t, n), i && (a.incremental = !0, r.incremental = !0)
6029    }
6030
6031    function Lp(t, e, i, n) {
6032        var o = t > 0 ? "P" : "N",
6033            a = n.getVisual("borderColor" + o) || n.getVisual("color" + o),
6034            r = i.getModel(vL).getItemStyle(xL);
6035        e.useStyle(r), e.style.fill = null, e.style.stroke = a
6036    }
6037
6038    function kp(t, e, i, n, o) { return i > n ? -1 : i < n ? 1 : e > 0 ? t.get(o, e - 1) <= n ? 1 : -1 : 1 }
6039
6040    function Pp(t, e) {
6041        var i, n = t.getBaseAxis(),
6042            o = "category" === n.type ? n.getBandWidth() : (i = n.getExtent(), Math.abs(i[1] - i[0]) / e.count()),
6043            a = Do(D(t.get("barMaxWidth"), o), o),
6044            r = Do(D(t.get("barMinWidth"), 1), o),
6045            s = t.get("barWidth");
6046        return null != s ? Do(s, o) : Math.max(Math.min(o / 2, a), r)
6047    }
6048
6049    function Np(t) { return y(t) || (t = [+t, +t]), t }
6050
6051    function Op(t, e) { t.eachChild(function(t) { t.attr({ z: e.z, zlevel: e.zlevel, style: { stroke: "stroke" === e.brushType ? e.color : null, fill: "fill" === e.brushType ? e.color : null } }) }) }
6052
6053    function Ep(t, e) {
6054        sw.call(this);
6055        var i = new Kl(t, e),
6056            n = new sw;
6057        this.add(i), this.add(n), n.beforeUpdate = function() { this.attr(i.getScale()) }, this.updateData(t, e)
6058    }
6059
6060    function Rp(t) {
6061        var e = t.data;
6062        e && e[0] && e[0][0] && e[0][0].coord && (t.data = f(e, function(t) { var e = { coords: [t[0].coord, t[1].coord] }; return t[0].name && (e.fromName = t[0].name), t[1].name && (e.toName = t[1].name), o([e, t[0], t[1]]) }))
6063    }
6064
6065    function zp(t, e, i) { sw.call(this), this.add(this.createLine(t, e, i)), this._updateEffectSymbol(t, e) }
6066
6067    function Bp(t, e, i) { sw.call(this), this._createPolyline(t, e, i) }
6068
6069    function Vp(t, e, i) { zp.call(this, t, e, i), this._lastFrame = 0, this._lastFramePercent = 0 }
6070
6071    function Gp() { this.group = new sw }
6072
6073    function Wp(t) { return t instanceof Array || (t = [t, t]), t }
6074
6075    function Fp() {
6076        var t = m_();
6077        this.canvas = t, this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = {}
6078    }
6079
6080    function Hp(t, e, i) {
6081        var n = t[1] - t[0],
6082            o = (e = f(e, function(e) { return { interval: [(e.interval[0] - t[0]) / n, (e.interval[1] - t[0]) / n] } })).length,
6083            a = 0;
6084        return function(t) {
6085            for (n = a; n < o; n++)
6086                if ((r = e[n].interval)[0] <= t && t <= r[1]) { a = n; break }
6087            if (n === o)
6088                for (var n = a - 1; n >= 0; n--) { var r = e[n].interval; if (r[0] <= t && t <= r[1]) { a = n; break } }
6089            return n >= 0 && n < o && i[n]
6090        }
6091    }
6092
6093    function Zp(t, e) {
6094        var i = t[1] - t[0];
6095        return e = [(e[0] - t[0]) / i, (e[1] - t[0]) / i],
6096            function(t) { return t >= e[0] && t <= e[1] }
6097    }
6098
6099    function Up(t) { var e = t.dimensions; return "lng" === e[0] && "lat" === e[1] }
6100
6101    function Xp(t, e, i, n) {
6102        var o = t.getItemLayout(e),
6103            a = i.get("symbolRepeat"),
6104            r = i.get("symbolClip"),
6105            s = i.get("symbolPosition") || "start",
6106            l = (i.get("symbolRotate") || 0) * Math.PI / 180 || 0,
6107            u = i.get("symbolPatternSize") || 2,
6108            h = i.isAnimationEnabled(),
6109            c = { dataIndex: e, layout: o, itemModel: i, symbolType: t.getItemVisual(e, "symbol") || "circle", color: t.getItemVisual(e, "color"), symbolClip: r, symbolRepeat: a, symbolRepeatDirection: i.get("symbolRepeatDirection"), symbolPatternSize: u, rotation: l, animationModel: h ? i : null, hoverAnimation: h && i.get("hoverAnimation"), z2: i.getShallow("z", !0) || 0 };
6110        jp(i, a, o, n, c), qp(t, e, o, a, r, c.boundingLength, c.pxSign, u, n, c
6110), Kp(i, c.symbolScale, l, n, c);
6111        var d = c.symbolSize,
6112            f = i.get("symbolOffset");
6113        return y(f) && (f = [Do(f[0], d[0]), Do(f[1], d[1])]), $p(i, d, o, a, r, f, s, c.valueLineWidth, c.boundingLength, c.repeatCutLength, n, c), c
6114    }
6115
6116    function jp(t, e, i, n, o) {
6117        var a, r = n.valueDim,
6118            s = t.get("symbolBoundingData"),
6119            l = n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),
6120            u = l.toGlobalCoord(l.dataToCoord(0)),
6121            h = 1 - +(i[r.wh] <= 0);
6122        if (y(s)) {
6123            var c = [Yp(l, s[0]) - u, Yp(l, s[1]) - u];
6124            c[1] < c[0] && c.reverse(), a = c[h]
6125        } else a = null != s ? Yp(l, s) - u : e ? n.coordSysExtent[r.index][h] - u : i[r.wh];
6126        o.boundingLength = a, e && (o.repeatCutLength = i[r.wh]), o.pxSign = a > 0 ? 1 : a < 0 ? -1 : 0
6127    }
6128
6129    function Yp(t, e) { return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e))) }
6130
6131    function qp(t, e, i, n, o, a, r, s, l, u) {
6132        var h = l.valueDim,
6133            c = l.categoryDim,
6134            d = Math.abs(i[c.wh]),
6135            f = t.getItemVisual(e, "symbolSize");
6136        y(f) ? f = f.slice() : (null == f && (f = "100%"), f = [f, f]), f[c.index] = Do(f[c.index], d), f[h.index] = Do(f[h.index], n ? d : Math.abs(a)), u.symbolSize = f, (u.symbolScale = [f[0] / s, f[1] / s])[h.index] *= (l.isHorizontal ? -1 : 1) * r
6137    }
6138
6139    function Kp(t, e, i, n, o) {
6140        var a = t.get(FL) || 0;
6141        a && (ZL.attr({ scale: e.slice(), rotation: i }), ZL.updateTransform(), a /= ZL.getLineScale(), a *= e[n.valueDim.index]), o.valueLineWidth = a
6142    }
6143
6144    function $p(t, e, i, n, o, r, s, l, u, h, c, d) {
6145        var f = c.categoryDim,
6146            p = c.valueDim,
6147            g = d.pxSign,
6148            m = Math.max(e[p.index] + l, 0),
6149            v = m;
6150        if (n) {
6151            var y = Math.abs(u),
6152                x = T(t.get("symbolMargin"), "15%") + "",
6153                _ = !1;
6154            x.lastIndexOf("!") === x.length - 1 && (_ = !0, x = x.slice(0, x.length - 1)), x = Do(x, e[p.index]);
6155            var w = Math.max(m + 2 * x, 0),
6156                b = _ ? 0 : 2 * x,
6157                S = Wo(n),
6158                M = S ? n : pg((y + b) / w);
6159            w = m + 2 * (x = (y - M * m) / 2 / (_ ? M : M - 1)), b = _ ? 0 : 2 * x, S || "fixed" === n || (M = h ? pg((Math.abs(h) + b) / w) : 0), v = M * w - b, d.repeatTimes = M, d.symbolMargin = x
6160        }
6161        var I = g * (v / 2),
6162            D = d.pathPosition = [];
6163        D[f.index] = i[f.wh] / 2, D[p.index] = "start" === s ? I : "end" === s ? u - I : u / 2, r && (D[0] += r[0], D[1] += r[1]);
6164        var A = d.bundlePosition = [];
6165        A[f.index] = i[f.xy], A[p.index] = i[p.xy];
6166        var C = d.barRectShape = a({}, i);
6167        C[p.wh] = g * Math.max(Math.abs(i[p.wh]), Math.abs(D[p.index] + I)), C[f.wh] = i[f.wh];
6168        var L = d.clipShape = {};
6169        L[f.xy] = -i[f.xy], L[f.wh] = c.ecSize[f.wh], L[p.xy] = 0, L[p.wh] = i[p.wh]
6170    }
6171
6172    function Jp(t) {
6173        var e = t.symbolPatternSize,
6174            i = Tl(t.symbolType, -e / 2, -e / 2, e, e, t.color);
6175        return i.attr({ culling: !0 }), "image" !== i.type && i.setStyle({ strokeNoScale: !0 }), i
6176    }
6177
6178    function Qp(t, e, i, n) {
6179        function o(t) {
6180            var e = l.slice(),
6181                n = i.pxSign,
6182                o = t;
6183            return ("start" === i.symbolRepeatDirection ? n > 0 : n < 0) && (o = h - 1 - t), e[u.index] = d * (o - h / 2 + .5) + l[u.index], { position: e, scale: i.symbolScale.slice(), rotation: i.rotation }
6184        }
6185        var a = t.__pictorialBundle,
6186            r = i.symbolSize,
6187            s = i.valueLineWidth,
6188            l = i.pathPosition,
6189            u = e.valueDim,
6190            h = i.repeatTimes || 0,
6191            c = 0,
6192            d = r[e.valueDim.index] + s + 2 * i.symbolMargin;
6193        for (cg(t, function(t) { t.__pictorialAnimationIndex = c, t.__pictorialRepeatTimes = h, c < h ? dg(t, null, o(c), i, n) : dg(t, null, { scale: [0, 0] }, i, n, function() { a.remove(t) }), rg(t, i), c++ }); c < h; c++) {
6194            var f = Jp(i);
6195            f.__pictorialAnimationIndex = c, f.__pictorialRepeatTimes = h, a.add(f);
6196            var p = o(c);
6197            dg(f, { position: p.position, scale: [0, 0] }, { scale: p.scale, rotation: p.rotation }, i, n), f.on("mouseover", function() { cg(t, function(t) { t.trigger("emphasis") }) }).on("mouseout", function() { cg(t, function(t) { t.trigger("normal") }) }), rg(f, i)
6198        }
6199    }
6200
6201    function tg(t, e, i, n) {
6202        var o = t.__pictorialBundle,
6203            a = t.__pictorialMainPath;
6204        a ? dg(a, null, { position: i.pathPosition.slice(), scale: i.symbolScale.slice(), rotation: i.rotation }, i, n) : (a = t.__pictorialMainPath = Jp(i), o.add(a), dg(a, { position: i.pathPosition.slice(), scale: [0, 0], rotation: i.rotation }, { scale: i.symbolScale.slice() }, i, n), a.on("mouseover", function() { this.trigger("emphasis") }).on("mouseout", function() { this.trigger("normal") })), rg(a, i)
6205    }
6206
6207    function eg(t, e, i) {
6208        var n = a({}, e.barRectShape),
6209            o = t.__pictorialBarRect;
6210        o ? dg(o, null, { shape: n }, e, i) : (o = t.__pictorialBarRect = new SS({ z2: 2, shape: n, silent: !0, style: { stroke: "transparent", fill: "transparent", lineWidth: 0 } }), t.add(o))
6211    }
6212
6213    function ig(t, e, i, n) {
6214        if (i.symbolClip) {
6215            var o = t.__pictorialClipPath,
6216                r = a({}, i.clipShape),
6217                s = e.valueDim,
6218                l = i.animationModel,
6219                u = i.dataIndex;
6220            if (o) fo(o, { shape: r }, l, u);
6221            else {
6222                r[s.wh] = 0, o = new SS({ shape: r }), t.__pictorialBundle.setClipPath(o), t.__pictorialClipPath = o;
6223                var h = {};
6224                h[s.wh] = i.clipShape[s.wh], BS[n ? "updateProps" : "initProps"](o, { shape: h }, l, u)
6225            }
6226        }
6227    }
6228
6229    function ng(t, e) { var i = t.getItemModel(e); return i.getAnimationDelayParams = og, i.isAnimationEnabled = ag, i }
6230
6231    function og(t) { return { index: t.__pictorialAnimationIndex, count: t.__pictorialRepeatTimes } }
6232
6233    function ag() { return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation") }
6234
6235    function rg(t, e) {
6236        t.off("emphasis").off("normal");
6237        var i = e.symbolScale.slice();
6238        e.hoverAnimation && t.on("emphasis", function() { this.animateTo({ scale: [1.1 * i[0], 1.1 * i[1]] }, 400, "elasticOut") }).on("normal", function() { this.animateTo({ scale: i.slice() }, 400, "elasticOut") })
6239    }
6240
6241    function sg(t, e, i, n) {
6242        var o = new sw,
6243            a = new sw;
6244        return o.add(a), o.__pictorialBundle = a, a.attr("position", i.bundlePosition.slice()), i.symbolRepeat ? Qp(o, e, i) : tg(o, e, i), eg(o, i, n), ig(o, e, i, n), o.__pictorialShapeStr = hg(t, i), o.__pictorialSymbolMeta = i, o
6245    }
6246
6247    function lg(t, e, i) {
6248        var n = i.animationModel,
6249            o = i.dataIndex;
6250        fo(t.__pictorialBundle, { position: i.bundlePosition.slice() }, n, o), i.symbolRepeat ? Qp(t, e, i, !0) : tg(t, e, i, !0), eg(t, i, !0), ig(t, e, i, !0)
6251    }
6252
6253    function ug(t, e, i, n) {
6254        var o = n.__pictorialBarRect;
6255        o && (o.style.text = null);
6256        var a = [];
6257        cg(n, function(t) { a.push(t) }), n.__pictorialMainPath && a.push(n.__pictorialMainPath), n.__pictorialClipPath && (i = null), d(a, function(t) { fo(t, { scale: [0, 0] }, i, e, function() { n.parent && n.parent.remove(n) }) }), t.setItemGraphicEl(e, null)
6258    }
6259
6260    function hg(t, e) { return [t.getItemVisual(e.dataIndex, "symbol") || "none", !!e.symbolRepeat, !!e.symbolClip].join(":") }
6261
6262    function cg(t, e, i) { d(t.__pictorialBundle.children(), function(n) { n !== t.__pictorialBarRect && e.call(i, n) }) }
6263
6264    function dg(t, e, i, n, o, a) { e && t.attr(e), n.symbolClip && !o ? i && t.attr(i) : i && BS[o ? "updateProps" : "initProps"](t, i, n.animationModel, n.dataIndex, a) }
6265
6266    function fg(t, e, i) {
6267        var n = i.color,
6268            o = i.dataIndex,
6269            a = i.itemModel,
6270            s = a.getModel("itemStyle").getItemStyle(["color"]),
6271            l = a.getModel("emphasis.itemStyle").getItemStyle(),
6272            u = a.getShallow("cursor");
6273        cg(t, function(t) { t.setColor(n), t.setStyle(r({ fill: n, opacity: i.opacity }, s)), eo(t, l), u && (t.cursor = u), t.z2 = i.z2 });
6274        var h = {},
6275            c = e.valueDim.posDesc[+(i.boundingLength > 0)],
6276            d = t.__pictorialBarRect;
6277        ih(d.style, h, a, n, e.seriesModel, o, c), eo(d, h)
6278    }
6279
6280    function pg(t) { var e = Math.round(t);
6280 return Math.abs(t - e) < 1e-4 ? e : Math.ceil(t) }
6281
6282    function gg(t, e, i) { this.dimension = "single", this.dimensions = ["single"], this._axis = null, this._rect, this._init(t, e, i), this.model = t }
6283
6284    function mg(t, e) {
6285        e = e || {};
6286        var i = t.coordinateSystem,
6287            n = t.axis,
6288            o = {},
6289            a = n.position,
6290            r = n.orient,
6291            s = i.getRect(),
6292            l = [s.x, s.x + s.width, s.y, s.y + s.height],
6293            u = { horizontal: { top: l[2], bottom: l[3] }, vertical: { left: l[0], right: l[1] } };
6294        o.position = ["vertical" === r ? u.vertical[a] : l[0], "horizontal" === r ? u.horizontal[a] : l[3]];
6295        var h = { horizontal: 0, vertical: 1 };
6296        o.rotation = Math.PI / 2 * h[r];
6297        var c = { top: -1, bottom: 1, right: 1, left: -1 };
6298        o.labelDirection = o.tickDirection = o.nameDirection = c[a], t.get("axisTick.inside") && (o.tickDirection = -o.tickDirection), T(e.labelInside, t.get("axisLabel.inside")) && (o.labelDirection = -o.labelDirection);
6299        var d = e.rotate;
6300        return null == d && (d = t.get("axisLabel.rotate")), o.labelRotation = "top" === a ? -d : d, o.z2 = 1, o
6301    }
6302
6303    function vg(t, e, i, n, o) {
6304        var r = t.axis;
6305        if (!r.scale.isBlank() && r.containData(e))
6306            if (t.involveSeries) {
6307                var s = yg(e, t),
6308                    l = s.payloadBatch,
6309                    u = s.snapToValue;
6310                l[0] && null == o.seriesIndex && a(o, l[0]), !n && t.snap && r.containData(u) && null != u && (e = u), i.showPointer(t, e, l, o), i.showTooltip(t, s, u)
6311            } else i.showPointer(t, e)
6312    }
6313
6314    function yg(t, e) {
6315        var i = e.axis,
6316            n = i.dim,
6317            o = t,
6318            a = [],
6319            r = Number.MAX_VALUE,
6320            s = -1;
6321        return $L(e.seriesModels, function(e, l) {
6322            var u, h, c = e.getData().mapDimension(n, !0);
6323            if (e.getAxisTooltipData) {
6324                var d = e.getAxisTooltipData(c, t, i);
6325                h = d.dataIndices, u = d.nestestValue
6326            } else {
6327                if (!(h = e.getData().indicesOfNearest(c[0], t, "category" === i.type ? .5 : null)).length) return;
6328                u = e.getData().get(c[0], h[0])
6329            }
6330            if (null != u && isFinite(u)) {
6331                var f = t - u,
6332                    p = Math.abs(f);
6333                p <= r && ((p < r || f >= 0 && s < 0) && (r = p, s = f, o = u, a.length = 0), $L(h, function(t) { a.push({ seriesIndex: e.seriesIndex, dataIndexInside: t, dataIndex: e.getData().getRawIndex(t) }) }))
6334            }
6335        }), { payloadBatch: a, snapToValue: o }
6336    }
6337
6338    function xg(t, e, i, n) { t[e.key] = { value: i, payloadBatch: n } }
6339
6340    function _g(t, e, i, n) {
6341        var o = i.payloadBatch,
6342            a = e.axis,
6343            r = a.model,
6344            s = e.axisPointerModel;
6345        if (e.triggerTooltip && o.length) {
6346            var l = e.coordSys.model,
6347                u = Ju(l),
6348                h = t.map[u];
6349            h || (h = t.map[u] = { coordSysId: l.id, coordSysIndex: l.componentIndex, coordSysType: l.type, coordSysMainType: l.mainType, dataByAxis: [] }, t.list.push(h)), h.dataByAxis.push({ axisDim: a.dim, axisIndex: r.componentIndex, axisType: r.type, axisId: r.id, value: n, valueLabelOpt: { precision: s.get("label.precision"), formatter: s.get("label.formatter") }, seriesDataIndices: o.slice() })
6350        }
6351    }
6352
6353    function wg(t, e, i) {
6354        var n = i.axesInfo = [];
6355        $L(e, function(e, i) {
6356            var o = e.axisPointerModel.option,
6357                a = t[i];
6358            a ? (!e.useHandle && (o.status = "show"), o.value = a.value, o.seriesDataIndices = (a.payloadBatch || []).slice()) : !e.useHandle && (o.status = "hide"), "show" === o.status && n.push({ axisDim: e.axis.dim, axisIndex: e.axis.model.componentIndex, value: o.value })
6359        })
6360    }
6361
6362    function bg(t, e, i, n) {
6363        if (!Tg(e) && t.list.length) {
6364            var o = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
6365            n({ type: "showTip", escapeConnect: !0, x: e[0], y: e[1], tooltipOption: i.tooltipOption, position: i.position, dataIndexInside: o.dataIndexInside, dataIndex: o.dataIndex, seriesIndex: o.seriesIndex, dataByCoordSys: t.list })
6366        } else n({ type: "hideTip" })
6367    }
6368
6369    function Sg(t, e, i) {
6370        var n = i.getZr(),
6371            o = QL(n).axisPointerLastHighlights || {},
6372            a = QL(n).axisPointerLastHighlights = {};
6373        $L(t, function(t, e) {
6374            var i = t.axisPointerModel.option;
6375            "show" === i.status && $L(i.seriesDataIndices, function(t) {
6376                var e = t.seriesIndex + " | " + t.dataIndex;
6377                a[e] = t
6378            })
6379        });
6380        var r = [],
6381            s = [];
6382        d(o, function(t, e) {!a[e] && s.push(t) }), d(a, function(t, e) {!o[e] && r.push(t) }), s.length && i.dispatchAction({ type: "downplay", escapeConnect: !0, batch: s }), r.length && i.dispatchAction({ type: "highlight", escapeConnect: !0, batch: r })
6383    }
6384
6385    function Mg(t, e) { for (var i = 0; i < (t || []).length; i++) { var n = t[i]; if (e.axis.dim === n.axisDim && e.axis.model.componentIndex === n.axisIndex) return n } }
6386
6387    function Ig(t) {
6388        var e = t.axis.model,
6389            i = {},
6390            n = i.axisDim = t.axis.dim;
6391        return i.axisIndex = i[n + "AxisIndex"] = e.componentIndex, i.axisName = i[n + "AxisName"] = e.name, i.axisId = i[n + "AxisId"] = e.id, i
6392    }
6393
6394    function Tg(t) { return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1]) }
6395
6396    function Dg(t, e, i) {
6397        if (!a_.node) {
6398            var n = e.getZr();
6399            tk(n).records || (tk(n).records = {}), Ag(n, e), (tk(n).records[t] || (tk(n).records[t] = {})).handler = i
6400        }
6401    }
6402
6403    function Ag(t, e) {
6404        function i(i, n) {
6405            t.on(i, function(i) {
6406                var o = Pg(e);
6407                ek(tk(t).records, function(t) { t && n(t, i, o.dispatchAction) }), Cg(o.pendings, e)
6408            })
6409        }
6410        tk(t).initialized || (tk(t).initialized = !0, i("click", v(kg, "click")), i("mousemove", v(kg, "mousemove")), i("globalout", Lg))
6411    }
6412
6413    function Cg(t, e) {
6414        var i, n = t.showTip.length,
6415            o = t.hideTip.length;
6416        n ? i = t.showTip[n - 1] : o && (i = t.hideTip[o - 1]), i && (i.dispatchAction = null, e.dispatchAction(i))
6417    }
6418
6419    function Lg(t, e, i) { t.handler("leave", null, i) }
6420
6421    function kg(t, e, i, n) { e.handler(t, i, n) }
6422
6423    function Pg(t) {
6424        var e = { showTip: [], hideTip: [] },
6425            i = function(n) {
6426                var o = e[n.type];
6427                o ? o.push(n) : (n.dispatchAction = i, t.dispatchAction(n))
6428            };
6429        return { dispatchAction: i, pendings: e }
6430    }
6431
6432    function Ng(t, e) {
6433        if (!a_.node) {
6434            var i = e.getZr();
6435            (tk(i).records || {})[t] && (tk(i).records[t] = null)
6436        }
6437    }
6438
6439    function Og() {}
6440
6441    function Eg(t, e, i, n) { Rg(nk(i).lastProp, n) || (nk(i).lastProp = n, e ? fo(i, n, t) : (i.stopAnimation(), i.attr(n))) }
6442
6443    function Rg(t, e) { if (w(t) && w(e)) { var i = !0; return d(e, function(e, n) { i = i && Rg(t[n], e) }), !!i } return t === e }
6444
6445    function zg(t, e) { t[e.get("label.show") ? "show" : "hide"]() }
6446
6447    function Bg(t) { return { position: t.position.slice(), rotation: t.rotation || 0 } }
6448
6449    function Vg(t, e, i) {
6450        var n = e.get("z"),
6451            o = e.get("zlevel");
6452        t && t.traverse(function(t) { "group" !== t.type && (null != n && (t.z = n), null != o && (t.zlevel = o), t.silent = i) })
6453    }
6454
6455    function Gg(t) {
6456        var e, i = t.get("type"),
6457            n = t.getModel(i + "Style");
6458        return "line" === i ? (e = n.getLineStyle()).fill = null : "shadow" === i && ((e = n.getAreaStyle()).stroke = null), e
6459    }
6460
6461    function Wg(t, e, i, n, o) {
6462        var a = Hg(i.get("value"), e.axis, e.ecModel, i.get("seriesDataIndices"), { precision: i.get("label.precision"), formatter: i.get("label.formatter") }),
6463            r = i.getModel("label"),
6464            s = KS(r.get("padding") || 0),
6465            l = r.getFont(),
6466            u = me(a, l),
6467            h = o.position,
6468            c = u.width + s[1] + s[3],
6469            d = u.height + s[0] + s[2],
6470            f = o.align;
6471        "right" === f && (h[0] -= c), "center" === f && (h[0] -= c / 2);
6472        var p = o.verticalAlign;
6473        "bottom" === p && (h[1] -= d), "middle" === p && (h[1] -= d / 2), Fg(h, c, d, n);
6474        var g = r.get("backgroundColor");
6475        g && "auto" !== g || (g = e.get("axisLine.lineStyle.color")), t.label = { shape: { x: 0, y: 0, width: c, height: d, r: r.get("borderRadius") }, position: h.slice(), style: { text: a, textFont: l, textFill: r.getTextColor(), textPosition: "inside", fill: g, stroke: r.get("borderColor") || "transparent", lineWidth: r.get("borderWidth") || 0, shadowBlur: r.get("shadowBlur"), shadowColor: r.get("shadowColor"), shadowOffsetX: r.get("shadowOffsetX"), shadowOffsetY: r.get("shadowOffsetY") }, z2: 10 }
6476    }
6477
6478    function Fg(t, e, i, n) {
6479        var o = n.getWidth(),
6480            a = n.getHeight();
6481        t[0] = Math.min(t[0] + e, o) - e, t[1] = Math.min(t[1] + i, a) - i, t[0] = Math.max(t[0], 0), t[1] = Math.max(t[1], 0)
6482    }
6483
6484    function Hg(t, e, i, n, o) {
6485        t = e.scale.parse(t);
6486        var a = e.scale.getLabel(t, { precision: o.precision }),
6487            r = o.formatter;
6488        if (r) {
6489            var s = { value: bl(e, t), seriesData: [] };
6490            d(n, function(t) {
6491                var e = i.getSeriesByIndex(t.seriesIndex),
6492                    n = t.dataIndexInside,
6493                    o = e && e.getDataParams(n);
6494                o && s.seriesData.push(o)
6495            }), _(r) ? a = r.replace("{value}", a) : x(r) && (a = r(s))
6496        }
6497        return a
6498    }
6499
6500    function Zg(t, e, i) { var n = st(); return dt(n, n, i.rotation), ct(n, n, i.position), mo([t.dataToCoord(e), (i.labelOffset || 0) + (i.labelDirection || 1) * (i.labelMargin || 0)], n) }
6501
6502    function Ug(t, e, i, n, o, a) {
6503        var r = LD.innerTextLayout(i.rotation, 0, i.labelDirection);
6504        i.labelMargin = o.get("label.margin"), Wg(e, n, o, a, { position: Zg(n.axis, t, i), align: r.textAlign, verticalAlign: r.textVerticalAlign })
6505    }
6506
6507    function Xg(t, e, i) { return i = i || 0, { x1: t[i], y1: t[1 - i], x2: e[i], y2: e[1 - i] } }
6508
6509    function jg(t, e, i) { return i = i || 0, { x: t[i], y: t[1 - i], width: e[i], height: e[1 - i] } }
6510
6511    function Yg(t, e, i, n, o, a) { return { cx: t, cy: e, r0: i, r: n, startAngle: o, endAngle: a, clockwise: !0 } }
6512
6513    function qg(t, e) { var i = {}; return i[e.dim + "AxisIndex"] = e.index, t.getCartesian(i) }
6514
6515    function Kg(t) { return "x" === t.dim ? 0 : 1 }
6516
6517    function $g(t) { return t.isHorizontal() ? 0 : 1 }
6518
6519    function Jg(t, e) { var i = t.getRect(); return [i[lk[e]], i[lk[e]] + i[uk[e]]] }
6520
6521    function Qg(t, e, i) { var n = new SS({ shape: { x: t.x - 10, y: t.y - 10, width: 0, height: t.height + 20 } }); return po(n, { shape: { width: t.width + 20, height: t.height + 20 } }, e, i), n }
6522
6523    function tm(t, e, i) {
6524        if (t.count())
6525            for (var n, o = e.coordinateSystem, a = e.getLayerSeries(), r = t.mapDimension("single"), s = t.mapDimension("value"), l = f(a, function(e) { return f(e.indices, function(e) { var i = o.dataToPoint(t.get(r, e)); return i[1] = t.get(s, e), i }) }), u = em(l), h = u.y0, c = i / u.max, d = a.length, p = a[0].indices.length, g = 0; g < p; ++g) { n = h[g] * c, t.setItemLayout(a[0].indices[g], { layerIndex: 0, x: l[0][g][0], y0: n, y: l[0][g][1] * c }); for (var m = 1; m < d; ++m) n += l[m - 1][g][1] * c, t.setItemLayout(a[m].indices[g], { layerIndex: m, x: l[m][g][0], y0: n, y: l[m][g][1] * c }) }
6526    }
6527
6528    function em(t) {
6529        for (var e = t.length, i = t[0].length, n = [], o = [], a = 0, r = {}, s = 0; s < i; ++s) {
6530            for (var l = 0, u = 0; l < e; ++l) u += t[l][s][1];
6531            u > a && (a = u), n.push(u)
6532        }
6533        for (var h = 0; h < i; ++h) o[h] = (a - n[h]) / 2;
6534        a = 0;
6535        for (var c = 0; c < i; ++c) {
6536            var d = n[c] + o[c];
6537            d > a && (a = d)
6538        }
6539        return r.y0 = o, r.max = a, r
6540    }
6541
6542    function im(t) {
6543        var e = 0;
6544        d(t.children, function(t) {
6545            im(t);
6546            var i = t.value;
6547            y(i) && (i = i[0]), e += i
6548        });
6549        var i = t.value;
6550        y(i) && (i = i[0]), (null == i || isNaN(i)) && (i = e), i < 0 && (i = 0), y(t.value) ? t.value[0] = i : t.value = i
6551    }
6552
6553    function nm(t, e, i) {
6554        function n() { r.ignore = r.hoverIgnore }
6555
6556        function o() { r.ignore = r.normalIgnore }
6557        sw.call(this);
6558        var a = new vS({ z2: pk });
6559        a.seriesIndex = e.seriesIndex;
6560        var r = new fS({ z2: gk, silent: t.getModel("label").get("silent") });
6561        this.add(a), this.add(r), this.updateData(!0, t, "normal", e, i), this.on("emphasis", n).on("normal", o).on("mouseover", n).on("mouseout", o)
6562    }
6563
6564    function om(t, e, i) {
6565        var n = t.getVisual("color"),
6566            o = t.getVisual("visualMeta");
6567        o && 0 !== o.length || (n = null);
6568        var a = t.getModel("itemStyle").get("color");
6569        if (a) return a;
6570        if (n) return n;
6571        if (0 === t.depth) return i.option.color[0];
6572        var r = i.option.color.length;
6573        return a = i.option.color[am(t) % r]
6574    }
6575
6576    function am(t) { for (var e = t; e.depth > 1;) e = e.parentNode; return l(t.getAncestors()[0].children, e) }
6577
6578    function rm(t, e, i) { return i !== fk.NONE && (i === fk.SELF ? t === e : i === fk.ANCESTOR ? t === e || t.isAncestorOf(e) : t === e || t.isDescendantOf(e)) }
6579
6580    function sm(t, e) {
6581        var i = t.children || [];
6582        t.children = lm(i, e), i.length && d(t.children, function(t) { sm(t, e) })
6583    }
6584
6585    function lm(t, e) { if ("function" == typeof e) return t.sort(e); var i = "asc" === e; return t.sort(function(t, e) { var n = (t.getValue() - e.getValue()) * (i ? 1 : -1); return 0 === n ? (t.dataIndex - e.dataIndex) * (i ? -1 : 1) : n }) }
6586
6587    function um(t, e) {
6588        return e = e || [0, 0], f(["x", "y"], function(i, n) {
6589            var o = this.getAxis(i),
6590                a = e[n],
6591                r = t[n] / 2;
6592            return "category" === o.type ? o.getBandWidth() : Math.abs(o.dataToCoord(a - r) - o.dataToCoord(a + r))
6593        }, this)
6594    }
6595
6596    function hm(t, e) {
6597        return e = e || [0, 0], f([0, 1], function(i) {
6598            var n = e[i],
6599                o = t[i] / 2,
6600                a = [],
6601                r = [];
6602            return a[i] = n - o, r[i] = n + o, a[1 - i] = r[1 - i] = e[1 - i], Math.abs(this.dataToPoint(a)[i] - this.dataToPoint(r)[i])
6603        }, this)
6604    }
6605
6606    function cm(t, e) {
6607        var i = this.getAxis(),
6608            n = e instanceof Array ? e[0] : e,
6609            o = (t instanceof Array ? t[0] : t) / 2;
6610        return "category" === i.type ? i.getBandWidth() : Math.abs(i.dataToCoord(n - o) - i.dataToCoord(n + o))
6611    }
6612
6613    function dm(t, e) {
6614        return f(["Radius", "Angle"], function(i, n) {
6615            var o = this["get" + i + "Axis"](),
6616                a = e[n],
6617                r = t[n] / 2,
6618                s = "dataTo" + i,
6619                l = "category" === o.type ? o.getBandWidth() : Math.abs(o[s](a - r) - o[s](a + r));
6620            return "Angle" === i && (l = l * Math.PI / 180), l
6621        }, this)
6622    }
6623
6624    function fm(t) {
6625        var e, i = t.type;
6626        if ("path" === i) {
6627            var n = t.shape;
6628            (e = Rn(n.pathData, null, { x: n.x || 0, y: n.y || 0, width: n.width || 0, height: n.height || 0 }, "center")).__customPathData = t.pathData
6629        } else "image" === i ? (e = new Je({})).__customImagePath = t.style.image : "text" === i ? (e = new fS({})).__customText = t.style.text : e = new(0, BS[i.charAt(0).toUpperCase() + i.slice(1)]);
6630        return e.__customGraphicType = i, e.name = t.name, e
6631    }
6632
6633    function pm(t, e, n, o, a, r) {
6634        var s = {},
6635            l = n.style || {};
6636        if (n.shape && (s.shape = i(n.shape)), n.position && (s.position = n.position.slice()), n.scale && (s.scale = n.scale.slice()), n.origin && (s.origin = n.origin.slice()), n.rotation && (s.rotation = n.rotation), "image" === t.type &
6636& n.style) {
6637            u = s.style = {};
6638            d(["x", "y", "width", "height"], function(e) { gm(e, u, l, t.style, r) })
6639        }
6640        if ("text" === t.type && n.style) {
6641            var u = s.style = {};
6642            d(["x", "y"], function(e) { gm(e, u, l, t.style, r) }), !l.hasOwnProperty("textFill") && l.fill && (l.textFill = l.fill), !l.hasOwnProperty("textStroke") && l.stroke && (l.textStroke = l.stroke)
6643        }
6644        if ("group" !== t.type && (t.useStyle(l), r)) {
6645            t.style.opacity = 0;
6646            var h = l.opacity;
6647            null == h && (h = 1), po(t, { style: { opacity: h } }, o, e)
6648        }
6649        r ? t.attr(s) : fo(t, s, o, e), t.attr({ z2: n.z2 || 0, silent: n.silent }), !1 !== n.styleEmphasis && eo(t, n.styleEmphasis)
6650    }
6651
6652    function gm(t, e, i, n, o) { null == i[t] || o || (e[t] = i[t], i[t] = n[t]) }
6653
6654    function mm(t, e, i, n) {
6655        function o(t) { null == t && (t = h), v && (c = e.getItemModel(t), d = c.getModel(bk), f = c.getModel(Sk), p = e.getItemVisual(t, "color"), v = !1) }
6656        var s = t.get("renderItem"),
6657            l = t.coordinateSystem,
6658            u = {};
6659        l && (u = l.prepareCustoms ? l.prepareCustoms() : Ik[l.type](l));
6660        var h, c, d, f, p, g = r({
6661                getWidth: n.getWidth,
6662                getHeight: n.getHeight,
6663                getZr: n.getZr,
6664                getDevicePixelRatio: n.getDevicePixelRatio,
6665                value: function(t, i) { return null == i && (i = h), e.get(e.getDimension(t || 0), i) },
6666                style: function(i, n) {
6667                    null == n && (n = h), o(n);
6668                    var r = c.getModel(_k).getItemStyle();
6669                    null != p && (r.fill = p);
6670                    var s = e.getItemVisual(n, "opacity");
6671                    return null != s && (r.opacity = s), no(r, d, null, { autoColor: p, isRectText: !0 }), r.text = d.getShallow("show") ? D(t.getFormattedLabel(n, "normal"), ql(e, n)) : null, i && a(r, i), r
6672                },
6673                styleEmphasis: function(i, n) { null == n && (n = h), o(n); var r = c.getModel(wk).getItemStyle(); return no(r, f, null, { isRectText: !0 }, !0), r.text = f.getShallow("show") ? A(t.getFormattedLabel(n, "emphasis"), t.getFormattedLabel(n, "normal"), ql(e, n)) : null, i && a(r, i), r },
6674                visual: function(t, i) { return null == i && (i = h), e.getItemVisual(i, t) },
6675                barLayout: function(t) { if (l.getBaseAxis) return rl(r({ axis: l.getBaseAxis() }, t), n) },
6676                currentSeriesIndices: function() { return i.getCurrentSeriesIndices() },
6677                font: function(t) { return ho(t, i) }
6678            }, u.api || {}),
6679            m = { context: {}, seriesId: t.id, seriesName: t.name, seriesIndex: t.seriesIndex, coordSys: u.coordSys, dataInsideLength: e.count(), encode: vm(t.getData()) },
6680            v = !0;
6681        return function(t) { return h = t, v = !0, s && s(r({ dataIndexInside: t, dataIndex: e.getRawIndex(t) }, m), g) || {} }
6682    }
6683
6684    function vm(t) {
6685        var e = {};
6686        return d(t.dimensions, function(i, n) {
6687            var o = t.getDimensionInfo(i);
6688            if (!o.isExtraCoord) {
6689                var a = o.coordDim;
6690                (e[a] = e[a] || [])[o.coordDimIndex] = n
6691            }
6692        }), e
6693    }
6694
6695    function ym(t, e, i, n, o, a) { return (t = xm(t, e, i, n, o, a)) && a.setItemGraphicEl(e, t), t }
6696
6697    function xm(t, e, i, n, o, a) {
6698        var r = i.type;
6699        if (!t || r === t.__customGraphicType || "path" === r && i.pathData === t.__customPathData || "image" === r && i.style.image === t.__customImagePath || "text" === r && i.style.text === t.__customText || (o.remove(t), t = null), null != r) {
6700            var s = !t;
6701            if (!t && (t = fm(i)), pm(t, e, i, n, a, s), "group" === r) {
6702                var l = t.children() || [],
6703                    u = i.children || [];
6704                if (i.diffChildrenByName) _m({ oldChildren: l, newChildren: u, dataIndex: e, animatableModel: n, group: t, data: a });
6705                else { for (var h = 0; h < u.length; h++) xm(t.childAt(h), e, u[h], n, t, a); for (; h < l.length; h++) l[h] && t.remove(l[h]) }
6706            }
6707            return o.add(t), t
6708        }
6709    }
6710
6711    function _m(t) { new Ss(t.oldChildren, t.newChildren, wm, wm, t).add(bm).update(bm).remove(Sm).execute() }
6712
6713    function wm(t, e) { var i = t && t.name; return null != i ? i : Mk + e }
6714
6715    function bm(t, e) {
6716        var i = this.context,
6717            n = null != t ? i.newChildren[t] : null;
6718        xm(null != e ? i.oldChildren[e] : null, i.dataIndex, n, i.animatableModel, i.group, i.data)
6719    }
6720
6721    function Sm(t) {
6722        var e = this.context,
6723            i = e.oldChildren[t];
6724        i && e.group.remove(i)
6725    }
6726
6727    function Mm(t, e, i, n) {
6728        var o = i.type,
6729            a = new(0, BS[o.charAt(0).toUpperCase() + o.slice(1)])(i);
6730        e.add(a), n.set(t, a), a.__ecGraphicId = t
6731    }
6732
6733    function Im(t, e) {
6734        var i = t && t.parent;
6735        i && ("group" === t.type && t.traverse(function(t) { Im(t, e) }), e.removeKey(t.__ecGraphicId), i.remove(t))
6736    }
6737
6738    function Tm(t) { return t = a({}, t), d(["id", "parentId", "$action", "hv", "bounding"].concat(aM), function(e) { delete t[e] }), t }
6739
6740    function Dm(t, e) { var i; return d(e, function(e) { null != t[e] && "auto" !== t[e] && (i = !0) }), i }
6741
6742    function Am(t, e) {
6743        var i = t.exist;
6744        if (e.id = t.keyInfo.id, !e.type && i && (e.type = i.type), null == e.parentId) {
6745            var n = e.parentOption;
6746            n ? e.parentId = n.id : i && (e.parentId = i.parentId)
6747        }
6748        e.parentOption = null
6749    }
6750
6751    function Cm(t, e, i) {
6752        var o = a({}, i),
6753            r = t[e],
6754            s = i.$action || "merge";
6755        "merge" === s ? r ? (n(r, o, !0), ia(r, o, { ignoreSize: !0 }), oa(i, r)) : t[e] = o : "replace" === s ? t[e] = o : "remove" === s && r && (t[e] = null)
6756    }
6757
6758    function Lm(t, e) { t && (t.hv = e.hv = [Dm(e, ["left", "right"]), Dm(e, ["top", "bottom"])], "group" === t.type && (null == t.width && (t.width = e.width = 0), null == t.height && (t.height = e.height = 0))) }
6759
6760    function km(t, e, i) {
6761        var n, o = {},
6762            a = "toggleSelected" === t;
6763        return i.eachComponent("legend", function(i) {
6764            a && null != n ? i[n ? "select" : "unSelect"](e.name) : (i[t](e.name), n = i.isSelected(e.name)), d(i.getData(), function(t) {
6765                var e = t.get("name");
6766                if ("\n" !== e && "" !== e) {
6767                    var n = i.isSelected(e);
6768                    o.hasOwnProperty(e) ? o[e] = o[e] && n : o[e] 
6768= n
6769                }
6770            })
6771        }), { name: e.name, selected: o }
6772    }
6773
6774    function Pm(t, e, i) {
6775        var n = e.getBoxLayoutParams(),
6776            o = e.get("padding"),
6777            a = { width: i.getWidth(), height: i.getHeight() },
6778            r = Qo(n, a, o);
6779        sM(e.get("orient"), t, e.get("itemGap"), r.width, r.height), ta(t, n, a, o)
6780    }
6781
6782    function Nm(t, e) {
6783        var i = KS(e.get("padding")),
6784            n = e.getItemStyle(["color", "opacity"]);
6785        return n.fill = e.get("backgroundColor"), t = new SS({ shape: { x: t.x - i[3], y: t.y - i[0], width: t.width + i[1] + i[3], height: t.height + i[0] + i[2], r: e.get("borderRadius") }, style: n, silent: !0, z2: -1 })
6786    }
6787
6788    function Om(t, e) { e.dispatchAction({ type: "legendToggleSelect", name: t }) }
6789
6790    function Em(t, e, i, n) {
6791        var o = i.getZr().storage.getDisplayList()[0];
6792        o && o.useHoverLayer || i.dispatchAction({ type: "highlight", seriesName: t.name, name: e, excludeSeriesId: n })
6793    }
6794
6795    function Rm(t, e, i, n) {
6796        var o = i.getZr().storage.getDisplayList()[0];
6797        o && o.useHoverLayer || i.dispatchAction({ type: "downplay", seriesName: t.name, name: e, excludeSeriesId: n })
6798    }
6799
6800    function zm(t, e, i) {
6801        var n = [1, 1];
6802        n[t.getOrient().index] = 0, ia(e, i, { type: "box", ignoreSize: n })
6803    }
6804
6805    function Bm(t) { var e = "left " + t + "s cubic-bezier(0.23, 1, 0.32, 1),top " + t + "s cubic-bezier(0.23, 1, 0.32, 1)"; return f(Vk, function(t) { return t + "transition:" + e }).join(";") }
6806
6807    function Vm(t) {
6808        var e = [],
6809            i = t.get("fontSize"),
6810            n = t.getTextColor();
6811        return n && e.push("color:" + n), e.push("font:" + t.getFont()), i && e.push("line-height:" + Math.round(3 * i / 2) + "px"), zk(["decoration", "align"], function(i) {
6812            var n = t.get(i);
6813            n && e.push("text-" + i + ":" + n)
6814        }), e.join(";")
6815    }
6816
6817    function Gm(t) {
6818        var e = [],
6819            i = t.get("transitionDuration"),
6820            n = t.get("backgroundColor"),
6821            o = t.getModel("textStyle"),
6822            a = t.get("padding");
6823        return i && e.push(Bm(i)), n && (a_.canvasSupported ? e.push("background-Color:" + n) : (e.push("background-Color:#" + Pt(n)), e.push("filter:alpha(opacity=70)"))), zk(["width", "color", "radius"], function(i) {
6824            var n = "border-" + i,
6825                o = Bk(n),
6826                a = t.get(o);
6827            null != a && e.push(n + ":" + a + ("color" === i ? "" : "px"))
6828        }), e.push(Vm(o)), null != a && e.push("padding:" + KS(a).join("px ") + "px"), e.join(";") + ";"
6829    }
6830
6831    function Wm(t, e) {
6832        if (a_.wxa) return null;
6833        var i = document.createElement("div"),
6834            n = this._zr = e.getZr();
6835        this.el = i, this._x = e.getWidth() / 2, this._y = e.getHeight() / 2, t.appendChild(i), this._container = t, this._show = !1, this._hideTimeout;
6836        var o = this;
6837        i.onmouseenter = function() { o._enterable && (clearTimeout(o._hideTimeout), o._show = !0), o._inContent = !0 }, i.onmousemove = function(e) {
6838            if (e = e || window.event, !o._enterable) {
6839                var i = n.handler;
6840                li(t, e, !0), i.dispatch("mousemove", e)
6841            }
6842        }, i.onmouseleave = function() { o._enterable && o._show && o.hideLater(o._hideDelay), o._inContent = !1 }
6843    }
6844
6845    function Fm(t) {
6846        for (var e = t.pop(); t.length;) {
6847            var i = t.pop();
6848            i && (wo.isInstance(i) && (i = i.get("tooltip", !0)), "string" == typeof i && (i = { formatter: i }), e = new wo(i, e, e.ecModel))
6849        }
6850        return e
6851    }
6852
6853    function Hm(t, e) { return t.dispatchAction || m(e.dispatchAction, e) }
6854
6855    function Zm(t, e, i, n, o, a, r) {
6856        var s = Xm(i),
6857            l = s.width,
6858            u = s.height;
6859        return null != a && (t + l + a > n ? t -= l + a : t += a), null != r && (e + u + r > o ? e -= u + r : e += r), [t, e]
6860    }
6861
6862    function Um(t, e, i, n, o) {
6863        var a = Xm(i),
6864            r = a.width,
6865            s = a.height;
6866        return t = Math.min(t + r, n) - r, e = Math.min(e + s, o) - s, t = Math.max(t, 0), e = Math.max(e, 0), [t, e]
6867    }
6868
6869    function Xm(t) {
6870        var e = t.clientWidth,
6871            i = t.clientHeight;
6872        if (document.defaultView && document.defaultView.getComputedStyle) {
6873            var n = document.defaultView.getComputedStyle(t);
6874            n && (e += parseInt(n.paddingLeft, 10) + parseInt(n.paddingRight, 10) + parseInt(n.borderLeftWidth, 10) + parseInt(n.borderRightWidth, 10), i += parseInt(n.paddingTop, 10) + parseInt(n.paddingBottom, 10) + parseInt(n.borderTopWidth, 10) + parseInt(n.borderBottomWidth, 10))
6875        }
6876        return { width: e, height: i }
6877    }
6878
6879    function jm(t, e, i) {
6880        var n = i[0],
6881            o = i[1],
6882            a = 0,
6883            r = 0,
6884            s = e.width,
6885            l = e.height;
6886        switch (t) {
6887            case "inside":
6888                a = e.x + s / 2 - n / 2, r = e.y + l / 2 - o / 2;
6889                break;
6890            case "top":
6891                a = e.x + s / 2 - n / 2, r = e.y - o - 5;
6892                break;
6893            case "bottom":
6894                a = e.x + s / 2 - n / 2, r = e.y + l + 5;
6895                break;
6896            case "left":
6897                a = e.x - n - 5, r = e.y + l / 2 - o / 2;
6898                break;
6899            case "right":
6900                a = e.x + s + 5, r = e.y + l / 2 - o / 2
6901        }
6902        return [a, r]
6903    }
6904
6905    function Ym(t) { return "center" === t || "middle" === t }
6906
6907    function qm(t) { return t.get("stack") || "__ec_stack_" + t.seriesIndex }
6908
6909    function Km(t) { return t.dim }
6910
6911    function $m(t, e) {
6912        var i = {};
6913        d(t, function(t, e) {
6914            var n = t.getData(),
6915                o = t.coordinateSystem.getBaseAxis(),
6916                a = o.getExtent(),
6917                r = "category" === o.type ? o.getBandWidth() : Math.abs(a[1] - a[0]) / n.count(),
6918                s = i[Km(o)] || { bandWidth: r, remainedWidth: r, autoWidthCount: 0, categoryGap: "20%", gap: "30%", stacks: {} },
6919                l = s.stacks;
6920            i[Km(o)] = s;
6921            var u = qm(t);
6922            l[u] || s.autoWidthCount++, l[u] = l[u] || { width: 0, maxWidth: 0 };
6923            var h = Do(t.get("barWidth"), r),
6924                c = Do(t.get("barMaxWidth"), r),
6925                d = t.get("barGap"),
6926                f = t.get("barCategoryGap");
6927            h && !l[u].width && (h = Math.min(s.remainedWidth, h), l[u].width = h, s.remainedWidth -= h), c && (l[u].maxWidth = c), null != d && (s.gap = d), null != f && (s.categoryGap = f)
6928        });
6929        var n = {};
6930        return d(i, function(t, e) {
6931            n[e] = {};
6932            var i = t.stacks,
6933                o = t.bandWidth,
6934                a = Do(t.categoryGap, o),
6935                r = Do(t.gap, 1),
6936                s = t.remainedWidth,
6937                l = t.autoWidthCount,
6938                u = (s - a) / (l + (l - 1) * r);
6939            u = Math.max(u, 0), d(i, function(t, e) {
6940                var i = t.maxWidth;
6941                i && i < u && (i = Math.min(i, s), t.width && (i = Math.min(i, t.width)), s -= i, t.width = i, l--)
6942            }), u = (s - a) / (l + (l - 1) * r), u = Math.max(u, 0);
6943            var h, c = 0;
6944            d(i, function(t, e) { t.width || (t.width = u), h = t, c += t.width * (1 + r) }), h && (c -= h.width * r);
6945            var f = -c / 2;
6946            d(i, function(t, i) { n[e][i] = n[e][i] || { offset: f, width: t.width }, f += t.width * (1 + r) })
6947        }), n
6948    }
6949
6950    function Jm(t, e) { qT.call(this, "radius", t, e), this.type = "category" }
6951
6952    function Qm(t, e) { e = e || [0, 360], qT.call(this, "angle", t, e), this.type = "category" }
6953
6954    function tv(t, e) { return e.type || (e.data ? "category" : "value") }
6955
6956    function ev(t, e, i) {
6957        var n = e.get("center"),
6958            o = i.getWidth(),
6959            a = i.getHeight();
6960        t.cx = Do(n[0], o), t.cy = Do(n[1], a);
6961        var r = t.getRadiusAxis(),
6962            s = Math.min(o, a) / 2,
6963            l = Do(e.get("radius"), s);
6964        r.inverse ? r.setExtent(l, 0) : r.setExtent(0, l)
6965    }
6966
6967    function iv(t, e) {
6968        var i = this,
6969            n = i.getAngleAxis(),
6970            o = i.getRadiusAxis();
6971        if (n.scale.setExtent(1 / 0, -1 / 0), o.scale.setExtent(1 / 0, -1 / 0), t.eachSeries(function(t) {
6972                if (t.coordinateSystem === i) {
6973                    var e = t.getData();
6974                    d(e.mapDimension("radius", !0), function(t) { o.scale.unionExtentFromData(e, Us(e, t)) }), d(e.mapDimension("angle", !0), function(t) { n.scale.unionExtentFromData(e, Us(e, t)) })
6975                }
6976            }), yl(n.scale, n.model), yl(o.scale, o.model), "category" === n.type && !n.onBand) {
6977            var a = n.getExtent(),
6978                r = 360 / n.scale.count();
6979            n.inverse ? a[1] += r : a[1] -= r, n.setExtent(a[0], a[1])
6980        }
6981    }
6982
6983    function nv(t, e) {
6984        if (t.type = e.get("type"), t.scale = xl(e), t.onBand = e.get("boundaryGap") && "category" === t.type, t.inverse = e.get("inverse"), "angleAxis" === e.mainType) {
6985            t.inverse ^= e.get("clockwise");
6986            var i = e.get("startAngle");
6987            t.setExtent(i, i + (t.inverse ? -360 : 360))
6988        }
6989        e.axis = t, t.model = e
6990    }
6991
6992    function ov(t, e, i) {
6993        e[1] > e[0] && (e = e.slice().reverse());
6994        var n = t.coordToPoint([e[0], i]),
6995            o = t.coordToPoint([e[1], i]);
6996        return { x1: n[0], y1: n[1], x2: o[0], y2: o[1] }
6997    }
6998
6999    function av(t) { return t.getRadiusAxis().inverse ? 0 : 1 }
7000
7001    function rv(t) {
7002        var e = t[0],
7003            i = t[t.length - 1];
7004        e && i && Math.abs(Math.abs(e.coord - i.coord) - 360) < 1e-4 && t.pop()
7005    }
7006
7007    function sv(t, e, i) { return { position: [t.cx, t.cy], rotation: i / 180 * Math.PI, labelDirection: -1, tickDirection: -1, nameDirection: 1, labelRotate: e.getModel("axisLabel").get("rotate"), z2: 1 } }
7008
7009    function lv(t, e, i, n, o) {
7010        var a = e.axis,
7011            r = a.dataToCoord(t),
7012            s = n.getAngleAxis().getExtent()[0];
7013        s = s / 180 * Math.PI;
7014        var l, u, h, c = n.getRadiusAxis().getExtent();
7015        if ("radius" === a.dim) {
7016            var d = st();
7017            dt(d, d, s), ct(d, d, [n.cx, n.cy]), l = mo([r, -o], d);
7018            var f = e.getModel("axisLabel").get("rotate") || 0,
7019                p = LD.innerTextLayout(s, f * Math.PI / 180, -1);
7020            u = p.textAlign, h = p.textVerticalAlign
7021        } else {
7022            var g = c[1];
7023            l = n.coordToPoint([g + o, r]);
7024            var m = n.cx,
7025                v = n.cy;
7026            u = Math.abs(l[0] - m) / g < .3 ? "center" : l[0] > m ? "left" : "right", h = Math.abs(l[1] - v) / g < .3 ? "middle" : l[1] > v ? "top" : "bottom"
7027        }
7028        return { position: l, align: u, verticalAlign: h }
7029    }
7030
7031    function uv(t, e) { e.update = "updateView", cs(e, function(e, i) { var n = {}; return i.eachComponent({ mainType: "geo", query: e }, function(i) { i[t](e.name), d(i.coordinateSystem.regions, function(t) { n[t.name] = i.isSelected(t.name) || !1 }) }), { selected: n, name: e.name } }) }
7032
7033    function hv(t) {
7034        var e = {};
7035        d(t, function(t) { e[t] = 1 }), t.length = 0, d(e, function(e, i) { t.push(i) })
7036    }
7037
7038    function cv(t) {
7039        if (t)
7040            for (var e in t)
7041                if (t.hasOwnProperty(e)) return !0
7042    }
7043
7044    function dv(t, e, n) {
7045        function o() { var t = function() {}; return t.prototype.__hidden = t.prototype, new t }
7046        var a = {};
7047        return tP(e, function(e) {
7048            var r = a[e] = o();
7049            tP(t[e], function(t, o) {
7050                if (ZA.isValidType(o)) {
7051                    var a = { type: o, visual: t };
7052                    n && n(a, e), r[o] = new ZA(a), "opacity" === o && ((a = i(a)).type = "colorAlpha", r.__hidden.__alphaForOpacity = new ZA(a))
7053                }
7054            })
7055        }), a
7056    }
7057
7058    function fv(t, e, n) {
7059        var o;
7060        d(n, function(t) { e.hasOwnProperty(t) && cv(e[t]) && (o = !0) }), o && d(n, function(n) { e.hasOwnProperty(n) && cv(e[n]) ? t[n] = i(e[n]) : delete t[n] })
7061    }
7062
7063    function pv(t, e, i, n, o, a) {
7064        function r(t) { return i.getItemVisual(h, t) }
7065
7066        function s(t, e) { i.setItemVisual(h, t, e) }
7067
7068        function l(t, l) {
7069            h = null == a ? t : l;
7070            var c = i.getRawDataItem(h);
7071            if (!c || !1 !== c.visualMap)
7072                for (var d = n.call(o, t), f = e[d], p = u[d], g = 0, m = p.length; g < m; g++) {
7073                    var v = p[g];
7074                    f[v] && f[v].applyVisual(t, r, s)
7075                }
7076        }
7077        var u = {};
7078        d(t, function(t) {
7079            var i = ZA.prepareVisualTypes(e[t]);
7080            u[t] = i
7081        });
7082        var h;
7083        null == a ? i.each(l) : i.each([a], l)
7084    }
7085
7086    function gv(t, e, i, n) {
7087        var o = {};
7088        return d(t, function(t) {
7089            var i = ZA.prepareVisualTypes(e[t]);
7090            o[t] = i
7091        }), {
7092            progress: function(t, a) {
7093                null != n && (n = a.getDimension(n));
7094                for (var r; null != (r = t.next());) {
7095                    var s = a.getRawDataItem(r);
7096                    if (s && !1 === s.visualMap) return;
7097                    for (var l = null != n ? a.get(n, r, !0) : r, u = i(l), h = e[u], c = o[u], d = 0, f = c.length; d < f; d++) {
7098                        var p = c[d];
7099                        h[p] && h[p].applyVisual(l, function(t) { return a.getItemVisual(r, t) }, function(t, e) { a.setItemVisual(r, t, e) })
7100                    }
7101                }
7102            }
7103        }
7104    }
7105
7106    function mv(t) {
7107        var e = ["x", "y"],
7108            i = ["width", "height"];
7109        return {
7110            point: function(e, i, n) { if (e) { var o = n.range; return vv(e[t], o) } },
7111            rect: function(n, o, a) {
7112                if (n) {
7113                    var r = a.range,
7114                        s = [n[e[t]], n[e[t]] + n[i[t]]];
7115                    return s[1] < s[0] && s.reverse(), vv(s[0], r) || vv(s[1], r) || vv(r[0], s) || vv(r[1], s)
7116                }
7117            }
7118        }
7119    }
7120
7121    function vv(t, e) { return e[0] <= t && t <= e[1] }
7122
7123    function yv(t, e, i, n, o) {
7124        for (var a = 0, r = o[o.length - 1]; a < o.length; a++) {
7125            var s = o[a];
7126            if (xv(t, e, i, n, s[0], s[1], r[0], r[1])) return !0;
7127            r = s
7128        }
7129    }
7130
7131    function xv(t, e, i, n, o, a, r, s) { var l = wv(i - t, o - r, n - e, a - s); if (_v(l)) return !1; var u = wv(o - t, o - r, a - e, a - s) / l; if (u < 0 || u > 1) return !1; var h = wv(i - t, o - t, n - e, a - e) / l; return !(h < 0 || h > 1) }
7132
7133    function _v(t) { return t <= 1e-6 && t >= -1e-6 }
7134
7135    function wv(t, e, i, n) { return t * n - e * i }
7136
7137    function bv(t, e, i) {
7138        var n = this._targetInfoList = [],
7139            o = {},
7140            a = Mv(e, t);
7141        iP(lP, function(t, e) {
7142            (!i || !i.include || nP(i.include, e) >= 0) && t(a, n, o)
7143        })
7144    }
7145
7146    function Sv(t) { return t[0] > t[1] && t.reverse(), t }
7147
7148    function Mv(t, e) { return Oi(t, e, { includeMainTypes: rP }) }
7149
7150    function Iv(t, e, i, n) {
7151        var o = i.getAxis(["x", "y"][t]),
7152            a = Sv(f([0, 1], function(t) { return e ? o.coordToData(o.toLocalCoord(n[t])) : o.toGlobalCoord(o.dataToCoord(n[t])) })),
7153            r = [];
7154        return r[t] = a, r[1 - t] = [NaN, NaN], { values: a, xyMinMax: r }
7155    }
7156
7157    function Tv(t, e, i, n) { return [e[0] - n[t] * i[0], e[1] - n[t] * i[1]] }
7158
7159    function Dv(t, e) {
7160        var i = Av(t),
7161            n = Av(e),
7162            o = [i[0] / n[0], i[1] / n[1]];
7163        return isNaN(o[0]) && (o[0] = 1), isNaN(o[1]) && (o[1] = 1), o
7164    }
7165
7166    function Av(t) { return t ? [t[0][1] - t[0][0], t[1][1] - t[1][0]] : [NaN, NaN] }
7167
7168    function Cv(t, e, i, n, o) {
7169        if (o) {
7170            var a = t.getZr();
7171            a[gP] || (a[pP] || (a[pP] = Lv), wr(a, pP, i, e)(t, n))
7172        }
7173    }
7174
7175    function Lv(t, e) {
7176        if (!t.isDisposed()) {
7177            var i = t.getZr();
7178            i[gP] = !0, t.dispatchAction({ type: "brushSelect", batch: e }), i[gP] = !1
7179        }
7180    }
7181
7182    function kv(t, e, i, n) { for (var o = 0, a = e.length; o < a; o++) { var r = e[o]; if (t[r.brushType](n, i, r.selectors, r)) return !0 } }
7183
7184    function Pv(t) { var e = t.brushSelector; if (_(e)) { var i = []; return d(eP, function(t, n) { i[n] = function(i, n, o, a) { var r = n.getItemLayout(i); return t[e](r, o, a) } }), i } if (x(e)) { var n = {}; return d(eP, function(t, i) { n[i] = e }), n } return e }
7185
7186    function Nv(t, e) { var i = t.option.seriesIndex; return null != i && "all" !== i && (y(i) ? l(i, e) < 0 : e !== i) }
7187
7188    function Ov(t) { var e = t.selectors = {}; return d(eP[t.brushType], function(i, n) { e[n] = function(n) { return i(n, e, t) } }), t }
7189
7190    function Ev(t) { return new $t(t[0][0], t[1][0], t[0][1] - t[0][0], t[1][1] - t[1][0]) }
7191
7192    function Rv(t, e) { return n({ brushType: t.brushType, brushMode: t.brushMode, transformable: t.transformable, brushStyle: new wo(t.brushStyle).getItemStyle(), removeOnClick: t.removeOnClick, z: t.z }, e, !0) }
7193
7194    function zv(t, e, i, n) {
7195        (!n || n.$from !== t.id) && this._brushController.setPanels(t.brushTargetManager.makePanelOpts(i)).enableBrush(t.brushOption).updateCovers(t.areas.slice())
7196    }
7197
7198    function Bv(t, e) { xP[t] = e }
7199
7200    function Vv(t) { return xP[t] }
7201
7202    function Gv(t, e, i) { this.model = t, this.ecModel = e, this.api = i, this._brushType, this._brush
7202Mode }
7203
7204    function Wv(t, e, i) { this._model = t }
7205
7206    function Fv(t, e, i, n) {
7207        var o = i.calendarModel,
7208            a = i.seriesModel,
7209            r = o ? o.coordinateSystem : a ? a.coordinateSystem : null;
7210        return r === this ? r[t](n) : null
7211    }
7212
7213    function Hv(t, e) {
7214        var i = t.cellSize;
7215        y(i) ? 1 === i.length && (i[1] = i[0]) : i = t.cellSize = [i, i];
7216        var n = f([0, 1], function(t) { return ea(e, t) && (i[t] = "auto"), null != i[t] && "auto" !== i[t] });
7217        ia(t, e, { type: "box", ignoreSize: n })
7218    }
7219
7220    function Zv(t) { return l(IP, t) >= 0 }
7221
7222    function Uv(t, e, i) {
7223        function n(t, e) { return l(e.nodes, t) >= 0 }
7224
7225        function o(t, n) { var o = !1; return e(function(e) { d(i(t, e) || [], function(t) { n.records[e.name][t] && (o = !0) }) }), o }
7226
7227        function a(t, n) { n.nodes.push(t), e(function(e) { d(i(t, e) || [], function(t) { n.records[e.name][t] = !0 }) }) }
7228        return function(i) {
7229            var r = { nodes: [], records: {} };
7230            if (e(function(t) { r.records[t.name] = {} }), !i) return r;
7231            a(i, r);
7232            var s;
7233            do { s = !1, t(function(t) {!n(t, r) && o(t, r) && (a(t, r), s = !0) }) } while (s);
7234            return r
7235        }
7236    }
7237
7238    function Xv(t, e, i) {
7239        var n = [1 / 0, -1 / 0];
7240        return DP(i, function(t) {
7241            var i = t.getData();
7242            i && DP(i.mapDimension(e, !0), function(t) {
7243                var e = i.getApproximateExtent(t);
7244                e[0] < n[0] && (n[0] = e[0]), e[1] > n[1] && (n[1] = e[1])
7245            })
7246        }), n[1] < n[0] && (n = [NaN, NaN]), jv(t, n), n
7247    }
7248
7249    function jv(t, e) {
7250        var i = t.getAxisModel(),
7251            n = i.getMin(!0),
7252            o = "category" === i.get("type"),
7253            a = o && i.getCategories().length;
7254        null != n && "dataMin" !== n && "function" != typeof n ? e[0] = n : o && (e[0] = a > 0 ? 0 : NaN);
7255        var r = i.getMax(!0);
7256        return null != r && "dataMax" !== r && "function" != typeof r ? e[1] = r : o && (e[1] = a > 0 ? a - 1 : NaN), i.get("scale", !0) || (e[0] > 0 && (e[0] = 0), e[1] < 0 && (e[1] = 0)), e
7257    }
7258
7259    function Yv(t, e) {
7260        var i = t.getAxisModel(),
7261            n = t._percentWindow,
7262            o = t._valueWindow;
7263        if (n) {
7264            var a = Po(o, [0, 500]);
7265            a = Math.min(a, 20);
7266            var r = e || 0 === n[0] && 100 === n[1];
7267            i.setRange(r ? null : +o[0].toFixed(a), r ? null : +o[1].toFixed(a))
7268        }
7269    }
7270
7271    function qv(t) {
7272        var e = t._minMaxSpan = {},
7273            i = t._dataZoomModel;
7274        DP(["min", "max"], function(n) {
7275            e[n + "Span"] = i.get(n + "Span");
7276            var o = i.get(n + "ValueSpan");
7277            if (null != o && (e[n + "ValueSpan"] = o, null != (o = t.getAxisModel().axis.scale.parse(o)))) {
7278                var a = t._dataExtent;
7279                e[n + "Span"] = To(a[0] + o, a, [0, 100], !0)
7280            }
7281        })
7282    }
7283
7284    function Kv(t) { var e = {}; return LP(["start", "end", "startValue", "endValue", "throttle"], function(i) { t.hasOwnProperty(i) && (e[i] = t[i]) }), e }
7285
7286    function $v(t, e) {
7287        var i = t._rangePropMode,
7288            n = t.get("rangeMode");
7289        LP([
7290            ["start", "startValue"],
7291            ["end", "endValue"]
7292        ], function(t, o) {
7293            var a = null != e[t[0]],
7294                r = null != e[t[1]];
7295            a && !r ? i[o] = "percent" : !a && r ? i[o] = "value" : n ? i[o] = n[o] : a && (i[o] = "percent")
7296        })
7297    }
7298
7299    function Jv(t) { return { x: "y", y: "x", radius: "angle", angle: "radius" }[t] }
7300
7301    function Qv(t) { return "vertical" === t ? "ns-resize" : "ew-resize" }
7302
7303    function ty(t, e) {
7304        var i = ny(t),
7305            n = e.dataZoomId,
7306            o = e.coordId;
7307        d(i, function(t, i) {
7308            var a = t.dataZoomInfos;
7309            a[n] && l(e.allCoordIds, o) < 0 && (delete a[n], t.count--)
7310        }), ay(i);
7311        var a = i[o];
7312        a || ((a = i[o] = { coordId: o, dataZoomInfos: {}, count: 0 }
7312).controller = oy(t, a), a.dispatchAction = v(uy, t)), !a.dataZoomInfos[n] && a.count++, a.dataZoomInfos[n] = e;
7313        var r = hy(a.dataZoomInfos);
7314        a.controller.enable(r.controlType, r.opt), a.controller.setPointerChecker(e.containsPoint), wr(a, "dispatchAction", e.throttleRate, "fixRate")
7315    }
7316
7317    function ey(t, e) {
7318        var i = ny(t);
7319        d(i, function(t) {
7320            t.controller.dispose();
7321            var i = t.dataZoomInfos;
7322            i[e] && (delete i[e], t.count--)
7323        }), ay(i)
7324    }
7325
7326    function iy(t) { return t.type + "\0_" + t.id }
7327
7328    function ny(t) { var e = t.getZr(); return e[ZP] || (e[ZP] = {}) }
7329
7330    function oy(t, e) { var i = new kh(t.getZr()); return i.on("pan", HP(ry, e)), i.on("zoom", HP(sy, e)), i }
7331
7332    function ay(t) { d(t, function(e, i) { e.count || (e.controller.dispose(), delete t[i]) }) }
7333
7334    function ry(t, e, i, n, o, a, r) { ly(t, function(s) { return s.panGetRange(t.controller, e, i, n, o, a, r) }) }
7335
7336    function sy(t, e, i, n) { ly(t, function(o) { return o.zoomGetRange(t.controller, e, i, n) }) }
7337
7338    function ly(t, e) {
7339        var i = [];
7340        d(t.dataZoomInfos, function(t) { var n = e(t);!t.disabled && n && i.push({ dataZoomId: t.dataZoomId, start: n[0], end: n[1] }) }), i.length && t.dispatchAction(i)
7341    }
7342
7343    function uy(t, e) { t.dispatchAction({ type: "dataZoom", batch: e }) }
7344
7345    function hy(t) {
7346        var e, i = {},
7347            n = { type_true: 2, type_move: 1, type_false: 0, type_undefined: -1 };
7348        return d(t, function(t) {
7349            var o = !t.disabled && (!t.zoomLock || "move");
7350            n["type_" + o] > n["type_" + e] && (e = o), a(i, t.roamControllerOpt)
7351        }), { controlType: e, opt: i }
7352    }
7353
7354    function cy(t, e) { return t && t.hasOwnProperty && t.hasOwnProperty(e) }
7355
7356    function dy(t, e, i, n) {
7357        for (var o = e.targetVisuals[n], a = ZA.prepareVisualTypes(o), r = { color: t.getData().getVisual("color") }, s = 0, l = a.length; s < l; s++) {
7358            var u = a[s],
7359                h = o["opacity" === u ? "__alphaForOpacity" : u];
7360            h && h.applyVisual(i, function(t) { return r[t] }, function(t, e) { r[t] = e })
7361        }
7362        return r.color
7363    }
7364
7365    function fy(t, e, i) { if (i[0] === i[1]) return i.slice(); for (var n = (i[1] - i[0]) / 200, o = i[0], a = [], r = 0; r <= 200 && o < i[1]; r++) a.push(o), o += n; return a.push(i[1]), a }
7366
7367    function py(t, e, i) {
7368        var n = t.option,
7369            o = n.align;
7370        if (null != o && "auto" !== o) return o;
7371        for (var a = { width: e.getWidth(), height: e.getHeight() }, r = "horizontal" === n.orient ? 1 : 0, s = [
7372                ["left", "right", "width"],
7373                ["top", "bottom", "height"]
7374            ], l = s[r], u = [0, null, 10], h = {}, c = 0; c < 3; c++) h[s[1 - r][c]] = u[c], h[l[c]] = 2 === c ? i[0] : n[l[c]];
7375        var d = [
7376                ["x", "width", 3],
7377                ["y", "height", 0]
7378            ][r],
7379            f = Qo(h, a, n.padding);
7380        return l[(f.margin[d[2]] || 0) + f[d[0]] + .5 * f[d[1]] < .5 * a[d[1]] ? 0 : 1]
7381    }
7382
7383    function gy(t) { return d(t || [], function(e) { null != t.dataIndex && (t.dataIndexInside = t.dataIndex, t.dataIndex = null) }), t }
7384
7385    function my(t, e, i, n) { return new wS({ shape: { points: t }, draggable: !!i, cursor: e, drift: i, onmousemove: function(t) { zw(t.event) }, ondragend: n }) }
7386
7387    function vy(t, e) {
7388        return 0 === t ? [
7389            [0, 0],
7390            [e, 0],
7391            [e, -e]
7392        ] : [
7393            [0, 0],
7394            [e, 0],
7395            [e, e]
7396        ]
7397    }
7398
7399    function yy(t, e, i, n) {
7400        return t ? [
7401            [0, -dN(e, fN(i, 0))],
7402            [gN, 0],
7403            [0, dN(e, fN(n - i, 0))]
7404        ] : [
7405            [0, 0],
7406            [5, -5],
7407            [5, 5]
7408        ]
7409    }
7410
7411    function xy(t, e, i) {
7412        var n = pN / 2,
7413            o = t.get("hoverLinkDataSize");
7414        return o && (n = hN(o, e, i, !0) / 2), n
7415    }
7416
7417    function _y(t) { var e = t.get("hoverLinkOnHandle"); return !!(null == e ? t.get("realtime") : e) }
7418
7419    function wy(t) { return "vertical" === t ? "ns-resize" : "ew-resize" }
7420
7421    function by(t, e) {
7422        var i = t.inverse;
7423        ("vertical" === t.orient ? !i : i) && e.reverse()
7424    }
7425
7426    function Sy(t) { Mi(t, "label", ["show"]) }
7427
7428    function My(t) { return !(isNaN(parseFloat(t.x)) && isNaN(parseFloat(t.y))) }
7429
7430    function Iy(t) { return !isNaN(parseFloat(t.x)) && !isNaN(parseFloat(t.y)) }
7431
7432    function Ty(t, e, i, n, o, a) {
7433        var r = [],
7434            s = Zs(e, n) ? e.getCalculationInfo("stackResultDimension") : n,
7435            l = Py(e, s, t),
7436            u = e.indicesOfNearest(s, l)[0];
7437        r[o] = e.get(i, u), r[a] = e.get(n, u);
7438        var h = Lo(e.get(n, u));
7439        return (h = Math.min(h, 20)) >
7439= 0 && (r[a] = +r[a].toFixed(h)), r
7440    }
7441
7442    function Dy(t, e) {
7443        var n = t.getData(),
7444            o = t.coordinateSystem;
7445        if (e && !Iy(e) && !y(e.coord) && o) {
7446            var a = o.dimensions,
7447                r = Ay(e, n, o, t);
7448            if ((e = i(e)).type && MN[e.type] && r.baseAxis && r.valueAxis) {
7449                var s = bN(a, r.baseAxis.dim),
7450                    l = bN(a, r.valueAxis.dim);
7451                e.coord = MN[e.type](n, r.baseDataDim, r.valueDataDim, s, l), e.value = e.coord[l]
7452            } else {
7453                for (var u = [null != e.xAxis ? e.xAxis : e.radiusAxis, null != e.yAxis ? e.yAxis : e.angleAxis], h = 0; h < 2; h++) MN[u[h]] && (u[h] = Py(n, n.mapDimension(a[h]), u[h]));
7454                e.coord = u
7455            }
7456        }
7457        return e
7458    }
7459
7460    function Ay(t, e, i, n) { var o = {}; return null != t.valueIndex || null != t.valueDim ? (o.valueDataDim = null != t.valueIndex ? e.getDimension(t.valueIndex) : t.valueDim, o.valueAxis = i.getAxis(Cy(n, o.valueDataDim)), o.baseAxis = i.getOtherAxis(o.valueAxis), o.baseDataDim = e.mapDimension(o.baseAxis.dim)) : (o.baseAxis = n.getBaseAxis(), o.valueAxis = i.getOtherAxis(o.baseAxis), o.baseDataDim = e.mapDimension(o.baseAxis.dim), o.valueDataDim = e.mapDimension(o.valueAxis.dim)), o }
7461
7462    function Cy(t, e) {
7463        var i = t.getData(),
7464            n = i.dimensions;
7465        e = i.getDimension(e);
7466        for (var o = 0; o < n.length; o++) { var a = i.getDimensionInfo(n[o]); if (a.name === e) return a.coordDim }
7467    }
7468
7469    function Ly(t, e) { return !(t && t.containData && e.coord && !My(e)) || t.containData(e.coord) }
7470
7471    function ky(t, e, i, n) { return n < 2 ? t.coord && t.coord[n] : t.value }
7472
7473    function Py(t, e, i) {
7474        if ("average" === i) {
7475            var n = 0,
7476                o = 0;
7477            return t.each(e, function(t, e) { isNaN(t) || (n += t, o++) }), n / o
7478        }
7479        return "median" === i ? t.getMedian(e) : t.getDataExtent(e, !0)["max" === i ? 1 : 0]
7480    }
7481
7482    function Ny(t, e, i) {
7483        var n = e.coordinateSystem;
7484        t.each(function(o) {
7485            var a, r = t.getItemModel(o),
7486                s = Do(r.get("x"), i.getWidth()),
7487                l = Do(r.get("y"), i.getHeight());
7488            if (isNaN(s) || isNaN(l)) {
7489                if (e.getMarkerPosition) a = e.getMarkerPosition(t.getValues(t.dimensions, o));
7490                else if (n) {
7491                    var u = t.get(n.dimensions[0], o),
7492                        h = t.get(n.dimensions[1], o);
7493                    a = n.dataToPoint([u, h])
7494                }
7495            } else a = [s, l];
7496            isNaN(s) || (a[0] = s), isNaN(l) || (a[1] = l), t.setItemLayout(o, a)
7497        })
7498    }
7499
7500    function Oy(t, e, i) {
7501        var n;
7502        n = t ? f(t && t.dimensions, function(t) { return r({ name: t }, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}) }) : [{ name: "value", type: "float" }];
7503        var o = new sT(n, i),
7504            a = f(i.get("data"), v(Dy, e));
7505        return t && (a = g(a, v(Ly, t))), o.initData(a, null, t ? ky : function(t) { return t.value }), o
7506    }
7507
7508    function Ey(t) { return !isNaN(t) && !isFinite(t) }
7509
7510    function Ry(t, e, i, n) {
7511        var o = 1 - t,
7512            a = n.dimensions[t];
7513        return Ey(e[o]) && Ey(i[o]) && e[t] === i[t] && n.getAxis(a).containData(e[t])
7514    }
7515
7516    function zy(t, e) {
7517        if ("cartesian2d" === t.type) {
7518            var i = e[0].coord,
7519                n = e[1].coord;
7520            if (i && n && (Ry(1, i, n, t) || Ry(0, i, n, t))) return !0
7521        }
7522        return Ly(t, e[0]) && Ly(t, e[1])
7523    }
7524
7525    function By(t, e, i, n, o) {
7526        var a, r = n.coordinateSystem,
7527            s = t.getItemModel(e),
7528            l = Do(s.get("x"), o.getWidth()),
7529            u = Do(s.get("y"), o.getHeight());
7530        if (isNaN(l) || isNaN(u)) {
7531            if (n.getMarkerPosition) a = n.getMarkerPosition(t.getValues(t.dimensions, e));
7532            else {
7533                var h = r.dimensions,
7534                    c = t.get(h[0], e),
7535                    d = t.get(h[1], e);
7536                a = r.dataToPoint([c, d])
7537            }
7538            if ("cartesian2d" === r.type) {
7539                var f = r.getAxis("x"),
7540                    p = r.getAxis("y"),
7541                    h = r.dimensions;
7542                Ey(t.get(h[0], e)) ? a[0] = f.toGlobalCoord(f.getExtent()[i ? 0 : 1]) : Ey(t.get(h[1], e)) && (a[1] = p.toGlobalCoord(p.getExtent()[i ? 0 : 1]))
7543            }
7544            isNaN(l) || (a[0] = l), isNaN(u) || (a[1] = u)
7545        } else a = [l, u];
7546        t.setItemLayout(e, a)
7547    }
7548
7549    function Vy(t, e, i) {
7550        var n;
7551        n = t ? f(t && t.dimensions, function(t) { return r({ name: t }, e.getData().getDimensionInfo(e.getData().mapDimension(t)) || {}) }) : [{ name: "value", type: "float" }];
7552        var o = new sT(n, i),
7553            a = new sT(n, i),
7554            s = new sT([], i),
7555            l = f(i.get("data"), v(TN, e, t, i));
7556        t && (l = g(l, v(zy, t)));
7557        var u = t ? ky : function(t) { return t.value };
7558        return o.initData(f(l, function(t) { return t[0] }), null, u), a.initData(f(l, function(t) { return t[1] }), null, u), s.initData(f(l, function(t) { return t[2] })), s.hasItemOption = !0, { from: o, to: a, line: s }
7559    }
7560
7561    function Gy(t) { return !isNaN(t) && !isFinite(t) }
7562
7563    function Wy(t, e, i, n) { var o = 1 - t; return Gy(e[o]) && Gy(i[o]) }
7564
7565    function Fy(t, e) {
7566        var i = e.coord[0],
7567            n = e.coord[1];
7568        return !("cartesian2d" !== t.type || !i || !n || !Wy(1, i, n, t) && !Wy(0, i, n, t)) || (Ly(t, { coord: i, x: e.x0, y: e.y0 }) || Ly(t, { coord: n, x: e.x1, y: e.y1 }))
7569    }
7570
7571    function Hy(t, e, i, n, o) {
7572        var a, r = n.coordinateSystem,
7573            s = t.getItemModel(e),
7574            l = Do(s.get(i[0]), o.getWidth()),
7575            u = Do(s.get(i[1]), o.getHeight());
7576        if (isNaN(l) || isNaN(u)) {
7577            if (n.getMarkerPosition) a = n.getMarkerPosition(t.getValues(i, e));
7578            else {
7579                var h = [f = t.get(i[0], e), p = t.get(i[1], e)];
7580                r.clampData && r.clampData(h, h), a = r.dataToPoint(h, !0)
7581            }
7582            if ("cartesian2d" === r.type) {
7583                var c = r.getAxis("x"),
7584                    d = r.getAxis("y"),
7585                    f = t.get(i[0], e),
7586                    p = t.get(i[1], e);
7587                Gy(f) ? a[0] = c.toGlobalCoord(c.getExtent()["x0" === i[0] ? 0 : 1]) : Gy(p) && (a[1] = d.toGlobalCoord(d.getExtent()["y0" === i[1] ? 0 : 1]))
7588            }
7589            isNaN(l) || (a[0] = l), isNaN(u) || (a[1] = u)
7590        } else a = [l, u];
7591        return a
7592    }
7593
7594    function Zy(t, e, i) {
7595        var n, o, a = ["x0", "y0", "x1", "y1"];
7596        t ? (n = f(t && t.dimensions, function(t) { var i = e.getData(); return r({ name: t }, i.getDimensionInfo(i.mapDimension(t)) || {}) }), o = new sT(f(a, function(t, e) { return { name: t, type: n[e % 2].type } }), i)) : o = new sT(n = [{ name: "value", type: "float" }], i);
7597        var s = f(i.get("data"), v(DN, e, t, i));
7598        t && (s = g(s, v(Fy, t)));
7599        var l = t ? function(t, e, i, n) { return t.coord[Math.floor(n / 2)][n % 2] } : function(t) { return t.value };
7600        return o.initData(s, null, l), o.hasItemOption = !0, o
7601    }
7602
7603    function Uy(t) {
7604        var e = t.type,
7605            i = { number: "value", time: "time" };
7606        if (i[e] && (t.axisType = i[e], delete t.type), Xy(t), jy(t, "controlPosition")) {
7607            var n = t.controlStyle || (t.controlStyle = {});
7608            jy(n, "position") || (n.position = t.controlPosition), "none" !== n.position || jy(n, "show") || (n.show = !1, delete n.position), delete t.controlPosition
7609        }
7610        d(t.data || [], function(t) { w(t) && !y(t) && (!jy(t, "value") && jy(t, "name") && (t.value = t.name), Xy(t)) })
7611    }
7612
7613    function Xy(t) {
7614        var e = t.itemStyle || (t.itemStyle = {}),
7615            i = e.emphasis || (e.emphasis = {}),
7616            n = t.label || t.label || {},
7617            o = n.normal || (n.normal = {}),
7618            a = { normal: 1, emphasis: 1 };
7619        d(n, function(t, e) { a[e] || jy(o, e) || (o[e] = t) }), i.label && !jy(n, "emphasis") && (n.emphasis = i.label, delete i.label)
7620    }
7621
7622    function jy(t, e) { return t.hasOwnProperty(e) }
7623
7624    function Yy(t, e) { return Qo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }, t.get("padding")) }
7625
7626    function qy(t, e, n, o) { return Rn(t.get(e).replace(/^path:\/\//, ""), i(o || {}), new $t(n[0], n[1], n[2], n[3]), "center") }
7627
7628    function Ky(t, e, i, o, a, r) {
7629        var s = e.get("color");
7630        a ? (a.setColor(s), i.add(a), r && r.onUpdate(a)) : ((a = Tl(t.get("symbol"), -1, -1, 2, 2, s)).setStyle("strokeNoScale", !0), i.add(a), r && r.onCreate(a));
7631        var l = e.getItemStyle(["color", "symbol", "symbolSize"]);
7632        a.setStyle(l), o = n({ rectHover: !0, z2: 100 }, o, !0);
7633        var u = t.get("symbolSize");
7634        (u = u instanceof Array ? u.slice() : [+u, +u])[0] /= 2, u[1] /= 2, o.scale = u;
7635        var h = t.get("symbolOffset");
7636        if (h) {
7637            var c = o.position = o.position || [0, 0];
7638            c[0] += Do(h[0], u[0]), c[1] += Do(h[1], u[1])
7639        }
7640        var d = t.get("symbolRotate");
7641        return o.rotation = (d || 0) * Math.PI / 180 || 0, a.attr(o), a.updateTransform(), a
7642    }
7643
7644    function $y(t, e, i, n, o) {
7645        if (!t.dragging) {
7646            var a = n.getModel("checkpointStyle"),
7647                r = i.dataToCoord(n.getData().get(["value"], e));
7648            o || !a.get("animation", !0) ? t.attr({ position: [r, 0] }) : (t.stopAnimation(!0), t.animateTo({ position: [r, 0] }, a.get("animationDuration", !0), a.get("animationEasing", !0)))
7649        }
7650    }
7651
7652    function Jy(t) { return 0 === t.indexOf("my") }
7653
7654    function Qy(t) { this.model = t }
7655
7656    function tx(t) { this.model = t }
7657
7658    function ex(t) {
7659        var e = {},
7660            i = [],
7661            n = [];
7662        return t.eachRawSeries(function(t) {
7663            var o = t.coordinateSystem;
7664            if (!o || "cartesian2d" !== o.type && "polar" !== o.type) i.push(t);
7665            else {
7666                var a = o.getBaseAxis();
7667                if ("category" === a.type) {
7668                    var r = a.dim + "_" + a.index;
7669                    e[r] || (e[r] = { categoryAxis: a, valueAxis: o.getOtherAxis(a), series: [] }, n.push({ axisDim: a.dim, axisIndex: a.index })), e[r].series.push(t)
7670                } else i.push(t)
7671            }
7672        }), { seriesGroupByCategoryAxis: e, other: i, meta: n }
7673    }
7674
7675    function ix(t) {
7676        var e = [];
7677        return d(t, function(t, i) {
7678            var n = t.categoryAxis,
7679                o = t.valueAxis.dim,
7680                a = [" "].concat(f(t.series, function(t) { return t.name })),
7681                r = [n.model.getCategories()];
7682            d(t.series, function(t) { r.push(t.getRawData().mapArray(o, function(t) { return t })) });
7683            for (var s = [a.join(HN)], l = 0; l < r[0].length; l++) {
7684                for (var u = [], h = 0; h < r.length; h++) u.push(r[h][l]);
7685                s.push(u.join(HN))
7686            }
7687            e.push(s.join("\n"))
7688        }), e.join("\n\n" + FN + "\n\n")
7689    }
7690
7691    function nx(t) {
7692        return f(t, function(t) {
7693            var e = t.getRawData(),
7694                i = [t.name],
7695                n = [];
7696            return e.each(e.dimensions, function() {
7697                for (var t = arguments.length, o = arguments[t - 1], a = e.getName(o), r = 0; r < t - 1; r++) n[r] = arguments[r];
7698                i.push((a ? a + HN : "") + n.join(HN))
7699            }), i.join("\n")
7700        }).join("\n\n" + FN + "\n\n")
7701    }
7702
7703    function ox(t) { var e = ex(t); return { value: g([ix(e.seriesGroupByCategoryAxis), nx(e.other)], function(t) { return t.replace(/[\n\t\s]/g, "") }).join("\n\n" + FN + "\n\n"), meta: e.meta } }
7704
7705    function ax(t) { return t.replace(/^\s\s*/, "").replace(/\s\s*$/, "") }
7706
7707    function rx(t) { if (t.slice(0, t.indexOf("\n")).indexOf(HN) >= 0) return !0 }
7708
7709    function sx(t) {
7710        for (var e = t.split(/\n+/g), i = [], n = f(ax(e.shift()).split(ZN), function(t) { return { name: t, data: [] } }), o = 0; o < e.length; o++) {
7711            var a = ax(e[o]).split(ZN);
7712            i.push(a.shift());
7713            for (var r = 0; r < a.length; r++) n[r] && (n[r].data[o] = a[r])
7714        }
7715        return { series: n, categories: i }
7716    }
7717
7718    function lx(t) {
7719        for (var e = t.split(/\n+/g), i = ax(e.shift()), n = [], o = 0; o < e.length; o++) {
7720            var a, r = ax(e[o]).split(ZN),
7721                s = "",
7722                l = !1;
7723            isNaN(r[0]) ? (l = !0, s = r[0], r = r.slice(1), n[o] = { name: s, value: [] }, a = n[o].value) : a = n[o] = [];
7724            for (var u = 0; u < r.length; u++) a.push(+r[u]);
7725            1 === a.length && (l ? n[o].value = a[0] : n[o] = a[0])
7726        }
7727        return { name: i, data: n }
7728    }
7729
7730    function ux(t, e) {
7731        var i = { series: [] };
7732        return d(t.split(new RegExp("\n*" + FN + "\n*", "g")), function(t, n) {
7733            if (rx(t)) {
7734                var o = sx(t),
7735                    a = e[n],
7736                    r = a.axisDim + "Axis";
7737                a && (i[r] = i[r] || [], i[r][a.axisIndex] = { data: o.categories }, i.series = i.series.concat(o.series))
7738            } else {
7739                o = lx(t);
7740                i.series.push(o)
7741            }
7742        }), i
7743    }
7744
7745    function hx(t) { this._dom = null, this.model = t }
7746
7747    function cx(t, e) { return f(t, function(t, i) { var n = e && e[i]; return w(n) && !y(n) ? (w(t) && !y(t) && (t = t.value), r({ value: t }, n)) : t }) }
7748
7749    function dx(t, e) {
7750        var i = mx(t);
7751        UN(e, function(e, n) {
7752            for (var o = i.length - 1; o >= 0 && !i[o][n]; o--);
7753            if (o < 0) {
7754                var a = t.queryComponents({ mainType: "dataZoom", subType: "select", id: n })[0];
7755                if (a) {
7756                    var r = a.getPercentRange();
7757                    i[0][n] = { dataZoomId: n, start: r[0], end: r[1] }
7758                }
7759            }
7760        }), i.push(e)
7761    }
7762
7763    function fx(t) {
7764        var e = mx(t),
7765            i = e[e.length - 1];
7766        e.length > 1 && e.pop();
7767        var n = {};
7768        return UN(i, function(t, i) {
7769            for (var o = e.length - 1; o >= 0; o--)
7770                if (t = e[o][i]) { n[i] = t; break }
7771        }), n
7772    }
7773
7774    function px(t) { t[XN] = null }
7775
7776    function gx(t) { return mx(t).length }
7777
7778    function mx(t) { var e = t[XN]; return e || (e = t[XN] = [{}]), e }
7779
7780    function vx(t, e, i) {
7781        (this._brushController = new Qd(i.getZr())).on("brush", m(this._onBrush, this)).mount(), this._isZ
7781oomActive
7782    }
7783
7784    function yx(t) { var e = {}; return d(["xAxisIndex", "yAxisIndex"], function(i) { e[i] = t[i], null == e[i] && (e[i] = "all"), (!1 === e[i] || "none" === e[i]) && (e[i] = []) }), e }
7785
7786    function xx(t, e) { t.setIconStatus("back", gx(e) > 1 ? "emphasis" : "normal") }
7787
7788    function _x(t, e, i, n, o) {
7789        var a = i._isZoomActive;
7790        n && "takeGlobalCursor" === n.type && (a = "dataZoomSelect" === n.key && n.dataZoomSelectActive), i._isZoomActive = a, t.setIconStatus("zoom", a ? "emphasis" : "normal");
7791        var r = new bv(yx(t.option), e, { include: ["grid"] });
7792        i._brushController.setPanels(r.makePanelOpts(o, function(t) { return t.xAxisDeclared && !t.yAxisDeclared ? "lineX" : !t.xAxisDeclared && t.yAxisDeclared ? "lineY" : "rect" })).enableBrush(!!a && { brushType: "auto", brushStyle: { lineWidth: 0, fill: "rgba(0,0,0,0.2)" } })
7793    }
7794
7795    function bx(t) { this.model = t }
7796
7797    function Sx(t) { return QN(t) }
7798
7799    function Mx() {
7800        if (!iO && nO) {
7801            iO = !0;
7802            var t = nO.styleSheets;
7803            t.length < 31 ? nO.createStyleSheet().addRule(".zrvml", "behavior:url(#default#VML)") : t[0].addRule(".zrvml", "behavior:url(#default#VML)")
7804        }
7805    }
7806
7807    function Ix(t) { return parseInt(t, 10) }
7808
7809    function Tx(t, e) {
7810        Mx(), this.root = t, this.storage = e;
7811        var i = document.createElement("div"),
7812            n = document.createElement("div");
7813        i.style.cssText = "display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;", n.style.cssText = "position:absolute;left:0;top:0;", t.appendChild(i), this._vmlRoot = n, this._vmlViewport = i, this.resize();
7814        var o = e.delFromStorage,
7815            a = e.addToStorage;
7816        e.delFromStorage = function(t) { o.call(e, t), t && t.onRemove && t.onRemove(n) }, e.addToStorage = function(t) { t.onAdd && t.onAdd(n), a.call(e, t) }, this._firstPaint = !0
7817    }
7818
7819    function Dx(t) { return function() { ew('In IE8.0 VML mode painter not support method "' + t + '"') } }
7820
7821    function Ax(t) { return document.createElementNS(zO, t) }
7822
7823    function Cx(t) { return WO(1e4 * t) / 1e4 }
7824
7825    function Lx(t) { return t < jO && t > -jO }
7826
7827    function kx(t, e) { var i = e ? t.textFill : t.fill; return null != i && i !== GO }
7828
7829    function Px(t, e) { var i = e ? t.textStroke : t.stroke; return null != i && i !== GO }
7830
7831    function Nx(t, e) { e && Ox(t, "transform", "matrix(" + VO.call(e, ",") + ")") }
7832
7833    function Ox(t, e, i) {
7834        (!i || "linear" !== i.type && "radial" !== i.type) && ("string" == typeof i && i.indexOf("NaN") > -1 && console.log(i), t.setAttribute(e, i))
7835    }
7836
7837    function Ex(t, e, i) { t.setAttributeNS("http://www.w3.org/1999/xlink", e, i) }
7838
7839    function Rx(t, e, i) {
7840        if (kx(e, i)) {
7841            var n = i ? e.textFill : e.fill;
7842            n = "transparent" === n ? GO : n, "none" !== t.getAttribute("clip-path") && n === GO && (n = "rgba(0, 0, 0, 0.002)"), Ox(t, "fill", n), Ox(t, "fill-opacity", e.opacity)
7843        } else Ox(t, "fill", GO);
7844        if (Px(e, i)) {
7845            var o = i ? e.textStroke : e.stroke;
7846            Ox(t, "stroke", o = "transparent" === o ? GO : o), Ox(t, "stroke-width", (i ? e.textStrokeWidth : e.lineWidth) / (!i && e.strokeNoScale ? e.host.getLineScale() : 1)), Ox(t, "paint-order", i ? "stroke" : "fill"), Ox(t, "stroke-opacity", e.opacity), e.lineDash ? (Ox(t, "stroke-dasharray", e.lineDash.join(",")), Ox(t, "stroke-dashoffset", WO(e.lineDashOffset || 0))) : Ox(t, "stroke-dasharray", ""), e.lineCap && Ox(t, "stroke-linecap", e.lineCap), e.lineJoin && Ox(t, "stroke-linejoin", e.lineJoin), e.miterLimit && Ox(t, "stroke-miterlimit", e.miterLimit)
7847        } else Ox(t, "stroke", GO)
7848    }
7849
7850    function zx(t) {
7851        for (var e = [], i = t.data, n = t.len(), o = 0; o < n;) {
7852            var a = "",
7853                r = 0;
7854            switch (i[o++]) {
7855                case BO.M:
7856                    a = "M", r = 2;
7857                    break;
7858                case BO.L:
7859                    a = "L", r = 2;
7860                    break;
7861                case BO.Q:
7862                    a = "Q", r = 4;
7863                    break;
7864                case BO.C:
7865                    a = "C", r = 6;
7866                    break;
7867                case BO.A:
7868                    var s = i[o++],
7869                        l = i[o++],
7870                        u = i[o++],
7871                        h = i[o++],
7872                        c = i[o++],
7873                        d = i[o++],
7874                        f = i[o++],
7875                        p = i[o++],
7876                        g = Math.abs(d),
7877                        m = Lx(g - UO) && !Lx(g),
7878                        v = !1;
7879                    v = g >= UO || !Lx(g) && (d > -ZO && d < 0 || d > ZO) == !!p;
7880                    var y = Cx(s + u * HO(c)),
7881                        x = Cx(l + h * FO(c));
7882                    m && (d = p ? UO - 1e-4 : 1e-4 - UO, v = !0, 9 === o && e.push("M", y, x));
7883                    var _ = Cx(s + u * HO(c + d)),
7884                        w = Cx(l + h * FO(c + d));
7885                    e.push("A", Cx(u), Cx(h), WO(f * XO), +v, +p, _, w);
7886                    break;
7887                case BO.Z:
7888                    a = "Z";
7889                    break;
7890                case BO.R:
7891                    var _ = Cx(i[o++]),
7892                        w = Cx(i[o++]),
7893                        b = Cx(i[o++]),
7894                        S = Cx(i[o++]);
7895                    e.push("M", _, w, "L", _ + b, w, "L", _ + b, w + S, "L", _, w + S, "L", _, w)
7896            }
7897            a && e.push(a);
7898            for (var M = 0; M < r; M++) e.push(Cx(i[o++]))
7899        }
7900        return e.join(" ")
7901    }
7902
7903    function Bx(t) { return "middle" === t ? "middle" : "bottom" === t ? "baseline" : "hanging" }
7904
7905    function Vx() {}
7906
7907    function Gx(t, e, i, n) {
7908        for (var o = 0, a = e.length, r = 0, s = 0; o < a; o++) {
7909            var l = e[o];
7910            if (l.removed) {
7911                for (var u = [], h = s; h < s + l.count; h++) u.push(h);
7912                l.indices = u, s += l.count
7913            } else {
7914                for (var u = [], h = r; h < r + l.count; h++) u.push(h);
7915                l.indices = u, r += l.count, l.added || (s += l.count)
7916            }
7917        }
7918        return e
7919    }
7920
7921    function Wx(t) { return { newPos: t.newPos, components: t.components.slice(0) } }
7922
7923    function Fx(t, e, i, n, o) { this._zrId = t, this._svgRoot = e, this._tagNames = "string" == typeof i ? [i] : i, this._markLabel = n, this._domName = o || "_dom", this.nextId = 0 }
7924
7925    function Hx(t, e) { Fx.call(this, t, e, ["linearGradient", "radialGradient"], "__gradient_in_use__") }
7926
7927    function Zx(t, e) { Fx.call(this, t, e, "clipPath", "__clippath_in_use__") }
7928
7929    function Ux(t, e) { Fx.call(this, t, e, ["filter"], "__filter_in_use__", "_shadowDom") }
7930
7931    function Xx(t) { return t && (t.shadowBlur || t.shadowOffsetX || t.shadowOffsetY || t.textShadowBlur || t.textShadowOffsetX || t.textShadowOffsetY) }
7932
7933    function jx(t) { return parseInt(t, 10) }
7934
7935    function Yx(t) { return t instanceof In ? YO : t instanceof Je ? qO : t instanceof fS ? KO : YO }
7936
7937    function qx(t, e) { return e && t && e.parentNode !== t }
7938
7939    function Kx(t, e, i) {
7940        if (qx(t, e) && i) {
7941            var n = i.nextSibling;
7942            n ? t.insertBefore(e, n) : t.appendChild(e)
7943        }
7944    }
7945
7946    function $x(t, e) {
7947        if (qx(t, e)) {
7948            var i = t.firstChild;
7949            i ? t.insertBefore(e, i) : t.appendChild(e)
7950        }
7951    }
7952
7953    function Jx(t, e) { e && t && e.parentNode === t && t.removeChild(e) }
7954
7955    function Qx(t) { return t.__textSvgEl }
7956
7957    function t_(t) { return t.__svgEl }
7958
7959    function e_(t) { return function() { ew('In SVG mode painter not support method "' + t + '"') } }
7960    var i_ = 2311,
7961        n_ = function() { return i_++ },
7962        o_ = {},
7963        a_ = o_ = "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? { browser: {}, os: {}, node: !1, wxa: !0, canvasSupported: !0, svgSupported: !1, touchEventsSupported: !0 } : "undefined" == typeof document && "undefined" != typeof self ? { browser: {}, os: {}, node: !1, worker: !0, canvasSupported: !0 } : "undefined" == typeof navigator ? { browser: {}, os: {}, node: !0, worker: !1, canvasSupported: !0, svgSupported: !0 } : function(t) {
7964            var e = {},
7965                i = {},
7966                n = t.match(/Firefox\/([\d.]+)/),
7967                o = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/),
7968                a = t.match(/Edge\/([\d.]+)/),
7969                r = /micromessenger/i.test(t);
7970            return n && (i.firefox = !0, i.version = n[1]), o && (i.ie = !0, i.version = o[1]), a && (i.edge = !0, i.version = a[1]), r && (i.weChat = !0), { browser: i, os: e, node: !1, canvasSupported: !!document.createElement("canvas").getContext, svgSupported: "undefined" != typeof SVGRect, touchEventsSupported: "ontouchstart" in window && !i.ie && !i.edge, pointerEventsSupported: "onpointerdown" in window && (i.edge || i.ie && i.version >= 11) }
7971        }(navigator.userAgent),
7972        r_ = { "[object Function]": 1, "[object RegExp]": 1, "[object Date]": 1, "[object Error]": 1, "[object CanvasGradient]": 1, "[object CanvasPattern]": 1, "[object Image]": 1, "[object Canvas]": 1 },
7973        s_ = { "[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
7973]": 1 },
7974        l_ = Object.prototype.toString,
7975        u_ = Array.prototype,
7976        h_ = u_.forEach,
7977        c_ = u_.filter,
7978        d_ = u_.slice,
7979        f_ = u_.map,
7980        p_ = u_.reduce,
7981        g_ = {},
7982        m_ = function() { return g_.createCanvas() };
7983    g_.createCanvas = function() { return document.createElement("canvas") };
7984    var v_, y_ = "__ec_primitive__";
7985    E.prototype = { constructor: E, get: function(t) { return this.hasOwnProperty(t) ? this[t] : null }, set: function(t, e) { return this[t] = e }, each: function(t, e) { void 0 !== e && (t = m(t, e)); for (var i in this) this.hasOwnProperty(i) && t(this[i], i) }, removeKey: function(t) { delete this[t] } };
7986    var x_ = (Object.freeze || Object)({
7987            $override: e,
7988            clone: i,
7989            merge: n,
7990            mergeAll: o,
7991            extend: a,
7992            defaults: r,
7993            createCanvas: m_,
7994            getContext: s,
7995            indexOf: l,
7996            inherits: u,
7997            mixin: h,
7998            isArrayLike: c,
7999            each: d,
8000            map: f,
8001            reduce: p,
8002            filter: g,
8003            find: function(t, e, i) {
8004                if (t && e)
8005                    for (var n = 0, o = t.length; n < o; n++)
8006                        if (e.call(i, t[n], n, t)) return t[n]
8007            },
8008            bind: m,
8009            curry: v,
8010            isArray: y,
8011            isFunction: x,
8012            isString: _,
8013            isObject: w,
8014            isBuiltInObject: b,
8015            isTypedArray: S,
8016            isDom: M,
8017            eqNaN: I,
8018            retrieve: T,
8019            retrieve2: D,
8020            retrieve3: A,
8021            slice: C,
8022            normalizeCssArray: L,
8023            assert: k,
8024            trim: P,
8025            setAsPrimitive: N,
8026            isPrimitive: O,
8027            createHashMap: R,
8028            concatArray: z,
8029            noop: B
8030        }),
8031        __ = "undefined" == typeof Float32Array ? Array : Float32Array,
8032        w_ = X,
8033        b_ = j,
8034        S_ = K,
8035        M_ = $,
8036        I_ = (Object.freeze || Object)({ create: V, copy: G, clone: W, set: F, add: H, scaleAndAdd: Z, sub: U, len: X, length: w_, lenSquare: j, lengthSquare: b_, mul: function(t, e, i) { return t[0] = e[0] * i[0], t[1] = e[1] * i[1], t }, div: function(t, e, i) { return t[0] = e[0] / i[0], t[1] = e[1] / i[1], t }, dot: function(t, e) { return t[0] * e[0] + t[1] * e[1] }, scale: Y, normalize: q, distance: K, dist: S_, distanceSquare: $, distSquare: M_, negate: function(t, e) { return t[0] = -e[0], t[1] = -e[1], t }, lerp: J, applyTransform: Q, min: tt, max: et });
8037    it.prototype = {
8038        constructor: it,
8039        _dragStart: function(t) {
8040            var e = t.target;
8041            e && e.draggable && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this.dispatchToElement(nt(e, t), "dragstart", t.event))
8042        },
8043        _drag: function(t) {
8044            var e = this._draggingTarget;
8045            if (e) {
8046                var i = t.offsetX,
8047                    n = t.offsetY,
8048                    o = i - this._x,
8049                    a = n - this._y;
8050                this._x = i, this._y = n, e.drift(o, a, t), this.dispatchToElement(nt(e, t), "drag", t.event);
8051                var r = this.findHover(i, n, e).target,
8052                    s = this._dropTarget;
8053                this._dropTarget = r, e !== r && (s && r !== s && this.dispatchToElement(nt(s, t), "dragleave", t.event), r && r !== s && this.dispatchToElement(nt(r, t), "dragenter", t.event))
8054            }
8055        },
8056        _dragEnd: function(t) {
8057            var e = this._draggingTarget;
8058            e && (e.dragging = !1), this.dispatchToElement(nt(e, t), "dragend", t.event), this._dropTarget && this.dispatchToElement(nt(this._dropTarget, t), "drop", t.event), this._draggingTarget = null, this._dropTarget = null
8059        }
8060    };
8061    var T_ = Array.prototype.slice,
8062        D_ = function() { this._$handlers = {} };
8063    D_.prototype = {
8064        constructor: D_,
8065        one: function(t, e, i) {
8066            var n = this._$handlers;
8067            if (!e || !t) return this;
8068            n[t] || (n[t] = []);
8069            for (var o = 0; o < n[t].length; o++)
8070                if (n[t][o].h === e) return this;
8071            return n[t].push({ h: e, one: !0, ctx: i || this }), this
8072        },
8073        on: function(t, e, i) {
8074            var n = this._$handlers;
8075            if (!e || !t) return this;
8076            n[t] || (n[t] = []);
8077            for (var o = 0; o < n[t].length; o++)
8078                if (n[t][o].h === e) return this;
8079            return n[t].push({ h: e, one: !1, ctx: i || this }), this
8080        },
8081        isSilent: function(t) { var e = this._$handlers; return e[t] && e[t].length },
8082        off: function(t, e) {
8083            var i = this._$handlers;
8084            if (!t) return this._$handlers = {}, this;
8085            if (e) {
8086                if (i[t]) {
8087                    for (var n = [], o = 0, a = i[t].length; o < a; o++) i[t][o].h != e && n.push(i[t][o]);
8088                    i[t] = n
8089                }
8090                i[t] && 0 === i[t].length && delete i[t]
8091            } else delete i[t];
8092            return this
8093        },
8094        trigger: function(t) {
8095            if (this._$handlers[t]) {
8096                var e = arguments,
8097                    i = e.length;
8098                i > 3 && (e = T_.call(e, 1));
8099                for (var n = this._$handlers[t], o = n.length, a = 0; a < o;) {
8100                    switch (i) {
8101                        case 1:
8102                            n[a].h.call(n[a].ctx);
8103                            break;
8104                        case 2:
8105                            n[a].h.call(n[a].ctx, e[1]);
8106                            break;
8107                        case 3:
8108                            n[a].h.call(n[a].ctx, e[1], e[2]);
8109                            break;
8110                        default:
8111                            n[a].h.apply(n[a].ctx, e)
8112                    }
8113                    n[a].one ? (n.splice(a, 1), o--) : a++
8114                }
8115            }
8116            return this
8117        },
8118        triggerWithContext: function(t) {
8119            if (this._$handlers[t]) {
8120                var e = arguments,
8121                    i = e.length;
8122                i > 4 && (e = T_.call(e, 1, e.length - 1));
8123                for (var n = e[e.length - 1], o = this._$handlers[t], a = o.length, r = 0; r < a;) {
8124                    switch (i) {
8125                        case 1:
8126                            o[r].h.call(n);
8127                            break;
8128                        case 2:
8129                            o[r].h.call(n, e[1]);
8130                            break;
8131                        case 3:
8132                            o[r].h.call(n, e[1], e[2]);
8133                            break;
8134                        default:
8135                            o[r].h.apply(n, e)
8136                    }
8137                    o[r].one ? (o.splice(r, 1), a--) : r++
8138                }
8139            }
8140            return this
8141        }
8142    };
8143    var A_ = "silent";
8144    at.prototype.dispose = function() {};
8145    var C_ = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
8146        L_ = function(t, e, i, n) { D_.call(this), this.storage = t, this.painter = e, this.painterRoot = n, i = i || new at, this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, it.call(this), this.setHandlerProxy(i) };
8147    L_.prototype = {
8148        constructor: L_,
8149        setHandlerProxy: function(t) { this.proxy && this.proxy.dispose(), t && (d(C_, function(e) { t.on && t.on(e, this[e], this) }, this), t.handler = this), this.proxy = t },
8150        mousemove: function(t) {
8151            var e = t.zrX,
8152                i = t.zrY,
8153                n = this._hovered,
8154                o = n.target;
8155            o && !o.__zr && (o = (n = this.findHover(n.x, n.y)).target);
8156            var a = this._hovered = this.findHover(e, i),
8157                r = a.target,
8158                s = this.proxy;
8159            s.setCursor && s.setCursor(r ? r.cursor : "default"), o && r !== o && this.dispatchToElement(n, "mouseout", t), this.dispatchToElement(a, "mousemove", t), r && r !== o && this.dispatchToElement(a, "mouseover", t)
8160        },
8161        mouseout: function(t) {
8162            this.dispatchToElement(this._hovered, "mouseout", t);
8163            var e, i = t.toElement || t.relatedTarget;
8164            do { i = i && i.parentNode } while (i && 9 != i.nodeType && !(e = i === this.painterRoot));
8165            !e && this.trigger("globalout", { event: t })
8166        },
8167        resize: function(t) { this._hovered = {} },
8168        dispatch: function(t, e) {
8169            var i = this[t];
8170            i && i.call(this, e)
8171        },
8172        dispose: function() { this.proxy.dispose(), this.storage = this.proxy = this.painter = null },
8173        setCursorStyle: function(t) {
8174            var e = this.proxy;
8175            e.setCursor && e.setCursor(t)
8176        },
8177        dispatchToElement: function(t, e, i) {
8178            var n = (t = t || {}).target;
8179            if (!n || !n.silent) {
8180                for (var o = "on" + e, a = ot(e, t, i); n && (n[o] && (a.cancelBubble = n[o].call(n, a)), n.trigger(e, a), n = n.parent, !a.cancelBubble););
8181                a.cancelBubble || (this.trigger(e, a), this.painter && this.painter.eachOtherLayer(function(t) { "function" == typeof t[o] && t[o].call(t, a), t.trigger && t.trigger(e, a) }))
8182            }
8183        },
8184        findHover: function(t, e, i) { for (var n = this.storage.getDisplayList(), o = { x: t, y: e }, a = n.length - 1; a >= 0; a--) { var r; if (n[a] !== i && !n[a].ignore && (r = rt(n[a], t, e)) && (!o.topTarget && (o.topTarget = n[a]), r !== A_)) { o.target = n[a]; break } } return o }
8185    }, d(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(t) {
8186        L_.prototype[t] = function(e) {
8187            var i = this.findHover(e.zrX, e.zrY),
8188                n = i.target;
8189            if ("mousedown" === t) this._downEl = n, this._downPoint = [e.zrX, e.zrY], this._upEl = n;
8190            else if ("mouseup" === t) this._upEl = n;
8191            else if ("click" === t) {
8192                if (this._downEl !== this._upEl || !this._downPoint || S_(this._downPoint, [e.zrX, e.zrY]) > 4) return;
8193                this._downPoint = null
8194            }
8195            this.dispatchToElement(i, t, e)
8196        }
8197    }), h(L_, D_), h(L_, it);
8198    var k_ = "undefined" == typeof Float32Array ? Array : Float32Array,
8199        P_ = (Object.freeze || Object)({ create: st, identity: lt, copy: ut, mul: ht, translate: ct, rotate: dt, scale: ft, invert: pt, clone: gt }),
8200        N_ = lt,
8201        O_ = 5e-5,
8202        E_ = function(t) {
8203            (t = t || {}).position || (this.position = [0, 0]), null == t.rotation && (this.rotation = 0), t.scale || (this.scale = [1, 1]), this.origin = this.origin || null
8204        },
8205        R_ = E_.prototype;
8206    R_.transform = null, R_.needLocalTransform = function() { return mt(this.rotation) || mt(this.position[0]) || mt(this.position[1]) || mt(this.scale[0] - 1) || mt(this.scale[1] - 1) }, R_.updateTransform = function() {
8207        var t = this.parent,
8208            e = t && t.transform,
8209            i = this.needLocalTransform(),
8210            n = this.transform;
8211        i || e ? (n = n || st(), i ? this.getLocalTransform(n) : N_(n), e && (i ? ht(n, t.transform, n) : ut(n, t.transform)), this.transform = n, this.invTransform = this.invTransform || st(), pt(this.invTransform, n)) : n && N_(n)
8212    }, R_.getLocalTransform = function(t) { return E_.getLocalTransform(this, t) }, R_.setTransform = function(t) {
8213        var e = this.transform,
8214            i = t.dpr || 1;
8215        e ? t.setTransform(i * e[0], i * e[1], i * e[2], i * e[3], i * e[4], i * e[5]) : t.setTransform(i, 0, 0, i, 0, 0)
8216    }, R_.restoreTransform = function(t) {
8217        var e = t.dpr || 1;
8218        t.setTransform(e, 0, 0, e, 0, 0)
8219    };
8220    var z_ = [];
8221    R_.decomposeTransform = function() {
8222        if (this.transform) {
8223            var t = this.parent,
8224                e = this.transform;
8225            t && t.transform && (ht(z_, t.invTransform, e), e = z_);
8226            var i = e[0] * e[0] + e[1] * e[1],
8227                n = e[2] * e[2] + e[3] * e[3],
8228                o = this.position,
8229                a = this.scale;
8230            mt(i - 1) && (i = Math.sqrt(i)), mt(n - 1) && (n = Math.sqrt(n)), e[0] < 0 && (i = -i), e[3] < 0 && (n = -n), o[0] = e[4], o[1] = e[5], a[0] = i, a[1] = n, this.rotation = Math.atan2(-e[1] / n, e[0] / i)
8231        }
8232    }, R_.getGlobalScale = function() {
8233        var t = this.transform;
8234        if (!t) return [1, 1];
8235        var e = Math.sqrt(t[0] * t[0] + t[1] * t[1]),
8236            i = Math.sqrt(t[2] * t[2] + t[3] * t[3]);
8237        return t[0] < 0 && (e = -e), t[3] < 0 && (i = -i), [e, i]
8238    }, R_.transformCoordToLocal = function(t, e) {
8239        var i = [t, e],
8240            n = this.invTransform;
8241        return n && Q(i, i, n), i
8242    }, R_.transformCoordToGlobal = function(t, e) {
8243        var i = [t, e],
8244            n = this.transform;
8245        return n && Q(i, i, n), i
8246    }, E_.getLocalTransform = function(t, e) {
8247        N_(e = e || []);
8248        var i = t.origin,
8249            n = t.scale || [1, 1],
8250            o = t.rotation || 0,
8251            a = t.position || [0, 0];
8252        return i && (e[4] -= i[0], e[5] -= i[1]), ft(e, e, n), o && dt(e, e, o), i && (e[4] += i[0], e[5] += i[1]), e[4] += a[0], e[5] += a[1], e
8253    };
8254    var B_ = { linear: function(t) { return t }, quadraticIn: function(t) { return t * t }, quadraticOut: function(t) { return t * (2 - t) }, quadraticInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1) }, cubicIn: function(t) { return t * t * t }, cubicOut: function(t) { return --t * t * t + 1 }, cubicInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2) }, quarticIn: function(t) { return t * t * t * t }, quarticOut: function(t) { return 1 - --t * t * t * t }, quarticInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2) }, quinticIn: function(t) { return t * t * t * t * t }, quinticOut: function(t) { return --t * t * t * t * t + 1 }, quinticInOut: function(t) { return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2) }, sinusoidalIn: function(t) { return 1 - Math.cos(t * Math.PI / 2) }, sinusoidalOut: function(t) { return Math.sin(t * Math.PI / 2) }, sinusoidalInOut: function(t) { return .5 * (1 - Math.cos(Math.PI * t)) }, exponentialIn: function(t) { return 0 === t ? 0 : Math.pow(1024, t - 1) }, exponentialOut: function(t) { return 1 === t ? 1 : 1 - Math.pow(2, -10 * t) }, exponentialInOut: function(t) { return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (2 - Math.pow(2, -10 * (t - 1))) }, circularIn: function(t) { return 1 - Math.sqrt(1 - t * t) }
8254, circularOut: function(t) { return Math.sqrt(1 - --t * t) }, circularInOut: function(t) { return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1) }, elasticIn: function(t) { var e, i = .1; return 0 === t ? 0 : 1 === t ? 1 : (!i || i < 1 ? (i = 1, e = .1) : e = .4 * Math.asin(1 / i) / (2 * Math.PI), -i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4)) }, elasticOut: function(t) { var e, i = .1; return 0 === t ? 0 : 1 === t ? 1 : (!i || i < 1 ? (i = 1, e = .1) : e = .4 * Math.asin(1 / i) / (2 * Math.PI), i * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / .4) + 1) }, elasticInOut: function(t) { var e, i = .1; return 0 === t ? 0 : 1 === t ? 1 : (!i || i < 1 ? (i = 1, e = .1) : e = .4 * Math.asin(1 / i) / (2 * Math.PI), (t *= 2) < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4) * -.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4) * .5 + 1) }, backIn: function(t) { var e = 1.70158; return t * t * ((e + 1) * t - e) }, backOut: function(t) { var e = 1.70158; return --t * t * ((e + 1) * t + e) + 1 }, backInOut: function(t) { var e = 2.5949095; return (t *= 2) < 1 ? t * t * ((e + 1) * t - e) * .5 : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2) }, bounceIn: function(t) { return 1 - B_.bounceOut(1 - t) }, bounceOut: function(t) { return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375 }, bounceInOut: function(t) { return t < .5 ? .5 * B_.bounceIn(2 * t) : .5 * B_.bounceOut(2 * t - 1) + .5 } };
8255    vt.prototype = {
8256        constructor: vt,
8257        step: function(t, e) {
8258            if (this._initialized || (this._startTime = t + this._delay, this._initialized = !0), this._paused) this._pausedTime += e;
8259            else {
8260                var i = (t - this._startTime - this._pausedTime) / this._life;
8261                if (!(i < 0)) {
8262                    i = Math.min(i, 1);
8263                    var n = this.easing,
8264                        o = "string" == typeof n ? B_[n] : n,
8265                        a = "function" == typeof o ? o(i) : i;
8266                    return this.fire("frame", a), 1 == i ? this.loop ? (this.restart(t), "restart") : (this._needsRemove = !0, "destroy") : null
8267                }
8268            }
8269        },
8270        restart: function(t) {
8271            var e = (t - this._startTime - this._pausedTime) % this._life;
8272            this._startTime = t - e + this.gap, this._pausedTime = 0, this._needsRemove = !1
8273        },
8274        fire: function(t, e) { this[t = "on" + t] && this[t](this._target, e) },
8275        pause: function() { this._paused = !0 },
8276        resume: function() { this._paused = !1 }
8277    };
8278    var V_ = function() { this.head = null, this.tail = null, this._len = 0 },
8279        G_ = V_.prototype;
8280    G_.insert = function(t) { var e = new W_(t); return this.insertEntry(e), e }, G_.insertEntry = function(t) { this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, this._len++ }, G_.remove = function(t) {
8281        var e = t.prev,
8282            i = t.next;
8283        e ? e.next = i : this.head = i, i ? i.prev = e : this.tail = e, t.next = t.prev = null, this._len--
8284    }, G_.len = function() { return this._len }, G_.clear = function() { this.head = this.tail = null, this._len = 0 };
8285    var W_ = function(t) { this.value = t, this.next, this.prev },
8286        F_ = function(t) { this._list = new V_, this._map = {}, this._maxSize = t || 10, this._lastRemovedEntry = null },
8287        H_ = F_.prototype;
8288    H_.put = function(t, e) {
8289        var i = this._list,
8290            n = this._map,
8291            o = null;
8292        if (null == n[t]) {
8293            var a = i.len(),
8294                r = this._lastRemovedEntry;
8295            if (a >= this._maxSize && a > 0) {
8296                var s = i.head;
8297                i.remove(s), delete n[s.key], o = s.value, this._lastRemovedEntry = s
8298            }
8299            r ? r.value = e : r = new W_(e), r.key = t, i.insertEntry(r), n[t] = r
8300        }
8301        return o
8302    }, H_.get = function(t) {
8303        var e = this._map[t],
8304            i = this._list;
8305        if (null != e) return e !== i.tail && (i.remove(e), i.insertEntry(e)), e.value
8306    }, H_.clear = function() { this._list.clear(), this._map = {} };
8307    var Z_ = { 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] },
8308        U_ = new F_(20),
8309        X_ = null,
8310        j_ = Nt,
8311        Y_ = Ot,
8312        q_ = (Object.freeze || Object)({ parse: At, lift: kt, toHex: Pt, fastLerp: Nt, fastMapToColor: j_, lerp: Ot, mapToColor: Y_, modifyHSL: Et, modifyAlpha: Rt, stringify: zt }),
8313        K_ = Array.prototype.slice,
8314        $_ = function(t, e, i, n) { this._tracks = {}, this._target = t, this._loop = e || !1, this._getter = i || Bt, this._setter = n || Vt, this._clipCount = 0, this._delay 
8314= 0, this._doneList = [], this._onframeList = [], this._clipList = [] };
8315    $_.prototype = {
8316        when: function(t, e) {
8317            var i = this._tracks;
8318            for (var n in e)
8319                if (e.hasOwnProperty(n)) {
8320                    if (!i[n]) {
8321                        i[n] = [];
8322                        var o = this._getter(this._target, n);
8323                        if (null == o) continue;
8324                        0 !== t && i[n].push({ time: 0, value: jt(o) })
8325                    }
8326                    i[n].push({ time: t, value: e[n] })
8327                }
8328            return this
8329        },
8330        during: function(t) { return this._onframeList.push(t), this },
8331        pause: function() {
8332            for (var t = 0; t < this._clipList.length; t++) this._clipList[t].pause();
8333            this._paused = !0
8334        },
8335        resume: function() {
8336            for (var t = 0; t < this._clipList.length; t++) this._clipList[t].resume();
8337            this._paused = !1
8338        },
8339        isPaused: function() { return !!this._paused },
8340        _doneCallback: function() { this._tracks = {}, this._clipList.length = 0; for (var t = this._doneList, e = t.length, i = 0; i < e; i++) t[i].call(this) },
8341        start: function(t, e) {
8342            var i, n = this,
8343                o = 0;
8344            for (var a in this._tracks)
8345                if (this._tracks.hasOwnProperty(a)) {
8346                    var r = Kt(this, t, function() {--o || n._doneCallback() }, this._tracks[a], a, e);
8347                    r && (this._clipList.push(r), o++, this.animation && this.animation.addClip(r), i = r)
8348                }
8349            if (i) {
8350                var s = i.onframe;
8351                i.onframe = function(t, e) { s(t, e); for (var i = 0; i < n._onframeList.length; i++) n._onframeList[i](t, e) }
8352            }
8353            return o || this._doneCallback(), this
8354        },
8355        stop: function(t) {
8356            for (var e = this._clipList, i = this.animation, n = 0; n < e.length; n++) {
8357                var o = e[n];
8358                t && o.onframe(this._target, 1), i && i.removeClip(o)
8359            }
8360            e.length = 0
8361        },
8362        delay: function(t) { return this._delay = t, this },
8363        done: function(t) { return t && this._doneList.push(t), this },
8364        getClips: function() { return this._clipList }
8365    };
8366    var J_ = 1;
8367    "undefined" != typeof window && (J_ = Math.max(window.devicePixelRatio || 1, 1));
8368    var Q_ = J_,
8369        tw = function() {},
8370        ew = tw,
8371        iw = function() { this.animators = [] };
8372    iw.prototype = {
8373        constructor: iw,
8374        animate: function(t, e) {
8375            var i, n = !1,
8376                o = this,
8377                a = this.__zr;
8378            if (t) {
8379                var r = t.split("."),
8380                    s = o;
8381                n = "shape" === r[0];
8382                for (var u = 0, h = r.length; u < h; u++) s && (s = s[r[u]]);
8383                s && (i = s)
8384            } else i = o;
8385            if (i) {
8386                var c = o.animators,
8387                    d = new $_(i, e);
8388                return d.during(function(t) { o.dirty(n) }).done(function() { c.splice(l(c, d), 1) }), c.push(d), a && a.animation.addAnimator(d), d
8389            }
8390            ew('Property "' + t + '" is not existed in element ' + o.id)
8391        },
8392        stopAnimation: function(t) { for (var e = this.animators, i = e.length, n = 0; n < i; n++) e[n].stop(t); return e.length = 0, this },
8393        animateTo: function(t, e, i, n, o, a) {
8394            _(i) ? (o = n, n = i, i = 0) : x(n) ? (o = n, n = "linear", i = 0) : x(i) ? (o = i, i = 0) : x(e) ? (o = e, e = 500) : e || (e = 500), this.stopAnimation(), this._animateToShallow("", this, t, e, i);
8395            var r = this.animators.slice(),
8396                s = r.length;
8397            s || o && o();
8398            for (var l = 0; l < r.length; l++) r[l].done(function() {--s || o && o() }).start(n, a)
8399        },
8400        _animateToShallow: function(t, e, i, n, o) {
8401            var a = {},
8402                r = 0;
8403            for (var s in i)
8404                if (i.hasOwnProperty(s))
8405                    if (null != e[s]) w(i[s]) && !c(i[s]) ? this._animateToShallow(t ? t + "." + s : s, e[s], i[s], n, o) : (a[s] = i[s], r++);
8406                    else if (null != i[s])
8407                if (t) {
8408                    var l = {};
8409                    l[t] = {}, l[t][s] = i[s], this.attr(l)
8410                } else this.attr(s, i[s]);
8411            return r > 0 && this.animate(t, !1).when(null == n ? 500 : n, a).delay(o || 0), this
8412        }
8413    };
8414    var nw = function(t) { E_.call(this, t), D_.call(this, t), iw.call(this, t), this.id = t.id || n_() };
8415    nw.prototype = {
8416        type: "element",
8417        name: "",
8418        __zr: null,
8419        ignore: !1,
8420        clipPath: null,
8421        isGroup: !1,
8422        drift: function(t, e) {
8423            switch (this.draggable) {
8424                case "horizontal":
8425                    e = 0;
8426                    break;
8427                case "vertical":
8428                    t = 0
8429            }
8430            var i = this.transform;
8431            i || (i = this.transform = [1, 0, 0, 1, 0, 0]), i[4] += t, i[5] += e, this.decomposeTransform(), this.dirty(!1)
8432        },
8433        beforeUpdate: function() {},
8434        afterUpdate: function() {},
8435        update: function() { this.updateTransform() },
8436        traverse: function(t, e) {},
8437        attrKV: function(t, e) {
8438            if ("position" === t || "scale" === t || "origin" === t) {
8439                if (e) {
8440                    var i = this[t];
8441                    i || (i = this[t] = []), i[0] = e[0], i[1] = e[1]
8442                }
8443            } else this[t] = e
8444        },
8445        hide: function() { this.ignore = !0, this.__zr && this.__zr.refresh() },
8446        show: function() { this.ignore = !1, this.__zr && this.__zr.refresh() },
8447        attr: function(t, e) {
8448            if ("string" == typeof t) this.attrKV(t, e);
8449            else if (w(t))
8450                for (var i in t) t.hasOwnProperty(i) && this.attrKV(i, t[i]);
8451            return this.dirty(!1), this
8452        },
8453        setClipPath: function(t) {
8454            var e = this.__zr;
8455            e && t.addSelfToZr(e), this.clipPath && this.clipPath !== t && this.removeClipPath(), this.clipPath = t, t.__zr = e, t.__clipTarget = this, this.dirty(!1)
8456        },
8457        removeClipPath: function() {
8458            var t = this.clipPath;
8459            t && (t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__clipTarget = null, this.clipPath = null, this.dirty(!1))
8460        },
8461        addSelfToZr: function(t) {
8462            this.__zr = t;
8463            var e = this.animators;
8464            if (e)
8465                for (var i = 0; i < e.length; i++) t.animation.addAnimator(e[i]);
8466            this.clipPath && this.clipPath.addSelfToZr(t)
8467        },
8468        removeSelfFromZr: function(t) {
8469            this.__zr = null;
8470            var e = this.animators;
8471            if (e)
8472                for (var i = 0; i < e.length; i++) t.animation.removeAnimator(e[i]);
8473            this.clipPath && this.clipPath.removeSelfFromZr(t)
8474        }
8475    }, h(nw, iw), h(nw, E_), h(nw, D_);
8476    var ow = Q,
8477        aw = Math.min,
8478        rw = Math.max;
8479    $t.prototype = {
8480        constructor: $t,
8481        union: function(t) {
8482            var e = aw(t.x, this.x),
8483                i = aw(t.y, this.y);
8484            this.width = rw(t.x + t.width, this.x + this.width) - e, this.height = rw(t.y + t.height, this.y + this.height) - i, this.x = e, this.y = i
8485        },
8486        applyTransform: function() {
8487            var t = [],
8488                e = [],
8489                i = [],
8490                n = [];
8491            return function(o) {
8492                if (o) {
8493                    t[0] = i[0] = this.x, t[1] = n[1] = this.y, e[0] = n[0] = this.x + this.width, e[1] = i[1] = this.y + this.height, ow(t, t, o), ow(e, e, o), ow(i, i, o), ow(n, n, o), this.x = aw(t[0], e[0], i[0], n[0]), this.y = aw(t[1], e[1], i[1], n[1]);
8494                    var a = rw(t[0], e[0], i[0], n[0]),
8495                        r = rw(t[1], e[1], i[1], n[1]);
8496                    this.width = a - this.x, this.height = r - this.y
8497                }
8498            }
8499        }(),
8500        calculateTransform: function(t) {
8501            var e = this,
8502                i = t.width / e.width,
8503                n = t.height / e.height,
8504                o = st();
8505            return ct(o, o, [-e.x, -e.y]), ft(o, o, [i, n]), ct(o, o, [t.x, t.y]), o
8506        },
8507        intersect: function(t) {
8508            if (!t) return !1;
8509            t instanceof $t || (t = $t.create(t));
8510            var e = this,
8511                i = e.x,
8512                n = e.x + e.width,
8513                o = e.y,
8514                a = e.y + e.height,
8515                r = t.x,
8516                s = t.x + t.width,
8517                l = t.y,
8518                u = t.y + t.height;
8519            return !(n < r || s < i || a < l || u < o)
8520        },
8521        contain: function(t, e) { var i = this; return t >= i.x && t <= i.x + i.width && e >= i.y && e <= i.y + i.height },
8522        clone: function() { return new $t(this.x, this.y, this.width, this.height) },
8523        copy: function(t) { this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height },
8524        plain: function() { return { x: this.x, y: this.y, width: this.width, height: this.height } }
8525    }, $t.create = function(t) { return new $t(t.x, t.y, t.width, t.height) };
8526    var sw = function(t) {
8527        t = t || {}, nw.call(this, t);
8528        for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]);
8529        this._children = [], this.__storage = null, this.__dirty = !0
8530    };
8531    sw.prototype = {
8532        constructor: sw,
8533        isGroup: !0,
8534        type: "group",
8535        silent: !1,
8536        children: function() { return this._children.slice() },
8537        childAt: function(t) { return this._children[t] },
8538        childOfName: function(t) {
8539            for (var e = this._children, i = 0; i < e.length; i++)
8540                if (e[i].name === t) return e[i]
8541        },
8542        childCount: function() { return this._children.length },
8543        add: function(t) { return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), this },
8544        addBefore: function(t, e) {
8545            if (t && t !== this && t.parent !== this && e && e.parent === this) {
8546                var i = this._children,
8547                    n = i.indexOf(e);
8548                n >= 0 && (i.splice(n, 0, t), this._doAdd(t))
8549            }
8550            return this
8551        },
8552        _doAdd: function(t) {
8553            t.parent && t.parent.remove(t), t.parent = this;
8554            var e = this.__storage,
8555                i = this.__zr;
8556            e && e !== t.__storage && (e.addToStorage(t), t instanceof sw && t.addChildrenToStorage(e)), i && i.refresh()
8557        },
8558        remove: function(t) {
8559            var e = this.__zr,
8560                i = this.__storage,
8561                n = this._children,
8562                o = l(n, t);
8563            return o < 0 ? this : (n.splice(o, 1), t.parent = null, i && (i.delFromStorage(t), t instanceof sw && t.delChildrenFromStorage(i)), e && e.refresh(), this)
8564        },
8565        removeAll: function() {
8566            var t, e, i = this._children,
8567                n = this.__storage;
8568            for (e = 0; e < i.length; e++) t = i[e], n && (n.delFromStorage(t), t instanceof sw && t.delChildrenFromStorage(n)), t.parent = null;
8569            return i.length = 0, this
8570        },
8571        eachChild: function(t, e) {
8572            for (var i = this._children, n = 0; n < i.length; n++) {
8573                var o = i[n];
8574                t.call(e, o, n)
8575            }
8576            return this
8577        },
8578        traverse: function(t, e) {
8579            for (var i = 0; i < this._children.length; i++) {
8580                var n = this._children[i];
8581                t.call(e, n), "group" === n.type && n.traverse(t, e)
8582            }
8583            return this
8584        },
8585        addChildrenToStorage: function(t) {
8586            for (var e = 0; e < this._children.length; e++) {
8587                var i = this._children[e];
8588                t.addToStorage(i), i instanceof sw && i.addChildrenToStorage(t)
8589            }
8590        },
8591        delChildrenFromStorage: function(t) {
8592            for (var e = 0; e < this._children.length; e++) {
8593                var i = this._children[e];
8594                t.delFromStorage(i), i instanceof sw && i.delChildrenFromStorage(t)
8595            }
8596        },
8597        dirty: function() { return this.__dirty = !0, this.__zr && this.__zr.refresh(), this },
8598        getBoundingRect: function(t) {
8599            for (var e = null, i = new $t(0, 0, 0, 0), n = t || this._children, o = [], a = 0; a < n.length; a++) {
8600                var r = n[a];
8601                if (!r.ignore && !r.invisible) {
8602                    var s = r.getBoundingRect(),
8603                        l = r.getLocalTransform(o);
8604                    l ? (i.copy(s), i.applyTransform(l), (e = e || i.clone()).union(i)) : (e = e || s.clone()).union(s)
8605                }
8606            }
8607            return e || i
8608        }
8609    }, u(sw, nw);
8610    var lw = 32,
8611        uw = 7,
8612        hw = function() { this._roots = [], this._displayList = [], this._displayListLen = 0 };
8613    hw.prototype = {
8614        constructor: hw,
8615        traverse: function(t, e) { for (var i = 0; i < this._roots.length; i++) this._roots[i].traverse(t, e) },
8616        getDisplayList: function(t, e) { return e = e || !1, t && this.updateDisplayList(e), this._displayList },
8617        updateDisplayList: function(t) {
8618            this._displayListLen = 0;
8619            for (var e = this._roots, i = this._displayList, n = 0, o = e.length; n < o; n++) this._updateAndAddDisplayable(e[n], null, t);
8620            i.length = this._displayListLen, a_.canvasSupported && ae(i, re)
8621        },
8622        _updateAndAddDisplayable: function(t, e, i) {
8623            if (!t.ignore || i) {
8624                t.beforeUpdate(), t.__dirty && t.update(), t.afterUpdate();
8625                var n = t.clipPath;
8626                if (n) { e = e ? e.slice() : []; for (var o = n, a = t; o;) o.parent = a, o.updateTransform(), e.push(o), a = o, o = o.clipPath }
8627                if (t.isGroup) {
8628                    for (var r = t._children, s = 0; s < r.length; s++) {
8629                        var l = r[s];
8630                        t.__dirty && (l.__dirty = !0), this._updateAndAddDisplayable(l, e, i)
8631                    }
8632                    t.__dirty = !1
8633                } else t.__clipPaths = e, this._displayList[this._displayListLen++] = t
8634            }
8635        },
8636        addRoot: function(t) { t.__storage !== this && (t instanceof sw && t.addChildrenToStorage(this), this.addToStorage(t), this._roots.push(t)) },
8637        delRoot: function(t) {
8638            if (null == t) {
8639                for (i = 0; i < this._roots.length; i++) {
8640                    var e = this._roots[i];
8641                    e instanceof sw && e.delChildrenFromStorage(this)
8642                }
8643                return this._roots = [], this._displayList = [], void(this._displayListLen = 0)
8644            }
8645            if (t instanceof Array)
8646                for (var i = 0, n = t.length; i < n; i++) this.delRoot(t[i]);
8647            else {
8648                var o = l(this._roots, t);
8649                o >= 0 && (this.delFromStorage(t), this._roots.splice(o, 1), t instanceof sw && t.delChildrenFromStorage(this))
8650            }
8651        },
8652        addToStorage: function(t) { return t && (t.__storage = this, t.dirty(!1)), this },
8653        delFromStorage: function(t) { return t && (t.__storage = null), this },
8654        dispose: function() { this._renderList = this._roots = null },
8655        displayableSortFunc: re
8656    };
8657    var cw = { shadowBlur: 1, shadowOffsetX: 1, shadowOffsetY: 1, textShadowBlur: 1, textShadowOffsetX: 1, textShadowOffsetY: 1, textBoxShadowBlur: 1, textBoxShadowOffsetX: 1, textBoxShadowOffsetY: 1 },
8658        dw = function(t, e, i) { return cw.hasOwnProperty(e) ? i *= t.dpr : i },
8659        fw = [
8660            ["shadowBlur", 0],
8661            ["shadowOffsetX", 0],
8662            ["shadowOffsetY", 0],
8663            ["shadowColor", "#000"],
8664            ["lineCap", "butt"],
8665            ["lineJoin", "miter"],
8666            ["miterLimit", 10]
8667        ],
8668        pw = function(t, e) { this.extendFrom(t, !1), this.host = e };
8669    pw.prototype = {
8670        constructor: pw,
8671        host: null,
8672        fill: "#000",
8673        stroke: null,
8674        opacity: 1,
8675        lineDash: null,
8676        lineDashOffset: 0,
8677        shadowBlur: 0,
8678        shadowOffsetX: 0,
8679        shadowOffsetY: 0,
8680        lineWidth: 1,
8681        strokeNoScale: !1,
8682        text: null,
8683        font: null,
8684        textFont: null,
8685        fontStyle: null,
8686        fontWeight: null,
8687        fontSize: null,
8688        fontFamily: null,
8689        textTag: null,
8690        textFill: "#000",
8691        textStroke: null,
8692        textWidth: null,
8693        textHeight: null,
8694        textStrokeWidth: 0,
8695        textLineHeight: null,
8696        textPosition: "inside",
8697        textRect: null,
8698        textOffset: null,
8699        textAlign: null,
8700        textVerticalAlign: null,
8701        textDistance: 5,
8702        textShadowColor: "transparent",
8703        textShadowBlur: 0,
8704        textShadowOffsetX: 0,
8705        textShadowOffsetY: 0,
8706        textBoxShadowColor: "transparent",
8707        textBoxShadowBlur: 0,
8708        textBoxShadowOffsetX: 0,
8709        textBoxShadowOffsetY: 0,
8710        transformText: !1,
8711        textRotation: 0,
8712        textOrigin: null,
8713        textBackgroundColor: null,
8714        textBorderColor: null,
8715        textBorderWidth: 0,
8716        textBorderRadius: 0,
8717        textPadding: null,
8718        rich: null,
8719        truncate: null,
8720        blend: null,
8721        bind: function(t, e, i) {
8722            for (var n = this, o = i && i.style, a = !o, r = 0; r < fw.length; r++) {
8723                var s = fw[r],
8724                    l = s[0];
8725                (a || n[l] !== o[l]) && (t[l] = dw(t, l, n[l] || s[1]))
8726            }
8727            if ((a || n.fill !== o.fill) && (t.fillStyle = n.fill), (a || n.stroke !== o.stroke) && (t.strokeStyle = n.stroke), (a || n.opacity !== o.opacity) && (t.globalAlpha = null == n.opacity ? 1 : n.opacity), (a || n.blend !== o.blend) && (t.globalCompositeOperation = n.blend || "source-over"), this.hasStroke()) {
8728                var u = n.lineWidth;
8729                t.lineWidth = u / (this.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1)
8730            }
8731        },
8732        hasFill: function() { var t = this.fill; return null != t && "none" !== t },
8733        hasStroke: function() { var t = this.stroke; return null != t && "none" !== t && this.lineWidth > 0 },
8734        extendFrom: function(t, e) {
8735            if (t)
8736                for (var i in t) !t.hasOwnProperty(i) || !0 !== e && (!1 === e ? this.hasOwnProperty(i) : null == t[i]) || (this[i] = t[i])
8737        },
8738        set: function(t, e) { "string" == typeof t ? this[t] = e : this.extendFrom(t, !0) },
8739        clone: function() { var t = new this.constructor; return t.extendFrom(this, !0), t },
8740        getGradient: function(t, e, i) { for (var n = ("radial" === e.type ? le : se)(t, e, i), o = e.colorStops, a = 0; a < o.length; a++) n.addColorStop(o[a].offset, o[a].color); return n }
8741    };
8742    for (var gw = pw.prototype, mw = 0; mw < fw.length; mw++) {
8743        var vw = fw[mw];
8744        vw[0] in gw || (gw[vw[0]] = vw[1])
8745    }
8746    pw.getGradient = gw.getGradient;
8747    var yw = function(t, e) { this.image = t, this.repeat = e, this.type = "pattern" };
8748    yw.prototype.getCanvasPattern = function(t) { return t.createPattern(this.image, this.repeat || "repeat") };
8749    var xw = function(t, e, i) {
8750        var n;
8751        i = i || Q_, "string" == typeof t ? n = he(t, e, i) : w(t) && (t = (n = t).id), this.id = t, this.dom = n;
8752        var o = n.style;
8753        o && (n.onselectstart = ue, o["-webkit-user-select"] = "none", o["user-select"] = "none", o["-webkit-touch-callout"] = "none", o["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", o.padding = 0, o.margin = 0, o["border-width"] = 0), this.domBack = null, this.ctxBack = null, this.painter = e, this.config = null, this.clearColor = 0, this.motionBlur = !1, this.lastFrameAlpha = .7, this.dpr = i
8754    };
8755    xw.prototype = {
8756        constructor: xw,
8757        __dirty: !0,
8758        __used: !1,
8759        __drawIndex: 0,
8760        __startIndex: 0,
8761        __endIndex: 0,
8762        incremental: !1,
8763        getElementCount: function() { return this.__endIndex - this.__startIndex },
8764        initContext: function() { this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr },
8765        createBackBuffer: function() {
8766            var t = this.dpr;
8767            this.domBack = he("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"), 1 != t && this.ctxBack.scale(t, t)
8768        },
8769        resize: function(t, e) {
8770            var i = this.dpr,
8771                n = this.dom,
8772                o = n.style,
8773                a = this.domBack;
8774            o && (o.width = t + "px", o.height = e + "px"), n.width = t * i, n.height = e * i, a && (a.width = t * i, a.height = e * i, 1 != i && this.ctxBack.scale(i, i))
8775        },
8776        clear: function(t, e) {
8777            var i = this.dom,
8778                n = this.ctx,
8779                o = i.width,
8780                a = i.height,
8781                e = e || this.clearColor,
8782                r = this.motionBlur && !t,
8783                s = this.lastFrameAlpha,
8784                l = this.dpr;
8785            if (r && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(i, 0, 0, o / l, a / l)), n.clearRect(0, 0, o, a), e && "transparent" !== e) {
8786                var u;
8787                e.colorStops ? (u = e.__canvasGradient || pw.getGradient(n, e, { x: 0, y: 0, width: o, height: a }), e.__canvasGradient = u) : e.image && (u = yw.prototype.getCanvasPattern.call(e, n)), n.save(), n.fillStyle = u || e, n.fillRect(0, 0, o, a), n.restore(
8787)
8788            }
8789            if (r) {
8790                var h = this.domBack;
8791                n.save(), n.globalAlpha = s, n.drawImage(h, 0, 0, o, a), n.restore()
8792            }
8793        }
8794    };
8795    var _w = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) { setTimeout(t, 16) },
8796        ww = new F_(50),
8797        bw = {},
8798        Sw = 0,
8799        Mw = 5e3,
8800        Iw = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g,
8801        Tw = "12px sans-serif",
8802        Dw = {};
8803    Dw.measureText = function(t, e) { var i = s(); return i.font = e || Tw, i.measureText(t) };
8804    var Aw = { left: 1, right: 1, center: 1 },
8805        Cw = { top: 1, bottom: 1, middle: 1 },
8806        Lw = new $t,
8807        kw = function() {};
8808    kw.prototype = {
8809        constructor: kw,
8810        drawRectText: function(t, e) {
8811            var i = this.style;
8812            e = i.textRect || e, this.__dirty && Ne(i);
8813            var n = i.text;
8814            if (null != n && (n += ""), Ke(n, i)) {
8815                t.save();
8816                var o = this.transform;
8817                i.transformText ? this.setTransform(t) : o && (Lw.copy(e), Lw.applyTransform(o), e = Lw), Ee(this, t, n, i, e), t.restore()
8818            }
8819        }
8820    }, $e.prototype = { constructor: $e, 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, inplace: !1, beforeBrush: function(t) {}, afterBrush: function(t) {}, brush: function(t, e) {}, getBoundingRect: function() {}, contain: function(t, e) { return this.rectContain(t, e) }, traverse: function(t, e) { t.call(e, this) }, rectContain: function(t, e) { var i = this.transformCoordToLocal(t, e); return this.getBoundingRect().contain(i[0], i[1]) }, dirty: function() { this.__dirty = !0, this._rect = null, this.__zr && this.__zr.refresh() }, animateStyle: function(t) { return this.animate("style", t) }, attrKV: function(t, e) { "style" !== t ? nw.prototype.attrKV.call(this, t, e) : this.style.set(e) }, setStyle: function(t, e) { return this.style.set(t, e), this.dirty(!1), this }, useStyle: function(t) { return this.style = new pw(t, this), this.dirty(!1), this } }, u($e, nw), h($e, kw), Je.prototype = {
8821        constructor: Je,
8822        type: "image",
8823        brush: function(t, e) {
8824            var i = this.style,
8825                n = i.image;
8826            i.bind(t, this, e);
8827            var o = this._image = de(n, this._image, this, this.onload);
8828            if (o && pe(o)) {
8829                var a = i.x || 0,
8830                    r = i.y || 0,
8831                    s = i.width,
8832                    l = i.height,
8833                    u = o.width / o.height;
8834                if (null == s && null != l ? s = l * u : null == l && null != s ? l = s / u : null == s && null == l && (s = o.width, l = o.height), this.setTransform(t), i.sWidth && i.sHeight) {
8835                    var h = i.sx || 0,
8836                        c = i.sy || 0;
8837                    t.drawImage(o, h, c, i.sWidth, i.sHeight, a, r, s, l)
8838                } else if (i.sx && i.sy) {
8839                    var d = s - (h = i.sx),
8840                        f = l - (c = i.sy);
8841                    t.drawImage(o, h, c, d, f, a, r, s, l)
8842                } else t.drawImage(o, a, r, s, l);
8843                null != i.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect()))
8844            }
8845        },
8846        getBoundingRect: function() { var t = this.style; return this._rect || (this._rect = new $t(t.x || 0, t.y || 0, t.width || 0, t.height || 0)), this._rect }
8847    }, u(Je, $e);
8848    var Pw = new $t(0, 0, 0, 0),
8849        Nw = new $t(0, 0, 0, 0),
8850        Ow = function(t, e, i) {
8851            this.type = "canvas";
8852            var n = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
8853            this._opts = i = a({}, i || {}), this.dpr = i.devicePixelRatio || Q_, this._singleCanvas = n, this.root = t;
8854            var o = t.style;
8855            o && (o["-webkit-tap-highlight-color"] = "transparent", o["-webkit-user-select"] = o["user-select"] = o["-webkit-touch-callout"] = "none", t.innerHTML = ""), this.storage = e;
8856            var r = this._zlevelList = [],
8857                s = this._layers = {};
8858            if (this._layerConfig = {}, this._needsManuallyCompositing = !1, n) {
8859                var l = t.width,
8860                    u = t.height;
8861                null != i.width && (l = i.width), null != i.height && (u = i.height), this.dpr = i.devicePixelRatio || 1, t.width = l * this.dpr, t.height = u * this.dpr, this._width = l, this._height = u;
8862                var h = new xw(t, this, this.dpr);
8863                h.__builtin__ = !0, h.initContext(), s[314159] = h, h.zlevel = 314159, r.push(314159), this._domRoot = t
8864            } else {
8865                this._width = this._getSize(0), this._height = this._getSize(1);
8866                var c = this._domRoot = oi(this._width, this._height);
8867                t.appendChild(c)
8868            }
8869            this._hoverlayer = null, this._hoverElements = []
8870        };
8871    Ow.prototype = {
8872        constructor: Ow,
8873        getType: function() { return "canvas" },
8874        isSingleCanvas: function() { return this._singleCanvas },
8875        getViewportRoot: function() { return this._domRoot },
8876        getViewportRootOffset: function() { var t = this.getViewportRoot(); if (t) return { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } },
8877        refresh: function(t) {
8878            var e = this.storage.getDisplayList(!0),
8879                i = this._zlevelList;
8880            this._redrawId = Math.random(), this._paintList(e, t, this._redrawId);
8881            for (var n = 0; n < i.length; n++) {
8882                var o = i[n],
8883                    a = this._layers[o];
8884                if (!a.__builtin__ && a.refresh) {
8885                    var r = 0 === n ? this._backgroundColor : null;
8886                    a.refresh(r)
8887                }
8888            }
8889            return this.refreshHover(), this
8890        },
8891        addHover: function(t, e) {
8892            if (!t.__hoverMir) {
8893                var i = new t.constructor({ style: t.style, shape: t.shape });
8894                i.__from = t, t.__hoverMir = i, i.setStyle(e), this._hoverElements.push(i)
8895            }
8896        },
8897        removeHover: function(t) {
8898            var e = t.__hoverMir,
8899                i = this._hoverElements,
8900                n = l(i, e);
8901            n >= 0 && i.splice(n, 1), t.__hoverMir = null
8902        },
8903        clearHover: function(t) {
8904            for (var e = this._hoverElements, i = 0; i < e.length; i++) {
8905                var n = e[i].__from;
8906                n && (n.__hoverMir = null)
8907            }
8908            e.length = 0
8909        },
8910        refreshHover: function() {
8911            var t = this._hoverElements,
8912                e = t.length,
8913                i = this._hoverlayer;
8914            if (i && i.clear(), e) {
8915                ae(t, this.storage.displayableSortFunc), i || (i = this._hoverlayer = this.getLayer(1e5));
8916                var n = {};
8917                i.ctx.save();
8918                for (var o = 0; o < e;) {
8919                    var a = t[o],
8920                        r = a.__from;
8921                    r && r.__zr ? (o++, r.invisible || (a.transform = r.transform, a.invTransform = r.invTransform, a.__clipPaths = r.__clipPaths, this._doPaintEl(a, i, !0, n))) : (t.splice(o, 1), r.__hoverMir = null, e--)
8922                }
8923                i.ctx.restore()
8924            }
8925        },
8926        getHoverLayer: function() { return this.getLayer(1e5) },
8927        _paintList: function(t, e, i) {
8928            if (this._redrawId === i) {
8929                e = e || !1, this._updateLayerStatus(t);
8930                var n = this._doPaintList(t, e);
8931                if (this._needsManuallyCompositing && this._compositeManually(), !n) {
8932                    var o = this;
8933                    _w(function() { o._paintList(t, e, i) })
8934                }
8935            }
8936        },
8937        _compositeManually: function() {
8938            var t = this.getLayer(314159).ctx,
8939                e = this._domRoot.width,
8940                i = this._domRoot.height;
8941            t.clearRect(0, 0, e, i), this.eachBuiltinLayer(function(n) { n.virtual && t.drawImage(n.dom, 0, 0, e, i) })
8942        },
8943        _doPaintList: function(t, e) {
8944            for (var i = [], n = 0; n < this._zlevelList.length; n++) {
8945                var o = this._zlevelList[n];
8946                (s = this._layers[o]).__builtin__ && s !== this._hoverlayer && (s.__dirty || e) && i.push(s)
8947            }
8948            for (var a = !0, r = 0; r < i.length; r++) {
8949                var s = i[r],
8950                    l = s.ctx,
8951                    u = {};
8952                l.save();
8953                var h = e ? s.__startIndex : s.__drawIndex,
8954                    c = !e && s.incremental && Date.now,
8955                    f = c && Date.now(),
8956                    p = s.zlevel === this._zlevelList[0] ? this._backgroundColor : null;
8957                if (s.__startIndex === s.__endIndex) s.clear(!1, p);
8958                else if (h === s.__startIndex) {
8959                    var g = t[h];
8960                    g.incremental && g.notClear && !e || s.clear(!1, p)
8961                } - 1 === h && (console.error("For some unknown reason. drawIndex is -1"), h = s.__startIndex);
8962                for (var m = h; m < s.__endIndex; m++) { var v = t[m]; if (this._doPaintEl(v, s, e, u), v.__dirty = !1, c && Date.now() - f > 15) break }
8963                s.__drawIndex = m, s.__drawIndex < s.__endIndex && (a = !1), u.prevElClipPaths && l.restore(), l.restore()
8964            }
8965            return a_.wxa && d(this._layers, function(t) { t && t.ctx && t.ctx.draw && t.ctx.draw() }), a
8966        },
8967        _doPaintEl: function(t, e, i, n) {
8968            var o = e.ctx,
8969                a = t.transform;
8970            if ((e.__dirty || i) && !t.invisible && 0 !== t.style.opacity && (!a || a[0] || a[3]) && (!t.culling || !ei(t, this._width, this._height))) {
8971                var r = t.__clipPaths;
8972                n.prevElClipPaths && !ii(r, n.prevElClipPaths) || (n.prevElClipPaths && (e.ctx.restore(), n.prevElClipPaths = null, n.prevEl = null), r && (o.save(), ni(r, o), n.prevElClipPaths = r)), t.beforeBrush && t.beforeBrush(o), t.brush(o, n.prevEl || null), n.prevEl = t, t.afterBrush && t.afterBrush(o)
8973            }
8974        },
8975        getLayer: function(t, e) { this._singleCanvas && !this._needsManuallyCompositing && (t = 314159); var i = this._layers[t]; return i || ((i = new xw("zr_" + t, this, this.dpr)).zlevel = t, i.__builtin__ = !0, this._layerConfig[t] && n(i, this._layerConfig[t], !0), e && (i.virtual = e), this.insertLayer(t, i), i.initContext()), i },
8976        insertLayer: function(t, e) {
8977            var i = this._layers,
8978                n = this._zlevelList,
8979                o = n.length,
8980                a = null,
8981                r = -1,
8982                s = this._domRoot;
8983            if (i[t]) ew("ZLevel " + t + " has been used already");
8984            else if (ti(e)) {
8985                if (o > 0 && t > n[0]) {
8986                    for (r = 0; r < o - 1 && !(n[r] < t && n[r + 1] > t); r++);
8987                    a = i[n[r]]
8988                }
8989                if (n.splice(r + 1, 0, t), i[t] = e, !e.virtual)
8990                    if (a) {
8991                        var l = a.dom;
8992                        l.nextSibling ? s.insertBefore(e.dom, l.nextSibling) : s.appendChild(e.dom)
8993                    } else s.firstChild ? s.insertBefore(e.dom, s.firstChild) : s.appendChild(e.dom)
8994            }
8994 else ew("Layer of zlevel " + t + " is not valid")
8995        },
8996        eachLayer: function(t, e) { var i, n, o = this._zlevelList; for (n = 0; n < o.length; n++) i = o[n], t.call(e, this._layers[i], i) },
8997        eachBuiltinLayer: function(t, e) { var i, n, o, a = this._zlevelList; for (o = 0; o < a.length; o++) n = a[o], (i = this._layers[n]).__builtin__ && t.call(e, i, n) },
8998        eachOtherLayer: function(t, e) { var i, n, o, a = this._zlevelList; for (o = 0; o < a.length; o++) n = a[o], (i = this._layers[n]).__builtin__ || t.call(e, i, n) },
8999        getLayers: function() { return this._layers },
9000        _updateLayerStatus: function(t) {
9001            function e(t) { i && (i.__endIndex !== t && (i.__dirty = !0), i.__endIndex = t) }
9002            if (this.eachBuiltinLayer(function(t, e) { t.__dirty = t.__used = !1 }), this._singleCanvas)
9003                for (o = 1; o < t.length; o++)
9004                    if ((r = t[o]).zlevel !== t[o - 1].zlevel || r.incremental) { this._needsManuallyCompositing = !0; break }
9005            for (var i = null, n = 0, o = 0; o < t.length; o++) {
9006                var a, r = t[o],
9007                    s = r.zlevel;
9008                r.incremental ? ((a = this.getLayer(s + .001, this._needsManuallyCompositing)).incremental = !0, n = 1) : a = this.getLayer(s + (n > 0 ? .01 : 0), this._needsManuallyCompositing), a.__builtin__ || ew("ZLevel " + s + " has been used by unkown layer " + a.id), a !== i && (a.__used = !0, a.__startIndex !== o && (a.__dirty = !0), a.__startIndex = o, a.incremental ? a.__drawIndex = -1 : a.__drawIndex = o, e(o), i = a), r.__dirty && (a.__dirty = !0, a.incremental && a.__drawIndex < 0 && (a.__drawIndex = o))
9009            }
9010            e(o), this.eachBuiltinLayer(function(t, e) {!t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t.__endIndex = t.__drawIndex = 0), t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex) })
9011        },
9012        clear: function() { return this.eachBuiltinLayer(this._clearLayer), this },
9013        _clearLayer: function(t) { t.clear() },
9014        setBackgroundColor: function(t) { this._backgroundColor = t },
9015        configLayer: function(t, e) {
9016            if (e) {
9017                var i = this._layerConfig;
9018                i[t] ? n(i[t], e, !0) : i[t] = e;
9019                for (var o = 0; o < this._zlevelList.length; o++) {
9020                    var a = this._zlevelList[o];
9021                    a !== t && a !== t + .01 || n(this._layers[a], i[t], !0)
9022                }
9023            }
9024        },
9025        delLayer: function(t) {
9026            var e = this._layers,
9027                i = this._zlevelList,
9028                n = e[t];
9029            n && (n.dom.parentNode.removeChild(n.dom), delete e[t], i.splice(l(i, t), 1))
9030        },
9031        resize: function(t, e) {
9032            if (this._domRoot.style) {
9033                var i = this._domRoot;
9034                i.style.display = "none";
9035                var n = this._opts;
9036                if (null != t && (n.width = t), null != e && (n.height = e), t = this._getSize(0), e = this._getSize(1), i.style.display = "", this._width != t || e != this._height) {
9037                    i.style.width = t + "px", i.style.height = e + "px";
9038                    for (var o in this._layers) this._layers.hasOwnProperty(o) && this._layers[o].resize(t, e);
9039                    d(this._progressiveLayers, function(i) { i.resize(t, e) }), this.refresh(!0)
9040                }
9041                this._width = t, this._height = e
9042            } else {
9043                if (null == t || null == e) return;
9044                this._width = t, this._height = e, this.getLayer(314159).resize(t, e)
9045            }
9046            return this
9047        },
9048        clearLayer: function(t) {
9049            var e = this._layers[t];
9050            e && e.clear()
9051        },
9052        dispose: function() { this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null },
9053        getRenderedCanvas: function(t) {
9054            if (t = t || {}, this._singleCanvas && !this._compositeManually) return this._layers[314159].dom;
9055            var e = new xw("image", this, t.pixelRatio || this.dpr);
9056            if (e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor), t.pixelRatio <= this.dpr) {
9057                this.refresh();
9058                var i = e.dom.width,
9059                    n = e.dom.height,
9060                    o = e.ctx;
9061                this.eachLayer(function(t) { t.__builtin__ ? o.drawImage(t.dom, 0, 0, i, n) : t.renderToCanvas && (e.ctx.save(), t.renderToCanvas(e.ctx), e.ctx.restore(
9061)) })
9062            } else
9063                for (var a = {}, r = this.storage.getDisplayList(!0), s = 0; s < r.length; s++) {
9064                    var l = r[s];
9065                    this._doPaintEl(l, e, !0, a)
9066                }
9067            return e.dom
9068        },
9069        getWidth: function() { return this._width },
9070        getHeight: function() { return this._height },
9071        _getSize: function(t) {
9072            var e = this._opts,
9073                i = ["width", "height"][t],
9074                n = ["clientWidth", "clientHeight"][t],
9075                o = ["paddingLeft", "paddingTop"][t],
9076                a = ["paddingRight", "paddingBottom"][t];
9077            if (null != e[i] && "auto" !== e[i]) return parseFloat(e[i]);
9078            var r = this.root,
9079                s = document.defaultView.getComputedStyle(r);
9080            return (r[n] || Qe(s[i]) || Qe(r.style[i])) - (Qe(s[o]) || 0) - (Qe(s[a]) || 0) | 0
9081        },
9082        pathToImage: function(t, e) {
9083            e = e || this.dpr;
9084            var i = document.createElement("canvas"),
9085                n = i.getContext("2d"),
9086                o = t.getBoundingRect(),
9087                a = t.style,
9088                r = a.shadowBlur * e,
9089                s = a.shadowOffsetX * e,
9090                l = a.shadowOffsetY * e,
9091                u = a.hasStroke() ? a.lineWidth : 0,
9092                h = Math.max(u / 2, -s + r),
9093                c = Math.max(u / 2, s + r),
9094                d = Math.max(u / 2, -l + r),
9095                f = Math.max(u / 2, l + r),
9096                p = o.width + h + c,
9097                g = o.height + d + f;
9098            i.width = p * e, i.height = g * e, n.scale(e, e), n.clearRect(0, 0, p, g), n.dpr = e;
9099            var m = { position: t.position, rotation: t.rotation, scale: t.scale };
9100            t.position = [h - o.x, d - o.y], t.rotation = 0, t.scale = [1, 1], t.updateTransform(), t && t.brush(n);
9101            var v = new Je({ style: { x: 0, y: 0, image: i } });
9102            return null != m.position && (v.position = t.position = m.position), null != m.rotation && (v.rotation = t.rotation = m.rotation), null != m.scale && (v.scale = t.scale = m.scale), v
9103        }
9104    };
9105    var Ew = "undefined" != typeof window && !!window.addEventListener,
9106        Rw = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
9107        zw = Ew ? function(t) { t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0 } : function(t) { t.returnValue = !1, t.cancelBubble = !0 },
9108        Bw = function(t) { t = t || {}, this.stage = t.stage || {}, this.onframe = t.onframe || function() {}, this._clips = [], this._running = !1, this._time, this._pausedTime, this._pauseStart, this._paused = !1, D_.call(this) };
9109    Bw.prototype = {
9110        constructor: Bw,
9111        addClip: function(t) { this._clips.push(t) },
9112        addAnimator: function(t) { t.animation = this; for (var e = t.getClips(), i = 0; i < e.length; i++) this.addClip(e[i]) },
9113        removeClip: function(t) {
9114            var e = l(this._clips, t);
9115            e >= 0 && this._clips.splice(e, 1)
9116        },
9117        removeAnimator: function(t) {
9118            for (var e = t.getClips(), i = 0; i < e.length; i++) this.removeClip(e[i]);
9119            t.animation = null
9120        },
9121        _update: function() {
9122            for (var t = (new Date).getTime() - this._pausedTime, e = t - this._time, i = this._clips, n = i.length, o = [], a = [], r = 0; r < n; r++) {
9123                var s = i[r],
9124                    l = s.step(t, e);
9125                l && (o.push(l), a.push(s))
9126            }
9127            for (r = 0; r < n;) i[r]._needsRemove ? (i[r] = i[n - 1], i.pop(), n--) : r++;
9128            n = o.length;
9129            for (r = 0; r < n; r++) a[r].fire(o[r]);
9130            this._time = t, this.onframe(e), this.trigger("frame", e), this.stage.update && this.stage.update()
9131        },
9132        _startLoop: function() {
9133            function t() { e._running && (_w(t), !e._paused && e._update()) }
9134            var e = this;
9135            this._running = !0, _w(t)
9136        },
9137        start: function() { this._time = (new Date).getTime(), this._pausedTime = 0, this._startLoop() },
9138        stop: function() { this._running = !1 },
9139        pause: function() { this._paused || (this._pauseStart = (new Date).getTime(), this._paused = !0) },
9140        resume: function() { this._paused && (this._pausedTime += (new Date).getTime() - this._pauseStart, this._paused = !1) },
9141        clear: function() { this._clips = [] },
9142        isFinished: function() { return !this._clips.length },
9143        animate: function(t, e) { var i = new $_(t, (e = e || {}).loop, e.getter, e.setter); return this.addAnimator(i), i }
9144    }, h(Bw, D_);
9145    var Vw = function() { this._track = [] };
9146    Vw.prototype = {
9147        constructor: Vw,
9148        recognize: function(t, e, i) { return this._doTrack(t, e, i), this._recognize(t) },
9149        clear: function() { return this._track.length = 0, this },
9150        _doTrack: function(t, e, i) {
9151            var n = t.touches;
9152            if (n) {
9153                for (var o = { points: [], touches: [], target: e, event: t }, a = 0, r = n.length; a < r; a++) {
9154                    var s = n[a],
9155                        l = ri(i, s, {});
9156                    o.points.push([l.zrX, l.zrY]), o.touches.push(s)
9157                }
9158                this._track.push(o)
9159            }
9160        },
9161        _recognize: function(t) {
9162            for (var e in Gw)
9163                if (Gw.hasOwnProperty(e)) { var i = Gw[e](this._track, t); if (i) return i }
9164        }
9165    };
9166    var Gw = {
9167            pinch: function(t, e) {
9168                var i = t.length;
9169                if (i) {
9170                    var n = (t[i - 1] || {}).points,
9171                        o = (t[i - 2] || {}).points || n;
9172                    if (o && o.length > 1 && n && n.length > 1) { var a = di(n) / di(o);!isFinite(a) && (a = 1), e.pinchScale = a; var r = fi(n); return e.pinchX = r[0], e.pinchY = r[1], { type: "pinch", target: t[0].target, event: e } }
9173                }
9174            }
9175        },
9176        Ww = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
9177        Fw = ["touchstart", "touchend", "touchmove"],
9178        Hw = { pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 },
9179        Zw = f(Ww, function(t) { var e = t.replace("mouse", "pointer"); return Hw[e] ? e : t }),
9180        Uw = {
9181            mousemove: function(t) { t = li(this.dom, t), this.trigger("mousemove", t) },
9182            mouseout: function(t) {
9183                var e = (t = li(this.dom, t)).toElement || t.relatedTarget;
9184                if (e != this.dom)
9185                    for (; e && 9 != e.nodeType;) {
9186                        if (e === this.dom) return;
9187                        e = e.parentNode
9188                    }
9189                this.trigger("mouseout", t)
9190            },
9191            touchstart: function(t) {
9192                (t = li(this.dom, t)).zrByTouch = !0, this._lastTouchMoment = new Date, gi(this, t, "start"), Uw.mousemove.call(this, t), Uw.mousedown.call(this, t), mi(this)
9193            },
9194            touchmove: function(t) {
9195                (t = li(this.dom, t)).zrByTouch = !0, gi(this, t, "change"), Uw.mousemove.call(this, t), mi(this)
9196            },
9197            touchend: function(t) {
9198                (t = li(this.dom, t)).zrByTouch = !0, gi(this, t, "end"), Uw.mouseup.call(this, t), +new Date - this._lastTouchMoment < 300 && Uw.click.call(this, t), mi(this)
9199            },
9200            pointerdown: function(t) { Uw.mousedown.call(this, t) },
9201            pointermove: function(t) { vi(t) || Uw.mousemove.call(this, t) },
9202            pointerup: function(t) { Uw.mouseup.call(this, t) },
9203            pointerout: function(t) { vi(t) || Uw.mouseout.call(this, t) }
9204        };
9205    d(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(t) { Uw[t] = function(e) { e = li(this.dom, e), this.trigger(t, e) } });
9206    var Xw = xi.prototype;
9207    Xw.dispose = function() {
9208        for (var t = Ww.concat(Fw), e = 0; e < t.length; e++) {
9209            var i = t[e];
9210            hi(this.dom, pi(i), this._handlers[i])
9211        }
9212    }, Xw.setCursor = function(t) { this.dom.style && (this.dom.style.cursor = t || "default") }, h(xi, D_);
9213    var jw = !a_.canvasSupported,
9214        Yw = { canvas: Ow },
9215        qw = {},
9216        Kw = function(t, e, i) {
9217            i = i || {}, this.dom = e, this.id = t;
9218            var n = this,
9219                o = new hw,
9220                a = i.renderer;
9221            if (jw) {
9222                if (!Yw.vml) throw new Error("You need to require 'zrender/vml/vml' to supp
9222ort IE8");
9223                a = "vml"
9224            } else a && Yw[a] || (a = "canvas");
9225            var r = new Yw[a](e, o, i, t);
9226            this.storage = o, this.painter = r;
9227            var s = a_.node || a_.worker ? null : new xi(r.getViewportRoot());
9228            this.handler = new L_(o, r, s, r.root), this.animation = new Bw({ stage: { update: m(this.flush, this) } }), this.animation.start(), this._needsRefresh;
9229            var l = o.delFromStorage,
9230                u = o.addToStorage;
9231            o.delFromStorage = function(t) { l.call(o, t), t && t.removeSelfFromZr(n) }, o.addToStorage = function(t) { u.call(o, t), t.addSelfToZr(n) }
9232        };
9233    Kw.prototype = {
9234        constructor: Kw,
9235        getId: function() { return this.id },
9236        add: function(t) { this.storage.addRoot(t), this._needsRefresh = !0 },
9237        remove: function(t) { this.storage.delRoot(t), this._needsRefresh = !0 },
9238        configLayer: function(t, e) { this.painter.configLayer && this.painter.configLayer(t, e), this._needsRefresh = !0 },
9239        setBackgroundColor: function(t) { this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this._needsRefresh = !0 },
9240        refreshImmediately: function() { this._needsRefresh = !1, this.painter.refresh(), this._needsRefresh = !1 },
9241        refresh: function() { this._needsRefresh = !0 },
9242        flush: function() {
9243            var t;
9244            this._needsRefresh && (t = !0, this.refreshImmediately()), this._needsRefreshHover && (t = !0, this.refreshHoverImmediately()), t && this.trigger("rendered")
9245        },
9246        addHover: function(t, e) { this.painter.addHover && (this.painter.addHover(t, e), this.refreshHover()) },
9247        removeHover: function(t) { this.painter.removeHover && (this.painter.removeHover(t), this.refreshHover()) },
9248        clearHover: function() { this.painter.clearHover && (this.painter.clearHover(), this.refreshHover()) },
9249        refreshHover: function() { this._needsRefreshHover = !0 },
9250        refreshHoverImmediately: function() { this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.refreshHover() },
9251        resize: function(t) { t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize() },
9252        clearAnimation: function() { this.animation.clear() },
9253        getWidth: function() { return this.painter.getWidth() },
9254        getHeight: function() { return this.painter.getHeight() },
9255        pathToImage: function(t, e) { return this.painter.pathToImage(t, e) },
9256        setCursorStyle: function(t) { this.handler.setCursorStyle(t) },
9257        findHover: function(t, e) { return this.handler.findHover(t, e) },
9258        on: function(t, e, i) { this.handler.on(t, e, i) },
9259        off: function(t, e) { this.handler.off(t, e) },
9260        trigger: function(t, e) { this.handler.trigger(t, e) },
9261        clear: function() { this.storage.delRoot(), this.painter.clear() },
9262        dispose: function() { this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, bi(this.id) }
9263    };
9264    var $w = (Object.freeze || Object)({
9265            version: "4.0.4",
9266            init: _i,
9267            dispose: function(t) {
9268                if (t) t.dispose();
9269                else {
9270                    for (var e in qw) qw.hasOwnProperty(e) && qw[e].dispose();
9271                    qw = {}
9272                }
9273                return this
9274            },
9275            getInstance: function(t) { return qw[t] },
9276            registerPainter: wi
9277        }),
9278        Jw = d,
9279        Qw = w,
9280        tb = y,
9281        eb = "series\0",
9282        ib = ["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"],
9283        nb = 0,
9284        ob = ".",
9285        ab = "___EC__COMPONENT__CONTAINER___",
9286        rb = 0,
9287        sb = function(t) {
9288            for (var e = 0; e < t.length; e++) t[e][1] || (t[e][1] = t[e][0]);
9289            return function(e, i, n) {
9290                for (var o = {}, a = 0; a < t.length; a++) {
9291                    var r = t[a][1];
9292                    if (!(i && l(i, r) >= 0 || n && l(n, r) < 0)) {
9293                        var s = e.getShallow(r);
9294                        null != s && (o[t[a][0]] = s)
9295                    }
9296                }
9297                return o
9298            }
9299        },
9300        lb = sb([
9301            ["lineWidth", "width"],
9302            ["stroke", "color"],
9303            ["opacity"],
9304            ["shadowBlur"],
9305            ["shadowOffsetX"],
9306            ["shadowOffsetY"],
9307            ["shadowColor"]
9308        ]),
9309        ub = {
9310            getLineStyle: function(t) {
9311                var e = lb(this, t),
9312                    i = this.getLineDash(e.lineWidth);
9313                return i && (e.lineDash = i), e
9314            },
9315            getLineDash: function(t) {
9316                null == t && (t = 1);
9317                var e = this.get("type"),
9318                    i = Math.max(t, 2),
9319                    n = 4 * t;
9320                return "solid" === e || null == e ? null : "dashed" === e ? [n, n] : [i, i]
9321            }
9322        },
9323        hb = sb([
9324            ["fill", "color"],
9325            ["shadowBlur"],
9326            ["shadowOffsetX"],
9327            ["shadowOffsetY"],
9328            ["opacity"],
9329            ["shadowColor"]
9330        ]),
9331        cb = { getAreaStyle: function(t, e) { return hb(this, t, e) } },
9332        db = Math.pow,
9333        fb = Math.sqrt,
9334        pb = 1e-8,
9335        gb = 1e-4,
9336        mb = fb(3),
9337        vb = 1 / 3,
9338        yb = V(),
9339        xb = V(),
9340        _b = V(),
9341        wb = Math.min,
9342        bb = Math.max,
9343        Sb = Math.sin,
9344        Mb = Math.cos,
9345        Ib = 2 * Math.PI,
9346        Tb = V(),
9347        Db = V(),
9348        Ab = V(),
9349        Cb = [],
9350        Lb = [],
9351        kb = { M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7 },
9352        Pb = [],
9353        Nb = [],
9354        Ob = [],
9355        Eb = [],
9356        Rb = Math.min,
9357        zb = Math.max,
9358        Bb = Math.cos,
9359        Vb = Math.sin,
9360        Gb = Math.sqrt,
9361        Wb = Math.abs,
9362        Fb = "undefined" != typeof Float32Array,
9363        Hb = function(t) { this._saveData = !t, this._saveData && (this.data = []), this._ctx = null };
9364    Hb.prototype = {
9365        constructor: Hb,
9366        _xi: 0,
9367        _yi: 0,
9368        _x0: 0,
9369        _y0: 0,
9370        _ux: 0,
9371        _uy: 0,
9372        _len: 0,
9373        _lineDash: null,
9374        _dashOffset: 0,
9375        _dashIdx: 0,
9376        _dashSum: 0,
9377        setScale: function(t, e) { this._ux = Wb(1 / Q_ / t) || 0, this._uy = Wb(1 / Q_ / e) || 0 },
9378        getContext: function() { return this._ctx },
9379        beginPath: function(t) { return this._ctx = t, t && t.beginPath(), t && (this.dpr = t.dpr), this._saveData && (this._len = 0), this._lineDash && (this._lineDash = null, this._dashOffset = 0), this },
9380        moveTo: function(t, e) { return this.addData(kb.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, this._y0 = e, this._xi = t, this._yi = e, this },
9381        lineTo: function(t, e) { var i = Wb(t - this._xi) > this._ux || Wb(e - this._yi) > this._uy || this._len < 5; return this.addData(kb.L, t, e), this._ctx && i && (this._needsDash() ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)), i && (this._xi = t, this._yi = e), this },
9382        bezierCurveTo: function(t, e, i, n, o, a) { return this.addData(kb.C, t, e, i, n, o, a), this._ctx && (this._needsDash() ? this._dashedBezierTo(t, e, i, n, o, a) : this._ctx.bezierCurveTo(t, e, i, n, o, a)), this._xi = o, this._yi = a, this },
9383        quadraticCurveTo: function(t, e, i, n) { return this.addData(kb.Q, t, e, i, n), this._ctx && (this._needsDash() ? this._dashedQuadraticTo(t, e, i, n) : this._ctx.quadraticCurveTo(t, e, i, n)), this._xi = i, this._yi = n, this },
9384        arc: function(t, e, i, n, o, a) { return this.addData(kb.A, t, e, i, i, n, o - n, 0, a ? 0 : 1), this._ctx && this._ctx.arc(t, e, i, n, o, a), this._xi = Bb(o) * i + t, this._yi = Vb(o) * i + t, this },
9385        arcTo: function(t, e, i, n, o) { return this._ctx && this._ctx.arcTo(t, e, i, n, o), this },
9386        rect: function(t, e, i, n) { return this._ctx && this._ctx.rect(t, e, i, n), this.addData(kb.R, t, e, i, n), this },
9387        closePath: function() {
9388            this.addData(kb.Z);
9389            var t = this._ctx,
9390                e = this._x0,
9391                i = this._y0;
9392            return t && (this._needsDash() && this._dashedLineTo(e, i), t.closePath()), this._xi = e, this._yi = i, this
9393        },
9394        fill: function(t) { t && t.fill(), this.toStatic() },
9395        stroke: function(t) { t && t.stroke(), this.toStatic() },
9396        setLineDash: function(t) {
9397            if (t instanceof Array) {
9398                this._lineDash = t, this._dashIdx = 0;
9399                for (var e = 0, i = 0; i < t.length; i++) e += t[i];
9400                this._dashSum = e
9401            }
9402            return this
9403        },
9404        setLineDashOffset: function(t) { return this._dashOffset = t, this },
9405        len: function() { return this._len },
9406        setData: function(t) {
9407            var e = t.length;
9408            this.data && this.data.length == e || !Fb || (this.data = new Float32Array(e));
9409            for (var i = 0; i < e; i++) this.data[i] = t[i];
9410            this._len = e
9411        },
9412        appendPath: function(t) {
9413            t instanceof Array || (t = [t]);
9414            for (var e = t.length, i = 0, n = this._len, o = 0; o < e; o++) i += t[o].len();
9415            Fb && this.data instanceof Float32Array && (this.data = new Float32Array(n + i));
9416            for (o = 0; o < e; o++)
9417                for (var a = t[o].data, r = 0; r < a.length; r++) this.data[n++] = a[r];
9418            this._len = n
9419        },
9420        addData: function(t) {
9421            if (this._saveData) {
9422                var e = this.data;
9423                this._len + arguments.length > e.length && (this._expandData(), e = this.data);
9424                for (var i = 0; i < arguments.length; i++) e[this._len++] = arguments[i];
9425                this._prevCmd = t
9426            }
9427        },
9428        _expandData: function() {
9429            if (!(this.data instanceof Array)) {
9430                for (var t = [], e = 0; e < this._len; e++) t[e] = this.data[e];
9431                this.data = t
9432            }
9433        },
9434        _needsDash: function() { return this._lineDash },
9435        _dashedLineTo: function(t, e) {
9436            var i, n, o = this._dashSum,
9437                a = this._dashOffset,
9438                r = this._lineDash,
9439                s = this._ctx,
9440                l = this._xi,
9441                u = this._yi,
9442                h = t - l,
9443                c = e - u,
9444                d = Gb(h * h + c * c),
9445                f = l,
9446                p = u,
9447                g = r.length;
9448            for (h /= d, c /= d, a < 0 && (a = o + a), f -= (a %= o) * h, p -= a * c; h > 0 && f <= t || h < 0 && f >= t || 0 == h && (c > 0 && p <= e || c < 0 && p >= e);) f += h * (i = r[n = this._dashIdx]), p += c * i, this._dashIdx = (n + 1) % g, h > 0 && f < l || h < 0 && f > l || c > 0 && p < u || c < 0 && p > u || s[n % 2 ? "moveTo" : "lineTo"](h >= 0 ? Rb(f, t) : zb(f, t), c >= 0 ? Rb(p, e) : zb(p, e));
9449            h = f - t, c = p - e, this._dashOffset = -Gb(h * h + c * c)
9450        },
9451        _dashedBezierTo: function(t, e, i, n, o, a) {
9452            var r, s, l, u, h, c = this._dashSum,
9453                d = this._dashOffset,
9454                f = this._lineDash,
9455                p = this._ctx,
9456                g = this._xi,
9457                m = this._yi,
9458                v = ji,
9459                y = 0,
9460                x = this._dashIdx,
9461                _ = f.length,
9462                w = 0;
9463            for (d < 0 && (d = c + d), d %= c, r = 0; r < 1; r += .1) s = v(g, t, i, o, r + .1) - v(g, t, i, o, r), l = v(m, e, n, a, r + .1) - v(m, e, n, a, r), y += Gb(s * s + l * l);
9464            for (;
9464 x < _ && !((w += f[x]) > d); x++);
9465            for (r = (w - d) / y; r <= 1;) u = v(g, t, i, o, r), h = v(m, e, n, a, r), x % 2 ? p.moveTo(u, h) : p.lineTo(u, h), r += f[x] / y, x = (x + 1) % _;
9466            x % 2 != 0 && p.lineTo(o, a), s = o - u, l = a - h, this._dashOffset = -Gb(s * s + l * l)
9467        },
9468        _dashedQuadraticTo: function(t, e, i, n) {
9469            var o = i,
9470                a = n;
9471            i = (i + 2 * t) / 3, n = (n + 2 * e) / 3, t = (this._xi + 2 * t) / 3, e = (this._yi + 2 * e) / 3, this._dashedBezierTo(t, e, i, n, o, a)
9472        },
9473        toStatic: function() {
9474            var t = this.data;
9475            t instanceof Array && (t.length = this._len, Fb && (this.data = new Float32Array(t)))
9476        },
9477        getBoundingRect: function() {
9478            Pb[0] = Pb[1] = Ob[0] = Ob[1] = Number.MAX_VALUE, Nb[0] = Nb[1] = Eb[0] = Eb[1] = -Number.MAX_VALUE;
9479            for (var t = this.data, e = 0, i = 0, n = 0, o = 0, a = 0; a < t.length;) {
9480                var r = t[a++];
9481                switch (1 == a && (n = e = t[a], o = i = t[a + 1]), r) {
9482                    case kb.M:
9483                        e = n = t[a++], i = o = t[a++], Ob[0] = n, Ob[1] = o, Eb[0] = n, Eb[1] = o;
9484                        break;
9485                    case kb.L:
9486                        sn(e, i, t[a], t[a + 1], Ob, Eb), e = t[a++], i = t[a++];
9487                        break;
9488                    case kb.C:
9489                        ln(e, i, t[a++], t[a++], t[a++], t[a++], t[a], t[a + 1], Ob, Eb), e = t[a++], i = t[a++];
9490                        break;
9491                    case kb.Q:
9492                        un(e, i, t[a++], t[a++], t[a], t[a + 1], Ob, Eb), e = t[a++], i = t[a++];
9493                        break;
9494                    case kb.A:
9495                        var s = t[a++],
9496                            l = t[a++],
9497                            u = t[a++],
9498                            h = t[a++],
9499                            c = t[a++],
9500                            d = t[a++] + c,
9501                            f = (t[a++], 1 - t[a++]);
9502                        1 == a && (n = Bb(c) * u + s, o = Vb(c) * h + l), hn(s, l, u, h, c, d, f, Ob, Eb), e = Bb(d) * u + s, i = Vb(d) * h + l;
9503                        break;
9504                    case kb.R:
9505                        sn(n = e = t[a++], o = i = t[a++], n + t[a++], o + t[a++], Ob, Eb);
9506                        break;
9507                    case kb.Z:
9508                        e = n, i = o
9509                }
9510                tt(Pb, Pb, Ob), et(Nb, Nb, Eb)
9511            }
9512            return 0 === a && (Pb[0] = Pb[1] = Nb[0] = Nb[1] = 0), new $t(Pb[0], Pb[1], Nb[0] - Pb[0], Nb[1] - Pb[1])
9513        },
9514        rebuildPath: function(t) {
9515            for (var e, i, n, o, a, r, s = this.data, l = this._ux, u = this._uy, h = this._len, c = 0; c < h;) {
9516                var d = s[c++];
9517                switch (1 == c && (e = n = s[c], i = o = s[c + 1]), d) {
9518                    case kb.M:
9519                        e = n = s[c++], i = o = s[c++], t.moveTo(n, o);
9520                        break;
9521                    case kb.L:
9522                        a = s[c++], r = s[c++], (Wb(a - n) > l || Wb(r - o) > u || c === h - 1) && (t.lineTo(a, r), n = a, o = r);
9523                        break;
9524                    case kb.C:
9525                        t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]), n = s[c - 2], o = s[c - 1];
9526                        break;
9527                    case kb.Q:
9528                        t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]), n = s[c - 2], o = s[c - 1];
9529                        break;
9530                    case kb.A:
9531                        var f = s[c++],
9532                            p = s[c++],
9533                            g = s[c++],
9534                            m = s[c++],
9535                            v = s[c++],
9536                            y = s[c++],
9537                            x = s[c++],
9538                            _ = s[c++],
9539                            w = g > m ? g : m,
9540                            b = g > m ? 1 : g / m,
9541                            S = g > m ? m / g : 1,
9542                            M = v + y;
9543                        Math.abs(g - m) > .001 ? (t.translate(f, p), t.rotate(x), t.scale(b, S), t.arc(0, 0, w, v, M, 1 - _), t.scale(1 / b, 1 / S), t.rotate(-x), t.translate(-f, -p)) : t.arc(f, p, w, v, M, 1 - _), 1 == c && (e = Bb(v) * g + f, i = Vb(v) * m + p), n = Bb(M) * g + f, o = Vb(M) * m + p;
9544                        break;
9545                    case kb.R:
9546                        e = n = s[c], i = o = s[c + 1], t.rect(s[c++], s[c++], s[c++], s[c++]);
9547                        break;
9548                    case kb.Z:
9549                        t.closePath(), n = e, o = i
9550                }
9551            }
9552        }
9553    }, Hb.CMD = kb;
9554    var Zb = 2 * Math.PI,
9555        Ub = 2 * Math.PI,
9556        Xb = Hb.CMD,
9557        jb = 2 * Math.PI,
9558        Yb = 1e-4,
9559        qb = [-1, -1, -1],
9560        Kb = [-1, -1],
9561        $b = yw.prototype.getCanvasPattern,
9562        Jb = Math.abs,
9563        Qb = new Hb(!0);
9564    In.prototype = {
9565        constructor: In,
9566        type: "path",
9567        __dirtyPath: !0,
9568        strokeContainThreshold: 5,
9569        brush: function(t, e) {
9570            var i = this.style,
9571                n = this.path || Qb,
9572                o = i.hasStroke(),
9573                a = i.hasFill(),
9574                r = i.fill,
9575                s = i.stroke,
9576                l = a && !!r.colorStops,
9577                u = o && !!s.colorStops,
9578                h = a && !!r.image,
9579                c = o && !!s.image;
9580            if (i.bind(t, this, e), this.setTransform(t), this.__dirty) {
9581                var d;
9582                l && (d = d || this.getBoundingRect(), this._fillGradient = i.getGradient(t, r, d)), u && (d = d || this.getBoundingRect(), this._strokeGradient = i.getGradient(t, s, d))
9583            }
9584            l ? t.fillStyle = this._fillGradient : h && (t.fillStyle = $b.call(r, t)), u ? t.strokeStyle = this._strokeGradient : c && (t.strokeStyle = $b.call(s, t));
9585            var f = i.lineDash,
9586                p = i.lineDashOffset,
9587                g = !!t.setLineDash,
9588                m = this.getGlobalScale();
9589            n.setScale(m[0], m[1]), this.__dirtyPath || f && !g && o ? (n.beginPath(t), f && !g && (n.setLineDash(f), n.setLineDashOffset(p)), this.buildPath(n, this.shape, !1), this.path && (this.__dirtyPath = !1)) : (t.beginPath(), this.path.rebuildPath(t)), a && n.fill(t), f && g && (t.setLineDash(f), t.lineDashOffset = p), o && n.stroke(t), f && g && t.setLineDash([]), null != i.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect()))
9590        },
9591        buildPath: function(t, e, i) {},
9592        createPathProxy: function() { this.path = new Hb },
9593        getBoundingRect: function() {
9594            var t = this._rect,
9595                e = this.style,
9596                i = !t;
9597            if (i) {
9598                var n = this.path;
9599                n || (n = this.path = new Hb), this.__dirtyPath && (n.beginPath(), this.buildPath(n, this.shape, !1)), t = n.getBoundingRect()
9600            }
9601            if (this._rect = t, e.hasStroke()) {
9602                var o = this._rectWithStroke || (this._rectWithStroke = t.clone());
9603                if (this.__dirty || i) {
9604                    o.copy(t);
9605                    var a = e.lineWidth,
9606                        r = e.strokeNoScale ? this.getLineScale() : 1;
9607                    e.hasFill() || (a = Math.max(a, this.strokeContainThreshold || 4)), r > 1e-10 && (o.width += a / r, o.height += a / r, o.x -= a / r / 2, o.y -= a / r / 2)
9608                }
9609                return o
9610            }
9611            return t
9612        },
9613        contain: function(t, e) {
9614            var i = this.transformCoordToLocal(t, e),
9615                n = this.getBoundingRect(),
9616                o = this.style;
9617            if (t = i[0], e = i[1], n.contain(t, e)) {
9618                var a = this.path.data;
9619                if (o.hasStroke()) {
9620                    var r = o.lineWidth,
9621                        s = o.strokeNoScale ? this.getLineScale() : 1;
9622                    if (s > 1e-10 && (o.hasFill() || (r = Math.max(r, this.strokeContainThreshold)), Mn(a, r / s, t, e))) return !0
9623                }
9624                if (o.hasFill()) return Sn(a, t, e)
9625            }
9626            return !1
9627        },
9628        dirty: function(t) { null == t && (t = !0), t && (this.__dirtyPath = t, this._rect = null), this.__dirty = !0, this.__zr && this.__zr.refresh(), this.__clipTarget && this.__clipTarget.dirty() },
9629        animateShape: function(t) { return this.animate("shape", t) },
9630        attrKV: function(t, e) { "shape" === t ? (this.setShape(e), this.__dirtyPath = !0, this._rect = null) : $e.prototype.attrKV.call(this, t, e) },
9631        setShape: function(t, e) {
9632            var i = this.shape;
9633            if (i) {
9634                if (w(t))
9635                    for (var n in t) t.hasOwnProperty(n) && (i[n] = t[n]);
9636                else i[t] = e;
9637                this.dirty(!0)
9638            }
9639            return this
9640        },
9641        getLineScale: function() { var t = this.transform; return t && Jb(t[0] - 1) > 1e-10 && Jb(t[3] - 1) > 1e-10 ? Math.sqrt(Jb(t[0] * t[3] - t[2] * t[1])) : 1 }
9642    }, In.extend = function(t) {
9643        var e = function(e) {
9644            In.call(this, e), t.style && this.style.extendFrom(t.style, !1);
9645            var i = t.shape;
9646            if (i) { this.shape = this.shape || {}; var n = this.shape; for (var o in i) !n.hasOwnProperty(o) && i.hasOwnProperty(o) && (n[o] = i[o]) }
9647            t.init && t.init.call(this, e)
9648        };
9649        u(e, In);
9650        for (var i in t) "style" !== i && "shape" !== i && (e.prototype[i] = t[i]);
9651        return e
9652    }, u(In, $e);
9653    var tS = Hb.CMD,
9654        eS = [
9655            [],
9656            [],
9657            []
9658        ],
9659        iS = Math.sqrt,
9660        nS = Math.atan2,
9661        oS = function(t, e) {
9662            var i, n, o, a, r, s, l = t.data,
9663                u = tS.M,
9664                h = tS.C,
9665                c = tS.L,
9666                d = tS.R,
9667                f = tS.A,
9668                p = tS.Q;
9669            for (o = 0, a = 0; o < l.length;) {
9670                switch (i = l[o++], a = o, n = 0, i) {
9671                    case u:
9672                    case c:
9673                        n = 1;
9674                        break;
9675                    case h:
9676                        n = 3;
9677                        break;
9678                    case p:
9679                        n = 2;
9680                        break;
9681                    case f:
9682                        var g = e[4],
9683                            m = e[5],
9684                            v = iS(e[0] * e[0] + e[1] * e[1]),
9685                            y = iS(e[2] * e[2] + e[3] * e[3]),
9686                            x = nS(-e[1] / y, e[0] / v);
9687                        l[o] *= v, l[o++] += g, l[o] *= y, l[o++] += m, l[o++] *= v, l[o++] *= y, l[o++] += x, l[o++] += x, a = o += 2;
9688                        break;
9689                    case d:
9690                        s[0] = l[o++], s[1] = l[o++], Q(s, s, e), l[a++] = s[0], l[a++] = s[1], s[0] += l[o++], s[1] += l[o++], Q(s, s, e), l[a++] = s[0], l[a++] = s[1]
9691                }
9692                for (r = 0; r < n; r++)(s = eS[r])[0] = l[o++], s[1] = l[o++], Q(s, s, e), l[a++] = s[0], l[a++] = s[1]
9693            }
9694        },
9695        aS = ["m", "M", "l", "L", "v", "V", "h", "H", "z", "Z", "c", "C", "q", "Q", "t", "T", "s", "S", "a", "A"],
9696        rS = Math.sqrt,
9697        sS = Math.sin,
9698        lS = Math.cos,
9699        uS = Math.PI,
9700        hS = function(t) { return Math.sqrt(t[0] * t[0] + t[1] * t[1]) },
9701        cS = function(t, e) { return (t[0] * e[0] + t[1] * e[1]) / (hS(t) * hS(e)) },
9702        dS = function(t, e) { return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(cS(t, e)) },
9703        fS = function(t) { $e.call(this, t) };
9704    fS.prototype = {
9705        constructor: fS,
9706        type: "text",
9707        brush: function(t, e) {
9708            var i = this.style;
9709            this.__dirty && Ne(i), i.fill = i.stroke = i.shadowBlur = i.shadowColor = i.shadowOffsetX = i.shadowOffsetY = null;
9710            var n = i.text;
9711            null != n && (n += ""), i.bind(t, this, e), Ke(n, i) && (this.setTransform(t), Ee(this, t, n, i), this.restoreTransform(t))
9712        },
9713        getBoundingRect: function() {
9714            var t = this.style;
9715            if (this.__dirty && Ne(t), !this._rect) {
9716                var e = t.text;
9717                null != e ? e += "" : e = "";
9718                var i = me(t.text + "", t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.rich);
9719                if (i.x += t.x || 0, i.y += t.y || 0, Xe(t.textStroke, t.textStrokeWidth)) {
9720                    var n = t.textStrokeWidth;
9721                    i.x -= n / 2, i.y -= n / 2, i.width += n, i.height += n
9722                }
9723                this._rect = i
9724            }
9725            return this._rect
9726        }
9727    }, u(fS, $e);
9728    var pS = In.extend({ type: "circle", shape: { cx: 0, cy: 0, r: 0 }, buildPath: function(t, e, i) { i && t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI, !0) } }),
9729        gS = [
9730            ["shadowBlur", 0],
9731            ["shadowColor", "#000"],
9732            ["shadowOffsetX", 0],
9733            ["shadowOffsetY", 0]
9734        ],
9735        mS = function(t) {
9736            return a_.browser.ie && a_.browser.version >= 11 ? function() {
9737                var e, i = this.__clipPaths,
9738                    n = this.style;
9739                if (i)
9740                    for (var o = 0; o < i.length; o++) {
9741                        var a = i[o],
9742                            r = a && a.shape,
9743                            s = a && a.type;
9744                        if (r && ("sector" === s && r.startAngle === r.endAngle || "rect" === s && (!r.width || !r.height))) {
9745                            for (l = 0; l < gS.length; l++) gS[l][2] = n[gS[l][0]], n[gS[l][0]] = gS[l][1];
9746                            e = !0;
9747                            break
9748                        }
9749                    }
9750                if (t.apply(this, arguments), e)
9751                    for (var l = 0; l < gS.length; l++) n[gS[l][0]] = gS[l][2]
9752            } : t
9753        },
9754        vS = In.extend({
9755            type: "sector",
9756            shape: { cx: 0, cy: 0, r0: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 },
9757            brush: mS(In.prototype.brush),
9758            buildPath: function(t, e) {
9759                var i = e.cx,
9760                    n = e.cy,
9761                    o = Math.max(e.r0 || 0, 0),
9762                    a = Math.max(e.r, 0),
9763                    r = e.startAngle,
9764                    s = e.endAngle,
9765                    l = e.clockwise,
9766                    u = Math.cos(r),
9767                    h = Math.sin(r);
9768                t.moveTo(u * o + i, h * o + n), t.lineTo(u * a + i, h * a + n), t.arc(i, n, a, r, s, !l), t.lineTo(Math.cos(s) * o + i, Math.sin(s) * o + n), 0 !== o && t.arc(i, n, o, s, r, l), t.closePath()
9769            }
9770        }),
9771        yS = In.extend({
9772            type: "ring",
9773            shape: { cx: 0, cy: 0, r: 0, r0: 0 },
9774            buildPath: function(t, e) {
9775                var i = e.cx,
9776                    n = e.cy,
9777                    o = 2 * Math.PI;
9778                t.moveTo(i + e.r, n), t.arc(i, n, e.r, 0, o, !1), t.moveTo(i + e.r0, n), t.arc(i, n, e.r0, 0, o, !0)
9779            }
9780        }),
9781        xS = function(t, e) {
9782            for (var i = t.length, n = [], o = 0, a = 1; a < i; a++) o += K(t[a - 1], t[a]);
9783            var r = o / 2;
9784            r = r < i ? i : r;
9785            for (a = 0; a < r; a++) {
9786                var s, l, u, h = a / (r - 1) * (e ? i : i - 1),
9787                    c = Math.floor(h),
9788                    d = h - c,
9789                    f = t[c % i];
9790                e ? (s = t[(c - 1 + i) % i], l = t[(c + 1) % i], u = t[(c + 2) % i]) : (s = t[0 === c ? c : c - 1], l = t[c > i - 2 ? i - 1 : c + 1], u = t[c > i - 3 ? i - 1 : c + 2]);
9791                var p = d * d,
9792                    g = d * p;
9793                n.push([kn(s[0], f[0], l[0], u[0], d, p, g), kn(s[1], f[1], l[1], u[1], d, p, g)])
9794            }
9795            return n
9796        },
9797        _S = function(t, e, i, n) {
9798            var o, a, r, s, l = [],
9799                u = [],
9800                h = [],
9801                c = [];
9802            if (n) {
9803                r = [1 / 0, 1 / 0], s = [-1 / 0, -1 / 0];
9804                for (var d = 0, f = t.length; d < f; d++) tt(r, r, t[d]), et(s, s, t[d]);
9805                tt(r, r, n[0]), et(s, s, n[1])
9806            }
9807            for (var d = 0, f = t.length; d < f; d++) {
9808                var p = t[d];
9809                if (i) o = t[d ? d - 1 : f - 1], a = t[(d + 1) % f];
9810                else {
9811                    if (0 === d || d === f - 1) { l.push(W(t[d])); continue }
9812                    o = t[d - 1], a = t[d + 1]
9813                }
9814                U(u, a, o), Y(u, u, e);
9815                var g = K(p, o),
9816                    m = K(p, a),
9817                    v = g + m;
9818                0 !== v && (g /= v, m /= v), Y(h, u, -g), Y(c, u, m);
9819                var y = H([], p, h),
9820                    x = H([], p, c);
9821                n && (et(y, y, r), tt(y, y, s), et(x, x, r), tt(x, x, s)), l.push(y), l.push(x)
9822            }
9823            return i && l.push(l.shift()), l
9824        },
9825        wS = In.extend({ type: "polygon", shape: { points: null, smooth: !1, smoothConstraint: null }, buildPath: function(t, e) { Pn(t, e, !0) } }),
9826        bS = In.extend({ type: "polyline", shape: { points: null, smooth: !1, smoothConstraint: null }, style: { stroke: "#000", fill: null }, buildPath: function(t, e) { Pn(t, e, !1) } }),
9827        SS = In.extend({
9828            type: "rect",
9829            shape: { r: 0, x: 0, y: 0, width: 0, height: 0 },
9830            buildPath: function(t, e) {
9831                var i = e.x,
9832                    n = e.y,
9833                    o = e.width,
9834                    a = e.height;
9835                e.r ? Pe(t, e) : t.rect(i, n, o, a), t.closePath()
9836            }
9837        }),
9838        MS = In.extend({
9839            type: "line",
9840            shape: { x1: 0, y1: 0, x2: 0, y2: 0, percent: 1 },
9841            style: { stroke: "#000", fill: null },
9842            buildPath: function(t, e) {
9843                var i = e.x1,
9844                    n = e.y1,
9845                    o = e.x2,
9846                    a = e.y2,
9847                    r = e.percent;
9848                0 !== r && (t.moveTo(i, n), r < 1 && (o = i * (1 - r) + o * r, a = n * (1 - r) + a * r), t.lineTo(o, a))
9849            },
9850            pointAt: function(t) { var e = this.shape; return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t] }
9851        }),
9852        IS = [],
9853        TS = In.extend({
9854            type: "bezier-curve",
9855            shape: { x1: 0, y1: 0, x2: 0, y2: 0, cpx1: 0, cpy1: 0, percent: 1 },
9856            style: { stroke: "#000", fill: null },
9857            buildPath: function(t, e) {
9858                var i = e.x1,
9859                    n = e.y1,
9860                    o = e.x2,
9861                    a = e.y2,
9862                    r = e.cpx1,
9863                    s = e.cpy1,
9864                    l = e.cpx2,
9865                    u = e.cpy2,
9866                    h = e.percent;
9867                0 !== h && (t.moveTo(i, n), null == l || null == u ? (h < 1 && (on(i, r, o, h, IS), r = IS[1], o = IS[2], on(n, s, a, h, IS), s = IS[1], a = IS[2]), t.quadraticCurveTo(r, s, o, a)) : (h < 1 && ($i(i, r, l, o, h, IS), r = IS[1], l = IS[2], o = IS[3], $i(n, s, u, a, h, IS), s = IS[1], u = IS[2], a = IS[3]), t.bezierCurveTo(r, s, l, u, o, a)))
9868            },
9869            pointAt: function(t) { return Nn(this.shape, t, !1) },
9870            tangentAt: function(t) { var e = Nn(this.shape, t, !0); return q(e, e) }
9871        }),
9872        DS = In.extend({
9873            type: "arc",
9874            shape: { cx: 0, cy: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 },
9875            style: { stroke: "#000", fill: null },
9876            buildPath: function(t, e) {
9877                var i = e.cx,
9878                    n = e.cy,
9879                    o = Math.max(e.r, 0),
9880                    a = e.startAngle,
9881                    r = e.endAngle,
9882                    s = e.clockwise,
9883                    l = Math.cos(a),
9884                    u = Math.sin(a);
9885                t.moveTo(l * o + i, u * o + n), t.arc(i, n, o, a, r, !s)
9886            }
9887        }),
9888        AS = In.extend({
9889            type: "compound",
9890            shape: { paths: null },
9891            _updatePathDirty: function() {
9892                for (var t = this.__dirtyPath, e = this.shape.paths, i = 0; i < e.length; i++) t = t || e[i].__dirtyPath;
9893                this.__dirtyPath = t, this.__dirty = this.__dirty || t
9894            },
9895            beforeBrush: function() { this._updatePathDirty(); for (var t = this.shape.paths || [], e = this.getGlobalScale(), i = 0; i < t.length; i++) t[i].path || t[i].createPathProxy(), t[i].path.setScale(e[0], e[1]) },
9896            buildPath: function(t, e) { for (var i = e.paths || [], n = 0; n < i.length; n++) i[n].buildPath(t, i[n].shape, !0) },
9897            afterBrush: function() { for (var t = this.shape.paths || [], e = 0; e < t.length; e++) t[e].__dirtyPath = !1 },
9898            getBoundingRect: function() { return this._updatePathDirty(), In.prototype.getBoundingRect.call(this) }
9899        }),
9900        CS = function(t) { this.colorStops = t || [] };
9901    CS.prototype = { constructor: CS, addColorStop: function(t, e) { this.colorStops.push({ offset: t, color: e }) } };
9902    var LS = function(t, e, i, n, o, a) { this.x = null == t ? 0 : t, this.y = null == e ? 0 : e, this.x2 = null == i ? 1 : i, this.y2 = null == n ? 0 : n, this.type = "linear", this.global = a || !1, CS.call(this, o) };
9903    LS.prototype = { constructor: LS }, u(LS, CS);
9904    var kS = function(t, e, i, n, o) { this.x = null == t ? .5 : t, this.y = null == e ? .5 : e, this.r = null == i ? .5 : i, this.type = "radial", this.global = o || !1, CS.call(this, n) };
9905    kS.prototype = { constructor: kS }, u(kS, CS), On.prototype.incremental = !0, On.prototype.clearDisplaybles = function() { this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), this.notClear = !1 }, On.prototype.addDisplayable = function(t, e) { e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.dirty() }, On.prototype.addDisplayables = function(t, e) { e = e || !1; for (var i = 0; i < t.length; i++) this.addDisplayable(t[i], e) }, On.prototype.eachPendingDisplayable = function(t) { for (e = this._cursor; e < this._displayables.length; e++) t && t(this._displayables[e]); for (var e = 0; e < this._temporaryDisplayables.length; e++) t && t(this._temporaryDisplayables[e]) }, On.prototype.update = function() {
9906        this.updateTransform();
9907        for (t = this._cursor; t < this._displayables.length; t++)(e = this._displayables[t]).parent = this, e.update(), e.parent = null;
9908        for (var t = 0; t < this._temporaryDisplayables.length; t++) {
9909            var e = this._temporaryDisplayables[t];
9910            e.parent = this, e.update(), e.parent = null
9911        }
9912    }, On.prototype.brush = function(t, e) {
9913        for (i = this._cursor; i < this._displayables.length; i++)(n = this._displayables[i]).beforeBrush && n.beforeBrush(t), n.brush(t, i === this._cursor ? null : this._displayables[i - 1]), n.afterBrush && n.afterBrush(t);
9914        this._cursor = i;
9915        for (var i = 0; i < this._temporaryDisplayables.length; i++) {
9916            var n = this._temporaryDisplayables[i];
9917            n.beforeBrush && n.beforeBrush(t), n.brush(t, 0 === i ? null : this._temporaryDisplayables[i - 1]), n.afterBrush && n.afterBrush(t)
9918        }
9919        this._temporaryDisplayables = [], this.notClear = !0
9920    };
9921    var PS = [];
9922    On.prototype.getBoundingRect = function() {
9923        if (!this._rect) {
9924            for (var t = new $t(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) {
9925                var i = this._displayables[e],
9926                    n = i.getBoundingRect().clone();
9927                i.needLocalTransform() && n.applyTransform(i.getLocalTransform(PS)), t.union(n)
9928            }
9929            this._rect = t
9930        }
9931        return this._rect
9932    }, On.prototype.contain = function(t, e) {
9933        var i = this.transformCoordToLocal(t, e);
9934        if (this.getBoundingRect().contain(i[0], i[1]))
9935            for (var n = 0; n < this._displayables.length; n++)
9936                if (this._displayables[n].contain(t, e)) return !0;
9937        return !1
9938    }, u(On, $e);
9939    var NS = Math.round,
9940        OS = Math.max,
9941        ES = Math.min,
9942        RS = {},
9943        zS = function(t, e) {
9944            for (var i = [], n = t.length, o = 0; o < n; o++) {
9945                var a = t[o];
9946                a.path || a.createPathProxy(), a.__dirtyPath && a.buildPath(a.path, a.shape, !0), i.push(a.path)
9947            }
9948            var r = new In(e);
9949            return r.createPathProxy(), r.buildPath = function(t) {
9950                t.appendPath(i);
9951                var e = t.getContext();
9952                e && t.rebuildPath(e)
9953            }, r
9954        },
9955        BS = (Object.freeze || Object)({
9956            extendShape: En,
9957            extendPath: function(t, e) { return Ln(t, e) },
9958            makePath: Rn,
9959            makeImage: zn,
9960            mergePath: zS,
9961            resizePath: Vn,
9962            subPixelOptimizeLine: Gn,
9963            subPixelOptimizeRect: Wn,
9964            subPixelOptimize: Fn,
9965            setHoverStyle: eo,
9966            setLabelStyle: io,
9967            setTextStyle: no,
9968            setText: function(t, e, i) { var n, o = { isRectText: !0 };!1 === i ? n = !0 : o.autoColor = i, oo(t, e, o, n), t.host && t.host.dirty && t.host.dirty(!1) },
9969            getFont: ho,
9970            updateProps: fo,
9971            initProps: po,
9972            getTransform: go,
9973            applyTransform: mo,
9974            transformDirection: vo,
9975            groupTransition: yo,
9976            clipPointsByRect: xo,
9977            clipRectByRect: function(t, e) {
9978                var i = OS(t.x, e.x),
9979                    n = ES(t.x + t.width, e.x + e.width),
9980                    o = OS(t.y, e.y),
9981                    a = ES(t.y + t.height, e.y + e.height);
9982                if (n >= i && a >= o) return { x: i, y: o, width: n - i, height: a - o }
9983            },
9984            createIcon: _o,
9985            Group: sw,
9986            Image: Je,
9987            Text: fS,
9988            Circle: pS,
9989            Sector: vS,
9990            Ring: yS,
9991            Polygon: wS,
9992            Polyline: bS,
9993            Rect: SS,
9994            Line: MS,
9995            BezierCurve: TS,
9996            Arc: DS,
9997            IncrementalDisplayable: On,
9998            CompoundPath: AS,
9999            LinearGradient: LS,
10000            RadialGradient: kS,
10001            BoundingRect: $t
10002        }),
10003        VS = ["textStyle", "color"],
10004        GS = { getTextColor: function(t) { var e = this.ecModel; return this.getShallow("color") || (!t && e ? e.get(VS) : null) }, getFont: function() { return ho({ fontStyle: this.getShallow("fontStyle"), fontWeight: this.getShallow("fontWeight"), fontSize: this.getShallow("fontSize"), fontFamily: this.getShallow("fontFamily") }, this.ecModel) }, getTextRect: function(t) { return me(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.get
10004Shallow("baseline"), this.getShallow("padding"), this.getShallow("rich"), this.getShallow("truncateText")) } },
10005        WS = sb([
10006            ["fill", "color"],
10007            ["stroke", "borderColor"],
10008            ["lineWidth", "borderWidth"],
10009            ["opacity"],
10010            ["shadowBlur"],
10011            ["shadowOffsetX"],
10012            ["shadowOffsetY"],
10013            ["shadowColor"],
10014            ["textPosition"],
10015            ["textAlign"]
10016        ]),
10017        FS = {
10018            getItemStyle: function(t, e) {
10019                var i = WS(this, t, e),
10020                    n = this.getBorderLineDash();
10021                return n && (i.lineDash = n), i
10022            },
10023            getBorderLineDash: function() { var t = this.get("borderType"); return "solid" === t || null == t ? null : "dashed" === t ? [5, 5] : [1, 1] }
10024        },
10025        HS = h,
10026        ZS = Ni();
10027    wo.prototype = {
10028        constructor: wo,
10029        init: null,
10030        mergeOption: function(t) { n(this.option, t, !0) },
10031        get: function(t, e) { return null == t ? this.option : bo(this.option, this.parsePath(t), !e && So(this, t)) },
10032        getShallow: function(t, e) {
10033            var i = this.option,
10034                n = null == i ? i : i[t],
10035                o = !e && So(this, t);
10036            return null == n && o && (n = o.getShallow(t)), n
10037        },
10038        getModel: function(t, e) { var i, n = null == t ? this.option : bo(this.option, t = this.parsePath(t)); return e = e || (i = So(this, t)) && i.getModel(t), new wo(n, e, this.ecModel) },
10039        isEmpty: function() { return null == this.option },
10040        restoreData: function() {},
10041        clone: function() { return new(0, this.constructor)(i(this.option)) },
10042        setReadOnly: function(t) {},
10043        parsePath: function(t) { return "string" == typeof t && (t = t.split(".")), t },
10044        customizeGetParent: function(t) { ZS(this).getParent = t },
10045        isAnimationEnabled: function() { if (!a_.node) { if (null != this.option.animation) return !!this.option.animation; if (this.parentModel) return this.parentModel.isAnimationEnabled() } }
10046    }, Gi(wo), Wi(wo), HS(wo, ub), HS(wo, cb), HS(wo, GS), HS(wo, FS);
10047    var US = 0,
10048        XS = 1e-4,
10049        jS = 9007199254740991,
10050        YS = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,
10051        qS = (Object.freeze || Object)({ linearMap: To, parsePercent: Do, round: Ao, asc: Co, getPrecision: Lo, getPrecisionSafe: ko, getPixelPrecision: Po, getPercentWithPrecision: No, MAX_SAFE_INTEGER: jS, remRadian: Oo, isRadianAroundZero: Eo, parseDate: Ro, quantity: zo, nice: Vo, reformIntervals: Go, isNumeric: Wo }),
10052        KS = L,
10053        $S = /([&<>"'])/g,
10054        JS = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" },
10055        QS = ["a", "b", "c", "d", "e", "f", "g"],
10056        tM = function(t, e) { return "{" + t + (null == e ? "" : e) + "}" },
10057        eM = be,
10058        iM = me,
10059        nM = (Object.freeze || Object)({ addCommas: Fo, toCamelCase: Ho, normalizeCssArray: KS, encodeHTML: Zo, formatTpl: Uo, formatTplSimple: Xo, getTooltipMarker: jo, formatTime: qo, capitalFirst: Ko, truncateText: eM, getTextRect: iM }),
10060        oM = d,
10061        aM = ["left", "right", "top", "bottom", "width", "height"],
10062        rM = [
10063            ["width", "left", "right"],
10064            ["height", "top", "bottom"]
10065        ],
10066        sM = $o,
10067        lM = (v($o, "vertical"), v($o, "horizontal"), { 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") } } }),
10068        uM = Ni(),
10069        hM = wo.extend({
10070            type: "component",
10071            id: "",
10072            name: "",
10073            mainType: "",
10074            subType: "",
10075            componentIndex: 0,
10076            defaultOption: null,
10077            ecModel: null,
10078            dependentModels: [],
10079            uid: null,
10080            layoutMode: null,
10081            $constructor: function(t, e, i, n) { wo.call(this, t, e, i, n), this.uid = Mo("ec_cpt_model") },
10082            init: function(t, e, i, n) { this.mergeDefaultAndTheme(t, i) },
10083            mergeDefaultAndTheme: function(t, e) {
10084                var i = this.layoutMode,
10085                    o = i ? na(t) : {};
10086                n(t, e.getTheme().get(this.mainType)), n(t, this.getDefaultOption()), i && ia(t, o, i)
10087            },
10088            mergeOption: function(t, e) {
10089                n(this.option, t, !0);
10090                var i = this.layoutMode;
10091                i && ia(this.option, t, i)
10092            },
10093            optionUpdated: function(t, e) {},
10094            getDefaultOption: function() {
10095                var t = uM(this);
10096                if (!t.defaultOption) {
10097                    for (var e = [], i = this.constructor; i;) {
10098                        var o = i.prototype.defaultOption;
10099                        o && e.push(o), i = i.superClass
10100                    }
10101                    for (var a = {}, r = e.length - 1; r >= 0; r--) a = n(a, e[r], !0);
10102                    t.defaultOption = a
10103                }
10104                return t.defaultOption
10105            },
10106            getReferringComponents: function(t) { return this.ecModel.queryComponents({ mainType: t, index: this.get(t + "Index", !0), id: this.get(t + "Id", !0) }) }
10107        });
10108    Zi(hM, { registerWhenExtend: !0 }),
10109        function(t) {
10110            var e = {};
10111            t.registerSubTypeDefaulter = function(t, i) { t = Bi(t), e[t.main] = i }, t.determineSubType = function(i, n) {
10112                var o = n.type;
10113                if (!o) {
10114                    var a = Bi(i).main;
10115                    t.hasSubTypes(i) && e[a] && (o = e[a](n))
10116                }
10117                return o
10118            }
10119        }(hM),
10120        function(t, e) {
10121            function i(t) {
10122                var i = {},
10123                    a = [];
10124                return d(t, function(r) {
10125                    var s = n(i, r),
10126                        u = o(s.originalDeps = e(r), t);
10127                    s.entryCount = u.length, 0 === s.entryCount && a.push(r), d(u, function(t) {
10128                        l(s.predecessor, t) < 0 && s.predecessor.push(t);
10129                        var e = n(i, t);
10130                        l(e.successor, t) < 0 && e.successor.push(r)
10131                    })
10132                }), { graph: i, noEntryList: a }
10133            }
10134
10135            function n(t, e) { return t[e] || (t[e] = { predecessor: [], successor: [] }), t[e] }
10136
10137            function o(t, e) { var i = []; return d(t, function(t) { l(e, t) >= 0 && i.push(t) }), i }
10138            t.topologicalTravel = function(t, e, n, o) {
10139                function a(t) { s[t].entryCount--, 0 === s[t].entryCount && l.push(t) }
10140                if (t.length) {
10141                    var r = i(e),
10142                        s = r.graph,
10143                        l = r.noEntryList,
10144                        u = {};
10145                    for (d(t, function(t) { u[t] = !0 }); l.length;) {
10146                        var h = l.pop(),
10147                            c = s[h],
10148                            f = !!u[h];
10149                        f && (n.call(o, h, c.originalDeps.slice()), delete u[h]), d(c.successor, f ? function(t) { u[t] = !0, a(t) } : a)
10150                    }
10151                    d(u, function() { throw new Error("Circle dependency may exists") })
10152                }
10153            }
10154        }(hM, function(t) { var e = []; return d(hM.getClassesByMainType(t), function(t) { e = e.concat(t.prototype.depen
10154dencies || []) }), e = f(e, function(t) { return Bi(t).main }), "dataset" !== t && l(e, "dataset") <= 0 && e.unshift("dataset"), e }), h(hM, lM);
10155    var cM = "";
10156    "undefined" != typeof navigator && (cM = navigator.platform || "");
10157    var dM = { color: ["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3"], gradientColor: ["#f6efa6", "#d88273", "#bf444c"], textStyle: { fontFamily: cM.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 },
10158        fM = Ni(),
10159        pM = {
10160            clearColorPalette: function() { fM(this).colorIdx = 0, fM(this).colorNameMap = {} },
10161            getColorFromPalette: function(t, e, i) {
10162                var n = fM(e = e || this),
10163                    o = n.colorIdx || 0,
10164                    a = n.colorNameMap = n.colorNameMap || {};
10165                if (a.hasOwnProperty(t)) return a[t];
10166                var r = Si(this.get("color", !0)),
10167                    s = this.get("colorLayer", !0),
10168                    l = null != i && s ? aa(s, i) : r;
10169                if ((l = l || r) && l.length) { var u = l[o]; return t && (a[t] = u), n.colorIdx = (o + 1) % l.length, u }
10170            }
10171        },
10172        gM = {
10173            cartesian2d: function(t, e, i, n) {
10174                var o = t.getReferringComponents("xAxis")[0],
10175                    a = t.getReferringComponents("yAxis")[0];
10176                e.coordSysDims = ["x", "y"], i.set("x", o), i.set("y", a), sa(o) && (n.set("x", o), e.firstCategoryDimIndex = 0), sa(a) && (n.set("y", a), e.firstCategoryDimIndex = 1)
10177            },
10178            singleAxis: function(t, e, i, n) {
10179                var o = t.getReferringComponents("singleAxis")[0];
10180                e.coordSysDims = ["single"], i.set("single", o), sa(o) && (n.set("single", o), e.firstCategoryDimIndex = 0)
10181            },
10182            polar: function(t, e, i, n) {
10183                var o = t.getReferringComponents("polar")[0],
10184                    a = o.findAxisModel("radiusAxis"),
10185                    r = o.findAxisModel("angleAxis");
10186                e.coordSysDims = ["radius", "angle"], i.set("radius", a), i.set("angle", r), sa(a) && (n.set("radius", a), e.firstCategoryDimIndex = 0), sa(r) && (n.set("angle", r), e.firstCategoryDimIndex = 1)
10187            },
10188            geo: function(t, e, i, n) { e.coordSysDims = ["lng", "lat"] },
10189            parallel: function(t, e, i, n) {
10190                var o = t.ecModel,
10191                    a = o.getComponent("parallel", t.get("parallelIndex")),
10192                    r = e.coordSysDims = a.dimensions.slice();
10193                d(a.parallelAxisIndex, function(t, a) {
10194                    var s = o.getComponent("parallelAxis", t),
10195                        l = r[a];
10196                    i.set(l, s), sa(s) && null == e.firstCategoryDimIndex && (n.set(l, s), e.firstCategoryDimIndex = a)
10197                })
10198            }
10199        },
10200        mM = "original",
10201        vM = "arrayRows",
10202        yM = "objectRows",
10203        xM = "keyedColumns",
10204        _M = "unknown",
10205        wM = "typedArray",
10206        bM = "column",
10207        SM = "row";
10208    la.seriesDataToSource = function(t) { return new la({ data: t, sourceFormat: S(t) ? wM : mM, fromDataset: !1 }) }, Wi(la);
10209    var MM = Ni(),
10210        IM = "\0_ec_inner",
10211        TM = wo.extend({
10212            init: function(t, e, i, n) { i = i || {}, this.option = null, this._theme = new wo(i), this._optionManager = n },
10213            setOption: function(t, e) { k(!(IM in t), "please use chart.getOption()"), this._optionManager.setOption(t, e), this.resetOption(null) },
10214            resetOption: function(t) {
10215                var e = !1,
10216                    i = this._optionManager;
10217                if (!t || "recreate" === t) {
10218                    var n = i.mountOption("recreate" === t);
10219                    this.option && "recreate" !== t ? (this.restoreData(), this.mergeOption(n)) : Sa.c
10219all(this, n), e = !0
10220                }
10221                if ("timeline" !== t && "media" !== t || this.restoreData(), !t || "recreate" === t || "timeline" === t) {
10222                    var o = i.getTimelineOption(this);
10223                    o && (this.mergeOption(o), e = !0)
10224                }
10225                if (!t || "recreate" === t || "media" === t) {
10226                    var a = i.getMediaOption(this, this._api);
10227                    a.length && d(a, function(t) { this.mergeOption(t, e = !0) }, this)
10228                }
10229                return e
10230            },
10231            mergeOption: function(t) {
10232                var e = this.option,
10233                    o = this._componentsMap,
10234                    r = [];
10235                ca(this), d(t, function(t, o) { null != t && (hM.hasClass(o) ? o && r.push(o) : e[o] = null == e[o] ? i(t) : n(e[o], t, !0)) }), hM.topologicalTravel(r, hM.getAllClassMainTypes(), function(i, n) {
10236                    var r = Si(t[i]),
10237                        s = Di(o.get(i), r);
10238                    Ai(s), d(s, function(t, e) {
10239                        var n = t.option;
10240                        w(n) && (t.keyInfo.mainType = i, t.keyInfo.subType = Ia(i, n, t.exist))
10241                    });
10242                    var l = Ma(o, n);
10243                    e[i] = [], o.set(i, []), d(s, function(t, n) {
10244                        var r = t.exist,
10245                            s = t.option;
10246                        if (k(w(s) || r, "Empty component definition"), s) {
10247                            var u = hM.getClass(i, t.keyInfo.subType, !0);
10248                            if (r && r instanceof u) r.name = t.keyInfo.name, r.mergeOption(s, this), r.optionUpdated(s, !1);
10249                            else {
10250                                var h = a({ dependentModels: l, componentIndex: n }, t.keyInfo);
10251                                a(r = new u(s, this, this, h), h), r.init(s, this, this, h), r.optionUpdated(null, !0)
10252                            }
10253                        } else r.mergeOption({}, this), r.optionUpdated({}, !1);
10254                        o.get(i)[n] = r, e[i][n] = r.option
10255                    }, this), "series" === i && Ta(this, o.get("series"))
10256                }, this), this._seriesIndicesMap = R(this._seriesIndices = this._seriesIndices || [])
10257            },
10258            getOption: function() {
10259                var t = i(this.option);
10260                return d(t, function(e, i) {
10261                    if (hM.hasClass(i)) {
10262                        for (var n = (e = Si(e)).length - 1; n >= 0; n--) Li(e[n]) && e.splice(n, 1);
10263                        t[i] = e
10264                    }
10265                }), delete t[IM], t
10266            },
10267            getTheme: function() { return this._theme },
10268            getComponent: function(t, e) { var i = this._componentsMap.get(t); if (i) return i[e || 0] },
10269            queryComponents: function(t) {
10270                var e = t.mainType;
10271                if (!e) return [];
10272                var i = t.index,
10273                    n = t.id,
10274                    o = t.name,
10275                    a = this._componentsMap.get(e);
10276                if (!a || !a.length) return [];
10277                var r;
10278                if (null != i) y(i) || (i = [i]), r = g(f(i, function(t) { return a[t] }), function(t) { return !!t });
10279                else if (null != n) {
10280                    var s = y(n);
10281                    r = g(a, function(t) { return s && l(n, t.id) >= 0 || !s && t.id === n })
10282                } else if (null != o) {
10283                    var u = y(o);
10284                    r = g(a, function(t) { return u && l(o, t.name) >= 0 || !u && t.name === o })
10285                } else r = a.slice();
10286                return Da(r, t)
10287            },
10288            findComponents: function(t) {
10289                var e = t.query,
10290                    i = t.mainType,
10291                    n = function(t) {
10292                        var e = i + "Index",
10293                            n = i + "Id",
10294                            o = i + "Name";
10295                        return !t || null == t[e] && null == t[n] && null == t[o] ? null : { mainType: i, index: t[e], id: t[n], name: t[o] }
10296                    }(e);
10297                return function(e) { return t.filter ? g(e, t.filter) : e }(Da(n ? this.queryComponents(n) : this._componentsMap.get(i), t))
10298            },
10299            eachComponent: function(t, e, i) { var n = this._componentsMap; "function" == typeof t ? (i = e, e = t, n.each(function(t, n) { d(t, function(t, o) { e.call(i, n, t, o) }) })) : _(t) ? d(n.get(t), e, i) : w(t) && d(this.findComponents(t), e, i) },
10300            getSeriesByName: function(t) { return g(this._componentsMap.get("series"), function(e) { return e.name === t }) },
10301            getSeriesByIndex: function(t) { return this._componentsMap.get("series")[t] },
10302            getSeriesByType: function(t) { return g(this._componentsMap.get("series"), function(e) { return e.subType === t }) },
10303            getSeries: function() { return this._componentsMap.get("series").slice() },
10304            getSeriesCount: function() { return this._componentsMap.get("series").length },
10305            eachSeries: function(t, e) {
10306                d(this._seriesIndices, function(i) {
10307                    var n = this._componentsMap.get("series")[i];
10308                    t.call(e, n, i)
10309                }, this)
10310            },
10311            eachRawSeries: function(t, e) { d(this._componentsMap.get("series"), t, e) },
10312            eachSeriesByType: function(t, e, i) {
10313                d(this._seriesIndices, function(n) {
10314                    var o = this._componentsMap.get("series")[n];
10315                    o.subType === t && e.call(i, o, n)
10316                }, this)
10317            },
10318            eachRawSeriesByType: function(t, e, i) { return d(this.getSeriesByType(t), e, i) },
10319            isSeriesFiltered: function(t) { return null == this._seriesIndicesMap.get(t.componentIndex) },
10320            getCurrentSeriesIndices: function() { return (this._seriesIndices || []).slice() },
10321            filterSeries: function(t, e) { Ta(this, g(this._componentsMap.get("series"), t, e)) },
10322            restoreData: function(t) {
10323                var e = this._componentsMap;
10324                Ta(this, e.get("series"));
10325                var i = [];
10326                e.each(function(t, e) { i.push(e) }), hM.topologicalTravel(i, hM.getAllClassMainTypes(), function(i, n) {
10327                    d(e.get(i), function(e) {
10328                        ("series" !== i || !wa(e, t)) && e.restoreData()
10329                    })
10330                })
10331            }
10332        });
10333    h(TM, pM);
10334    var DM = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel"],
10335        AM = {};
10336    Ca.prototype = {
10337        constructor: Ca,
10338        create: function(t, e) {
10339            var i = [];
10340            d(AM, function(n, o) {
10341                var a = n.create(t, e);
10342                i = i.concat(a || [])
10343            }), this._coordinateSystems = i
10344        },
10345        update: function(t, e) { d(this._coordinateSystems, function(i) { i.update && i.update(t, e) }) },
10346        getCoordinateSystems: function() { return this._coordinateSystems.slice() }
10347    }, Ca.register = function(t, e) { AM[t] = e }, Ca.get = function(t) { return AM[t] };
10348    var CM = d,
10349        LM = i,
10350        kM = f,
10351        PM = n,
10352        NM = /^(min|max)?(.+)$/;
10353    La.prototype = {
10354        constructor: La,
10355        setOption: function(t, e) {
10356            t && d(Si(t.series), function(t) { t && t.data && S(t.data) && N(t.data) }), t = LM(t, !0);
10357            var i = this._optionBackup,
10358                n = ka.call(this, t, e, !i);
10359            this._newBaseOption = n.baseOption, i ? (Ea(i.baseOption, n.baseOption), n.timelineOptions.length && (i.timelineOptions = n.timelineOptions), n.mediaList.length && (i.mediaList = n.mediaList), n.mediaDefault && (i.mediaDefault = n.mediaDefault)) : this._optionBackup = n
10360        },
10361        mountOption: function(t) { var e = this._optionBackup;
10361 return this._timelineOptions = kM(e.timelineOptions, LM), this._mediaList = kM(e.mediaList, LM), this._mediaDefault = LM(e.mediaDefault), this._currentMediaIndices = [], LM(t ? e.baseOption : this._newBaseOption) },
10362        getTimelineOption: function(t) {
10363            var e, i = this._timelineOptions;
10364            if (i.length) {
10365                var n = t.getComponent("timeline");
10366                n && (e = LM(i[n.getCurrentIndex()], !0))
10367            }
10368            return e
10369        },
10370        getMediaOption: function(t) {
10371            var e = this._api.getWidth(),
10372                i = this._api.getHeight(),
10373                n = this._mediaList,
10374                o = this._mediaDefault,
10375                a = [],
10376                r = [];
10377            if (!n.length && !o) return r;
10378            for (var s = 0, l = n.length; s < l; s++) Pa(n[s].query, e, i) && a.push(s);
10379            return !a.length && o && (a = [-1]), a.length && !Oa(a, this._currentMediaIndices) && (r = kM(a, function(t) { return LM(-1 === t ? o.option : n[t].option) })), this._currentMediaIndices = a, r
10380        }
10381    };
10382    var OM = d,
10383        EM = w,
10384        RM = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"],
10385        zM = function(t, e) {
10386            OM(Fa(t.series), function(t) { EM(t) && Wa(t) });
10387            var i = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
10388            e && i.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), OM(i, function(e) { OM(Fa(t[e]), function(t) { t && (Va(t, "axisLabel"), Va(t.axisPointer, "label")) }) }), OM(Fa(t.parallel), function(t) {
10389                var e = t && t.parallelAxisDefault;
10390                Va(e, "axisLabel"), Va(e && e.axisPointer, "label")
10391            }), OM(Fa(t.calendar), function(t) { za(t, "itemStyle"), Va(t, "dayLabel"), Va(t, "monthLabel"), Va(t, "yearLabel") }), OM(Fa(t.radar), function(t) { Va(t, "name") }), OM(Fa(t.geo), function(t) { EM(t) && (Ga(t), OM(Fa(t.regions), function(t) { Ga(t) })) }), OM(Fa(t.timeline), function(t) {
10392                Ga(t), za(t, "label"), za(t, "itemStyle"), za(t, "controlStyle", !0);
10393                var e = t.data;
10394                y(e) && d(e, function(t) { w(t) && (za(t, "label"), za(t, "itemStyle")) })
10395            }), OM(Fa(t.toolbox), function(t) { za(t, "iconStyle"), OM(t.feature, function(t) { za(t, "iconStyle") }) }), Va(Ha(t.axisPointer), "label"), Va(Ha(t.tooltip).axisPointer, "label")
10396        },
10397        BM = [
10398            ["x", "left"],
10399            ["y", "top"],
10400            ["x2", "right"],
10401            ["y2", "bottom"]
10402        ],
10403        VM = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"],
10404        GM = function(t, e) {
10405            zM(t, e), t.series = Si(t.series), d(t.series, function(t) {
10406                if (w(t)) {
10407                    var e = t.type;
10408                    if ("pie" !== e && "gauge" !== e || null != t.clockWise && (t.clockwise = t.clockWise), "gauge" === e) {
10409                        var i = Za(t, "pointer.color");
10410                        null != i && Ua(t, "itemStyle.normal.color", i)
10411                    }
10412                    Xa(t)
10413                }
10414            }), t.dataRange && (t.visualMap = t.dataRange), d(VM, function(e) {
10415                var i = t[e];
10416                i && (y(i) || (i = [i]), d(i, function(t) { Xa(t) }))
10417            })
10418        },
10419        WM = Ya.prototype;
10420    WM.pure = !1, WM.persistent = !0, WM.getSource = function() { return this._source };
10421    var FM = {
10422            arrayRows_column: { pure: !0, count: function() { return Math.max(0, this._data.length - this._source.startIndex) }, getItem: function(t) { return this._data[t + this._source.startIndex] }, appendData: $a },
10423            arrayRows_row: {
10424                pure: !0,
10425                count: function() { var t = this._data[0]; return t ? Math.max(0, t.length - this._source.startIndex) : 0 },
10426                getItem: function(t) {
10427                    t += this._source.startIndex;
10428                    for (var e = [], i = this._data, n = 0; n < i.length; n++) {
10429                        var o = i[n];
10430                        e.push(o ? o[t] : null)
10431                    }
10432                    return e
10433                },
10434                appendData: function() { throw new Error('Do not support appendData when set seriesLayoutBy: "row".') }
10435            },
10436            objectRows: { pure: !0, count: qa, getItem: Ka, appendData: $a },
10437            keyedColumns: {
10438                pure: !0,
10439                count: function() {
10440                    var t = this._source.dimensionsDefine[0].name,
10441                        e = this._data[t];
10442                    return e ? e.length : 0
10443                },
10444                getItem: function(t) {
10445                    for (var e = [], i = this._source.dimensionsDefine, n = 0; n < i.length; n++) {
10446                        var o = this._data[i[n].name];
10447                        e.push(o ? o[t] : null)
10448                    }
10449                    return e
10450                },
10451                appendData: function(t) {
10452                    var e = this._data;
10453                    d(t, function(t, i) { for (var n = e[i] || (e[i] = []), o = 0; o < (t || []).length; o++) n.push(t[o]) })
10454                }
10455            },
10456            original: { count: qa, getItem: Ka, appendData: $a },
10457            typedArray: { persistent: !1, pure: !0, count: function() { return this._data ? this._data.length / this._dimSize : 0 }, getItem: function(t, e) { t -= this._offset, e = e || []; for (var i = this._dimSize * t, n = 0; n < this._dimSize; n++) e[n] = this._data[i + n]; return e }, appendData: function(t) { this._data = t }, clean: function() { this._offset += this.count(), this._data = null } }
10458        },
10459        HM = { arrayRows: Ja, objectRows: function(t, e, i, n) { return null != i ? t[n] : t }, keyedColumns: Ja, original: function(t, e, i, n) { var o = Ii(t); return null != i && o instanceof Array ? o[i] : o }, typedArray: Ja },
10460        ZM = { arrayRows: Qa, objectRows: function(t, e, i, n) { return tr(t[e], this._dimensionInfos[e]) }, keyedColumns: Qa, original: function(t, e, i, n) { var o = t && (null == t.value ? t : t.value); return !this._rawData.pure && Ti(t) && (this.hasItemOption = !0), tr(o instanceof Array ? o[n] : o, this._dimensionInfos[e]) }, typedArray: function(t, e, i, n) { return t[n] } },
10461        UM = /\{@(.+?)\}/g,
10462        XM = {
10463            getDataParams: function(t, e) {
10464                var i = this.getData(e),
10465                    n = this.getRawValue(t, e),
10466                    o = i.getRawIndex(t),
10467                    a = i.getName(t),
10468                    r = i.getRawDataItem(t),
10469                    s = i.getItemVisual(t, "color");
10470                return { componentType: this.mainType, componentSubType: this.subType, seriesType: "series" === this.mainType ? this.subType : null, seriesIndex: this.seriesIndex, seriesId: this.id, seriesName: this.name, name: a, dataIndex: o, data: r, dataType: e, value: n, color: s, marker: jo(s), $vars: ["seriesName", "name", "value"] }
10471            },
10472            getFormattedLabel: function(t, e, i, n, o) {
10473                e = e || "normal";
10474                var a = this.getData(i),
10475                    r = a.getItemModel(t),
10476                    s = this.getDataParams(t, i);
10477                null != n && s.value instanceof Array && (s.value = s.value[n]);
10478                var l = r.get("normal" === e ? [o || "label", "formatter"] : [e, o || "label", "formatter"]);
10479                return "function" == typeof l ? (s.status = e, l(s)) : "string" == typeof l ? Uo(l, s).replace(UM, function(e, i) { var n = i.length; return "[" === i.charAt(0) && "]" === i.charAt(n - 1) && (i = +i.slice(1, n - 1)), er(a, t, i) }) : void 0
10480            },
10481            getRawValue: function(t, e) { return er(this.getData(e), t) },
10482            formatTooltip: function() {}
10483        },
10484        jM = or.prototype;
10485    jM.perform = function(t) {
10486        function e(t) { return !(t >= 1) && (t = 1), t }
10487        var i = this._upstream,
10488            n = t && t.skip;
10489        if (this._dirty && i) {
10490            var o = this.context;
10491            o.data = o.outputData = i.context.outputData
10492        }
10493        this.__pipeline && (this.__pipeline.currentTask = this);
10494        var a;
10495        this._plan && !n && (a = this._plan(this.context));
10496        var r = e(this._modBy),
10497            s = this._modDataCount || 0,
10498            l = e(t && t.modBy),
10499            u = t && t.modDataCount || 0;
10500        r === l && s === u || (a = "reset");
10501        var h;
10502        (this._dirty || "reset" === a) && (this._dirty = !1, h = rr(this, n)), this._modBy = l, this._modDataCount = u;
10503        var c = t && t.step;
10504        if (this._dueEnd = i ? i._outputDueEnd : this._count ? this._count(this.context) : 1 / 0, this._progress) {
10505            var d = this._dueIndex,
10506                f = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd);
10507            if (!n && (h || d < f)) {
10508                var p = this._progress;
10509                if (y(p))
10510                    for (var g = 0; g < p.length; g++) ar(this, p[g], d, f, l, u);
10511                else ar(this, p, d, f, l, u)
10512            }
10513            this._dueIndex = f;
10514            var m = null != this._settedOutputEnd ? this._settedOutputEnd : f;
10515            this._outputDueEnd = m
10516        } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd;
10517        return this.unfinished()
10518    };
10519    var YM = function() {
10520        function t() { return n < i ? n++ : null }
10521
10522        function e() {
10523            var t = n % r * o + Math.ceil(n / r),
10524                e = n >= i ? null : t < a ? t : n;
10525            return n++, e
10526        }
10527        var i, n, o, a, r, s = { reset: function(l, u, h, c) { n = l, i = u, o = h, a = c, r = Math.ceil(a / o), s.next = o > 1 && a > 0 ? e : t } };
10528        return s
10529    }();
10530    jM.dirty = function() { this._dirty = !0, this._onDirty && this._onDirty(this.context) }, jM.unfinished = function() { return this._progress && this._dueIndex < this._dueEnd }, jM.pipe = function(t) {
10531        (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, t.dirty())
10532    }, jM.dispose = function() { this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0) }, jM.getUpstream = function() { return this._upstream }, jM.getDownstream = function() { return this._downstream }, jM.setOutputEnd = function(t) { this._outputDueEnd = this._settedOutputEnd = t };
10533    var qM = Ni(),
10534        KM = hM.extend({
10535            type: "series.__base__",
10536            seriesIndex: 0,
10537            coordinateSystem: null,
10538            defaultOption: null,
10539            legendDataProvider: null,
10540            visualColorAccessPath: "itemStyle.color",
10541            layoutMode: null,
10542            init: function(t, e, i, n) {
10543                this.seriesIndex = this.componentIndex, this.dataTask = nr({ count: ur, reset: hr }), this.dataTask.context = { model: this }, this.mergeDefaultAndTheme(t, i), da(this);
10544                var o = this.getInitialData(t, i);
10545                dr(o, this), this.dataTask.context.data = o, qM(this).dataBeforeProcessed = o, sr(this)
10546            },
10547            mergeDefaultAndTheme: function(t, e) {
10548                var i = this.layoutMode,
10549                    o = i ? na(t) : {},
10550                    a = this.subType;
10551                hM.hasClass(a) && (a += "Series"), n(t, e.getTheme().get(this.subType)), n(t, this.getDefaultOption()), Mi(t, "label", ["show"]), this.fillDataTextStyle(t.data), i && ia(t, o, i)
10552            },
10553            mergeOption: function(t, e) {
10554                t = n(this.option, t, !0), this.fillDataTextStyle(t.data);
10555                var i = this.layoutMode;
10556                i && ia(this.option, t, i), da(this);
10557                var o = this.getInitialData(t, e);
10558                dr(o, this), this.dataTask.dirty(), this.dataTask.context.data = o, qM(this).dataBeforeProcessed = o, sr(this)
10559            },
10560            fillDataTextStyle: function(t) {
10561                if (t && !S(t))
10562                    for (var e = ["show"], i = 0; i < t.length; i++) t[i] && t[i].label && Mi(t[i], "label", e)
10563            },
10564            getInitialData: function() {},
10565            appendData: function(t) { this.getRawData().appendData(t.data) },
10566            getData: function(t) { var e = pr(this); if (e) { var i = e.context.data; return null == t ? i : i.getLinkedData(t) } return qM(this).data },
10567            setData: function(t) {
10568                var e = pr(this);
10569                if (e) {
10570                    var i = e.context;
10571                    i.data !== t && e.modifyOutputEnd && e.setOutputEnd(t.count()), i.outputData = t, e !== this.dataTask && (i.data = t)
10572                }
10573                qM(this).data = t
10574            },
10575            getSource: function() { return ha(this) },
10576            getRawData: function() { return qM(this).dataBeforeProcessed },
10577            getBaseAxis: function() { var t = this.coordinateSystem; return t && t.getBaseAxis && t.getBaseAxis() },
10578            formatTooltip: function(t, e, i) {
10579                function n(t) { return Zo(Fo(t)) }
10580                var o = this.getData(),
10581                    a = o.mapDimension("defaultedTooltip", !0),
10582                    r = a.length,
10583                    s = this.getRawValue(t),
10584                    l = y(s),
10585                    u = o.getItemVisual(t, "color");
10586                w(u) && u.colorStops && (u = (u.colorStops[0] || {}).color), u = u || "transparent";
10587                var h = r > 1 || l && !r ? function(i) {
10588                        function n(t, i) {
10589                            var n = o.getDimensionInfo(i);
10590                            if (n && !1 !== n.otherDims.tooltip) {
10591                                var a = n.type,
10592                                    l = jo({ color: u, type: "subItem" }),
10593                                    h = (r ? l + Zo(n.displayName || "-") + ": " : "") + Zo("ordinal" === a ? t + "" : "time" === a ? e ? "" : qo("yyyy/
10593MM/dd hh:mm:ss", t) : Fo(t));
10594                                h && s.push(h)
10595                            }
10596                        }
10597                        var r = p(i, function(t, e, i) { var n = o.getDimensionInfo(i); return t |= n && !1 !== n.tooltip && null != n.displayName }, 0),
10598                            s = [];
10599                        return a.length ? d(a, function(e) { n(er(o, t, e), e) }) : d(i, n), (r ? "<br/>" : "") + s.join(r ? "<br/>" : ", ")
10600                    }(s) : n(r ? er(o, t, a[0]) : l ? s[0] : s),
10601                    c = jo(u),
10602                    f = o.getName(t),
10603                    g = this.name;
10604                return Ci(this) || (g = ""), g = g ? Zo(g) + (e ? ": " : "<br/>") : "", e ? c + g + h : g + c + (f ? Zo(f) + ": " + h : h)
10605            },
10606            isAnimationEnabled: function() { if (a_.node) return !1; var t = this.getShallow("animation"); return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1), t },
10607            restoreData: function() { this.dataTask.dirty() },
10608            getColorFromPalette: function(t, e, i) {
10609                var n = this.ecModel,
10610                    o = pM.getColorFromPalette.call(this, t, e, i);
10611                return o || (o = n.getColorFromPalette(t, e, i)), o
10612            },
10613            coordDimToDataDim: function(t) { return this.getRawData().mapDimension(t, !0) },
10614            getProgressive: function() { return this.get("progressive") },
10615            getProgressiveThreshold: function() { return this.get("progressiveThreshold") },
10616            getAxisTooltipData: null,
10617            getTooltipPosition: null,
10618            pipeTask: null,
10619            preventIncremental: null,
10620            pipelineContext: null
10621        });
10622    h(KM, XM), h(KM, pM);
10623    var $M = function() { this.group = new sw, this.uid = Mo("viewComponent") };
10624    $M.prototype = { constructor: $M, init: function(t, e) {}, render: function(t, e, i, n) {}, dispose: function() {} };
10625    var JM = $M.prototype;
10626    JM.updateView = JM.updateLayout = JM.updateVisual = function(t, e, i, n) {}, Gi($M), Zi($M, { registerWhenExtend: !0 });
10627    var QM = function() {
10628            var t = Ni();
10629            return function(e) {
10630                var i = t(e),
10631                    n = e.pipelineContext,
10632                    o = i.large,
10633                    a = i.progressiveRender,
10634                    r = i.large = n.large,
10635                    s = i.progressiveRender = n.progressiveRender;
10636                return !!(o ^ r || a ^ s) && "reset"
10637            }
10638        },
10639        tI = Ni(),
10640        eI = QM();
10641    gr.prototype = { type: "chart", init: function(t, e) {}, render: function(t, e, i, n) {}, highlight: function(t, e, i, n) { vr(t.getData(), n, "emphasis") }, downplay: function(t, e, i, n) { vr(t.getData(), n, "normal") }, remove: function(t, e) { this.group.removeAll() }, dispose: function() {}, incrementalPrepareRender: null, incrementalRender: null, updateTransform: null };
10642    var iI = gr.prototype;
10643    iI.updateView = iI.updateLayout = iI.updateVisual = function(t, e, i, n) { this.render(t, e, i, n) }, Gi(gr), Zi(gr, { registerWhenExtend: !0 }), gr.markUpdateMethod = function(t, e) { tI(t).updateMethod = e };
10644    var nI = { incrementalPrepareRender: { progress: function(t, e) { e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload) } }, render: { forceFirstProgress: !0, progress: function(t, e) { e.view.render(e.model, e.ecModel, e.api, e.payload) } } },
10645        oI = "\0__throttleOriginMethod",
10646        aI = "\0__throttleRate",
10647        rI = "\0__throttleType",
10648        sI = {
10649            createOnAllSeries: !0,
10650            performRawSeries: !0,
10651            reset: function(t, e) {
10652                var i = t.getData(),
10653                    n = (t.visualColorAccessPath || "itemStyle.color").split("."),
10654                    o = t.get(n) || t.getColorFromPalette(t.name, null, e.getSeriesCount());
10655                if (i.setVisual("color", o), !e.isSeriesFiltered(t)) {
10656                    "function" != typeof o || o instanceof CS || i.each(function(e) { i.setItemVisual(e, "color", o(t.getDataParams(e))) });
10657                    return {
10658                        dataEach: i.hasItemOption ? function(t, e) {
10659                            var i = t.getItemModel(e).get(n, !0);
10660                            null != i && t.setItemVisual(e, "color", i)
10661                        } : null
10662                    }
10663                }
10664            }
10665        },
10666        lI = { 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: "主
10666題河流圖", 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: "" } } } },
10667        uI = function(t, e) {
10668            function i(t, e) { if ("string" != typeof t) return t; var i = t; return d(e, function(t, e) { i = i.replace(new RegExp("\\{\\s*" + e + "\\s*\\}", "g"), t) }), i }
10669
10670            function n(t) { var e = a.get(t); if (null == e) { for (var i = t.split("."), n = lI.aria, o = 0; o < i.length; ++o) n = n[i[o]]; return n } return e }
10671
10672            function o(t) { return lI.series.typeNames[t] || "自定义图" }
10673            var a = e.getModel("aria");
10674            if (a.get("show"))
10675                if (a.get("description")) t.setAttribute("aria-label", a.get("description"));
10676                else {
10677                    var r = 0;
10678                    e.eachSeries(function(t, e) {++r }, this);
10679                    var s, l = a.get("data.maxCount") || 10,
10680                        u = a.get("series.maxCount") || 10,
10681                        h = Math.min(r, u);
10682                    if (!(r < 1)) {
10683                        var c = function() { var t = e.getModel("title").option; return t && t.length && (t = t[0]), t && t.text }();
10684                        s = c ? i(n("general.withTitle"), { title: c }) : n("general.withoutTitle");
10685                        var f = [];
10686                        s += i(n(r > 1 ? "series.multiple.prefix" : "series.single.prefix"), { seriesCount: r }), e.eachSeries(function(t, e) {
10687                            if (e < h) {
10688                                var a, s = t.get("name"),
10689                                    u = "series." + (r > 1 ? "multiple" : "single") + ".";
10690                                a = i(a = n(s ? u + "withName" : u + "withoutName"), { seriesId: t.seriesIndex, seriesName: t.get("name"), seriesType: o(t.subType) });
10691                                var c = t.getData();
10692                                window.data = c, c.count() > l ? a += i(n("data.partialData"), { displayCnt: l }) : a += n("data.allData");
10693                                for (var d = [], p = 0; p < c.count(); p++)
10694                                    if (p < l) {
10695                                        var g = c.getName(p),
10696                                            m = er(c, p);
10697                                        d.push(i(n(g ? "data.withName" : "data.withoutName"), { name: g, value: m }))
10698                                    }
10699                                a += d.join(n("data.separator.middle")) + n("data.separator.end"), f.push(a)
10700                            }
10701                        }), s += f.join(n("series.multiple.separator.middle")) + n("series.multiple.separator.end"), t.setAttribute("aria-label", s)
10702                    }
10703                }
10704        },
10705        hI = Math.PI,
10706        cI = Sr.prototype;
10707    cI.restoreData = function(t, e) {
10708        t.restoreData(e), this._stageTaskMap.each(function(t) {
10709            var e = t.overallTask;
10710            e && e.dirty()
10711        })
10712    }, cI.getPerformArgs = function(t, e) {
10713        if (t.__pipeline) {
10714            var i = this._pipelineMap.get(t.__pipeline.id),
10715                n = i.context,
10716                o = !e && i.progressiveEnabled && (!n || n.progressiveRender) && t.__idxInPipeline > i.blockIndex ? i.step : null,
10717                a = n && n.modDataCount;
10718            return { step: o, modBy: null != a ? Math.ceil(a / o) : null, modDataCount: a }
10719        }
10720    }, cI.getPipeline = function(t) { return this._pipelineMap.get(t) }, cI.updateStreamModes = function(t, e) {
10721        var i = this._pipelineMap.get(t.uid),
10722            n = t.getData().count(),
10723            o = i.progressiveEnabled && e.incrementalPrepareRender && n >= i.threshold,
10724            a = t.get("large") && n >= t.get("largeThreshold"),
10725            r = "mod" === t.get("progressiveChunkMode") ? n : null;
10726        t.pipelineContext = i.context = { progressiveRender: o, modDataCount: r, large: a }
10727    }, cI.restorePipelines = function(t) {
10728        var e = this,
10729            i = e._pipelineMap = R();
10730        t.eachSeries(function(t) {
10731            var n = t.getProgressive(),
10732                o = t.uid;
10733            i.set(o, { id: o, head: null, tail: null, threshold: t.getProgressiveThreshold(), progressiveEnabled: n && !(t.preventIncremental && t.preventIncremental()), blockIndex: -1, step: Math.round(n || 700), count: 0 }), Er(e, t, t.dataTask)
10734        })
10735    }, cI.prepareStageTasks = function() {
10736        var t = this._stageTaskMap,
10737            e = this.ecInstance.getModel(),
10738            i = this.api;
10739        d(this._allHandlers, function(n) {
10740            var o = t.get(n.uid) || t.set(n.uid, []);
10741            n.reset && Ir(this, n, o, e, i), n.overallReset && Tr(this, n, o, e, i)
10742        }, this)
10743    }, cI.prepareView = function(t, e, i, n) {
10744        var o = t.renderTask,
10745            a = o.context;
10746        a.model = e, a.ecModel = i, a.api = n, o.__block = !t.incrementalPrepareRender, Er(this, e, o)
10747    }, cI.performDataProcessorTasks = function(t, e) { Mr(this, this._dataProcessorHandlers, t, e, { block: !0 }) }, cI.performVisualTasks = function(t, e, i) { Mr(this, this._visualHandlers, t, e, i) }, cI.performSeriesTasks = function(t) {
10748        var e;
10749        t.eachSeries(function(t) { e |= t.dataTask.perform() }), this.unfinished |= e
10750    }, cI.plan = function() {
10751        this._pipelineMap.each(function(t) {
10752            var e = t.tail;
10753            do {
10754                if (e.__block) { t.blockIndex = e.__idxInPipeline; break }
10755                e = e.getUpstream()
10756            } while (e)
10757        })
10758    };
10759    var dI = cI.updatePayload = function(t, e) { "remain" !== e && (t.context.payload = e) },
10760        fI = Nr(0);
10761    Sr.wrapStageHandler = function(t, e) { return x(t) && (t = { overallReset: t, seriesType: Rr(t) }), t.uid = Mo("stageHandler"), e && (t.visualType = e), t };
10762    var pI, gI = {},
10763        mI = {};
10764    zr(gI, TM), zr(mI, Aa), gI.eachSeriesByType = gI.eachRawSeriesByType = function(t) { pI = t }, gI.eachComponent = function(t) { "series" === t.mainType && t.subType && (pI = t.subType) };
10765    var vI = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"],
10766        yI = {
10767            color: vI,
10768            colorLayer: [
10769                ["#37A2DA", "#ffd85c", "#fd7b5f"],
10770                ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"],
10771                ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], vI
10772            ]
10773        },
10774        xI = ["#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42"],
10775        _I = { color: xI, backgroundColor: "#333", tooltip: { axisPointer: { lineStyle: { color: "#eee" }, crossStyle: { color: "#eee" } } }, 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: xI[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" } } }
10775, 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: xI }, gauge: { title: { textStyle: { color: "#eee" } } }, candlestick: { itemStyle: { normal: { color: "#FD1050", color0: "#0CF49B", borderColor: "#FD1050", borderColor0: "#0CF49B" } } } };
10776    _I.categoryAxis.splitLine.show = !1, hM.extend({ type: "dataset", defaultOption: { seriesLayoutBy: bM, sourceHeader: null, dimensions: null, source: null }, optionUpdated: function() { ua(this) } }), $M.extend({ type: "dataset" });
10777    var wI = k,
10778        bI = d,
10779        SI = x,
10780        MI = w,
10781        II = hM.parseClassType,
10782        TI = { zrender: "4.0.4" },
10783        DI = 1e3,
10784        AI = 1e3,
10785        CI = 3e3,
10786        LI = { PROCESSOR: { FILTER: DI, STATISTIC: 5e3 }, VISUAL: { LAYOUT: AI, GLOBAL: 2e3, CHART: CI, COMPONENT: 4e3, BRUSH: 5e3 } },
10787        kI = "__flagInMainProcess",
10788        PI = "__optionUpdated",
10789        NI = /^[a-zA-Z0-9_]+$/;
10790    Vr.prototype.on = Br("on"), Vr.prototype.off = Br("off"), Vr.prototype.one = Br("one"), h(Vr, D_);
10791    var OI = Gr.prototype;
10792    OI._onframe = function() {
10793        if (!this._disposed) {
10794            var t = this._scheduler;
10795            if (this[PI]) {
10796                var e = this[PI].silent;
10797                this[kI] = !0, Fr(this), EI.update.call(this), this[kI] = !1, this[PI] = !1, Xr.call(this, e), jr.call(this, e)
10798            } else if (t.unfinished) {
10799                var i = 1,
10800                    n = this._model;
10801                this._api;
10802                t.unfinished = !1;
10803                do {
10804                    var o = +new Date;
10805                    t.performSeriesTasks(n), t.performDataProcessorTasks(n), Zr(this, n), t.performVisualTasks(n), Qr(this, this._model, 0, "remain"), i -= +new Date - o
10806                } while (i > 0 && t.unfinished);
10807                t.unfinished || this._zr.flush()
10808            }
10809        }
10810    }, OI.getDom = function() { return this._dom }, OI.getZr = function() { return this._zr }, OI.setOption = function(t, e, i) {
10811        var n;
10812        if (MI(e) && (i = e.lazyUpdate, n = e.silent, e = e.notMerge), this[kI] = !0, !this._model || e) {
10813            var o = new La(this._api),
10814                a = this._theme,
10815                r = this._model = new TM(null, null, a, o);
10816            r.scheduler = this._scheduler, r.init(null, null, a, o)
10817        }
10818        this._model.setOption(t, GI), i ? (this[PI] = { silent: n }, this[kI] = !1) : (Fr(this), EI.update.call(this), this._zr.flush(), this[PI] = !1, this[kI] = !1, Xr.call(this, n), jr.call(this, n))
10819    }, OI.setTheme = function() { console.log("ECharts#setTheme() is DEPRECATED in ECharts 3.0") }, OI.getModel = function() { return this._model }, OI.getOption = function() { return this._model && this._model.getOption() }, OI.getWidth = function() { return this._zr.getWidth() }, OI.getHeight = function() { return this._zr.getHeight() }, OI.getDevicePixelRatio = function() { return this._zr.painter.dpr || window.devicePixelRatio || 1 }, OI.getRenderedCanvas = function(t) { if (a_.canvasSupported) return (t = t || {}).pixelRatio = t.pixelRatio || 1, t.backgroundColor = t.backgroundColor || this._model.get("backgroundColor"), this._zr.painter.getRenderedCanvas(t) }, OI.getSvgDataUrl = function() { if (a_.svgSupported) { var t = this._zr; return d(t.storage.getDisplayList(), function(t) { t.stopAnimation(!0) }), t.painter.pathToDataUrl() } }, OI.getDataURL = function(t) {
10820        var e = (t = t || {}).excludeComponents,
10821            i = this._model,
10822            n = [],
10823            o = this;
10824        bI(e, function(t) {
10825            i.eachComponent({ mainType: t }, function(t) {
10826                var e = o._componentsMap[t.__viewId];
10827                e.group.ignore || (n.push(e), e.group.ignore = !0)
10828            })
10829        });
10830        var a = "svg" === this._zr.painter.getType() ? this.getSvgDataUrl() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png"));
10831        return bI(n, function(t) { t.group.ignore = !1 }), a
10832    }, OI.getConnectedDataURL = function(t) {
10833        if (a_.canvasSupported) {
10834            var e = this.group,
10835                n = Math.min,
10836                o = Math.max;
10837            if (XI[e]) {
10838                var a = 1 / 0,
10839                    r = 1 / 0,
10840                    s = -1 / 0,
10841                    l = -1 / 0,
10842                    u = [],
10843                    h = t && t.pixelRatio || 1;
10844                d(UI, function(h, c) {
10845                    if (h.group === e) {
10846                        var d = h.getRenderedCanvas(i(t)),
10847                            f = h.getDom().getBoundingClientRect();
10848                        a = n(f.left, a), r = n(f.top, r), s = o(f.right, s), l = o(f.bottom, l), u.push({ dom: d, left: f.left, top: f.top })
10849                    }
10850                });
10851                var c = (s *= h) - (a *= h),
10852                    f = (l *= h) - (r *= h),
10853                    p = m_();
10854                p.width = c, p.height = f;
10855                var g = _i(p);
10856                return bI(u, function(t) {
10857                    var e = new Je({ style: { x: t.left * h - a, y: t.top * h - r, image: t.dom } });
10858                    g.add(e)
10859                }), g.refreshImmediately(), p.toDataURL("image/" + (t && t.type || "png"))
10860            }
10861            return this.getDataURL(t)
10862        }
10863    }, OI.convertToPixel = v(Wr, "convertToPixel"), OI.convertFromPixel = v(Wr, "convertFromPixel"), OI.containPixel = function(t, e) {
10864        var i;
10865        return t = Oi(this._model, t), d(t, function(t, n) {
10866            n.indexOf("Models") >= 0 && d(t, function(t) {
10867                var o = t.coordinateSystem;
10868                if (o && o.containPoint) i |= !!o.containPoint(e);
10869                else if ("seriesModels" === n) {
10870                    var a = this._chartsMap[t.__viewId];
10871                    a && a.containPoint && (i |= a.containPoint(e, t))
10872                }
10873            }, this)
10874        }, this), !!i
10875    }, OI.getVisual = function(t, e) {
10876        var i = (t = Oi(this._model, t, { defaultMainType: "series" })).seriesModel.getData(),
10877            n = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? i.indexOfRawIndex(t.dataIndex) : null;
10878        return null != n ? i.getItemVisual(n, e) : i.getVisual(e)
10879    }, OI.getViewOfComponentModel = function(t) { return this._componentsMap[t.__viewId] }, OI.getViewOfSeriesModel = function(t) { return this._chartsMap[t.__viewId] };
10880    var EI = {
10881        prepareAndUpdate: function(t) { Fr(this), EI.update.call(this, t) },
10882        update: function(t) {
10883            var e = this._model,
10884                i = this._api,
10885                n = this._zr,
10886                o = this._coordSysMgr,
10887                a = this._scheduler;
10888            if (e) {
10889                a.restoreData(e, t), a.performSeriesTasks(e), o.create(e, i), a.performDataProcessorTasks(e, t), Zr(this, e), o.update(e, i), Kr(e), a.performVisualTasks(e, t), $r(this, e, i, t);
10890                var r = e.get("backgroundColor") || "transparent";
10891                if (a_.canvasSupported) n.setBackgroundColor(r);
10892                else {
10893                    var s = At(r);
10894                    r = zt(s, "rgb"), 0 === s[3] && (r = "transparent")
10895                }
10896                ts(e, i)
10897            }
10898        },
10899        updateTransform: function(t) {
10900            var e = this._model,
10901                i = this,
10902                n = this._api;
10903            if (e) {
10904                var o = [];
10905                e.eachComponent(function(a, r) {
10906                    var s = i.getViewOfComponentModel(r);
10907                    if (s && s.__alive)
10908                        if (s.updateTransform) {
10909                            var l = s.updateTransform(r, e, n, t);
10910                            l && l.update && o.push(s)
10911                        } else o.push(s)
10912                });
10913                var a = R();
10914                e.eachSeries(function(o) {
10915                    var r = i._chartsMap[o.__viewId];
10916                    if (r.updateTransform) {
10917                        var s = r.updateTransform(o, e, n, t);
10918                        s && s.update && a.set(o.uid, 1)
10919                    } else a.set(o.uid, 1)
10920                }), Kr(e), this._scheduler.performVisualTasks(e, t, { setDirty: !0, dirtyMap: a }), Qr(i, e, 0, t, a), ts(e, this._api)
10921            }
10922        },
10923        updateView: function(t) {
10924            var e = this._model;
10925            e && (gr.markUpdateMethod(t, "updateView"), Kr(e), this._scheduler.performVisualTasks(e, t, { setDirty: !0 }), $r(this, this._model, this._api, t), ts(e, this._api))
10926        },
10927        updateVisual: function(t) { EI.update.call(this, t) },
10928        updateLayout: function(t) { EI.update.call(this, t) }
10929    };
10930    OI.resize = function(t) {
10931        this._zr.resize(t);
10932        var e = this._model;
10933        if (this._loadingFX && this._loadingFX.resize(), e) {
10934            var i = e.resetOption("media"),
10935                n = t && t.silent;
10936            this[kI] = !0, i && Fr(this), EI.update.call(this), this[kI] = !1, Xr.call(this, n), jr.call(this, n)
10937        }
10938    }, OI.showLoading = function(t, e) {
10939        if (MI(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), ZI[t]) {
10940            var i = ZI[t](this._api, e),
10941                n = this._zr;
10942            this._loadingFX = i, n.add(i)
10943        }
10944    }, OI.hideLoading = function() { this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null }, OI.makeActionFromEvent = function(t) { var e = a({}, t); return e.type = BI[t.type], e }, OI.dispatchAction = function(t, e) { MI(e) || (e = { silent: !!e }), zI[t.type] && this._model && (this[kI] ? this._pendingActions.push(t) : (Ur.call(this, t, e.silent), e.flush ? this._zr.flush(!0) : !1 !== e.flush && a_.browser.weChat && this._throttledZrFlush(), Xr.call(this, e.silent), jr.call(this, e.silent))) }, OI.appendData = function(t) {
10945        var e = t.seriesIndex;
10946        this.getModel().getSeriesByIndex(e).appendData(t), this._scheduler.unfinished = !0
10947    }, OI.on = Br("on"), OI.off = Br("off"), OI.one = Br("one");
10948    var RI = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"];
10949    OI._initEvents = function() {
10950        bI(RI, function(t) {
10951            this._zr.on(t, function(e) {
10952                var i, n = this.getModel(),
10953                    o = e.target;
10954                if ("globalout" === t) i = {};
10955                else if (o && null != o.dataIndex) {
10956                    var r = o.dataModel || n.getSeriesByIndex(o.seriesIndex);
10957                    i = r && r.getDataParams(o.dataIndex, o.dataType) || {}
10958                } else o && o.eventData && (i = a({}, o.eventData));
10959                i && (i.event = e, i.type = t, this.trigger(t, i))
10960            }, this)
10961        }, this), bI(BI, function(t, e) { this._messageCenter.on(e, function(t) { this.trigger(e, t) }, this) }, this)
10962    }, OI.isDisposed = function() { return this._disposed }, OI.clear = function() { this.setOption({ series: [] }, !0) }, OI.dispose = function() {
10963        if (!this._disposed) {
10964            this._disposed = !0, Ri(this.getDom(), qI, "");
10965            var t = this._api,
10966                e = this._model;
10967            bI(this._componentsViews, function(i) { i.dispose(e, t) }), bI(this._chartsViews, function(i) { i.dispose(e, t) }), this._zr.dispose(), delete UI[this.id]
10968        }
10969    }, h(Gr, D_);
10970    var zI = {},
10971        BI = {},
10972        VI = [],
10973        GI = [],
10974        WI = [],
10975        FI = [],
10976        HI = {},
10977        ZI = {},
10978        UI = {},
10979        XI = {},
10980        jI = new Date - 0,
10981        YI = new Date - 0,
10982        qI = "_echarts_instance_",
10983        KI = {},
10984        $I = rs;
10985    ps(2e3, sI), us(GM), hs(5e3, function(t) {
10986        var e = R();
10987        t.eachSeries(function(t) {
10988            var i = t.get("stack");
10989            if (i) {
10990                var n = e.get(i) || e.set(i, []),
10991                    o = t.getData(),
10992                    a = { stackResultDimension: o.getCalculationInfo("stackResultDimension"), stackedOverDimension: o.getCalculationInfo("stackedOverDimension"), stackedDimension: o.getCalculationInfo("stackedDimension"), stackedByDimension: o.getCalculationInfo("stackedByDimension"), isStackedByIndex: o.getCalculationInfo("isStackedByIndex"), data: o, seriesModel: t };
10993                if (!a.stackedDimension || !a.isStackedByIndex && !a.stackedByDimension) return;
10994                n.length && o.setCalculationInfo("stackedOnSeries", n[n.length - 1].seriesModel), n.push(a)
10995            }
10996        }), e.each(ja)
10997    }), ms("default", function(t, e) {
10998        r(e = e || {}, { text: "loading", color: "#c23531", textColor: "#000", maskColor: "rgba(255, 255, 255, 0.8)", zlevel: 0 });
10999        var i = new SS({ style: { fill: e.maskColor }, zlevel: e.zlevel, z: 1e4 }),
11000            n = new DS({ shape: { startAngle: -hI / 2, endAngle: -hI / 2 + .1, r: 10 }, style: { stroke: e.color, lineCap: "round", lineWidth: 5 }, zlevel: e.zlevel, z: 10001 }),
11001            o = new SS({ style: { fill: "none", text: e.text, textPosition: "right", textDistance: 10, textFill: e.textColor }, zlevel: e.zlevel, z: 10001 });
11002        n.animateShape(!0).when(1e3, { endAngle: 3 * hI / 2 }).start("circularInOut"), n.animateShape(!0).when(1e3, { startAngle: 3 * hI / 2 }).delay(300).start("circularInOut");
11003        var a = new sw;
11004        return a.add(n), a.add(o), a.add(i), a.resize = function() {
11005            var e = t.getWidth() / 2,
11006                a = t.getHeight() / 2;
11007            n.setShape({ cx: e, cy: a });
11008            var r = n.shape.r;
11009            o.setShape({ x: e - r, y: a - r, width: 2 * r, height: 2 * r }), i.setShape({ x: 0, y: 0, width: t.getWidth(), height: t.getHeight() })
11010        }, a.resize(), a
11011    }), cs({ type: "highlight", event: "highlight", update: "highlight" }, B), cs({ type: "downplay", event: "downplay", update: "downplay" }, B), ls("light", yI), ls("dark", _I);
11012    var JI = {};
11013    Ss.prototype = {
11014        constructor: Ss,
11015        add: function(t) { return this._add = t, this },
11016        update: function(t) { return this._update = t, this },
11017        remove: function(t) { return this._remove = t, this },
11018        execute: function() {
11019            var t = this._old,
11020                e = this._new,
11021                i = {},
11022                n = [],
11023                o = [];
11024            for (Ms(t, {}, n, "_oldKeyGetter", this), Ms(e, i, o, "_newKeyGetter", this), a = 0; a < t.length; a++) null != (s = i[r = n[a]]) ? ((u = s.length) ? (1 === u && (i[r] = null), s = s.unshift()) : i[r] = null, this._update && this._update(s, a)) : this._remove && this._remove(a);
11025            for (var a = 0; a < o.length; a++) {
11026                var r = o[a];
11027                if (i.hasOwnProperty(r)) {
11028                    var s = i[r];
11029                    if (null == s) continue;
11030                    if (s.length)
11031                        for (var l = 0, u = s.length; l < u; l++) this._add && this._add(s[l]);
11032                    else this._add && this._add(s)
11033                }
11034            }
11035        }
11036    };
11037    var QI = R(["tooltip", "label", "itemName", "itemId", "seriesName"]),
11038        tT = w,
11039        eT = "e\0\0",
11040        iT = { float: "undefined" == typeof Float64Array ? Array : Float64Array, int: "undefined" == typeof Int32Array ? Array : Int32Array, ordinal: Array, number: Array, time: Array },
11041        nT = "undefined" == typeof Uint32Array ? Array : Uint32Array,
11042        oT = "undefined" == typeof Uint16Array ? Array : Uint16Array,
11043        aT = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx"],
11044        rT = ["_extent", "_approximateExtent", "_rawExtent"],
11045        sT = function(t, e) {
11046            t = t || ["x", "y"];
11047            for (var i = {}, n = [], o = {}, a = 0; a < t.length; a++) {
11048                var r = t[a];
11049                _(r) && (r = { name: r });
11050                var s = r.name;
11051                r.type = r.type || "float", r.coordDim || (r.coordDim = s, r.coordDimIndex = 0), r.otherDims = r.otherDims || {}, n.push(s), i[s] = r, r.index = a, r.createInvertedIndices && (o[s] = [])
11052            }
11053            this.dimensions = n, this._dimensionInfos = i, this.hostModel = e, 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 = Is(this), this._invertedIndicesMap = o, this._calculationInfo = {}
11054        },
11055        lT = sT.prototype;
11056    lT.type = "list", lT.hasItemOption = !0, lT.getDimension = function(t) { return isNaN(t) || (t = this.dimensions[t] || t), t }, lT.getDimensionInfo = function(t) { return this._dimensionInfos[this.getDimension(t)] }, lT.getDimensionsOnCoord = function() { return this._dimensionsSummary.dataDimsOnCoord.slice() }, lT.mapDimension = function(t, e) { var i = this._dimensionsSummary; if (null == e) return i.encodeFirstDimNotExtra[t]; var n = i.encode[t]; return !0 === e ? (n || []).slice() : n && n[e] }, lT.initData = function(t, e, i) {
11057        (la.isInstance(t) || c(t)) && (t = new Ya(t, this.dimensions.length)), this._rawData = t, this._storage = {}, this._indices = null, this._nameList = e || [], this._idList = [], this._nameRepeatCount = {}, i || (this.hasItemOption = !1), this.defaultDimValueGetter = ZM[this._rawData.getSource().sourceFormat], this._dimValueGetter = i = i || this.defaultDimValueGetter, this._rawExtent = {}, this._initDataFromProvider(0, t.count()), t.pure && (this.hasItemOption = !1)
11058    }, lT.getProvider = function() { return this._rawData }, lT.appendData = function(t) {
11059        var e = this._rawData,
11060            i = this.count();
11061        e.appendData(t);
11062        var n = e.count();
11063        e.persistent || (n += i), this._initDataFromProvider(i, n)
11064    }, lT._initDataFromProvider = function(t, e) {
11065        if (!(t >= e)) {
11066            for (var i, n = this._chunkSize, o = this._rawData, a = this._storage, r = this.dimensions, s = r.length, l = this._dimensionInfos, u = this._nameList, h = this._idList, c = this._rawExtent, d = this._nameRepeatCount = {}, f = this._chunkCount, p = f - 1, g = 0; g < s; g++) {
11067                c[T = r[g]] || (c[T] = [1 / 0, -1 / 0]);
11068                var m = l[T];
11069                0 === m.otherDims.itemName && (i = this._nameDimIdx = g), 0 === m.otherDims.itemId && (this._idDimIdx = g);
11070                var v = iT[m.type];
11071                a[T] || (a[T] = []);
11072                var y = a[T][p];
11073                if (y && y.length < n) {
11074                    for (var x = new v(Math.min(e - p * n, n)), _ = 0; _ < y.length; _++) x[_] = y[_];
11075                    a[T][p] = x
11076                }
11077                for (I = f * n; I < e; I += n) a[T].push(new v(Math.min(e - I, n)));
11078                this._chunkCount = a[T].length
11079            }
11080            for (var w = new Array(s), b = t; b < e; b++) {
11081                w = o.getItem(b, w);
11082                for (var S = Math.floor(b / n), M = b % n, I = 0; I < s; I++) {
11083                    var T = r[I],
11084                        D = a[T][S],
11085                        A = this._dimValueGetter(w, T, b, I);
11086                    D[M] = A;
11087                    var C = c[T];
11088                    A < C[0] && (C[0] = A), A > C[1] && (C[1] = A)
11089                }
11090                if (!o.pure) {
11091                    var L = u[b];
11092                    if (w && null == L)
11093                        if (null != w.name) u[b] = L = w.name;
11094                        else if (null != i) {
11095                        var k = r[i],
11096                            P = a[k][S];
11097                        if (P) {
11098                            L = P[M];
11099                            var N = l[k].ordinalMeta;
11100                            N && N.categories.length && (L = N.categories[L])
11101                        }
11102                    }
11103                    var O = null == w ? null : w.id;
11104                    null == O && null != L && (d[L] = d[L] || 0, O = L, d[L] > 0 && (O += "__ec__" + d[L]), d[L]++), null != O && (h[b] = O)
11105                }
11106            }!o.persistent && o.clean && o.clean(), this._rawCount = this._count = e, this._extent = {}, ks(this)
11107        }
11108    }, lT.count = function() { return this._count }, lT.getIndices = function() {
11109        var t = this._indices;
11110        if (t) {
11111            var e = t.constructor,
11112                i = this._count;
11113            if (e === Array) { n = new e(i); for (o = 0; o < i; o++) n[o] = t[o] } else n = new e(t.buffer, 0, i)
11114        } else
11115            for (var n = new(e = As(this))(this.count()), o = 0; o < n.length; o++) n[o] = o;
11116        return n
11117    }, lT.get = function(t, e) {
11118        if (!(e >= 0 && e < this._count)) return NaN;
11119        var i = this._storage;
11120        if (!i[t]) return NaN;
11121        e = this.getRawIndex(e);
11122        var n = Math.floor(e / this._chunkSize),
11123            o = e % this._chunkSize;
11124        return i[t][n][o]
11125    }, lT.getByRawIndex = function(t, e) {
11126        if (!(e >= 0 && e < this._rawCount)) return NaN;
11127        var i = this._storage[t];
11128        if (!i) return NaN;
11129        var n = Math.floor(e / this._chunkSize),
11130            o = e % this._chunkSize;
11131        return i[n][o]
11132    }, lT._getFast = function(t, e) {
11133        var i = Math.floor(e / this._chunkSize),
11134            n = e % this._chunkSize;
11135        return this._storage[t][i][n]
11136    }, lT.getValues = function(t, e) {
11137        var i = [];
11138        y(t) || (e = t, t = this.dimensions);
11139        for (var n = 0, o = t.length; n < o; n++) i.push(this.get(t[n], e));
11140        return i
11141    }, lT.hasValue = function(t) {
11142        for (var e = this._dimensionsSummary.dataDimsOnCoord, i = this._dimensionInfos, n = 0, o = e.length; n < o; n++)
11143            if ("ordinal" !== i[e[n]].type && isNaN(this.get(e[n], t))) return !1;
11144        return !0
11145    }, lT.getDataExtent = function(t) {
11146        t = this.getDimension(t);
11147        var e = [1 / 0, -1 / 0];
11148        if (!this._storage[t]) return e;
11149        var i, n = this.count();
11150        if (!this._indices) return this._rawExtent[t].slice();
11151        if (i = this._extent[t]) return i.slice();
11152        for (var o = (i = e)[0], a = i[1], r = 0; r < n; r++) {
11153            var s = this._getFast(t, this.getRawIndex(r));
11154            s < o && (o = s), s > a && (a = s)
11155        }
11156        return i = [o, a], this._extent[t] = i, i
11157    }, lT.getApproximateExtent = function(t) { return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t) }, lT.setApproximateExtent = function(t, e) { e = this.getDimension(e), this._approximateExtent[e] = t.slice() }, lT.getCalculationInfo = function(t) { return this._calculationInfo[t] }, lT.setCalculationInfo = function(t, e) { tT(t) ? a(this._calculationInfo, t) : this._calculationInfo[t] = e }, lT.getSum = function(t) {
11158        var e = 0;
11159        if (this._storage[t])
11160            for (var i = 0, n = this.count(); i < n; i++) {
11161                var o = this.get(t, i);
11162                isNaN(o) || (e += o)
11163            }
11164        return e
11165    }, lT.getMedian = function(t) {
11166        var e = [];
11167        this.each(t, function(t, i) { isNaN(t) || e.push(t) });
11168        var i = [].concat(e).sort(function(t, e) { return t - e }),
11169            n = this.count();
11170        return 0 === n ? 0 : n % 2 == 1 ? i[(n - 1) / 2] : (i[n / 2] + i[n / 2 - 1]) / 2
11171    }, lT.rawIndexOf = function(t, e) { var i = (t && this._invertedIndicesMap[t])[e]; return null == i || isNaN(i) ? -1 : i }, lT.indexOfName = function(t) {
11172        for (var e = 0, i = this.count(); e < i; e++)
11173            if (this.getName(e) === t) return e;
11174        return -1
11175    }, lT.indexOfRawIndex = function(t) {
11176        if (!this._indices) return t;
11177        if (t >= this._rawCount || t < 0) return -1;
11178        var e = this._indices,
11179            i = e[t];
11180        if (null != i && i < this._count && i === t) return t;
11181        for (var n = 0, o = this._count - 1; n <= o;) {
11182            var a = (n + o) / 2 | 0;
11183            if (e[a] < t) n = a + 1;
11184            else {
11185                if (!(e[a] > t)) return a;
11186                o = a - 1
11187            }
11188        }
11189        return -1
11190    }, lT.indicesOfNearest = function(t, e, i) {
11191        var n = [];
11192        if (!this._storage[t]) return n;
11193        null == i && (i = 1 / 0);
11194        for (var o = Number.MAX_VALUE, a = -1, r = 0, s = this.count(); r < s; r++) {
11195            var l = e - this.get(t, r),
11196                u = Math.abs(l);
11197            l <= i && u <= o && ((u < o || l >= 0 && a < 0) && (o = u, a = l, n.length = 0), n.push(r))
11198        }
11199        return n
11200    }, lT.getRawIndex = Ns, lT.getRawDataItem = function(t) {
11201        if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t));
11202        for (var e = [], i = 0; i < this.dimensions.length; i++) {
11203            var n = this.dimensions[i];
11204            e.push(this.get(n, t))
11205        }
11206        return e
11207    }, lT.getName = function(t) { var e = this.getRawIndex(t); return this._nameList[e] || Ps(this, this._nameDimIdx, e) || "" }, lT.getId = function(t) { return Es(this, this.getRawIndex(t)) }, lT.each = function(t, e, i, n) {
11208        if (this._count) {
11209            "function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this;
11210            for (var o = (t = f(Rs(t), this.getDimension, this)).length, a = 0; a < this.count(); a++) switch (o) {
11211                case 0:
11212                    e.call(i, a);
11213                    break;
11214                case 1:
11215                    e.call(i, this.get(t[0], a), a);
11216                    break;
11217                case 2:
11218                    e.call(i, this.get(t[0], a), this.get(t[1], a), a);
11219                    break;
11220                default:
11221                    for (var r = 0, s = []; r < o; r++) s[r] = this.get(t[r], a);
11222                    s[r] = a, e.apply(i, s)
11223            }
11224        }
11225    }, lT.filterSelf = function(t, e, i, n) {
11226        if (this._count) {
11227            "function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this, t = f(Rs(t), this.getDimension, this);
11228            for (var o = this.count(), a = new(As(this))(o), r = [], s = t.length, l = 0, u = t[0], h = 0; h < o; h++) {
11229                var c, d = this.getRawIndex(h);
11230                if (0 === s) c = e.call(i, h);
11231                else if (1 === s) {
11232                    var p = this._getFast(u, d);
11233                    c = e.call(i, p, h)
11234                } else {
11235                    for (var g = 0; g < s; g++) r[g] = this._getFast(u, d);
11236                    r[g] = h, c = e.apply(i, r)
11237                }
11238                c && (a[l++] = d)
11239            }
11240            return l < o && (this._indices = a), this._count = l, this._extent = {}, this.getRawIndex = this._indices ? Os : Ns, this
11241        }
11242    }, lT.selectRange = function(t) {
11243        if (this._count) {
11244            var e = [];
11245            for (var i in t) t.hasOwnProperty(i) && e.push(i);
11246            var n = e.length;
11247            if (n) {
11248                var o = this.count(),
11249                    a = new(As(this))(o),
11250                    r = 0,
11251                    s = e[0],
11252                    l = t[s][0],
11253                    u = t[s][1],
11254                    h = !1;
11255                if (!this._indices) {
11256                    var c = 0;
11257                    if (1 === n) {
11258                        for (var d = this._storage[e[0]], f = 0; f < this._chunkCount; f++)
11259                            for (var p = d[f], g = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; m < g; m++)((w = p[m]) >= l && w <= u || isNaN(w)) && (a[r++] = c), c++;
11260                        h = !0
11261                    } else if (2 === n) {
11262                        for (var d = this._storage[s], v = this._storage[e[1]], y = t[e[1]][0], x = t[e[1]][1], f = 0; f < this._chunkCount; f++)
11263                            for (var p = d[f], _ = v[f], g = Math.min(this._count - f * this._chunkSize, this._chunkSize), m = 0; m < g; m++) {
11264                                var w = p[m],
11265                                    b = _[m];
11266                                (w >= l && w <= u || isNaN(w)) && (b >= y && b <= x || isNaN(b)) && (a[r++] = c), c++
11267                            }
11268                        h = !0
11269                    }
11270                }
11271                if (!h)
11272                    if (1 === n)
11273                        for (m = 0; m < o; m++) {
11274                            M = this.getRawIndex(m);
11275                            ((w = this._getFast(s, M)) >= l && w <= u || isNaN(w)) && (a[r++] = M)
11276                        } else
11277                            for (m = 0; m < o; m++) {
11278                                for (var S = !0, M = this.getRawIndex(m), f = 0; f < n; f++) {
11279                                    var I = e[f];
11280                                    ((w = this._getFast(i, M)) < t[I][0] || w > t[I][1]) && (S = !1)
11281                                }
11282                                S && (a[r++] = this.getRawIndex(m))
11283                            }
11284                return r < o && (this._indices = a), this._count = r, this._extent = {}, this.getRawIndex = this._indices ? Os : Ns, this
11285            }
11286        }
11287    }, lT.mapArray = function(t, e, i, n) { "function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this; var o = []; return this.each(t, function() { o.push(e && e.apply(this, arguments)) }, i), o }, lT.map = function(t, e, i, n) {
11288        i = i || n || this;
11289        var o = zs(this, t = f(Rs(t), this.getDimension, this));
11290        o._indices = this._indices, o.getRawIndex = o._indices ? Os : Ns;
11291        for (var a = o._storage, r = [], s = this._chunkSize, l = t.length, u = this.count(), h = [], c = o._rawExtent, d = 0; d < u; d++) {
11292            for (var p = 0; p < l; p++) h[p] = this.get(t[p], d);
11293            h[l] = d;
11294            var g = e && e.apply(i, h);
11295            if (null != g) {
11296                "object" != typeof g && (r[0] = g, g = r);
11297                for (var m = this.getRawIndex(d), v = Math.floor(m / s), y = m % s, x = 0; x < g.length; x++) {
11298                    var _ = t[x],
11299                        w = g[x],
11300                        b = c[_],
11301                        S = a[_];
11302                    S && (S[v][y] = w), w < b[0] && (b[0] = w), w > b[1] && (b[1] = w)
11303                }
11304            }
11305        }
11306        return o
11307    }, lT.downSample = function(t, e, i, n) {
11308        for (var o = zs(this, [t]), a = o._storage, r = [], s = Math.floor(1 / e), l = a[t], u = this.count(), h = this._chunkSize, c = o._rawExtent[t], d = new(As(this))(u), f = 0, p = 0; p < u; p += s) {
11309            s > u - p && (s = u - p, r.length = s);
11310            for (var g = 0; g < s; g++) {
11311                var m = this.getRawIndex(p + g),
11312                    v = Math.floor(m / h),
11313                    y = m % h;
11314                r[g] = l[v][y]
11315            }
11316            var x = i(r),
11317                _ = this.getRawIndex(Math.min(p + n(r, x) || 0, u - 1)),
11318                w = _ % h;
11319            l[Math.floor(_ / h)][w] = x, x < c[0] && (c[0] = x), x > c[1] && (c[1] = x), d[f++] = _
11320        }
11321        return o._count = f, o._indices = d, o.getRawIndex = Os, o
11322    }, lT.getItemModel = function(t) { var e = this.hostModel; return new wo(this.getRawDataItem(t), e, e && e.ecModel) }, lT.diff = function(t) { var e = this; return new Ss(t ? t.getIndices() : [], this.getIndices(), function(e) { return Es(t, e) }, function(t) { return Es(e, t) }) }, lT.getVisual = function(t) { var e = this._visual; return e && e[t] }, lT.setV
11322isual = function(t, e) {
11323        if (tT(t))
11324            for (var i in t) t.hasOwnProperty(i) && this.setVisual(i, t[i]);
11325        else this._visual = this._visual || {}, this._visual[t] = e
11326    }, lT.setLayout = function(t, e) {
11327        if (tT(t))
11328            for (var i in t) t.hasOwnProperty(i) && this.setLayout(i, t[i]);
11329        else this._layout[t] = e
11330    }, lT.getLayout = function(t) { return this._layout[t] }, lT.getItemLayout = function(t) { return this._itemLayouts[t] }, lT.setItemLayout = function(t, e, i) { this._itemLayouts[t] = i ? a(this._itemLayouts[t] || {}, e) : e }, lT.clearItemLayouts = function() { this._itemLayouts.length = 0 }, lT.getItemVisual = function(t, e, i) {
11331        var n = this._itemVisuals[t],
11332            o = n && n[e];
11333        return null != o || i ? o : this.getVisual(e)
11334    }, lT.setItemVisual = function(t, e, i) {
11335        var n = this._itemVisuals[t] || {},
11336            o = this.hasItemVisual;
11337        if (this._itemVisuals[t] = n, tT(e))
11338            for (var a in e) e.hasOwnProperty(a) && (n[a] = e[a], o[a] = !0);
11339        else n[e] = i, o[e] = !0
11340    }, lT.clearAllVisual = function() { this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {} };
11341    var uT = function(t) { t.seriesIndex = this.seriesIndex, t.dataIndex = this.dataIndex, t.dataType = this.dataType };
11342    lT.setItemGraphicEl = function(t, e) {
11343        var i = this.hostModel;
11344        e && (e.dataIndex = t, e.dataType = this.dataType, e.seriesIndex = i && i.seriesIndex, "group" === e.type && e.traverse(uT, e)), this._graphicEls[t] = e
11345    }, lT.getItemGraphicEl = function(t) { return this._graphicEls[t] }, lT.eachItemGraphicEl = function(t, e) { d(this._graphicEls, function(i, n) { i && t && t.call(e, i, n) }) }, lT.cloneShallow = function(t) {
11346        if (!t) {
11347            var e = f(this.dimensions, this.getDimensionInfo, this);
11348            t = new sT(e, this.hostModel)
11349        }
11350        if (t._storage = this._storage, Ls(t, this), this._indices) {
11351            var i = this._indices.constructor;
11352            t._indices = new i(this._indices)
11353        } else t._indices = null;
11354        return t.getRawIndex = t._indices ? Os : Ns, t
11355    }, lT.wrapMethod = function(t, e) { var i = this[t]; "function" == typeof i && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[t] = function() { var t = i.apply(this, arguments); return e.apply(this, [t].concat(C(arguments))) }) }, lT.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "map"], lT.CHANGABLE_METHODS = ["filterSelf", "selectRange"];
11356    var hT = function(t, e) { return e = e || {}, Gs(e.coordDimensions || [], t, { dimsDef: e.dimensionsDefine || t.dimensionsDefine, encodeDef: e.encodeDefine || t.encodeDefine, dimCount: e.dimensionsCount, generateCoord: e.generateCoord, generateCoordCount: e.generateCoordCount }) };
11357    qs.prototype.parse = function(t) { return t }, qs.prototype.getSetting = function(t) { return this._setting[t] }, qs.prototype.contain = function(t) { var e = this._extent; return t >= e[0] && t <= e[1] }, qs.prototype.normalize = function(t) { var e = this._extent; return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0]) }, qs.prototype.scale = function(t) { var e = this._extent; return t * (e[1] - e[0]) + e[0] }, qs.prototype.unionExtent = function(t) {
11358        var e = this._extent;
11359        t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1])
11360    }, qs.prototype.unionExtentFromData = function(t, e) { this.unionExtent(t.getApproximateExtent(e)) }, qs.prototype.getExtent = function() { return this._extent.slice() }, qs.prototype.setExtent = function(t, e) {
11361        var i = this._extent;
11362        isNaN(t) || (i[0] = t), isNaN(e) || (i[1] = e)
11363    }, qs.prototype.isBlank = function() { return this._isBlank }, qs.prototype.setBlank = function(t) { this._isBlank = t }, qs.prototype.getLabel = null, Gi(qs), Zi(qs, { registerWhenExtend: !0 }), Ks.createByAxisModel = function(t) {
11364        var e = t.option,
11365            i = e.data,
11366            n = i && f(i, Js);
11367        return new Ks({ categories: n, needCollect: !n, deduplication: !1 !== e.dedplication })
11368    };
11369    var cT = Ks.prototype;
11370    cT.getOrdinal = function(t) { return $s(this).get(t) }, cT.parseAndCollect = function(t) { var e, i = this._needCollect; if ("string" != typeof t && !i) return t; if (i && !this._deduplication) return e = this.categories.length, this.categories[e] = t, e; var n = $s(this); return null == (e = n.get(t)) && (i ? (e = this.categories.length, this.categories[e] = t, n.set(t, e)) : e = NaN), e };
11371    var dT = qs.prototype,
11372        fT = qs.extend({ type: "ordinal", init: function(t, e) { t && !y(t) || (t = new Ks({ categories: t })), this._ordinalMeta = t, this._extent = e || [0, t.categories.length - 1] }, parse: function(t) { return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t) }, contain: function(t) { return t = this.parse(t), dT.contain.call(this, t) && null != this._ordinalMeta.categories[t] }, normalize: function(t) { return dT.normalize.call(this, this.parse(t)) }, scale: function(t) { return Math.round(dT.scale.call(this, t)) }, getTicks: function() { for (var t = [], e = this._extent, i = e[0]; i <= e[1];) t.push(i), i++; return t }, getLabel: function(t) { if (!this.isBlank()) return this._ordinalMeta.categories[t] }, count: function() { return this._extent[1] - this._extent[0] + 1 }, unionExtentFromData: function(t, e) { this.unionExtent(t.getApproximateExtent(e)) }, getOrdinalMeta: function() { return this._ordinalMeta }
11372, niceTicks: B, niceExtent: B });
11373    fT.create = function() { return new fT };
11374    var pT = Ao,
11375        gT = Ao,
11376        mT = qs.extend({
11377            type: "interval",
11378            _interval: 0,
11379            _intervalPrecision: 2,
11380            setExtent: function(t, e) {
11381                var i = this._extent;
11382                isNaN(t) || (i[0] = parseFloat(t)), isNaN(e) || (i[1] = parseFloat(e))
11383            },
11384            unionExtent: function(t) {
11385                var e = this._extent;
11386                t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), mT.prototype.setExtent.call(this, e[0], e[1])
11387            },
11388            getInterval: function() { return this._interval },
11389            setInterval: function(t) { this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = tl(t) },
11390            getTicks: function() { return nl(this._interval, this._extent, this._niceExtent, this._intervalPrecision) },
11391            getLabel: function(t, e) { if (null == t) return ""; var i = e && e.precision; return null == i ? i = ko(t) || 0 : "auto" === i && (i = this._intervalPrecision), t = gT(t, i, !0), Fo(t) },
11392            niceTicks: function(t, e, i) {
11393                t = t || 5;
11394                var n = this._extent,
11395                    o = n[1] - n[0];
11396                if (isFinite(o)) {
11397                    o < 0 && (o = -o, n.reverse());
11398                    var a = Qs(n, t, e, i);
11399                    this._intervalPrecision = a.intervalPrecision, this._interval = a.interval, this._niceExtent = a.niceTickExtent
11400                }
11401            },
11402            niceExtent: function(t) {
11403                var e = this._extent;
11404                if (e[0] === e[1])
11405                    if (0 !== e[0]) {
11406                        var i = e[0];
11407                        t.fixMax ? e[0] -= i / 2 : (e[1] += i / 2, e[0] -= i / 2)
11408                    } else e[1] = 1;
11409                var n = e[1] - e[0];
11410                isFinite(n) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
11411                var o = this._interval;
11412                t.fixMin || (e[0] = gT(Math.floor(e[0] / o) * o)), t.fixMax || (e[1] = gT(Math.ceil(e[1] / o) * o))
11413            }
11414        });
11415    mT.create = function() { return new mT };
11416    var vT = "__ec_stack_",
11417        yT = "undefined" != typeof Float32Array ? Float32Array : Array,
11418        xT = {
11419            seriesType: "bar",
11420            plan: QM(),
11421            reset: function(t) {
11422                if (dl(t) && fl(t)) {
11423                    var e = t.getData(),
11424                        i = t.coordinateSystem,
11425                        n = i.getBaseAxis(),
11426                        o = i.getOtherAxis(n),
11427                        a = e.mapDimension(o.dim),
11428                        r = e.mapDimension(n.dim),
11429                        s = o.isHorizontal(),
11430                        l = s ? 0 : 1,
11431                        u = hl(ll([t]), n, t).width;
11432                    return u > .5 || (u = .5), {
11433                        progress: function(t, e) {
11434                            for (var h, c = new yT(2 * t.count), d = [], f = [], p = 0; null != (h = t.next());) f[l] = e.get(a, h), f[1 - l] = e.get(r, h), d = i.dataToPoint(f, null, d), c[p++] = d[0], c[p++] = d[1];
11435                            e.setLayout({ largePoints: c, barWidth: u, valueAxisStart: pl(n, o, !1), valueAxisHorizontal: s })
11436                        }
11437                    }
11438                }
11439            }
11440        },
11441        _T = mT.prototype,
11442        wT = Math.ceil,
11443        bT = Math.floor,
11444        ST = function(t, e, i, n) {
11445            for (; i < n;) {
11446                var o = i + n >>> 1;
11447                t[o][1] < e ? i = o + 1 : n = o
11448            }
11449            return i
11450        },
11451        MT = mT.extend({
11452            type: "time",
11453            getLabel: function(t) {
11454                var e = this._stepLvl,
11455                    i = new Date(t);
11456                return qo(e[0], i, this.getSetting("useUTC"))
11457            },
11458            niceExtent: function(t) {
11459                var e = this._extent;
11460                if (e[0] === e[1] && (e[0] -= 864e5, e[1] += 864e5), e[1] === -1 / 0 && e[0] === 1 / 0) {
11461                    var i = new Date;
11462                    e[1] = +new Date(i.getFullYear(), i.getMonth(), i.getDate()), e[0] = e[1] - 864e5
11463                }
11464                this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
11465                var n = this._interval;
11466                t.fixMin || (e[0] = Ao(bT(e[0] / n) * n)), t.fixMax || (e[1] = Ao(wT(e[1] / n) * n))
11467            },
11468            niceTicks: function(t, e, i) {
11469                t = t || 10;
11470                var n = this._extent,
11471                    o = n[1] - n[0],
11472                    a = o / t;
11473                null != e && a < e && (a = e), null != i && a > i && (a = i);
11474                var r = IT.length,
11475                    s = ST(IT, a, 0, r),
11476                    l = IT[Math.min(s, r - 1)],
11477                    u = l[1];
11478                "year" === l[0] && (u *= Vo(o / u / t, !0));
11479                var h = this.getSetting("useUTC") ? 0 : 60 * new Date(+n[0] || +n[1]).getTimezoneOffset() * 1e3,
11480                    c = [Math.round(wT((n[0] - h) / u) * u + h), Math.round(bT((n[1] - h) / u) * u + h)];
11481                il(c, n), this._stepLvl = l, this._interval = u, this._niceExtent = c
11482            },
11483            parse: function(t) { return +Ro(t) }
11484        });
11485    d(["contain", "normalize"], function(t) { MT.prototype[t] = function(e) { return _T[t].call(this, this.parse(e)) } });
11486    var IT = [
11487        ["hh:mm:ss", 1e3],
11488        ["hh:mm:ss", 5e3],
11489        ["hh:mm:ss", 1e4],
11490        ["hh:mm:ss", 15e3],
11491        ["hh:mm:ss", 3e4],
11492        ["hh:mm\nMM-dd", 6e4],
11493        ["hh:mm\nMM-dd", 3e5],
11494        ["hh:mm\nMM-dd", 6e5],
11495        ["hh:mm\nMM-dd", 9e5],
11496        ["hh:mm\nMM-dd", 18e5],
11497        ["hh:mm\nMM-dd", 36e5],
11498        ["hh:mm\nMM-dd", 72e5],
11499        ["hh:mm\nMM-dd", 216e5],
11500        ["hh:mm\nMM-dd", 432e5],
11501        ["MM-dd\nyyyy", 864e5],
11502        ["MM-dd\nyyyy", 1728e5],
11503        ["MM-dd\nyyyy", 2592e5],
11504        ["MM-dd\nyyyy", 3456e5],
11505        ["MM-dd\nyyyy", 432e6],
11506        ["MM-dd\nyyyy", 5184e5],
11507        ["week", 6048e5],
11508        ["MM-dd\nyyyy", 864e6],
11509        ["week", 12096e5],
11510        ["week", 18144e5],
11511        ["month", 26784e5],
11512        ["week", 36288e5],
11513        ["month", 53568e5],
11514        ["week", 36288e5],
11515        ["quarter", 8208e6],
11516        ["month", 107136e5],
11517        ["month", 13392e6],
11518        ["half-year", 16416e6],
11519        ["month", 214272e5],
11520        ["month", 26784e6],
11521        ["year", 32832e6]
11522    ];
11523    MT.create = function(t) { return new MT({ useUTC: t.ecModel.get("useUTC") }) };
11524    var TT = qs.prototype,
11525        DT = mT.prototype,
11526        AT = ko,
11527        CT = Ao,
11528        LT = Math.floor,
11529        kT = Math.ceil,
11530        PT = Math.pow,
11531        NT = Math.log,
11532        OT = qs.extend({
11533            type: "log",
11534            base: 10,
11535            $constructor: function() { qs.apply(this, arguments), this._originalScale = new mT },
11536            getTicks: function() {
11537                var t = this._originalScale,
11538                    e = this._extent,
11539                    i = t.getExtent();
11540                return f(DT.getTicks.call(this), function(n) { var o = Ao(PT(this.base, n)); return o = n === e[0] && t.__fixMin ? gl(o, i[0]) : o, o = n === e[1] && t.__fixMax ? gl(o, i[1]) : o }, this)
11541            },
11542            getLabel: DT.getLabel,
11543            scale: function(t) { return t = TT.scale.call(this, t), PT(this.base, t) },
11544            setExtent: function(t, e) {
11545                var i = this.base;
11546                t = NT(t) / NT(i), e = NT(e) / NT(i), DT.setExtent.call(this, t, e)
11547            },
11548            getExtent: function() {
11549                var t = this.base,
11550                    e = TT.getExtent.call(this);
11551                e[0] = PT(t, e[0]), e[1] = PT(t, e[1]);
11552                var i = this._originalScale,
11553                    n = i.getExtent();
11554                return i.__fixMin && (e[0] = gl(e[0], n[0])), i.__fixMax && (e[1] = gl(e[1], n[1])), e
11555            },
11556            unionExtent: function(t) {
11557                this._originalScale.unionExtent(t);
11558                var e = this.base;
11559                t[0] = NT(t[0]) / NT(e), t[1] = NT(t[1]) / NT(e), TT.unionExtent.call(this, t)
11560            },
11561            unionExtentFromData: function(t, e) { this.unionExtent(t.getApproximateExtent(e)) },
11562            niceTicks: function(t) {
11563                t = t || 10;
11564                var e = this._extent,
11565                    i = e[1] - e[0];
11566                if (!(i === 1 / 0 || i <= 0)) {
11567                    var n = zo(i);
11568                    for (t / i * n <= .5 && (n *= 10); !isNaN(n) && Math.abs(n) < 1 && Math.abs(n) > 0;) n *= 10;
11569                    var o = [Ao(kT(e[0] / n) * n), Ao(LT(e[1] / n) * n)];
11570                    this._interval = n, this._niceExtent = o
11571                }
11572            },
11573            niceExtent: function(t) {
11574                DT.niceExtent.call(this, t);
11575                var e = this._originalScale;
11576                e.__fixMin = t.fixMin, e.__fixMax = t.fixMax
11577            }
11578        });
11579    d(["contain", "normalize"], function(t) { OT.prototype[t] = function(e) { return e = NT(e) / NT(this.base), TT[t].call(this, e) } }), OT.create = function() { return new OT };
11580    var ET = {
11581            getMin: function(t) {
11582                var e = this.option,
11583                    i = t || null == e.rangeStart ? e.min : e.rangeStart;
11584                return this.axis && null != i && "dataMin" !== i && "function" != typeof i && !I(i) && (i = this.axis.scale.parse(i)), i
11585            },
11586            getMax: function(t) {
11587                var e = this.option,
11588                    i = t || null == e.rangeEnd ? e.max : e.rangeEnd;
11589                return this.axis && null != i && "dataMax" !== i && "function" != typeof i && !I(i) && (i = this.axis.scale.parse(i)), i
11590            },
11591            getNeedCrossZero: function() { var t = this.option; return null == t.rangeStart && null == t.rangeEnd && !t.scale },
11592            getCoordSysModel: B,
11593            setRange: function(t, e) { this.option.rangeStart = t, this.option.rangeEnd = e },
11594            resetRange: function() { this.option.rangeStart = this.option.rangeEnd = null }
11595        },
11596        RT = En({
11597            type: "triangle",
11598            shape: { cx: 0, cy: 0, width: 0, height: 0 },
11599            buildPath: function(t, e) {
11600                var i = e.cx,
11601                    n = e.cy,
11602                    o = e.width / 2,
11603                    a = e.height / 2;
11604                t.moveTo(i, n - a), t.lineTo(i + o, n + a), t.lineTo(i - o, n + a), t.closePath()
11605            }
11606        }),
11607        zT = En({
11608            type: "diamond",
11609            shape: { cx: 0, cy: 0, width: 0, height: 0 },
11610            buildPath: function(t, e) {
11611                var i = e.cx,
11612                    n = e.cy,
11613                    o = e.width / 2,
11614                    a = e.height / 2;
11615                t.moveTo(i, n - a), t.lineTo(i + o, n), t.lineTo(i, n + a), t.lineTo(i - o, n), t.closePath()
11616            }
11617        }),
11618        BT = En({
11619            type: "pin",
11620            shape: { x: 0, y: 0, width: 0, height: 0 },
11621            buildPath: function(t, e) {
11622                var i = e.x,
11623                    n = e.y,
11624                    o = e.width / 5 * 3,
11625                    a = Math.max(o, e.height),
11626                    r = o / 2,
11627                    s = r * r / (a - r),
11628                    l = n - a + r + s,
11629                    u = Math.asin(s / r),
11630                    h = Math.cos(u) * r,
11631                    c = Math.sin(u),
11632                    d = Math.cos(u),
11633                    f = .6 * r,
11634                    p = .7 * r;
11635                t.moveTo(i - h, l + s), t.arc(i, l, r, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(i + h - c * f, l + s + d * f, i, n - p, i, n), t.bezierCurveTo(i, n - p, i - h + c * f, l + s + d * f, i - h, l + s), t.closePath()
11636            }
11637        }),
11638        VT = En({
11639            type: "arrow",
11640            shape: { x: 0, y: 0, width: 0, height: 0 },
11641            buildPath: function(t, e) {
11642                var i = e.height,
11643                    n = e.width,
11644                    o = e.x,
11645                    a = e.y,
11646                    r = n / 3 * 2;
11647                t.moveTo(o, a), t.lineTo(o + r, a + i), t.lineTo(o, a + i / 4 * 3), t.lineTo(o - r, a + i), t.lineTo(o, a), t.closePath()
11648            }
11649        }),
11650        GT = {
11651            line: function(t, e, i, n, o) { o.x1 = t, o.y1 = e + n / 2, o.x2 = t + i, o.y2 = e + n / 2 },
11652            rect: function(t, e, i, n, o) { o.x = t, o.y = e, o.width = i, o.height = n },
11653            roundRect: function(t, e, i, n, o) { o.x = t, o.y = e, o.width = i, o.height = n, o.r = Math.min(i, n) / 4 },
11654            square: function(t, e, i, n, o) {
11655                var a = Math.min(i, n);
11656                o.x = t, o.y = e, o.width = a, o.height = a
11657            },
11658            circle: function(t, e, i, n, o) { o.cx = t + i / 2, o.cy = e + n / 2, o.r = Math.min(i, n) / 2 },
11659            diamond: function(t, e, i, n, o) { o.cx = t + i / 2, o.cy = e + n / 2, o.width = i, o.height = n },
11660            pin: function(t, e, i, n, o) { o.x = t + i / 2, o.y = e + n / 2, o.width = i, o.height = n },
11661            arrow: function(t, e, i, n, o) { o.x = t + i / 2, o.y = e + n / 2, o.width = i, o.height = n },
11662            triangle: function(t, e, i, n, o) { o.cx = t + i / 2, o.cy = e + n / 2, o.width = i, o.height = n }
11663        },
11664        WT = {};
11665    d({ line: MS, rect: SS, roundRect: SS, square: SS, circle: pS, diamond: zT, pin: BT, arrow: VT, triangle: RT }, function(t, e) { WT[e] = new t });
11666    var FT = En({
11667            type: "symbol",
11668            shape: { symbolType: "", x: 0, y: 0, width: 0, height: 0 },
11669            beforeBrush: function() { var t = this.style; "pin" === this.shape.symbolType && "inside" === t.textPosition && (t.textPosition = ["50%", "40%"], t.textAlign = "center", t.textVerticalAlign = "middle") },
11670            buildPath: function(t, e, i) {
11671                var n = e.symbolType,
11672                    o = WT[n];
11673                "none" !== e.symbolType && (o || (o = WT[n = "rect"]), GT[n](e.x, e.y, e.width, e.height, o.shape), o.buildPath(t, o.shape, i))
11674            }
11675        }),
11676        HT = { isDimensionStacked: Zs, enableDataStack: Hs, getStackedDimension: Us },
11677        ZT = (Object.freeze || Object)({
11678            createList: function(t) { return Xs(t.getSource(), t) },
11679            getLayoutRect: Qo,
11680            dataStack: HT,
11681            createScale: function(t, e) {
11682                var i = e;
11683                wo.isInstance(e) || h(i = new wo(e), ET);
11684                var n = xl(i);
11685                return n.setExtent(t[0], t[1]), yl(n, i), n
11686            },
11687            mixinAxisModelCommonMethods: function(t) { h(t, ET) },
11688            completeDimensions: Gs,
11689            createDimensions: hT,
11690            createSymbol: Tl
11691        }),
11692        UT = 1e-8;
11693    Cl.prototype = {
11694        constructor: Cl,
11695        properties: null,
11696        getBoundingRect: function() { var t = this._rect; if (t) return t; for (var e = Number.MAX_VALUE, i = [e, e], n = [-e, -e], o = [], a = [], r = this.geometries, s = 0; s < r.length; s++) "polygon" === r[s].type && (rn(r[s].exterior, o, a), tt(i, i, o), et(n, n, a)); return 0 === s && (i[0] = i[1] = n[0] = n[1] = 0), this._rect = new $t(i[0], i[1], n[0] - i[0], n[1] - i[1]) },
11697        contain: function(t) {
11698            var e = this.getBoundingRect(),
11699                i = this.geometries;
11700            if (!e.contain(t[0], t[1])) return !1;
11701            t: for (var n = 0, o = i.length; n < o; n++)
11702                if ("polygon" === i[n].type) {
11703                    var a = i[n].exterior,
11704                        r = i[n].interiors;
11705                    if (Al(a, t[0], t[1])) {
11706                        for (var s = 0; s < (r ? r.length : 0); s++)
11707                            if (Al(r[s])) continue t;
11708                        return !0
11709                    }
11710                }
11711            return !1
11712        },
11713        transformTo: function(t, e, i, n) {
11714            var o = this.getBoundingRect(),
11715                a = o.width / o.height;
11716            i ? n || (n = i / a) : i = a * n;
11717            for (var r = new $t(t, e, i, n), s = o.calculateTransform(r), l = this.geometries, u = 0; u < l.length; u++)
11718                if ("polygon" === l[u].type) {
11719                    for (var h = l[u].exterior, c = l[u].interiors, d = 0; d < h.length; d++) Q(h[d], h[d], s);
11720                    for (var f = 0; f < (c ? c.length : 0); f++)
11721                        for (d = 0; d < c[f].length; d++) Q(c[f][d], c[f][d], s)
11722                }(o = this._rect).copy(r), this.center = [o.x + o.width / 2, o.y + o.height / 2]
11723        }
11724    };
11725    var XT = function(t) {
11726            return Ll(t), f(g(t.features, function(t) { return t.geometry && t.properties && t.geometry.coordinates.length > 0 }), function(t) {
11727                var e = t.properties,
11728                    i = t.geometry,
11729                    n = i.coordinates,
11730                    o = [];
11731                "Polygon" === i.type && o.push({ type: "polygon", exterior: n[0], interiors: n.slice(1) }), "MultiPolygon" === i.type && d(n, function(t) { t[0] && o.push({ type: "polygon", exterior: t[0], interiors: t.slice(1) }) });
11732                var a = new Cl(e.name, o, e.cp);
11733                return a.properties = e, a
11734            })
11735        },
11736        jT = Ni(),
11737        YT = [0, 1],
11738        qT = function(t, e, i) { this.dim = t, this.scale = e, this._extent = i || [0, 0], this.inverse = !1, this.onBand = !1 };
11739    qT.prototype = {
11740        constructor: qT,
11741        contain: function(t) {
11742            var e = this._extent,
11743                i = Math.min(e[0], e[1]),
11744                n = Math.max(e[0], e[1]);
11745            return t >= i && t <= n
11746        },
11747        containData: function(t) { return this.contain(this.dataToCoord(t)) },
11748        getExtent: function() { return this._extent.slice() },
11749        getPixelPrecision: function(t) { return Po(t || this.scale.getExtent(), this._extent) },
11750        setExtent: function(t, e) {
11751            var i = this._extent;
11752            i[0] = t, i[1] = e
11753        },
11754        dataToCoord: function(t, e) {
11755            var i = this._extent,
11756                n = this.scale;
11757            return t = n.normalize(t), this.onBand && "ordinal" === n.type && jl(i = i.slice(), n.count()), To(t, YT, i, e)
11758        },
11759        coordToData: function(t, e) {
11760            var i = this._extent,
11761                n = this.scale;
11762            this.onBand && "ordinal" === n.type && jl(i = i.slice(), n.count());
11763            var o = To(t, i, YT, e);
11764            return this.scale.scale(o)
11765        },
11766        pointToData: function(t, e) {},
11767        getTicksCoords: function(t) {
11768            var e = (t = t || {}).tickModel || this.getTickModel(),
11769                i = Nl(this, e),
11770                n = f(i.ticks, function(t) { return { coord: this.dataToCoord(t), tickValue: t } }, this),
11771                o = e.get("alignWithLabel");
11772            return Yl(this, n, i.tickCategoryInterval, o, t.clamp), n
11773        },
11774        getViewLabels: function() { return Pl(this).labels },
11775        getLabelModel: function() { return this.model.getModel("axisLabel") },
11776        getTickModel: function() { return this.model.getModel("axisTick") },
11777        getBandWidth: function() {
11778            var t = this._extent,
11779                e = this.scale.getExtent(),
11780                i = e[1] - e[0] + (this.onBand ? 1 : 0);
11781            0 === i && (i = 1);
11782            var n = Math.abs(t[1] - t[0]);
11783            return Math.abs(n) / i
11784        },
11785        isHorizontal: null,
11786        getRotate: null,
11787        calculateCategoryInterval: function() { return Fl(this) }
11788    };
11789    var KT = XT,
11790        $T = {};
11791    d(["map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge"], function(t) { $T[t] = x_[t] }), KM.extend({ type: "series.line", dependencies: ["grid", "polar"], getInitialData: function(t, e) { return Xs(this.getSource(), this) }, defaultOption: { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: !0, hoverAnimation: !0, clipOverflow: !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 } });
11792    var JT = Kl.prototype,
11793        QT = Kl.getSymbolSize = function(t, e) { var i = t.getItemVisual(e, "symbolSize"); return i instanceof Array ? i.slice() : [+i, +i] };
11794    JT._createSymbol = function(t, e, i, n, o) {
11795        this.removeAll();
11796        var a = Tl(t, -1, -1, 2, 2, e.getItemVisual(i, "color"), o);
11797        a.attr({ z2: 100, culling: !0, scale: $l(n) }), a.drift = Jl, this._symbolType = t, this.add(a)
11798    }, JT.stopSymbolAnimation = function(t) { this.childAt(0).stopAnimation(t) }, JT.getSymbolPath = function() { return this.childAt(0) }, JT.getScale = function() { return this.childAt(0).scale }, JT.highlight = function() { this.childAt(0).trigger("emphasis") }, JT.downplay = function() { this.childAt(0).trigger("normal") }, JT.setZ = function(t, e) {
11799        var i = this.childAt(0);
11800        i.zlevel = t, i.z = e
11801    }, JT.setDraggable = function(t) {
11802        var e = this.childAt(0);
11803        e.draggable = t, e.cursor = t ? "move" : "pointer"
11804    }, JT.updateData = function(t, e, i) {
11805        this.silent = !1;
11806        var n = t.getItemVisual(e, "symbol") || "circle",
11807            o = t.hostModel,
11808            a = QT(t, e),
11809            r = n !== this._symbolType;
11810        if (r) {
11811            var s = t.getItemVisual(e, "symbolKeepAspect");
11812            this._createSymbol(n, t, e, a, s)
11813        } else(l = this.childAt(0)).silent = !1, fo(l, { scale: $l(a) }, o, e);
11814        if (this._updateCommon(t, e, a, i), r) {
11815            var l = this.childAt(0),
11816                u = i && i.fadeIn,
11817                h = { scale: l.scale.slice() };
11818            u && (h.style = { opacity: l.style.opacity }), l.scale = [0, 0], u && (l.style.opacity = 0), po(l, h, o, e)
11819        }
11820        this._seriesModel = o
11821    };
11822    var tD = ["itemStyle"],
11823        eD = ["emphasis", "itemStyle"],
11824        iD = ["label"],
11825        nD = ["emphasis", "label"];
11826    JT._updateCommon = function(t, e, i, n) {
11827        var o = this.childAt(0),
11828            r = t.hostModel,
11829            s = t.getItemVisual(e, "color");
11830        "image" !== o.type && o.useStyle({ strokeNoScale: !0 });
11831        var l = n && n.itemStyle,
11832            u = n && n.hoverItemStyle,
11833            h = n && n.symbolRotate,
11834            c = n && n.symbolOffset,
11835            d = n && n.labelModel,
11836            f = n && n.hoverLabelModel,
11837            p = n && n.hoverAnimation,
11838            g = n && n.cursorStyle;
11839        if (!n || t.hasItemOption) {
11840            var m = n && n.itemModel ? n.itemModel : t.getItemModel(e);
11841            l = m.getModel(tD).getItemStyle(["color"]), u = m.getModel(eD).getItemStyle(), h = m.getShallow("symbolRotate"), c = m.getShallow("symbolOffset"), d = m.getModel(iD), f = m.getModel(nD), p = m.getShallow("hoverAnimation"), g = m.getShallow("cursor")
11842        } else u = a({}, u);
11843        var v = o.style;
11844        o.attr("rotation", (h || 0) * Math.PI / 180 || 0), c && o.attr("position", [Do(c[0], i[0]), Do(c[1], i[1])]), g && o.attr("cursor", g), o.setColor(s, n && n.symbolInnerColor), o.setStyle(l);
11845        var y = t.getItemVisual(e, "opacity");
11846        null != y && (v.opacity = y);
11847        var x = t.getItemVisual(e, "liftZ"),
11848            _ = o.__z2Origin;
11849        null != x ? null == _ && (o.__z2Origin = o.z2, o.z2 += x) : null != _ && (o.z2 = _, o.__z2Origin = null);
11850        var w = n && n.useNameLabel;
11851        io(v, u, d, f, { labelFetcher: r, labelDataIndex: e, defaultText: function(e, i) { return w ? t.getName(e) : ql(t, e) }, isRectText: !0, autoColor: s }), o.off("mouseover").off("mouseout").off("emphasis").off("normal"), o.hoverStyle = u, eo(o);
11852        var b = $l(i);
11853        if (p && r.isAnimationEnabled()) {
11854            var S = function() {
11855                    if (!this.incremental) {
11856                        var t = b[1] / b[0];
11857                        this.animateTo({ scale: [Math.max(1.1 * b[0], b[0] + 3), Math.max(1.1 * b[1], b[1] + 3 * t)] }, 400, "elasticOut")
11858                    }
11859                },
11860                M = function() { this.incremental || this.animateTo({ scale: b }, 400, "elasticOut") };
11861            o.on("mouseover", S).on("mouseout", M).on("emphasis", S).on("normal", M)
11862        }
11863    }, JT.fadeOut = function(t, e) {
11864        var i = this.childAt(0);
11865        this.silent = i.silent = !0, !(e && e.keepLabel) && (i.style.text = null), fo(i, { style: { opacity: 0 }, scale: [0, 0] }, this._seriesModel, this.dataIndex, t)
11866    }, u(Kl, sw);
11867    var oD = Ql.prototype;
11868    oD.updateData = function(t, e) {
11869        e = eu(e);
11870        var i = this.group,
11871            n = t.hostModel,
11872            o = this._data,
11873            a = this._symbolCtor,
11874            r = iu(t);
11875        o || i.removeAll(), t.diff(o).add(function(n) {
11876            var o = t.getItemLayout(n);
11877            if (tu(t, o, n, e)) {
11878                var s = new a(t, n, r);
11879                s.attr("position", o), t.setItemGraphicEl(n, s), i.add(s)
11880            }
11881        }).update(function(s, l) {
11882            var u = o.getItemGraphicEl(l),
11883                h = t.getItemLayout(s);
11884            tu(t, h, s, e) ? (u ? (u.updateData(t, s, r), fo(u, { position: h }, n)) : (u = new a(t, s)).attr("position", h), i.add(u), t.setItemGraphicEl(s, u)) : i.remove(u)
11885        }).remove(function(t) {
11886            var e = o.getItemGraphicEl(t);
11887            e && e.fadeOut(function() { i.remove(e) })
11888        }).execute(), this._data = t
11889    }, oD.isPersistent = function() { return !0 }, oD.updateLayout = function() {
11890        var t = this._data;
11891        t && t.eachItemGraphicEl(function(e, i) {
11892            var n = t.getItemLayout(i);
11893            e.attr("position", n)
11894        })
11895    }, oD.incrementalPrepareUpdate = function(t) { this._seriesScope = iu(t), this._data = null, this.group.removeAll() }, oD.incrementalUpdate = function(t, e, i) {
11896        i = eu(i);
11897        for (var n = t.start; n < t.end; n++) {
11898            var o = e.getItemLayout(n);
11899            if (tu(e, o, n, i)) {
11900                var a = new this._symbolCtor(e, n, this._seriesScope);
11901                a.traverse(function(t) { t.isGroup || (t.incremental = t.useHoverLayer = !0) }), a.attr("position", o), this.group.add(a), e.setItemGraphicEl(n, a)
11902            }
11903        }
11904    }, oD.remove = function(t) {
11905        var e = this.group,
11906            i = this._data;
11907        i && t ? i.eachItemGraphicEl(function(t) { t.fadeOut(function() { e.remove(t) }) }) : e.removeAll()
11908    };
11909    var aD = function(t, e, i, n, o, a, r, s) {
11910            for (var l = ru(t, e), u = [], h = [], c = [], d = [], f = [], p 
11910= [], g = [], m = nu(o, e, r), v = nu(a, t, s), y = 0; y < l.length; y++) {
11911                var x = l[y],
11912                    _ = !0;
11913                switch (x.cmd) {
11914                    case "=":
11915                        var w = t.getItemLayout(x.idx),
11916                            b = e.getItemLayout(x.idx1);
11917                        (isNaN(w[0]) || isNaN(w[1])) && (w = b.slice()), u.push(w), h.push(b), c.push(i[x.idx]), d.push(n[x.idx1]), g.push(e.getRawIndex(x.idx1));
11918                        break;
11919                    case "+":
11920                        S = x.idx;
11921                        u.push(o.dataToPoint([e.get(m.dataDimsForPoint[0], S), e.get(m.dataDimsForPoint[1], S)])), h.push(e.getItemLayout(S).slice()), c.push(au(m, o, e, S)), d.push(n[S]), g.push(e.getRawIndex(S));
11922                        break;
11923                    case "-":
11924                        var S = x.idx,
11925                            M = t.getRawIndex(S);
11926                        M !== S ? (u.push(t.getItemLayout(S)), h.push(a.dataToPoint([t.get(v.dataDimsForPoint[0], S), t.get(v.dataDimsForPoint[1], S)])), c.push(i[S]), d.push(au(v, a, t, S)), g.push(M)) : _ = !1
11927                }
11928                _ && (f.push(x), p.push(p.length))
11929            }
11930            p.sort(function(t, e) { return g[t] - g[e] });
11931            for (var I = [], T = [], D = [], A = [], C = [], y = 0; y < p.length; y++) {
11932                S = p[y];
11933                I[y] = u[S], T[y] = h[S], D[y] = c[S], A[y] = d[S], C[y] = f[S]
11934            }
11935            return { current: I, next: T, stackedOnCurrent: D, stackedOnNext: A, status: C }
11936        },
11937        rD = tt,
11938        sD = et,
11939        lD = Z,
11940        uD = G,
11941        hD = [],
11942        cD = [],
11943        dD = [],
11944        fD = In.extend({
11945            type: "ec-polyline",
11946            shape: { points: [], smooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1 },
11947            style: { fill: null, stroke: "#000" },
11948            brush: mS(In.prototype.brush),
11949            buildPath: function(t, e) {
11950                var i = e.points,
11951                    n = 0,
11952                    o = i.length,
11953                    a = cu(i, e.smoothConstraint);
11954                if (e.connectNulls) { for (; o > 0 && su(i[o - 1]); o--); for (; n < o && su(i[n]); n++); }
11955                for (; n < o;) n += lu(t, i, n, o, o, 1, a.min, a.max, e.smooth, e.smoothMonotone, e.connectNulls) + 1
11956            }
11957        }),
11958        pD = In.extend({
11959            type: "ec-polygon",
11960            shape: { points: [], stackedOnPoints: [], smooth: 0, stackedOnSmooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1 },
11961            brush: mS(In.prototype.brush),
11962            buildPath: function(t, e) {
11963                var i = e.points,
11964                    n = e.stackedOnPoints,
11965                    o = 0,
11966                    a = i.length,
11967                    r = e.smoothMonotone,
11968                    s = cu(i, e.smoothConstraint),
11969                    l = cu(n, e.smoothConstraint);
11970                if (e.connectNulls) { for (; a > 0 && su(i[a - 1]); a--); for (; o < a && su(i[o]); o++); }
11971                for (; o < a;) {
11972                    var u = lu(t, i, o, a, a, 1, s.min, s.max, e.smooth, r, e.connectNulls);
11973                    lu(t, n, o + u - 1, u, a, -1, l.min, l.max, e.stackedOnSmooth, r, e.connectNulls), o += u + 1, t.closePath()
11974                }
11975            }
11976        });
11977    gr.extend({
11978        type: "line",
11979        init: function() {
11980            var t = new sw,
11981                e = new Ql;
11982            this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t
11983        },
11984        render: function(t, e, i) {
11985            var n = t.coordinateSystem,
11986                o = this.group,
11987                a = t.getData(),
11988                s = t.getModel("lineStyle"),
11989                l = t.getModel("areaStyle"),
11990                u = a.mapArray(a.getItemLayout),
11991                h = "polar" === n.type,
11992                c = this._coordSys,
11993                d = this._symbolDraw,
11994                f = this._polyline,
11995                p = this._polygon,
11996                g = this._lineGroup,
11997                m = t.get("animation"),
11998                v = !l.isEmpty(),
11999                y = l.get("origin"),
12000                x = gu(n, a, nu(n, a, y)),
12001                _ = t.get("showSymbol"),
12002                w = _ && !h && wu(t, a, n),
12003                b = this._data;
12004            b && b.eachItemGraphicEl(function(t, e) { t.__temp && (o.remove(t), b.setItemGraphicEl(e, null)) }), _ || d.remove(), o.add(g);
12005            var S = !h && t.get("step");
12006            f && c.type === n.type && S === this._step ? (v && !p ? p 
12006= this._newPolygon(u, x, n, m) : p && !v && (g.remove(p), p = this._polygon = null), g.setClipPath(yu(n, !1, !1, t)), _ && d.updateData(a, { isIgnore: w, clipShape: yu(n, !1, !0, t) }), a.eachItemGraphicEl(function(t) { t.stopAnimation(!0) }), du(this._stackedOnPoints, x) && du(this._points, u) || (m ? this._updateAnimation(a, x, n, i, S, y) : (S && (u = xu(u, n, S), x = xu(x, n, S)), f.setShape({ points: u }), p && p.setShape({ points: u, stackedOnPoints: x })))) : (_ && d.updateData(a, { isIgnore: w, clipShape: yu(n, !1, !0, t) }), S && (u = xu(u, n, S), x = xu(x, n, S)), f = this._newPolyline(u, n, m), v && (p = this._newPolygon(u, x, n, m)), g.setClipPath(yu(n, !0, !1, t)));
12007            var M = _u(a, n) || a.getVisual("color");
12008            f.useStyle(r(s.getLineStyle(), { fill: "none", stroke: M, lineJoin: "bevel" }));
12009            var I = t.get("smooth");
12010            if (I = fu(t.get("smooth")), f.setShape({ smooth: I, smoothMonotone: t.get("smoothMonotone"), connectNulls: t.get("connectNulls") }), p) {
12011                var T = a.getCalculationInfo("stackedOnSeries"),
12012                    D = 0;
12013                p.useStyle(r(l.getAreaStyle(), { fill: M, opacity: .7, lineJoin: "bevel" })), T && (D = fu(T.get("smooth"))), p.setShape({ smooth: I, stackedOnSmooth: D, smoothMonotone: t.get("smoothMonotone"), connectNulls: t.get("connectNulls") })
12014            }
12015            this._data = a, this._coordSys = n, this._stackedOnPoints = x, this._points = u, this._step = S, this._valueOrigin = y
12016        },
12017        dispose: function() {},
12018        highlight: function(t, e, i, n) {
12019            var o = t.getData(),
12020                a = Pi(o, n);
12021            if (!(a instanceof Array) && null != a && a >= 0) {
12022                var r = o.getItemGraphicEl(a);
12023                if (!r) {
12024                    var s = o.getItemLayout(a);
12025                    if (!s) return;
12026                    (r = new Kl(o, a)).position = s, r.setZ(t.get("zlevel"), t.get("z")), r.ignore = isNaN(s[0]) || isNaN(s[1]), r.__temp = !0, o.setItemGraphicEl(a, r), r.stopSymbolAnimation(!0), this.group.add(r)
12027                }
12028                r.highlight()
12029            } else gr.prototype.highlight.call(this, t, e, i, n)
12030        },
12031        downplay: function(t, e, i, n) {
12032            var o = t.getData(),
12033                a = Pi(o, n);
12034            if (null != a && a >= 0) {
12035                var r = o.getItemGraphicEl(a);
12036                r && (r.__temp ? (o.setItemGraphicEl(a, null), this.group.remove(r)) : r.downplay())
12037            } else gr.prototype.downplay.call(this, t, e, i, n)
12038        },
12039        _newPolyline: function(t) { var e = this._polyline; return e && this._lineGroup.remove(e), e = new fD({ shape: { points: t }, silent: !0, z2: 10 }), this._lineGroup.add(e), this._polyline = e, e },
12040        _newPolygon: function(t, e) { var i = this._polygon; return i && this._lineGroup.remove(i), i = new pD({ shape: { points: t, stackedOnPoints: e }, silent: !0 }), this._lineGroup.add(i), this._polygon = i, i },
12041        _updateAnimation: function(t, e, i, n, o, a) {
12042            var r = this._polyline,
12043                s = this._polygon,
12044                l = t.hostModel,
12045                u = aD(this._data, t, this._stackedOnPoints, e, this._coordSys, i, this._valueOrigin, a),
12046                h = u.current,
12047                c = u.stackedOnCurrent,
12048                d = u.next,
12049                f = u.stackedOnNext;
12050            o && (h = xu(u.current, i, o), c = xu(u.stackedOnCurrent, i, o), d = xu(u.next, i, o), f = xu(u.stackedOnNext, i, o)), r.shape.__points = u.current, r.shape.points = h, fo(r, { shape: { points: d } }, l), s && (s.setShape({ points: h, stackedOnPoints: c }), fo(s, { shape: { points: d, stackedOnPoints: f } }, l));
12051            for (var p = [], g = u.status, m = 0; m < g.length; m++)
12052                if ("=" === g[m].cmd) {
12053                    var v = t.getItemGraphicEl(g[m].idx1);
12054                    v && p.push({ el: v, ptIdx: m })
12055                }
12056            r.animators && r.animators.length && r.animators[0].during(function() { for (var t = 0; t < p.length; t++) p[t].el.attr("position", r.shape.__points[p[t].ptIdx]) })
12057        },
12058        remove: function(t) {
12059            var e = this.group,
12060                i = this._data;
12061            this._lineGroup.removeAll(), this._symbolDraw.remove(!0), i && i.eachItemGraphicEl(function(t, n) { t.__temp && (e.remove(t), i.setItemGraphicEl(n, null)) }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null
12062        }
12063    });
12064    var gD = function(t, e, i) {
12065            return {
12066                seriesType: t,
12067                performRawSeries: !0,
12068                reset: function(t, n, o) {
12069                    var a = t.getData(),
12070                        r = t.get("symbol") || e,
12071                        s = t.get("symbolSize"),
12072                        l = t.get("symbolKeepAspect");
12073                    if (a.setVisual({ legendSymbol: i || r, symbol: r, symbolSize: s, symbolKeepAspect: l }), !n.isSeriesFiltered(t)) {
12074                        var u = "function" == typeof s;
12075                        return {
12076                            dataEach: a.hasItemOption || u ? function(e, i) {
12077                                if ("function" == typeof s) {
12078                                    var n = t.getRawValue(i),
12079                                        o = t.getDataParams(i);
12080                                    e.setItemVisual(i, "symbolSize", s(n, o))
12081                                }
12082                                if (e.hasItemOption) {
12083                                    var a = e.getItemModel(i),
12084                                        r = a.getShallow("symbol", !0),
12085                                        l = a.getShallow("symbolSize", !0),
12086                                        u = a.getShallow("symbolKeepAspect", !0);
12087                                    null != r && e.setItemVisual(i, "symbol", r), null != l && e.setItemVisual(i, "symbolSize", l), null != u && e.setItemVisual(i, "symbolKeepAspect", u)
12088                                }
12089                            } : null
12090                        }
12091                    }
12092                }
12093            }
12094        },
12095        mD = function(t) {
12096            return {
12097                seriesType: t,
12098                plan: QM(),
12099                reset: function(t) {
12100                    var e = t.getData(),
12101                        i = t.coordinateSystem,
12102                        n = t.pipelineContext.large;
12103                    if (i) {
12104                        var o = f(i.dimensions, function(t) { return e.mapDimension(t) }).slice(0, 2),
12105                            a = o.length,
12106                            r = e.getCalculationInfo("stackResultDimension");
12107                        return Zs(e, o[0]) && (o[0] = r), Zs(e, o[1]) && (o[1] = r), a && {
12108                            progress: function(t, e) {
12109                                for (var r = t.end - t.start, s = n && new Float32Array(r * a), l = t.start, u = 0, h = [], c = []; l < t.end; l++) {
12110                                    var d;
12111                                    if (1 === a) f = e.get(o[0], l), d = !isNaN(f) && i.dataToPoint(f, null, c);
12112                                    else {
12113                                        var f = h[0] = e.get(o[0], l),
12114                                            p = h[1] = e.get(o[1], l);
12115                                        d = !isNaN(f) && !isNaN(p) && i.dataToPoint(h, null, c)
12116                                    }
12117                                    n ? (s[u++] = d ? d[0] : NaN, s[u++] = d ? d[1] : NaN) : e.setItemLayout(l, d && d.slice() || [NaN, NaN])
12118                                }
12119                                n && e.setLayout("symbolPoints", s)
12120                            }
12121                        }
12122                    }
12123                }
12124            }
12125        },
12126        vD = { average: function(t) { for (var e = 0, i = 0, n = 0; n < t.length; n++) isNaN(t[n]) || (e += t[n], i++); return 0 === i ? NaN : e / i }, sum: function(t) { for (var e = 0, i = 0; i < t.length; i++) e += t[i] || 0; return e }, max: function(t) { for (var e = -1 / 0, i = 0; i < t.length; i++) t[i] > e && (e = t[i]); return isFinite(e) ? e : NaN }, min: function(t) { for (var e = 1 / 0, i = 0; i < t.length; i++) t[i] < e && (e = t[i]); return isFinite(e) ? e : NaN }, nearest: function(t) { return t[0] } },
12127        yD = function(t, e) { return Math.round(t.length / 2) },
12128        xD = function(t) { this._axes = {}, this._dimList = [], this.name = t || "" };
12129    xD.prototype = {
12130        constructor: xD,
12131        type: "cartesian",
12132        getAxis: function(t) { return this._axes[t] },
12133        getAxes: function() { return f(this._dimList, Su, this) },
12134        getAxesByScale: function(t) { return t = t.toLowerCase(), g(this.getAxes(), function(e) { return e.scale.type === t }) },
12135        addAxis: function(t) {
12136            var e = t.dim;
12137            this._axes[e] = t, this._dimList.push(e)
12138        },
12139        dataToCoord: function(t) { return this._dataCoordConvert(t, "dataToCoord") },
12140        coordToData: function(t) { return this._dataCoordConvert(t, "coordToData") },
12141        _dataCoordConvert: function(t, e) {
12142            for (var i = this._dimList, n = t instanceof Array ? [] : {}, o = 0; o < i.length; o++) {
12143                var a = i[o],
12144                    r = this._axes[a];
12145                n[a] = r[e](t[a])
12146            }
12147            return n
12148        }
12149    }, Mu.prototype = {
12150        constructor: Mu,
12151        type: "cartesian2d",
12152        dimensions: ["x", "y"],
12153        getBaseAxis: function() { return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x") },
12154        containPoint: function(t) {
12155            var e = this.getAxis("x"),
12156                i = this.getAxis("y");
12157            return e.contain(e.toLocalCoord(t[0])) && i.contain(i.toLocalCoord(t[1]))
12158        },
12159        containData: function(t) { return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1]) },
12160        dataToPoint: function(t, e, i) {
12161            var n = this.getAxis("x"),
12162                o = this.getAxis("y");
12163            return i = i || [], i[0] = n.toGlobalCoord(n.dataToCoord(t[0])), i[1] = o.toGlobalCoord(o.dataToCoord(t[1])), i
12164        },
12165        clampData: function(t, e) {
12166            var i = this.getAxis("x").scale,
12167                n = this.getAxis("y").scale,
12168                o = i.getExtent(),
12169                a = n.getExtent(),
12170                r = i.parse(t[0]),
12171                s = n.parse(t[1]);
12172            return e = e || [], e[0] = Math.min(Math.max(Math.min(o[0], o[1]), r), Math.max(o[0], o[1])), e[1] = Math.min(Math.max(Math.min(a[0], a[1]), s), Math.max(a[0], a[1])), e
12173        },
12174        pointToData: function(t, e) {
12175            var i = this.getAxis("x"),
12176                n = this.getAxis("y");
12177            return e = e || [], e[0] = i.coordToData(i.toLocalCoord(t[0])), e[1] = n.coordToData(n.toLocalCoord(t[1])), e
12178        },
12179        getOtherAxis: function(t) { return this.getAxis("x" === t.dim ? "y" : "x") }
12180    }, u(Mu, xD);
12181    var _D = function(t, e, i, n, o) { qT.call(this, t, e, i), this.type = n || "value", this.position = o || "bottom" };
12182    _D.prototype = { constructor: _D, index: 0, getAxesOnZeroOf: null, model: null, isHorizontal: function() { var t = this.position; return "top" === t || "bottom" === t }, getGlobalExtent: function(t) { var e = this.getExtent(); return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), e }, getOtherAxis: function() { this.grid.getOtherAxis() }, pointToData: function(t, e) { return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e) }, toLocalCoord: null, toGlobalCoord: null }, u(_D, qT);
12183    var wD = { 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: {}
12183, 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)"] } } },
12184        bD = {};
12185    bD.categoryAxis = n({ boundaryGap: !0, deduplication: null, splitLine: { show: !1 }, axisTick: { alignWithLabel: !1, interval: "auto" }, axisLabel: { interval: "auto" } }, wD), bD.valueAxis = n({ boundaryGap: [0, 0], splitNumber: 5 }, wD), bD.timeAxis = r({ scale: !0, min: "dataMin", max: "dataMax" }, bD.valueAxis), bD.logAxis = r({ scale: !0, logBase: 10 }, bD.valueAxis);
12186    var SD = ["value", "category", "time", "log"],
12187        MD = function(t, e, i, a) {
12188            d(SD, function(r) {
12189                e.extend({
12190                    type: t + "Axis." + r,
12191                    mergeDefaultAndTheme: function(e, o) {
12192                        var a = this.layoutMode,
12193                            s = a ? na(e) : {};
12194                        n(e, o.getTheme().get(r + "Axis")), n(e, this.getDefaultOption()), e.type = i(t, e), a && ia(e, s, a)
12195                    },
12196                    optionUpdated: function() { "category" === this.option.type && (this.__ordinalMeta = Ks.createByAxisModel(this)) },
12197                    getCategories: function(t) { var e = this.option; if ("category" === e.type) return t ? e.data : this.__ordinalMeta.categories },
12198                    getOrdinalMeta: function() { return this.__ordinalMeta },
12199                    defaultOption: o([{}, bD[r + "Axis"], a], !0)
12200                })
12201            }), hM.registerSubTypeDefaulter(t + "Axis", v(i, t))
12202        },
12203        ID = hM.extend({ type: "cartesian2dAxis", axis: null, init: function() { ID.superApply(this, "init", arguments), this.resetRange() }, mergeOption: function() { ID.superApply(this, "mergeOption", arguments), this.resetRange() }, restoreData: function() { ID.superApply(this, "restoreData", arguments), this.resetRange() }, getCoordSysModel: function() { return this.ecModel.queryComponents({ mainType: "grid", index: this.option.gridIndex, id: this.option.gridId })[0] } });
12204    n(ID.prototype, ET);
12205    var TD = { offset: 0 };
12206    MD("x", ID, Iu, TD), MD("y", ID, Iu, TD), hM.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" } });
12207    var DD = Du.prototype;
12208    DD.type = "grid", DD.axisPointerEnabled = !0, DD.getRect = function() { return this._rect }, DD.update = function(t, e) {
12209        var i = this._axesMap;
12210        this._updateScale(t, this.model), d(i.x, function(t) { yl(t.scale, t.model) }), d(i.y, function(t) { yl(t.scale, t.model) }), d(i.x, function(t) { Au(i, "y", t) }), d(i.y, function(t) { Au(i, "x", t) }), this.resize(this.model, e)
12211    }, DD.resize = function(t, e, i) {
12212        function n() {
12213            d(a, function(t) {
12214                var e = t.isHorizontal(),
12215                    i = e ? [0, o.width] : [0, o.height],
12216                    n = t.inverse ? 1 : 0;
12217                t.setExtent(i[n], i[1 - n]), Lu(t, e ? o.x : o.y)
12218            })
12219        }
12220        var o = Qo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() });
12221        this._rect = o;
12222        var a = this._axesList;
12223        n(), !i && t.get("containLabel") && (d(a, function(t) {
12224            if (!t.model.get("axisLabel.inside")) {
12225                var e = Sl(t);
12226                if (e) {
12227                    var i = t.isHorizontal() ? "height" : "width",
12228                        n = t.model.get("axisLabel.margin");
12229                    o[i] -= e[i] + n, "top" === t.position ? o.y += e.height + n : "left" === t.position && (
12229o.x += e.width + n)
12230                }
12231            }
12232        }), n())
12233    }, DD.getAxis = function(t, e) {
12234        var i = this._axesMap[t];
12235        if (null != i) {
12236            if (null == e)
12237                for (var n in i)
12238                    if (i.hasOwnProperty(n)) return i[n];
12239            return i[e]
12240        }
12241    }, DD.getAxes = function() { return this._axesList.slice() }, DD.getCartesian = function(t, e) {
12242        if (null != t && null != e) { var i = "x" + t + "y" + e; return this._coordsMap[i] }
12243        w(t) && (e = t.yAxisIndex, t = t.xAxisIndex);
12244        for (var n = 0, o = this._coordsList; n < o.length; n++)
12245            if (o[n].getAxis("x").index === t || o[n].getAxis("y").index === e) return o[n]
12246    }, DD.getCartesians = function() { return this._coordsList.slice() }, DD.convertToPixel = function(t, e, i) { var n = this._findConvertTarget(t, e); return n.cartesian ? n.cartesian.dataToPoint(i) : n.axis ? n.axis.toGlobalCoord(n.axis.dataToCoord(i)) : null }, DD.convertFromPixel = function(t, e, i) { var n = this._findConvertTarget(t, e); return n.cartesian ? n.cartesian.pointToData(i) : n.axis ? n.axis.coordToData(n.axis.toLocalCoord(i)) : null }, DD._findConvertTarget = function(t, e) {
12247        var i, n, o = e.seriesModel,
12248            a = e.xAxisModel || o && o.getReferringComponents("xAxis")[0],
12249            r = e.yAxisModel || o && o.getReferringComponents("yAxis")[0],
12250            s = e.gridModel,
12251            u = this._coordsList;
12252        return o ? l(u, i = o.coordinateSystem) < 0 && (i = null) : a && r ? i = this.getCartesian(a.componentIndex, r.componentIndex) : a ? n = this.getAxis("x", a.componentIndex) : r ? n = this.getAxis("y", r.componentIndex) : s && s.coordinateSystem === this && (i = this._coordsList[0]), { cartesian: i, axis: n }
12253    }, DD.containPoint = function(t) { var e = this._coordsList[0]; if (e) return e.containPoint(t) }, DD._initCartesian = function(t, e, i) {
12254        function n(i) {
12255            return function(n, s) {
12256                if (Tu(n, t, e)) {
12257                    var l = n.get("position");
12258                    "x" === i ? "top" !== l && "bottom" !== l && o[l = "bottom"] && (l = "top" === l ? "bottom" : "top") : "left" !== l && "right" !== l && o[l = "left"] && (l = "left" === l ? "right" : "left"), o[l] = !0;
12259                    var u = new _D(i, xl(n), [0, 0], n.get("type"), l),
12260                        h = "category" === u.type;
12261                    u.onBand = h && n.get("boundaryGap"), u.inverse = n.get("inverse"), n.axis = u, u.model = n, u.grid = this, u.index = s, this._axesList.push(u), a[i][s] = u, r[i]++
12262                }
12263            }
12264        }
12265        var o = { left: !1, right: !1, top: !1, bottom: !1 },
12266            a = { x: {}, y: {} },
12267            r = { x: 0, y: 0 };
12268        if (e.eachComponent("xAxis", n("x"), this), e.eachComponent("yAxis", n("y"), this), !r.x || !r.y) return this._axesMap = {}, void(this._axesList = []);
12269        this._axesMap = a, d(a.x, function(e, i) {
12270            d(a.y, function(n, o) {
12271                var a = "x" + i + "y" + o,
12272                    r = new Mu(a);
12273                r.grid = this, r.model = t, this._coordsMap[a] = r, this._coordsList.push(r), r.addAxis(e), r.addAxis(n)
12274            }, this)
12275        }, this)
12276    }, DD._updateScale = function(t, e) {
12277        function i(t, e, i) { d(t.mapDimension(e.dim, !0), function(i) { e.scale.unionExtentFromData(t, Us(t, i)) }) }
12278        d(this._axesList, function(t) { t.scale.setExtent(1 / 0, -1 / 0) }), t.eachSeries(function(n) {
12279            if (Pu(n)) {
12280                var o = ku(n),
12281                    a = o[0],
12282                    r = o[1];
12283                if (!Tu(a, e, t) || !Tu(r, e, t)) return;
12284                var s = this.getCartesian(a.componentIndex, r.componentIndex),
12285                    l = n.getData(),
12286                    u = s.getAxis("x"),
12287                    h = s.getAxis("y");
12288                "list" === l.type && (i(l, u), i(l, h))
12289            }
12290        }, this)
12291    }, DD.getTooltipAxes = function(t) {
12292        var e = [],
12293            i = [];
12294        return d(this.getCartesians(), function(n) {
12295            var o = null != t && "auto" !== t ? n.getAxis(t) : n.getBaseAxis(),
12296                a = n.getOtherAxis(o);
12297            l(e, o) < 0 && e.push(o), l(i, a) < 0 && i.push(a)
12298        }), { baseAxes: e, otherAxes: i }
12299    };
12300    var AD = ["xAxis", "yAxis"];
12301    Du.create = function(t, e) {
12302        var i = [];
12303        return t.eachComponent("grid", function(n, o) {
12304            var a = new Du(n, t, e);
12305            a.name = "grid_" + o, a.resize(n, e, !0), n.coordinateSystem = a, i.push(a)
12306        }), t.eachSeries(function(t) {
12307            if (Pu(t)) {
12308                var e = ku(t),
12309                    i = e[0],
12310                    n = e[1],
12311                    o = i.getCoordSysModel().coordinateSystem;
12312                t.coordinateSystem = o.getCartesian(i.componentIndex, n.componentIndex)
12313            }
12314        }), i
12315    }, Du.dimensions = Du.prototype.dimensions = Mu.prototype.dimensions, Ca.register("cartesian2d", Du);
12316    var CD = Math.PI,
12317        LD = function(t, e) {
12318            this.opt = e, this.axisModel = t, r(e, { labelOffset: 0, nameDirection: 1, tickDirection: 1, labelDirection: 1, silent: !0 }), this.group = new sw;
12319            var i = new sw({ position: e.position.slice(), rotation: e.rotation });
12320            i.updateTransform(), this._transform = i.transform, this._dumbGroup = i
12321        };
12322    LD.prototype = { constructor: LD, hasBuilder: function(t) { return !!kD[t] }, add: function(t) { kD[t].call(this) }, getGroup: function() { return this.group } };
12323    var kD = {
12324            axisLine: function() {
12325                var t = this.opt,
12326                    e = this.axisModel;
12327                if (e.get("axisLine.show")) {
12328                    var i = this.axisModel.axis.getExtent(),
12329                        n = this._transform,
12330                        o = [i[0], 0],
12331                        r = [i[1], 0];
12332                    n && (Q(o, o, n), Q(r, r, n));
12333                    var s = a({ lineCap: "round" }, e.getModel("axisLine.lineStyle").getLineStyle());
12334                    this.group.add(new MS(Gn({ anid: "line", shape: { x1: o[0], y1: o[1], x2: r[0], y2: r[1] }, style: s, strokeContainThreshold: t.strokeContainThreshold || 5, silent: !0, z2: 1 })));
12335                    var l = e.get("axisLine.symbol"),
12336                        u = e.get("axisLine.symbolSize"),
12337                        h = e.get("axisLine.symbolOffset") || 0;
12338                    if ("number" == typeof h && (h = [h, h]), null != l) {
12339                        "string" == typeof l && (l = [l, l]), "string" != typeof u && "number" != typeof u || (u = [u, u]);
12340                        var c = u[0],
12341                            f = u[1];
12342                        d([{ rotate: t.rotation + Math.PI / 2, offset: h[0], r: 0 }, { rotate: t.rotation - Math.PI / 2, offset: h[1], r: Math.sqrt((o[0] - r[0]) * (o[0] - r[0]) + (o[1] - r[1]) * (o[1] - r[1])) }], function(e, i) {
12343                            if ("none" !== l[i] && null != l[i]) {
12344                                var n = Tl(l[i], -c / 2, -f / 2, c, f, s.stroke, !0),
12345                                    a = e.r + e.offset,
12346                                    r = [o[0] + a * Math.cos(t.rotation), o[1] - a * Math.sin(t.rotation)];
12347                                n.attr({ rotation: e.rotate, position: r, silent: !0 }), this.group.add(n)
12348                            }
12349                        }, this)
12350                    }
12351                }
12352            },
12353            axisTickLabel: function() {
12354                var t = this.axisModel,
12355                    e = this.opt,
12356                    i = Gu(this, t, e);
12357                Ru(t, Wu(this, t, e), i)
12358            },
12359            axisName: function() {
12360                var t = this.opt,
12361                    e = this.axisModel,
12362                    i = T(t.axisName, e.get("name"));
12363                if (i) {
12364                    var n, o = e.get("nameLocation"),
12365                        r = t.nameDirection,
12366                        s = e.getModel("nameTextStyle"),
12367                        l = e.get("nameGap") || 0,
12368                        u = this.axisModel.axis.getExtent(),
12369                        h = u[0] > u[1] ? -1 : 1,
12370                        c = ["start" === o ? u[0] - h * l : "end" === o ? u[1] + h * l : (u[0] + u[1]) / 2, Vu(o) ? t.labelOffset + r * l : 0],
12371                        d = e.get("nameRotate");
12372                    null != d && (d = d * CD / 180);
12373                    var f;
12374                    Vu(o) ? n = PD(t.rotation, null != d ? d : t.rotation, r) : (n = Ou(t, o, d || 0, u), null != (f = t.axisNameAvailableWidth) && (f = Math.abs(f / Math.sin(n.rotation)), !isFinite(f) && (f = null)));
12375                    var p = s.getFont(),
12376                        g = e.get("nameTruncate", !0) || {},
12377                        m = g.ellipsis,
12378                        v = T(t.nameTruncateMaxWidth, g.maxWidth, f),
12379                        y = null != m && null != v ? eM(i, v, p, m, { minChar: 2, placeholder: g.placeholder }) : i,
12380                        x = e.get("tooltip", !0),
12381                        _ = e.mainType,
12382                        w = { componentType: _, name: i, $vars: ["name"] };
12383                    w[_ + "Index"] = e.componentIndex;
12384                    var b = new fS({ anid: "name", __fullText: i, __truncatedText: y, position: c, rotation: n.rotation, silent: Eu(e), z2: 1, tooltip: x && x.show ? a({ content: i, formatter: function() { return i }, formatterParams: w }, x) : null });
12385                    no(b.style, s, { text: y, textFont: p, textFill: s.getTextColor() || e.get("axisLine.lineStyle.color"), textAlign: n.textAlign, textVerticalAlign: n.textVerticalAlign }), e.get("triggerEvent") && (b.eventData = Nu(e), b.eventData.targetType = "axisName", b.eventData.name = i), this._dumbGroup.add(b), b.updateTransform(), this.group.add(b), b.decomposeTransform()
12386                }
12387            }
12388        },
12389        PD = LD.innerTextLayout = function(t, e, i) { var n, o, a = Oo(e - t); return Eo(a) ? (o = i >
12389 0 ? "top" : "bottom", n = "center") : Eo(a - CD) ? (o = i > 0 ? "bottom" : "top", n = "center") : (o = "middle", n = a > 0 && a < CD ? i > 0 ? "right" : "left" : i > 0 ? "left" : "right"), { rotation: a, textAlign: n, textVerticalAlign: o } },
12390        ND = d,
12391        OD = v,
12392        ED = ys({
12393            type: "axis",
12394            _axisPointer: null,
12395            axisPointerClass: null,
12396            render: function(t, e, i, n) { this.axisPointerClass && Yu(t), ED.superApply(this, "render", arguments), Qu(this, t, 0, i, 0, !0) },
12397            updateAxisPointer: function(t, e, i, n, o) { Qu(this, t, 0, i, 0, !1) },
12398            remove: function(t, e) {
12399                var i = this._axisPointer;
12400                i && i.remove(e), ED.superApply(this, "remove", arguments)
12401            },
12402            dispose: function(t, e) { th(this, e), ED.superApply(this, "dispose", arguments) }
12403        }),
12404        RD = [];
12405    ED.registerAxisPointerClass = function(t, e) { RD[t] = e }, ED.getAxisPointerClass = function(t) { return t && RD[t] };
12406    var zD = ["axisLine", "axisTickLabel", "axisName"],
12407        BD = ["splitArea", "splitLine"],
12408        VD = ED.extend({
12409            type: "cartesianAxis",
12410            axisPointerClass: "CartesianAxisPointer",
12411            render: function(t, e, i, n) {
12412                this.group.removeAll();
12413                var o = this._axisGroup;
12414                if (this._axisGroup = new sw, this.group.add(this._axisGroup), t.get("show")) {
12415                    var a = t.getCoordSysModel(),
12416                        r = eh(a, t),
12417                        s = new LD(t, r);
12418                    d(zD, s.add, s), this._axisGroup.add(s.getGroup()), d(BD, function(e) { t.get(e + ".show") && this["_" + e](t, a) }, this), yo(o, this._axisGroup, t), VD.superCall(this, "render", t, e, i, n)
12419                }
12420            },
12421            remove: function() { this._splitAreaColors = null },
12422            _splitLine: function(t, e) {
12423                var i = t.axis;
12424                if (!i.scale.isBlank()) {
12425                    var n = t.getModel("splitLine"),
12426                        o = n.getModel("lineStyle"),
12427                        a = o.get("color");
12428                    a = y(a) ? a : [a];
12429                    for (var s = e.coordinateSystem.getRect(), l = i.isHorizontal(), u = 0, h = i.getTicksCoords({ tickModel: n }), c = [], d = [], f = o.getLineStyle(), p = 0; p < h.length; p++) {
12430                        var g = i.toGlobalCoord(h[p].coord);
12431                        l ? (c[0] = g, c[1] = s.y, d[0] = g, d[1] = s.y + s.height) : (c[0] = s.x, c[1] = g, d[0] = s.x + s.width, d[1] = g);
12432                        var m = u++ % a.length,
12433                            v = h[p].tickValue;
12434                        this._axisGroup.add(new MS(Gn({ anid: null != v ? "line_" + h[p].tickValue : null, shape: { x1: c[0], y1: c[1], x2: d[0], y2: d[1] }, style: r({ stroke: a[m] }, f), silent: !0 })))
12435                    }
12436                }
12437            },
12438            _splitArea: function(t, e) {
12439                var i = t.axis;
12440                if (!i.scale.isBlank()) {
12441                    var n = t.getModel("splitArea"),
12442                        o = n.getModel("areaStyle"),
12443                        a = o.get("color"),
12444                        s = e.coordinateSystem.getRect(),
12445                        l = i.getTicksCoords({ tickModel: n, clamp: !0 });
12446                    if (l.length) {
12447                        var u = a.length,
12448                            h = this._splitAreaColors,
12449                            c = R(),
12450                            d = 0;
12451                        if (h)
12452                            for (m = 0; m < l.length; m++) { var f = h.get(l[m].tickValue); if (null != f) { d = (f + (u - 1) * m) % u; break } }
12453                        var p = i.toGlobalCoord(l[0].coord),
12454                            g = o.getAreaStyle();
12455                        a = y(a) ? a : [a];
12456                        for (var m = 1; m < l.length; m++) {
12457                            var v, x, _, w, b = i.toGlobalCoord(l[m].coord);
12458                            i.isHorizontal() ? (v = p, x = s.y, _ = b - v, w = s.height, p = v + _) : (v = s.x, x = p, _ = s.width, p = x + (w = b - x));
12459                            var S = l[m - 1].tickValue;
12460                            null != S && c.set(S, d), this._axisGroup.add(new SS({ anid: null != S ? "area_" + S : null, shape: { x: v, y: x, width: _, height: w }, style: r({ fill: a[d] }, g), silent: !0 })), d = (d + 1) % u
12461                        }
12462                        this._splitAreaColors = c
12463                    }
12464                }
12465            }
12466        });
12467    VD.extend({ type: "xAxis" }), VD.extend({ type: "yAxis" }), ys({ type: "grid", render: function(t, e) { this.group.removeAll(), t.get("show") && this.group.add(new SS({ shape: t.coordinateSystem.getRect(), style: r({ fill: t.get("backgroundColor") }, t.getItemStyle()), silent: !0, z2: -1 })) } }), us(function(t) { t.xAxis && t.yAxis && !t.grid && (t.grid = {}) }), ps(gD("line", "circle", "line")), fs(mD("line")), hs(LI.PROCESSOR.STATISTIC, function(t) {
12468        return {
12469            seriesType: t,
12470            modifyOutputEnd: !0,
12471            reset: function(t, e, i) {
12472                var n = t.getData(),
12473                    o = t.get("sampling"),
12474                    a = t.coordinateSystem;
12475                if ("cartesian2d" === a.type && o) {
12476                    var r = a.getBaseAxis(),
12477                        s = a.getOtherAxis(r),
12478                        l = r.getExtent(),
12479                        u = l[1] - l[0],
12480                        h = Math.round(n.count() / u);
12481                    if (h > 1) { var c; "string" == typeof o ? c = vD[o] : "function" == typeof o && (c = o), c && t.setData(n.downSample(n.mapDimension(s.dim), 1 / h, c, yD)) }
12482                }
12483            }
12484        }
12485    }("line"));
12486    var GD = KM.extend({
12487        type: "series.__base_bar__",
12488        getInitialData: function(t, e) { return Xs(this.getSource(), this) },
12489        getMarkerPosition: function(t) {
12490            var e = this.coordinateSystem;
12491            if (e) {
12492                var i = e.dataToPoint(e.clampData(t)),
12493                    n = this.getData(),
12494                    o = n.getLayout("offset"),
12495                    a = n.getLayout("size");
12496                return i[e.getBaseAxis().isHorizontal() ? 0 : 1] += o + a / 2, i
12497            }
12498            return [NaN, NaN]
12499        },
12500        defaultOption: { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: !0, barMinHeight: 0, barMinAngle: 0, large: !1, largeThreshold: 400, progressive: 3e3, progressiveChunkMode: "mod", itemStyle: {}, emphasis: {} }
12501    });
12502    GD.extend({
12503        type: "series.bar",
12504        dependencies: ["grid", "polar"],
12505        brushSelector: "rect",
12506        getProgressive: function() { return !!this.get("large") && this.get("progressive") },
12507        getProgressiveThreshold: function() {
12508            var t = this.get("progressiveThreshold"),
12509                e = this.get("largeThreshold");
12510            return e > t && (t = e), t
12511        }
12512    });
12513    var WD = sb([
12514            ["fill", "color"],
12515            ["stroke", "borderColor"],
12516            ["lineWidth", "borderWidth"],
12517            ["stroke", "barBorderColor"],
12518            ["lineWidth", "barBorderWidth"],
12519            ["opacity"],
12520            ["shadowBlur"],
12521            ["shadowOffsetX"],
12522            ["shadowOffsetY"],
12523            ["shadowColor"]
12524        ]),
12525        FD = {
12526            getBarItemStyle: function(t) {
12527                var e = WD(this, t);
12528                if (this.getBorderLineDash) {
12529                    var i = this.getBorderLineDash();
12530                    i && (e.lineDash = i)
12531                }
12532                return e
12533            }
12534        },
12535        HD = ["itemStyle", "barBorderWidth"];
12536    a(wo.prototype, FD), _s({
12537        type: "bar",
12538        render: function(t, e, i) { this._updateDrawMode(t); var n = t.get("coordinateSystem"); return "cartesian2d" !== n && "polar" !== n || (this._isLargeDraw ? this._renderLarge(t, e, i) : this._renderNormal(t, e, i)), this.group },
12539        incrementalPrepareRender: function(t, e, i) { this._clear(), this._updateDrawMode(t) },
12540        incrementalRender: function(t, e, i, n) { this._incrementalRenderLarge(t, e) },
12541        _updateDrawMode: function(t) {
12542            var e = t.pipelineContext.large;
12543            (null == this._isLargeDraw || e ^ this._isLargeDraw) && (this._isLargeDraw = e, this._clear())
12544        },
12545        _renderNormal: function(t, e, i) {
12546            var n, o = this.group,
12547                a = t.getData(),
12548                r = this._data,
12549                s = t.coordinateSystem,
12550                l = s.getBaseAxis();
12551            "cartesian2d" === s.type ? n = l.isHorizontal() : "polar" === s.type && (n = "angle" === l.dim);
12552            var u = t.isAnimationEnabled() ? t : null;
12553            a.diff(r).add(function(e) {
12554                if (a.hasValue(e)) {
12555                    var i = a.getItemModel(e),
12556                        r = UD[s.type](a, e, i),
12557                        l = ZD[s.type](a, e, i, r, n, u);
12558                    a.setItemGraphicEl(e, l), o.add(l), rh(l, a, e, i, r, t, n, "polar" === s.type)
12559                }
12560            }).update(function(e, i) {
12561                var l = r.getItemGraphicEl(i);
12562                if (a.hasValue(e)) {
12563                    var h = a.getItemModel(e),
12564                        c = UD[s.type](a, e, h);
12565                    l ? fo(l, { shape: c }, u, e) : l = ZD[s.type](a, e, h, c, n, u, !0), a.setItemGraphicEl(e, l), o.add(l), rh(l, a, e, h, c, t, n, "polar" === s.type)
12566                } else o.remove(l)
12567            }).remove(function(t) { var e = r.getItemGraphicEl(t); "cartesian2d" === s.type ? e && oh(t, u, e) : e && ah(t, u, e) }).execute(), this._data = a
12568        },
12569        _renderLarge: function(t, e, i) { this._clear(), lh(t, this.group) },
12570        _incrementalRenderLarge: function(t, e) { lh(e, this.group, !0) },
12571        dispose: B,
12572        remove: function(t) { this._clear(t) },
12573        _clear: function(t) {
12574            var e = this.group,
12575                i = this._data;
12576            t && t.get("animation") && i && !this._isLargeDraw ? i.eachItemGraphicEl(function(e) { "sector" === e.type ? ah(e.dataIndex, t, e) : oh(e.dataIndex, t, e) }) : e.removeAll(), this._data = null
12577        }
12578    });
12579    var ZD = {
12580            cartesian2d: function(t, e, i, n, o, r, s) {
12581                var l = new SS({ shape: a({}, n) });
12582                if (r) {
12583                    var u = l.shape,
12584                        h = o ? "height" : "width",
12585                        c = {};
12586                    u[h] = 0, c[h] = n[h], BS[s ? "updateProps" : "initProps"](l, { shape: c }, r, e)
12587                }
12588                return l
12589            },
12590            polar: function(t, e, i, n, o, a, s) {
12591                var l = n.startAngle < n.endAngle,
12592                    u = new vS({ shape: r({ clockwise: l }, n) });
12593                if (a) {
12594                    var h = u.shape,
12595                        c = o ? "r" : "endAngle",
12596                        d = {};
12597                    h[c] = o ? 0 : n.startAngle, d[c] = n[c], BS[s ? "updateProps" : "initProps"](u, { shape: d }, a, e)
12598                }
12599                return u
12600            }
12601        },
12602        UD = {
12603            cartesian2d: function(t, e, i) {
12604                var n = t.getItemLayout(e),
12605                    o = sh(i, n),
12606                    a = n.width > 0 ? 1 : -1,
12607                    r = n.height > 0 ? 1 : -1;
12608                return { x: n.x + a * o / 2, y: n.y + r * o / 2, width: n.width - a * o, height: n.height - r * o }
12609            },
12610            polar: function(t, e, i) { var n = t.getItemLayout(e); return { cx: n.cx, cy: n.cy, r0: n.r0, r: n.r, startAngle: n.startAngle, endAngle: n.endAngle } }
12611        },
12612        XD = In.extend({ type: "largeBar", shape: { points: [] }, buildPath: function(t, e) { for (var i = e.points, n = this.__startPoint, o = this.__valueIdx, a = 0; a < i.length; a += 2) n[this.__valueIdx] = i[a + o], t.moveTo(n[0], n[1]), t.lineTo(i[a], i[a + 1]) } });
12613    fs(v(cl, "bar")), fs(xT), ps({ seriesType: "bar", reset: function(t) { t.getData().setVisual("legendSymbol", "roundRect") } });
12614    var jD = function(t, e, i) {
12615            e = y(e) && { coordDimensions: e } || a({}, e);
12616            var n = t.getSource(),
12617                o = hT(n, e),
12618                r = new sT(o, t);
12619            return r.initData(n, i), r
12620        },
12621        YD = {
12622            updateSelectedMap: function(t) { this._targetList = y(t) ? t.slice() : [], this._selectTargetMap = p(t || [], function(t, e) { return t.set(e.name, e), t }, R()) },
12623            select: function(t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t); "single" === this.get("selectedMode") && this._selectTargetMap.each(function(t) { t.selected = !1 }), i && (i.selected = !0) },
12624            unSelect: function(t, e) {
12625                var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t);
12626                i && (i.selected = !1)
12627            },
12628            toggleSelected: function(t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t); if (null != i) return this[i.selected ? "unSelect" : "select"](t, e), i.selected },
12629            isSelected: function(t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t); return i && i.selected }
12630        },
12631        qD = xs({
12632            type: "series.pie",
12633            init: function(t) { qD.superApply(this, "init", arguments), this.legendDataProvider = function() { return this.getRawData() }
12633, this.updateSelectedMap(this._createSelectableList()), this._defaultLabelLine(t) },
12634            mergeOption: function(t) { qD.superCall(this, "mergeOption", t), this.updateSelectedMap(this._createSelectableList()) },
12635            getInitialData: function(t, e) { return jD(this, ["value"]) },
12636            _createSelectableList: function() { for (var t = this.getRawData(), e = t.mapDimension("value"), i = [], n = 0, o = t.count(); n < o; n++) i.push({ name: t.getName(n), value: t.get(e, n), selected: ir(t, n, "selected") }); return i },
12637            getDataParams: function(t) {
12638                var e = this.getData(),
12639                    i = qD.superCall(this, "getDataParams", t),
12640                    n = [];
12641                return e.each(e.mapDimension("value"), function(t) { n.push(t) }), i.percent = No(n, t, e.hostModel.get("percentPrecision")), i.$vars.push("percent"), i
12642            },
12643            _defaultLabelLine: function(t) {
12644                Mi(t, "labelLine", ["show"]);
12645                var e = t.labelLine,
12646                    i = t.emphasis.labelLine;
12647                e.show = e.show && t.label.show, i.show = i.show && t.emphasis.label.show
12648            },
12649            defaultOption: { zlevel: 0, z: 2, legendHoverLink: !0, hoverAnimation: !0, center: ["50%", "50%"], radius: [0, "75%"], clockwise: !0, startAngle: 90, minAngle: 0, selectedOffset: 10, hoverOffset: 10, avoidLabelOverlap: !0, percentPrecision: 2, stillShowZeroSum: !0, label: { rotate: !1, show: !0, position: "outer" }, labelLine: { show: !0, length: 15, length2: 15, smooth: !1, lineStyle: { width: 1, type: "solid" } }, itemStyle: { borderWidth: 1 }, animationType: "expansion", animationEasing: "cubicOut" }
12650        });
12651    h(qD, YD);
12652    var KD = dh.prototype;
12653    KD.updateData = function(t, e, i) {
12654        function n() { s.stopAnimation(!0), s.animateTo({ shape: { r: h.r + l.get("hoverOffset") } }, 300, "elasticOut") }
12655
12656        function o() { s.stopAnimation(!0), s.animateTo({ shape: { r: h.r } }, 300, "elasticOut") }
12657        var s = this.childAt(0),
12658            l = t.hostModel,
12659            u = t.getItemModel(e),
12660            h = t.getItemLayout(e),
12661            c = a({}, h);
12662        c.label = null, i ? (s.setShape(c), "scale" === l.getShallow("animationType") ? (s.shape.r = h.r0, po(s, { shape: { r: h.r } }, l, e)) : (s.shape.endAngle = h.startAngle, fo(s, { shape: { endAngle: h.endAngle } }, l, e))) : fo(s, { shape: c }, l, e);
12663        var d = t.getItemVisual(e, "color");
12664        s.useStyle(r({ lineJoin: "bevel", fill: d }, u.getModel("itemStyle").getItemStyle())), s.hoverStyle = u.getModel("emphasis.itemStyle").getItemStyle();
12665        var f = u.getShallow("cursor");
12666        f && s.attr("cursor", f), ch(this, t.getItemLayout(e), l.isSelected(null, e), l.get("selectedOffset"), l.get("animation")), s.off("mouseover").off("mouseout").off("emphasis").off("normal"), u.get("hoverAnimation") && l.isAnimationEnabled() && s.on("mouseover", n).on("mouseout", o).on("emphasis", n).on("normal", o), this._updateLabel(t, e), eo(this)
12667    }, KD._updateLabel = function(t, e) {
12668        var i = this.childAt(1),
12669            n = this.childAt(2),
12670            o = t.hostModel,
12671            a = t.getItemModel(e),
12672            r = t.getItemLayout(e).label,
12673            s = t.getItemVisual(e, "color");
12674        fo(i, {
12675            shape: {
12676                points: r.linePoints || [
12677                    [r.x, r.y],
12678                    [r.x, r.y],
12679                    [r.x, r.y]
12680                ]
12681            }
12682        }, o, e), fo(n, { style: { x: r.x, y: r.y } }, o, e), n.attr({ rotation: r.rotation, origin: [r.x, r.y], z2: 10 });
12683        var l = a.getModel("label"),
12684            u = a.getModel("emphasis.label"),
12685            h = a.getModel("labelLine"),
12686            c = a.getModel("emphasis.labelLine"),
12687            s = t.getItemVisual(e, "color");
12688        io(n.style, n.hoverStyle = {}, l, u, { labelFetcher: t.hostModel, labelDataIndex: e, defaultText: t.getName(e), autoColor: s, useInsideStyle: !!r.inside }, { textAlign: r.textAlign, textVerticalAlign: r.verticalAlign, opacity: t.getItemVisual(e, "opacity") }), n.ignore = n.normalIgnore = !l.get("show"), n.hoverIgnore = !u.get("show"), i.ignore = i.normalIgnore = !h.get("show"), i.hoverIgnore = !c.get("show"), i.setStyle({ stroke: s, opacity: t.getItemVisual(e, "opacity") }), i.setStyle(h.getModel("lineStyle").getLineStyle()), i.hoverStyle = c.getModel("lineStyle").getLineStyle();
12689        var d = h.get("smooth");
12690        d && !0 === d && (d = .4), i.setShape({ smooth: d })
12691    }, u(dh, sw);
12692    gr.extend({
12693        type: "pie",
12694        init: function() {
12695            var t = new sw;
12696            this._sectorGroup = t
12697        },
12698        render: function(t, e, i, n) {
12699            if (!n || n.from !== this.uid) {
12700                var o = t.getData(),
12701                    a = this._data,
12702                    r = this.group,
12703                    s = e.get("animation"),
12704                    l = !a,
12705                    u = t.get("animationType"),
12706                    h = v(hh, this.uid, t, s, i),
12707                    c = t.get("selectedMode");
12708                if (o.diff(a).add(function(t) {
12709                        var e = new dh(o, t);
12710                        l && "scale" !== u && e.eachChild(function(t) { t.stopAnimation(!0) }), c && e.on("click", h), o.setItemGraphicEl(t, e), r.add(e)
12711                    }).update(function(t, e) {
12712                        var i = a.getItemGraphicEl(e);
12713                        i.updateData(o, t), i.off("click"), c && i.on("click", h), r.add(i), o.setItemGraphicEl(t, i)
12714                    }).remove(function(t) {
12715                        var e = a.getItemGraphicEl(t);
12716                        r.remove(e)
12717                    }).execute(), s && l && o.count() > 0 && "scale" !== u) {
12718                    var d = o.getItemLayout(0),
12719                        f = Math.max(i.getWidth(), i.getHeight()) / 2,
12720                        p = m(r.removeClipPath, r);
12721                    r.setClipPath(this._createClipPath(d.cx, d.cy, f, d.startAngle, d.clockwise, p, t))
12722                }
12723                this._data = o
12724            }
12725        },
12726        dispose: function() {},
12727        _createClipPath: function(t, e, i, n, o, a, r) { var s = new vS({ shape: { cx: t, cy: e, r0: 0, r: i, startAngle: n, endAngle: n, clockwise: o } }); return po(s, { shape: { endAngle: n + (o ? 1 : -1) * Math.PI * 2 } }, r, a), s },
12728        containPoint: function(t, e) {
12729            var i = e.getData().getItemLayout(0);
12730            if (i) {
12731                var n = t[0] - i.cx,
12732                    o = t[1] - i.cy,
12733                    a = Math.sqrt(n * n + o * o);
12734                return a <= i.r && a >= i.r0
12735            }
12736        }
12737    });
12738    var $D = function(t, e) {
12739            d(e, function(e) {
12740                e.update = "updateView", cs(e, function(i, n) {
12741                    var o = {};
12742                    return n.eachComponent({ mainType: "series", subType: t, query: i }, function(t) {
12743                        t[e.method] && t[e.method](i.name, i.dataIndex);
12744                        var n = t.getData();
12745                        n.each(function(e) {
12746                            var i = n.getName(e);
12747                            o[i] = t.isSelected(i) || !1
12748                        })
12749                    }), { name: i.name, selected: o }
12750                })
12751            })
12752        },
12753        JD = function(t) {
12754            return {
12755                getTargetSeries: function(e) {
12756                    var i = {},
12757                        n = R();
12758                    return e.eachSeriesByType(t, function(t) { t.__paletteScope = i, n.set(t.uid, t) }), n
12759                },
12760                reset: function(t, e) {
12761                    var i = t.getRawData(),
12762                        n = {},
12763                        o = t.getData();
12764                    o.each(function(t) {
12765                        var e = o.getRawIndex(t);
12766                        n[e] = t
12767                    }), i.each(function(e) {
12768                        var a = n[e],
12769                            r = null != a && o.getItemVisual(a, "color", !0);
12770                        if (r) i.setItemVisual(e, "color", r);
12771                        else {
12772                            var s = i.getItemModel(e).get("itemStyle.color") || t.getColorFromPalette(i.getName(e) || e + "", t.__paletteScope, i.count());
12773                            i.setItemVisual(e, "color", s), null != a && o.setItemVisual(a, "color", s)
12774                        }
12775                    })
12776                }
12777            }
12778        },
12779        QD = function(t, e, i, n) {
12780            var o, a, r = t.getData(),
12781                s = [],
12782                l = !1;
12783            r.each(function(i) {
12784                var n, u, h, c, d = r.getItemLayout(i),
12785                    f = r.getItemModel(i),
12786                    p = f.getModel("label"),
12787                    g = p.get("position") || f.get("emphasis.label.position"),
12788                    m = f.getModel("labelLine"),
12789                    v = m.get("length"),
12790                    y = m.get("length2"),
12791                    x = (d.startAngle + d.endAngle) / 2,
12792                    _ = Math.cos(x),
12793                    w = Math.sin(x);
12794                o = d.cx, a = d.cy;
12795                var b = "inside" === g || "inner" === g;
12796                if ("center" === g) n = d.cx, u = d.cy, c = "center";
12797                else {
12798                    var S = (b ? (d.r + d.r0) / 2 * _ : d.r * _) + o,
12799                        M = (b ? (d.r + d.r0) / 2 * w : d.r * w) + a;
12800                    if (n = S + 3 * _, u = M + 3 * w, !b) {
12801                        var I = S + _ * (v + e - d.r),
12802                            T = M + w * (v + e - d.r),
12803                            D = I + (_ < 0 ? -1 : 1) * y,
12804                            A = T;
12805                        n = D + (_ < 0 ? -5 : 5), u = A, h = [
12806                            [S, M],
12807                            [I, T],
12808                            [D, A]
12809                        ]
12810                    }
12811                    c = b ? "center" : _ > 0 ? "left" : "right"
12812                }
12813                var C = p.getFont(),
12814                    L = p.get("rotate") ? _ < 0 ? -x + Math.PI : -x : 0,
12815                    k = me(t.getFormattedLabel(i, "normal") || r.getName(i), C, c, "top");
12816                l = !!L, d.label = { x: n, y: u, position: g, height: k.height, len: v, len2: y, linePoints: h, textAlign: c, verticalAlign: "middle", rotation: L, inside: b }, b || s.push(d.label)
12817            }), !l && t.get("avoidLabelOverlap") && ph(s, o, a, e, i, n)
12818        },
12819        tA = 2 * Math.PI,
12820        eA = Math.PI / 180,
12821        iA = function(t) {
12822            return {
12823                seriesType: t,
12824                reset: function(t, e) {
12825                    var i = e.findComponents({ mainType: "legend" });
12826                    if (i && i.length) {
12827                        var n = t.getData();
12828                        n.filterSelf(function(t) {
12829                            for (var e = n.getName(t), o = 0; o < i.length; o++)
12830                                if (!i[o].isSelected(e)) return !1;
12831                            return !0
12832                        })
12833                    }
12834                }
12835            }
12836        };
12837    $D("pie", [{ type: "pieToggleSelect", event: "pieselectchanged", method: "toggleSelected" }, { type: "pieSelect", event: "pieselected", method: "select" }, { type: "pieUnSelect", event: "pieunselected", method: "unSelect" }]), ps(JD("pie")), fs(v(function(t, e, i, n) {
12838        e.eachSeriesByType(t, function(t) {
12839            var e = t.getData(),
12840                n = e.mapDimension("value"),
12841                o = t.get("center"),
12842                a = t.get("radius");
12843            y(a) || (a = [0, a]), y(o) || (o = [o, o]);
12844            var r = i.getWidth(),
12845                s = i.getHeight(),
12846                l = Math.min(r, s),
12847                u = Do(o[0], r),
12848                h = Do(o[1], s),
12849                c = Do(a[0], l / 2),
12850                d = Do(a[1], l / 2),
12851                f = -t.get("startAngle") * eA,
12852                p = t.get("minAngle") * eA,
12853                g = 0;
12854            e.each(n, function(t) {!isNaN(t) && g++ });
12855            var m = e.getSum(n),
12856                v = Math.PI / (m || g) * 2,
12857                x = t.get("clockwise"),
12858                _ = t.get("roseType"),
12859                w = t.get("stillShowZeroSum"),
12860                b = e.getDataExtent(n);
12861            b[0] = 0;
12862            var S = tA,
12863                M = 0,
12864                I = f,
12865                T = x ? 1 : -1;
12866            if (e.each(n, function(t, i) {
12867                    var n;
12868                    if (isNaN(t)) e.setItemLayout(i, { angle: NaN, startAngle: NaN, endAngle: NaN, clockwise: x, cx: u, cy: h, r0: c, r: _ ? NaN : d });
12869                    else {
12870                        (n = "area" !== _ ? 0 === m && w ? v : t * v : tA / g) < p ? (n = p, S -= p) : M += t;
12871                        var o = I + T * n;
12872                        e.setItemLayout(i, { angle: n, startAngle: I, endAngle: o, clockwise: x, cx: u, cy: h, r0: c, r: _ ? To(t, b, [c, d]) : d }), I = o
12873                    }
12874                }), S < tA && g)
12875                if (S <= .001) {
12876                    var D = tA / g;
12877                    e.each(n, function(t, i) {
12878                        if (!isNaN(t)) {
12879                            var n = e.getItemLayout(i);
12880                            n.angle = D, n.startAngle = f + T * i * D, n.endAngle = f + T * (i + 1) * D
12881                        }
12882                    })
12883                } else v = S / M, I = f, e.each(n, function(t, i) {
12884                    if (!isNaN(t)) {
12885                        var n = e.getItemLayout(i),
12886                            o = n.angle === p ? p : t * v;
12887                        n.startAngle = I, n.endAngle = I + T * o, I += T * o
12888                    }
12889                });
12890            QD(t, d, r, s)
12891        })
12892    }, "pie")), hs(iA("pie")), KM.extend({ type: "series.scatter", dependencies: ["grid", "polar", "geo", "singleAxis", "calendar"], getInitialData: function(t, e) { return Xs(this.getSource(), this) }, brushSelector: "point", getProgressive: function() { var t = this.option.progressive; return null == t ? this.option.large ? 5e3 : this.get("progressive") : t }, getProgressiveThreshold: function() { var t = this.option.progressiveThreshold; return null == t ? this.option.large ? 1e4 : this.get("progressiveThreshold") : t }, defaultOption: { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, legendHoverLink: !0, hoverAnimation: !0, symbolSize: 10, large: !1, largeThreshold: 2e3, itemStyle: { opacity: .8 } } });
12893    var nA = En({
12894            shape: { points: null },
12895            symbolProxy: null,
12896            buildPath: function(t, e) {
12897                var i = e.points,
12898                    n = e.size,
12899                    o = this.symbolProxy,
12900                    a = o.shape;
12901                if (!((t.getContext ? t.getContext() : t) && n[0] < 4))
12902                    for (var r = 0; r < i.length;) {
12903                        var s = i[r++],
12904                            l = i[r++];
12905                        isNaN(s) || isNaN(l) || (a.x = s - n[0] / 2, a.y = l - n[1] / 2, a.width = n[0], a.height = n[1], o.buildPath(t, a, !0))
12906                    }
12907            },
12908            afterBrush: function(t) {
12909                var e = this.shape,
12910                    i = e.points,
12911                    n = e.size;
12912                if (n[0] < 4) {
12913                    this.setTransform(t);
12914                    for (var o = 0; o < i.length;) {
12915                        var a = i[o++],
12916                            r = i[o++];
12917                        isNaN(a) || isNaN(r) || t.fillRect(a - n[0] / 2, r - n[1] / 2, n[0], n[1])
12918                    }
12919                    this.restoreTransform(t)
12920                }
12921            },
12922            findDataIndex: function(t, e) {
12923                for (var i = this.shape, n = i.points, o = i.size, a = Math.max(o[0], 4), r = Math.max(o[1], 4), s = n.length / 2 - 1; s >= 0; s--) {
12924                    var l = 2 * s,
12925                        u = n[l] - a / 2,
12926                        h = n[l + 1] - r / 2;
12927                    if (t >= u && e >= h && t <= u + a && e <= h + r) return s
12928                }
12929                return -1
12930            }
12931        }),
12932        oA = gh.prototype;
12933    oA.isPersistent = function() { return !this._incremental }, oA.updateData = function(t) {
12934        this.group.removeAll();
12935        var e = new nA({ rectHover: !0, cursor: "default" });
12936        e.setShape({ points: t.getLayout("symbolPoints") }), this._setCommon(e, t), this.group.add(e), this._incremental = null
12937    }, oA.updateLayout = function(t) {
12938        if (!this._incremental) {
12939            var e = t.getLayout("symbolPoints");
12940            this.group.eachChild(function(t) {
12941                if (null != t.startIndex) {
12942                    var i = 2 * (t.endIndex - t.startIndex),
12943                        n = 4 * t.startIndex * 2;
12944                    e = new Float32Array(e.buffer, n, i)
12945                }
12946                t.setShape("points", e)
12947            })
12948        }
12949    }, oA.incrementalPrepareUpdate = function(t) { this.group.removeAll(), this._clearIncremental(), t.count() > 2e6 ? (this._incremental || (this._incremental = new On({ silent: !0 })), this.group.add(this._incremental)) : this._incremental = null }, oA.incrementalUpdate = function(t, e) {
12950        var i;
12951        this._incremental ? (i = new nA, this._incremental.addDisplayable(i, !0)) : ((i = new nA({ rectHover: !0, cursor: "default", startIndex: t.start, endIndex: t.end })).incremental = !0, this.group.add(i)), i.setShape({ points: e.getLayout("symbolPoints") }), this._setCommon(i, e, !!this._incremental)
12952    }, oA._setCommon = function(t, e, i) {
12953        var n = e.hostModel,
12954            o = e.getVisual("symbolSize");
12955        t.setShape("size", o instanceof Array ? o : [o, o]), t.symbolProxy = Tl(e.getVisual("symbol"), 0, 0, 0, 0), t.setColor = t.symbolProxy.setColor;
12956        var a = t.shape.size[0] < 4;
12957        t.useStyle(n.getModel("itemStyle").getItemStyle(a ? ["color", "shadowBlur", "shadowColor"] : ["color"]));
12958        var r = e.getVisual("color");
12959        r && t.setColor(r), i || (t.seriesIndex = n.seriesIndex, t.on("mousemove", function(e) {
12960            t.dataIndex = null;
12961            var i = t.findDataIndex(e.offsetX, e.offsetY);
12962            i >= 0 && (t.dataIndex = i + (t.startIndex || 0))
12963        }))
12964    }, oA.remove = function() { this._clearIncremental(), this._incremental = null, this.group.removeAll() }, oA._clearIncremental = function() {
12965        var t = this._incremental;
12966        t && t.clearDisplaybles()
12967    }, _s({
12968        type: "scatter",
12969        render: function(t, e, i) {
12970            var n = t.getData();
12971            this._updateSymbolDraw(n, t).updateData(n), this._finished = !0
12972        },
12973        incrementalPrepareRender: function(t, e, i) {
12974            var n = t.getData();
12975            this._updateSymbolDraw(n, t).incrementalPrepareUpdate(n), this._finished = !1
12976        },
12977        incrementalRender: function(t, e, i) { this._symbolDraw.incrementalUpdate(t, e.getData()), this._finished = t.end === e.getData().count() },
12978        updateTransform: function(t, e, i) {
12979            var n = t.getData();
12980            if (this.group.dirty(), !this._finished || n.count() > 1e4 || !this._symbolDraw.isPersistent()) return { update: !0 };
12981            var o = mD().reset(t);
12982            o.progress && o.progress({ start: 0, end: n.count() }, n), this._symbolDraw.updateLayout(n)
12983        },
12984        _updateSymbolDraw: function(t, e) {
12985            var i = this._symbolDraw,
12986                n = e.pipelineContext.large;
12987            return i && n === this._isLargeDraw || (i && i.remove(), i = this._symbolDraw = n ? new gh : new Ql, this._isLargeDraw = n, this.group.removeAll()), this.group.add(i.group), i
12988        },
12989        remove: function(t, e) { this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null },
12990        dispose: function() {}
12991    }), ps(gD("scatter", "circle")), fs(mD("scatter")), u(mh, qT), vh.prototype.getIndicatorAxes = function() { return this._indicatorAxes }, vh.prototype.dataToPoint = function(t, e) { var i = this._indicatorAxes[e]; return this.coordToPoint(i.dataToCoord(t), e) }, vh.prototype.coordToPoint = function(t, e) { var i = this._indicatorAxes[e].angle; return [this.cx + t * Math.cos(i), this.cy - t * Math.sin(i)] }, vh.prototype.pointToData = function(t) {
12992        var e = t[0] - this.cx,
12993            i = t[1] - this.cy,
12994            n = Math.sqrt(e * e + i * i);
12995        e /= n, i /= n;
12996        for (var o, a = Math.atan2(-i, e), r = 1 / 0, s = -1, l = 0; l < this._indicatorAxes.length; l++) {
12997            var u = this._indicatorAxes[l],
12998                h = Math.abs(a - u.angle);
12999            h < r && (o = u, s = l, r = h)
13000        }
13001        return [s, +(o && o.coodToData(n))]
13002    }, vh.prototype.resize = function(t, e) {
13003        var i = t.get("center"),
13004            n = e.getWidth(),
13005            o = e.getHeight(),
13006            a = Math.min(n, o) / 2;
13007        this.cx = Do(i[0], n), this.cy = Do(i[1], o), this.startAngle = t.get("startAngle") * Math.PI / 180, this.r = Do(t.get("radius"), a), d(this._indicatorAxes, function(t, e) {
13008            t.setExtent(0, this.r);
13009            var i = this.startAngle + e * Math.PI * 2 / this._indicatorAxes.length;
13010            i = Math.atan2(Math.sin(i), Math.cos(i)), t.angle = i
13011        }, this)
13012    }, vh.prototype.update = function(t, e) {
13013        function i(t) {
13014            var e = Math.pow(10, Math.floor(Math.log(t) / Math.LN10)),
13015                i = t / e;
13016            return 2 === i ? i = 5 : i *= 2, i * e
13017        }
13018        var n = this._indicatorAxes,
13019            o = this._model;
13020        d(n, function(t) { t.scale.setExtent(1 / 0, -1 / 0) }), t.eachSeriesByType("radar", function(e, i) {
13021            if ("radar" === e.get("coordinateSystem") && t.getComponent("radar", e.get("radarIndex")) === o) {
13022                var a = e.getData();
13023                d(n, function(t) { t.scale.unionExtentFromData(a, a.mapDimension(t.dim)) })
13024            }
13025        }, this);
13026        var a = o.get("splitNumber");
13027        d(n, function(t, e) {
13028            var n = ml(t.scale, t.model);
13029            yl(t.scale, t.model);
13030            var o = t.model,
13031                r = t.scale,
13032                s = o.getMin(),
13033                l = o.getMax(),
13034                u = r.getInterval();
13035            if (null != s && null != l) r.setExtent(+s, +l), r.setInterval((l - s) / a);
13036            else if (null != s) {
13037                var h;
13038                do { h = s + u * a, r.setExtent(+s, h), r.setInterval(u), u = i(u) } while (h < n[1] && isFinite(h) && isFinite(n[1]))
13039            } else if (null != l) {
13040                var c;
13041                do { c = l - u * a, r.setExtent(c, +l), r.setInterval(u), u = i(u) } while (c > n[0] && isFinite(c) && isFinite(n[0]))
13042            } else {
13043                r.getTicks().length - 1 > a && (u = i(u));
13044                var d = Math.round((n[0] + n[1]) / 2 / u) * u,
13045                    f = Math.round(a / 2);
13046                r.setExtent(Ao(d - f * u), Ao(d + (a - f) * u)), r.setInterval(u)
13047            }
13048        })
13049    }, vh.dimensions = [], vh.create = function(t, e) {
13050        var i = [];
13051        return t.eachComponent("radar", function(n) {
13052            var o = new vh(n, t, e);
13053            i.push(o), n.coordinateSystem = o
13054        }), t.eachSeriesByType("radar", function(t) { "radar" === t.get("coordinateSystem") && (t.coordinateSystem = i[t.get("radarIndex") || 0]) }), i
13055    }, Ca.register("radar", vh);
13056    var aA = bD.valueAxis,
13057        rA = (vs({
13058            type: "radar",
13059            optionUpdated: function() {
13060                var t = this.get("boundaryGap"),
13061                    e = this.get("splitNumber"),
13062                    o = this.get("scale"),
13063                    s = this.get("axisLine"),
13064                    l = this.get("axisTick"),
13065                    u = this.get("axisLabel"),
13066                    h = this.get("name"),
13067                    c = this.get("name.show"),
13068                    d = this.get("name.formatter"),
13069                    p = this.get("nameGap"),
13070                    g = this.get("triggerEvent"),
13071                    m = f(this.get("indicator") || [], function(f) {
13072                        null != f.max && f.max > 0 && !f.min ? f.min = 0 : null != f.min && f.min < 0 && !f.max && (f.max = 0);
13073                        var m = h;
13074                        if (null != f.color && (m = r({ color: f.color }, h)), f = n(i(f), { boundaryGap: t, splitNumber: e, scale: o, axisLine: s, axisTick: l, axisLabel: u, name: f.text, nameLocation: "end", nameGap: p, nameTextStyle: m, triggerEvent: g }, !1), c || (f.name = ""), "string" == typeof d) {
13075                            var v = f.name;
13076                            f.name = d.replace("{value}", null != v ? v : "")
13077                        } else "function" == typeof d && (f.name = d(f.name, f));
13078                        var y = a(new wo(f, null, this.ecModel), ET);
13079                        return y.mainType = "radar", y.componentIndex = this.componentIndex, y
13080                    }, this);
13081                this.getIndicatorModels = function() { return m }
13082            },
13083            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: n({ lineStyle: { color: "#bbb" } }, aA.axisLine), axisLabel: yh(aA.axisLabel, !1), axisTick: yh(aA.axisTick, !1), splitLine: yh(aA.splitLine, !0), splitArea: yh(aA.splitArea, !0), indicator: [] }
13084        }), ["axisLine", "axisTickLabel", "axisName"]);
13085    ys({
13086        type: "radar",
13087        render: function(t, e, i) { this.group.removeAll(), this._buildAxes(t), this._buildSplitLineAndArea(t) },
13088        _buildAxes: function(t) {
13089            var e = t.coordinateSystem;
13090            d(f(e.getIndicatorAxes(), function(t) { return new LD(t.model, { position: [e.cx, e.cy], rotation: t.angle, labelDirection: -1, tickDirection: -1, nameDirection: 1 }) }), function(t) { d(rA, t.add, t), this.group.add(t.getGroup()) }, this)
13091        },
13092        _buildSplitLineAndArea: function(t) {
13093            function e(t, e, i) { var n = i % e.length; return t[n] = t[n] || [], n }
13094            var i = t.coordinateSystem,
13095                n = i.getIndicatorAxes();
13096            if (n.length) {
13097                var o = t.get("shape"),
13098                    a = t.getModel("splitLine"),
13099                    s = t.getModel("splitArea"),
13100                    l = a.getModel("lineStyle"),
13101                    u = s.getModel("areaStyle"),
13102                    h = a.get("show"),
13103                    c = s.get("show"),
13104                    p = l.get("color"),
13105                    g = u.get("color");
13106                p = y(p) ? p : [p], g = y(g) ? g : [g];
13107                var m = [],
13108                    v = [];
13109                if ("circle" === o)
13110                    for (var x = n[0].getTicksCoords(), _ = i.cx, w = i.cy, b = 0; b < x.length; b++) h && m[A = e(m, p, b)].push(new pS({ shape: { cx: _, cy: w, r: x[b].coord } })), c && b < x.length - 1 && v[A = e(v, g, b)].push(new yS({ shape: { cx: _, cy: w, r0: x[b].coord, r: x[b + 1].coord } }));
13111                else
13112                    for (var S, M = f(n, function(t, e) { var n = t.getTicksCoords(); return S = null == S ? n.length - 1 : Math.min(n.length - 1, S), f(n, function(t) { return i.coordToPoint(t.coord, e) }) }), I = [], b = 0; b <= S; b++) {
13113                        for (var T = [], D = 0; D < n.length; D++) T.push(M[D][b]);
13114                        if (T[0] && T.push(T[0].slice()), h && m[A = e(m, p, b)].push(new bS({ shape: { points: T } })), c && I) {
13115                            var A = e(v, g, b - 1);
13116                            v[A].push(new wS({ shape: { points: T.concat(I
13116) } }))
13117                        }
13118                        I = T.slice().reverse()
13119                    }
13120                var C = l.getLineStyle(),
13121                    L = u.getAreaStyle();
13122                d(v, function(t, e) { this.group.add(zS(t, { style: r({ stroke: "none", fill: g[e % g.length] }, L), silent: !0 })) }, this), d(m, function(t, e) { this.group.add(zS(t, { style: r({ fill: "none", stroke: p[e % p.length] }, C), silent: !0 })) }, this)
13123            }
13124        }
13125    });
13126    var sA = KM.extend({
13127        type: "series.radar",
13128        dependencies: ["radar"],
13129        init: function(t) { sA.superApply(this, "init", arguments), this.legendDataProvider = function() { return this.getRawData() } },
13130        getInitialData: function(t, e) { return jD(this, { generateCoord: "indicator_", generateCoordCount: 1 / 0 }) },
13131        formatTooltip: function(t) {
13132            var e = this.getData(),
13133                i = this.coordinateSystem.getIndicatorAxes(),
13134                n = this.getData().getName(t);
13135            return Zo("" === n ? this.name : n) + "<br/>" + f(i, function(i, n) { var o = e.get(e.mapDimension(i.dim), t); return Zo(i.name + " : " + o) }).join("<br />")
13136        },
13137        defaultOption: { zlevel: 0, z: 2, coordinateSystem: "radar", legendHoverLink: !0, radarIndex: 0, lineStyle: { width: 2, type: "solid" }, label: { position: "top" }, symbol: "emptyCircle", symbolSize: 4 }
13138    });
13139    _s({
13140        type: "radar",
13141        render: function(t, e, n) {
13142            function o(t, e) {
13143                var i = t.getItemVisual(e, "symbol") || "circle",
13144                    n = t.getItemVisual(e, "color");
13145                if ("none" !== i) {
13146                    var o = xh(t.getItemVisual(e, "symbolSize")),
13147                        a = Tl(i, -1, -1, 2, 2, n);
13148                    return a.attr({ style: { strokeNoScale: !0 }, z2: 100, scale: [o[0] / 2, o[1] / 2] }), a
13149                }
13150            }
13151
13152            function a(e, i, n, a, r, s) {
13153                n.removeAll();
13154                for (var l = 0; l < i.length - 1; l++) {
13155                    var u = o(a, r);
13156                    u && (u.__dimIdx = l, e[l] ? (u.attr("position", e[l]), BS[s ? "initProps" : "updateProps"](u, { position: i[l] }, t, r)) : u.attr("position", i[l]), n.add(u))
13157                }
13158            }
13159
13160            function s(t) { return f(t, function(t) { return [l.cx, l.cy] }) }
13161            var l = t.coordinateSystem,
13162                u = this.group,
13163                h = t.getData(),
13164                c = this._data;
13165            h.diff(c).add(function(e) {
13166                var i = h.getItemLayout(e);
13167                if (i) {
13168                    var n = new wS,
13169                        o = new bS,
13170                        r = { shape: { points: i } };
13171                    n.shape.points = s(i), o.shape.points = s(i), po(n, r, t, e), po(o, r, t, e);
13172                    var l = new sw,
13173                        u = new sw;
13174                    l.add(o), l.add(n), l.add(u), a(o.shape.points, i, u, h, e, !0), h.setItemGraphicEl(e, l)
13175                }
13176            }).update(function(e, i) {
13177                var n = c.getItemGraphicEl(i),
13178                    o = n.childAt(0),
13179                    r = n.childAt(1),
13180                    s = n.childAt(2),
13181                    l = { shape: { points: h.getItemLayout(e) } };
13182                l.shape.points && (a(o.shape.points, l.shape.points, s, h, e, !1), fo(o, l, t), fo(r, l, t), h.setItemGraphicEl(e, n))
13183            }).remove(function(t) { u.remove(c.getItemGraphicEl(t)) }).execute(), h.eachItemGraphicEl(function(t, e) {
13184                function n() { l.attr("ignore", m) }
13185
13186                function o() { l.attr("ignore", g) }
13187                var a = h.getItemModel(e),
13188                    s = t.childAt(0),
13189                    l = t.childAt(1),
13190                    c = t.childAt(2),
13191                    d = h.getItemVisual(e, "color");
13192                u.add(t), s.useStyle(r(a.getModel("lineStyle").getLineStyle(), { fill: "none", stroke: d })), s.hoverStyle = a.getModel("emphasis.lineStyle").getLineStyle();
13193                var f = a.getModel("areaStyle"),
13194                    p = a.getModel("emphasis.areaStyle"),
13195                    g = f.isEmpty() && f.parentModel.isEmpty(),
13196                    m = p.isEmpty() && p.parentModel.isEmpty();
13197                m = m && g, l.ignore = g, l.useStyle(r(f.getAreaStyle(), { fill: d, opacity: .7 })), l.hoverStyle = p.getAreaStyle();
13198                var v = a.getModel("itemStyle").getItemStyle(["color"]),
13199                    y = a.getModel("emphasis.itemStyle").getItemStyle(),
13200                    x = a.getModel("label"),
13201                    _ = a.getModel("emphasis.label");
13202                c.eachChild(function(t) { t.setStyle(v), t.hoverStyle = i(y), io(t.style, t.hoverStyle, x, _, { labelFetcher: h.hostModel, labelDataIndex: e, labelDimIndex: t.__dimIdx, defaultText: h.get(h.dimensions[t.__dimIdx], e), autoColor: d, isRectText: !0 }) }), t.off("mouseover").off("mouseout").off("normal").off("emphasis"), t.on("emphasis", n).on("mouseover", n).on("normal", o).on("mouseout", o), eo(t)
13203            }), this._data = h
13204        },
13205        remove: function() { this.group.removeAll(), this._data = null },
13206        dispose: function() {}
13207    });
13208    ps(JD("radar")), ps(gD("radar", "circle")), fs(function(t) {
13209        t.eachSeriesByType("radar", function(t) {
13210            var e = t.getData(),
13211                i = [],
13212                n = t.coordinateSystem;
13213            if (n) {
13214                for (var o = n.getIndicatorAxes(), a = 0; a < o.length; a++) e.each(e.mapDimension(o[a].dim), function(t, e) { i[e] = i[e] || [], i[e][a] = n.dataToPoint(t, a) });
13215                e.each(function(t) { i[t][0] && i[t].push(i[t][0].slice()), e.setItemLayout(t, i[t]) })
13216            }
13217        })
13218    }), hs(iA("radar")), us(function(t) {
13219        var e = t.polar;
13220        if (e) {
13221            y(e) || (e = [e]);
13222            var i = [];
13223            d(e, function(e, n) { e.indicator ? (e.type && !e.shape && (e.shape = e.type), t.radar = t.radar || [], y(t.radar) || (t.radar = [t.radar]), t.radar.push(e)) : i.push(e) }), t.polar = i
13224        }
13225        d(t.series, function(t) { t && "radar" === t.type && t.polarIndex && (t.radarIndex = t.polarIndex) })
13226    });
13227    var lA = Q;
13228    h(_h, E_), wh.prototype = {
13229        constructor: wh,
13230        type: "view",
13231        dimensions: ["x", "y"],
13232        setBoundingRect: function(t, e, i, n) { return this._rect = new $t(t, e, i, n), this._rect },
13233        getBoundingRect: function() { return this._rect },
13234        setViewRect: function(t, e, i, n) { this.transformTo(t, e, i, n), this._viewRect = new $t(t, e, i, n) },
13235        transformTo: function(t, e, i, n) {
13236            var o = this.getBoundingRect(),
13237                a = this._rawTransformable;
13238            a.transform = o.calculateTransform(new $t(t, e, i, n)), a.decomposeTransform(), this._updateTransform()
13239        },
13240        setCenter: function(t) { t && (this._center = t, this._updateCenterAndZoom()) },
13241        setZoom: function(t) {
13242            t = t || 1;
13243            var e = this.zoomLimit;
13244            e && (null != e.max && (t = Math.min(e.max, t)), null != e.min && (t = Math.max(e.min, t))), this._zoom = t, this._updateCenterAndZoom()
13245        },
13246        getDefaultCenter: function() { var t = this.getBoundingRect(); return [t.x + t.width / 2, t.y + t.height / 2] },
13247        getCenter: function() { return this._center || this.getDefaultCenter() },
13248        getZoom: function() { return this._zoom || 1 },
13249        getRoamTransform: function() { return this._roamTransformable.getLocalTransform() },
13250        _updateCenterAndZoom: function() {
13251            var t = this._rawTransformable.getLocalTransform(),
13252                e = this._roamTransformable,
13253                i = this.getDefaultCenter(),
13254                n = this.getCenter(),
13255                o = this.getZoom();
13256            n = Q([], n, t), i = Q([], i, t), e.origin = n, e.position = [i[0] - n[0], i[1] - n[1]], e.scale = [o, o], this._updateTransform()
13257        },
13258        _updateTransform: function() {
13259            var t = this._roamTransformable,
13260                e = this._rawTransformable;
13261            e.parent = t, t.updateTransform(), e.updateTransform(), ut(this.transform || (this.transform = []), e.transform || st()), this._rawTransform = e.getLocalTransform(), this.invTransform = this.invTransform || [], pt(this.invTransform, this.transform), this.decomposeTransform()
13262        },
13263        getViewRect: function() { return this._viewRect },
13264        getViewRectAfterRoam: function() { var t = this.getBoundingRect().clone(); return t.applyTransform(this.transform), t },
13265        dataToPoint: function(t, e, i) { var n = e ? this._rawTransform : this.transform; return i = i || [], n ? lA(i, t, n) : G(i, t) },
13266        pointToData: function(t) { var e = this.invTransform; return e ? lA([], t, e) : [t[0], t[1]] },
13267        convertToPixel: v(bh, "dataToPoint"),
13268        convertFromPixel: v(bh, "pointToData"),
13269        containPoint: function(t) { return this.getViewRectAfterRoam().contain(t[0], t[1]) }
13270    }, h(wh, E_);
13271    for (var uA = [126, 25], hA = [
13272            [
13273                [0, 3.5],
13274                [7, 11.2],
13275                [15, 11.9],
13276                [30, 7],
13277                [42, .7],
13278                [52, .7],
13279                [56, 7.7],
13280                [59, .7],
13281                [64, .7],
13282                [64, 0],
13283                [5, 0],
13284                [0, 3.5]
13285            ],
13286            [
13287                [13, 16.1],
13288                [19, 14.7],
13289                [16, 21.7],
13290                [11, 23.1],
13291                [13, 16.1]
13292            ],
13293            [
13294                [12, 32.2],
13295                [14, 38.5],
13296                [15, 38.5],
13297                [13, 32.2],
13298                [12, 32.2]
13299            ],
13300            [
13301                [16, 47.6],
13302                [12, 53.2],
13303                [13, 53.2],
13304                [18, 47.6],
13305                [16, 47.6]
13306            ],
13307            [
13308                [6, 64.4],
13309                [8, 70],
13310                [9, 70],
13311                [8, 64.4],
13312                [6, 64.4]
13313            ],
13314            [
13315                [23, 82.6],
13316                [29, 79.8],
13317                [30, 79.8],
13318                [25, 82.6],
13319                [23, 82.6]
13320            ],
13321            [
13322                [37, 70.7],
13323                [43, 62.3],
13324                [44, 62.3],
13325                [39, 70.7],
13326                [37, 70.7]
13327            ],
13328            [
13329                [48, 51.1],
13330                [51, 45.5],
13331                [53, 45.5],
13332                [50, 51.1],
13333                [48, 51.1]
13334            ],
13335            [
13336                [51, 35],
13337                [51, 28.7],
13338                [53, 28.7],
13339                [53, 35],
13340                [51, 35]
13341            ],
13342            [
13343                [52, 22.4],
13344                [55, 17.5],
13345                [56, 17.5],
13346                [53, 22.4],
13347                [52, 22.4]
13348            ],
13349            [
13350                [58, 12.6],
13351                [62, 7],
13352                [63, 7],
13353                [60, 12.6],
13354                [58, 12.6]
13355            ],
13356            [
13357                [0, 3.5],
13358                [0, 93.1],
13359                [64, 93.1],
13360                [64, 0],
13361                [63, 0],
13362                [63, 92.4],
13363                [1, 92.4],
13364                [1, 3.5],
13365                [0, 3.5]
13366            ]
13367        ], cA = 0; cA < hA.length; cA++)
13368        for (var dA = 0; dA < hA[cA].length; dA++) hA[cA][dA][0] /= 10.5, hA[cA][dA][1] /= -14, hA[cA][dA][0] += uA[0], hA[cA][dA][1] += uA[1];
13369    var fA = { "南海诸岛": [32, 80], "广东": [0, -10], "香港": [10, 5], "澳门": [-10, 10], "天津": [5, 5] },
13370        pA = { Russia: [100, 60], "United States": [-99, 38], "United States of America": [-99, 38] },
13371        gA = [
13372            [
13373                [123.45165252685547, 25.73527164402261],
13374                [123.49731445312499, 25.73527164402261],
13375                [123.49731445312499, 25.750734064600884],
13376                [123.45165252685547, 25.750734064600884],
13377                [123.45165252685547, 25.73527164402261]
13378            ]
13379        ],
13380        mA = [function(t) { "china" === t.map && t.regions.push(new Cl("南海诸岛", f(hA, function(t) { return { type: "polygon", exterior: t } }), uA)) }, function(t) {
13381            d(t.regions, function(t) {
13382                var e = fA[t.name];
13383                if (e) {
13384                    var i = t.center;
13385                    i[0] += e[0] / 10.5, i[1] += -e[1] / 14
13386                }
13387            })
13388        }, function(t) {
13389            d(t.regions, function(t) {
13390                var e = pA[t.name];
13391                if (e) {
13392                    var i = t.center;
13393                    i[0] = e[0], i[1] = e[1]
13394                }
13395            })
13396        }, function(t) {
13397            if ("china" === t.map)
13398                for (var e = 0, i = t.regions.length; e < i; ++e) "台湾" === t.regions[e].name && t.regions[e].geometries.push({ type: "polygon", exterior: gA[0] })
13399        }];
13400    Sh.prototype = {
13401        constructor: Sh,
13402        type: "geo",
13403        dimensions: ["lng", "lat"],
13404        containCoord: function(t) {
13405            for (var e = this.regions, i = 0; i < e.length; i++)
13406                if (e[i].contain(t)) return !0;
13407            return !1
13408        },
13409        loadGeoJson: function(t, e, i) {
13410            try { this.regions = t ? XT(t) : [] } catch (t) { throw "Invalid geoJson format\n" + t.message }
13411            e = e || {}, i = i || {};
13412            for (var n = this.regions, o = R(), a = 0; a < n.length; a++) {
13413                var r = n[a].name;
13414                r = i.hasOwnProperty(r) ? i[r] : r, n[a].name = r, o.set(r, n[a]), this.addGeoCoord(r, n[a].center);
13415                var s = e[r];
13416                s && n[a].transformTo(s.left, s.top, s.width, s.height)
13417            }
13418            this._regionsMap = o, this._rect = null, d(mA, function(t) { t(this) }, this)
13419        },
13420        transformTo: function(t, e, i, n) {
13421            var o = this.getBoundingRect();
13422            (o = o.clone()).y = -o.y - o.height;
13423            var a = this._rawTransformable;
13424            a.transform = o.calculateTransform(new $t(t, e, i, n)), a.decomposeTransform();
13425            var r = a.scale;
13426            r[1] = -r[1], a.updateTransform(), this._updateTransform()
13427        },
13428        getRegion: function(t) { return this._regionsMap.get(t) },
13429        getRegionByCoord: function(t) {
13430            for (var e = this.regions, i = 0; i < e.length; i++)
13431                if (e[i].contain(t)) return e[i]
13432        },
13433        addGeoCoord: function(t, e) { this._nameCoordMap.set(t, e) },
13434        getGeoCoord: function(t) { return this._nameCoordMap.get(t) },
13435        getBoundingRect: function() {
13436            if (this._rect) return this._rect;
13437            for (var t, e = this.regions, i = 0; i < e.length; i++) {
13438                var n = e[i].getBoundingRect();
13439                (t = t || n.clone()).union(n)
13440            }
13441            return this._rect = t || new $t(0, 0, 0, 0)
13442        },
13443        dataToPoint: function(t, e, i) { if ("string" == typeof t && (t = this.getGeoCoord(t)), t) return wh.prototype.dataToPoint.call(this, t, e, i) },
13444        convertToPixel: v(Mh, "dataToPoint"),
13445        convertFromPixel: v(Mh, "pointToData")
13446    }, h(Sh, wh);
13447    var vA = {
13448        dimensions: Sh.prototype.dimensions,
13449        create: function(t, e) {
13450            var i = [];
13451            t.eachComponent("geo", function(t, n) {
13452                var o = t.get("map"),
13453                    a = ws(o),
13454                    r = new Sh(o + n, o, a && a.geoJson, a && a.specialAreas, t.get("nameMap"));
13455                r.zoomLimit = t.get("scaleLimit"), i.push(r), Th(r, t), t.coordinateSystem = r, r.model = t, r.resize = Ih, r.resize(t, e)
13456            }), t.eachSeries(function(t) {
13457                if ("geo" === t.get("coordinateSystem")) {
13458                    var e = t.get("geoIndex") || 0;
13459                    t.coordinateSystem = i[e]
13460                }
13461            });
13462            var n = {};
13463            return t.eachSeriesByType("map", function(t) {
13464                if (!t.getHostGeoModel()) {
13465                    var e = t.getMapType();
13466                    n[e] = n[e] || [], n[e].push(t)
13467                }
13468            }), d(n, function(t, n) {
13469                var a = ws(n),
13470                    r = f(t, function(t) { return t.get("nameMap") }),
13471                    s = new Sh(n, n, a && a.geoJson, a && a.specialAreas, o(r));
13472                s.zoomLimit = T.apply(null, f(t, function(t) { return t.get("scaleLimit") })), i.push(s), s.resize = Ih, s.resize(t[0], e), d(t, function(t) { t.coordinateSystem = s, Th(s, t) })
13473            }), i
13474        },
13475        getFilledRegions: function(t, e, i) {
13476            var n = (t || []).slice();
13477            i = i || {};
13478            var o = ws(e),
13479                a = o && o.geoJson;
13480            if (!a) return t;
13481            for (var r = R(), s = a.features, l = 0; l < n.length; l++) r.set(n[l].name, n[l]);
13482            for (l = 0; l < s.length; l++) {
13483                var u = s[l].properties.name;
13484                r.get(u) || (i.hasOwnProperty(u) && (u = i[u]), n.push({ name: u }))
13485            }
13486            return n
13487        }
13488    };
13489    ds("geo", vA);
13490    var yA = KM.extend({
13491        type: "series.map",
13492        dependencies: ["geo"],
13493        layoutMode: "box",
13494        needsDrawMap: !1,
13495        seriesGroup: [],
13496        init: function(t) { yA.superApply(this, "init", arguments), this.updateSelectedMap(this._createSelectableList()) },
13497        getInitialData: function(t) { return jD(this, ["value"]) },
13498        mergeOption: function(t) { yA.superApply(this, "mergeOption", arguments), this.updateSelectedMap(this._createSelectableList()) },
13499        _createSelectableList: function() { for (var t = this.getRawData(), e = t.mapDimension("value"), i = [], n = 0, o = t.count(); n < o; n++) i.push({ name: t.getName(n), value: t.get(e, n), selected: ir(t, n, "selected") }); return i = vA.getFilledRegions(i, this.getMapType(), this.option.nameMap) },
13500        getHostGeoModel: function() { var t = this.option.geoIndex; return null != t ? this.dependentModels.geo[t] : null },
13501        getMapType: function() { return (this.getHostGeoModel() || this).option.map },
13502        _fillOption: function(t, e) {},
13503        getRawValue: function(t) { var e = this.getData(); return e.get(e.mapDimension("value"), t) },
13504        getRegionModel: function(t) { var e = this.getData(); return e.getItemModel(e.indexOfName(t)) },
13505        formatTooltip: function(t) {
13506            for (var e = this.getData(), i = Fo(this.getRawValue(t)), n = e.getName(t), o = this.seriesGroup, a = [], r = 0; r < o.length; r++) {
13507                var s = o[r].originalData.indexOfName(n),
13508                    l = e.mapDimension("value");
13509                isNaN(o[r].originalData.get(l, s)) || a.push(Zo(o[r].name))
13510            }
13511            return a.join(", ") + "<br />" + Zo(n + " : " + i)
13512        },
13513        getTooltipPosition: function(t) {
13514            if (null != t) {
13515                var e = this.getData().getName(t),
13516                    i = this.coordinateSystem,
13517                    n = i.getRegion(e);
13518                return n && i.dataToPoint(n.center)
13519            }
13520        },
13521        setZoom: function(t) { this.option.zoom = t },
13522        setCenter: function(t) { this.option.center = t },
13523        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)" } } }
13524    });
13525    h(yA, YD);
13526    var xA = "\0_ec_interaction_mutex";
13527    cs({ type: "takeGlobalCursor", event: "globalCursorTaken", update: "update" }, function() {}), h(kh, D_);
13528    var _A = { axisPointer: 1, tooltip: 1, brush: 1 };
13529    Uh.prototype = {
13530        constructor: Uh,
13531        draw: function(t, e, i, n, o) {
13532            var a = "geo" === t.mainType,
13533                r = t.getData && t.getData();
13534            a && e.eachComponent({ mainType: "series", subType: "map" }, function(e) { r || e.getHostGeoModel() !== t || (r = e.getData()) });
13535            var s = t.coordinateSystem,
13536                l = this.group,
13537                u = s.scale,
13538                h = { position: s.position, scale: u };
13539            !l.childAt(0) || o ? l.attr(h) : fo(l, h, t), l.removeAll();
13540            var c = ["itemStyle"],
13541                f = ["emphasis", "itemStyle"],
13542                p = ["label"],
13543                g = ["emphasis", "label"],
13544                m = R();
13545            d(s.regions, function(e) {
13546                var i = m.get(e.name) || m.set(e.name, new sw),
13547                    n = new AS({ shape: { paths: [] } });
13548                i.add(n);
13549                var o, s = (C = t.getRegionModel(e.name) || t).getModel(c),
13550                    h = C.getModel(f),
13551                    v = Fh(s),
13552                    y = Fh(h),
13553                    x = C.getModel(p),
13554                    _ = C.getModel(g);
13555                if (r) {
13556                    o = r.indexOfName(e.name);
13557                    var w = r.getItemVisual(o, "color", !0);
13558                    w && (v.fill = w)
13559                }
13560                d(e.geometries, function(t) { if ("polygon" === t.type) { n.shape.paths.push(new wS({ shape: { points: t.exterior } })); for (var e = 0; e < (t.interiors ? t.interiors.length : 0); e++) n.shape.paths.push(new wS({ shape: { points: t.interiors[e] } })) } }), n.setStyle(v), n.style.strokeNoScale = !0, n.culling = !0;
13561                var b = x.get("show"),
13562                    S = _.get("show"),
13563                    M = r && isNaN(r.get(r.mapDimension("value"), o)),
13564                    I = r && r.getItemLayout(o);
13565                if (a || M && (b || S) || I && I.showLabel) {
13566                    var T, D = a ? e.name : o;
13567                    (!r || o >= 0) && (T = t);
13568                    var A = new fS({ position: e.center.slice(), scale: [1 / u[0], 1 / u[1]], z2: 10, silent: !0 });
13569                    io(A.style, A.hoverStyle = {}, x, _, { labelFetcher: T, labelDataIndex: D, defaultText: e.name, useInsideStyle: !1 }, { textAlign: "center", textVerticalAlign: "middle" }), i.add(A)
13570                }
13571                if (r) r.setItemGraphicEl(o, i);
13572                else {
13573                    var C = t.getRegionModel(e.name);
13574                    n.eventData = { componentType: "geo", geoIndex: t.componentIndex, name: e.name, region: C && C.option || {} }
13575                }(i.__regions || (i.__regions = [])).push(e), eo(i, y, { hoverSilentOnTouch: !!t.get("selectedMode") }), l.add(i)
13576            }), this._updateController(t, e, i), Hh(this, t, l, i, n), Zh(t, l)
13577        },
13578        remove: function() { this.group.removeAll(), this._controller.dispose(), this._controllerHost = {} },
13579        _updateController: function(t, e, i) {
13580            function n() { var e = { type: "geoRoam", componentType: l }; return e[l + "Id"] = t.id, e }
13581            var o = t.coordinateSystem,
13582                r = this._controller,
13583                s = this._controllerHost;
13584            s.zoomLimit = t.get("scaleLimit"), s.zoom = o.getZoom(), r.enable(t.get("roam") || !1);
13585            var l = t.mainType;
13586            r.off("pan").on("pan", function(t, e) { this._mouseDownFlag = !1, Vh(s, t, e), i.dispatchAction(a(n(), { dx: t, dy: e })) }, this), r.off("zoom").on("zoom", function(t, e, o) {
13587                if (this._mouseDownFlag = !1, Gh(s, t, e, o), i.dispatchAction(a(n(), { zoom: t, originX: e, originY: o })), this._updateGroup) {
13588                    var r = this.group,
13589                        l = r.scale;
13590                    r.traverse(function(t) { "text" === t.type && t.attr("scale", [1 / l[0], 1 / l[1]]) })
13591                }
13592            }, this), r.setPointerChecker(function(e, n, a) { return o.getViewRectAfterRoam().contain(n, a) && !Wh(e, i, t) })
13593        }
13594    }, _s({
13595        type: "map",
13596        render: function(t, e, i, n) {
13597            if (!n || "mapToggleSelect" !== n.type || n.from !== this.uid) {
13598                var o = this.group;
13599                if (o.removeAll(), !t.getHostGeoModel()) {
13600                    if (n && "geoRoam" === n.type && "series" === n.componentType && n.seriesId === t.id)(a = this._mapDraw) && o.add(a.group);
13601                    else if (t.needsDrawMap) {
13602                        var a = this._mapDraw || new Uh(i, !0);
13603                        o.add(a.group), a.draw(t, e, i, this, n), this._mapDraw = a
13604                    } else this._mapDraw && this._mapDraw.remove(), this._mapDraw = null;
13605                    t.get("showLegendSymbol") && e.getComponent("legend") && this._renderSymbols(t, e, i)
13606                }
13607            }
13608        },
13609        remove: function() { this._mapDraw && this._mapDraw.remove(), this._mapDraw = null, this.group.removeAll() },
13610        dispose: function() { this._mapDraw && this._mapDraw.remove(), this._mapDraw = null },
13611        _renderSymbols: function(t, e, i) {
13612            var n = t.originalData,
13613                o = this.group;
13614            n.each(n.mapDimension("value"), function(e, i) {
13615                if (!isNaN(e)) {
13616                    var a = n.getItemLayout(i);
13617                    if (a && a.point) {
13618                        var r = a.point,
13619                            s = a.offset,
13620                            l = new pS({ style: { fill: t.getData().getVisual("color") }, shape: { cx: r[0] + 9 * s, cy: r[1], r: 3 }, silent: !0, z2: s ? 8 : 10 });
13621                        if (!s) {
13622                            var u = t.mainSeries.getData(),
13623                                h = n.getName(i),
13624                                c = u.indexOfName(h),
13625                                d = n.getItemModel(i),
13626                                f = d.getModel("label"),
13627                                p = d.getModel("emphasis.label"),
13628                                g = u.getItemGraphicEl(c),
13629                                m = D(t.getFormattedLabel(i, "normal"), h),
13630                                v = D(t.getFormattedLabel(i, "emphasis"), m),
13631                                y = function() {
13632                                    var t = no({}, p, { text: p.get("show") ? v : null }, { isRectText: !0, useInsideStyle: !1 }, !0);
13633                                    l.style.extendFrom(t), l.__mapOriginalZ2 = l.z2, l.z2 += 1
13634                                },
13635                                x = function() { no(l.style, f, { text: f.get("show") ? m : null, textPosition: f.getShallow("position") || "bottom" }, { isRectText: !0, useInsideStyle: !1 }), null != l.__mapOriginalZ2 && (l.z2 = l.__mapOriginalZ2, l.__mapOriginalZ2 = null) };
13636                            g.on("mouseover", y).on("mouseout", x).on("emphasis", y).on("normal", x), x()
13637                        }
13638                        o.add(l)
13639                    }
13640                }
13641            })
13642        }
13643    }), cs({ type: "geoRoam", event: "geoRoam", update: "updateTransform" }, function(t, e) {
13644        var i = t.componentType || "series";
13645        e.eachComponent({ mainType: i, query: t }, function(e) {
13646            var n = e.coordinateSystem;
13647            if ("geo" === n.type) {
13648                var o = Xh(n, t, e.get("scaleLimit"));
13649                e.setCenter && e.setCenter(o.center), e.setZoom && e.setZoom(o.zoom), "series" === i && d(e.seriesGroup, function(t) { t.setCenter(o.center), t.setZoom(o.zoom) })
13650            }
13651        })
13652    });
13653    fs(function(t) {
13654        var e = {};
13655        t.eachSeriesByType("map", function(i) {
13656            var n = i.getMapType();
13657            if (!i.getHostGeoModel() && !e[n]) {
13658                var o = {};
13659                d(i.seriesGroup, function(e) {
13660                    var i = e.coordinateSystem,
13661                        n = e.originalData;
13662                    e.get("showLegendSymbol") && t.getComponent("legend") && n.each(n.mapDimension("value"), function(t, e) {
13663                        var a = n.getName(e),
13664                            r = i.getRegion(a);
13665                        if (r && !isNaN(t)) {
13666                            var s = o[a] || 0,
13667                                l = i.dataToPoint(r.center);
13668                            o[a] = s + 1, n.setItemLayout(e, { point: l, offset: s })
13669                        }
13670                    })
13671                });
13672                var a = i.getData();
13673                a.each(function(t) {
13674                    var e = a.getName(t),
13675                        i = a.getItemLayout(t) || {};
13676                    i.showLabel = !o[e], a.setItemLayout(t, i)
13677                }), e[n] = !0
13678            }
13679        })
13680    }), ps(function(t) {
13681        t.eachSeriesByType("map", function(t) {
13682            var e = t.get("color"),
13683                i = t.getModel("itemStyle"),
13684                n = i.get("areaColor"),
13685                o = i.get("color") || e[t.seriesIndex % e.length];
13686            t.getData().setVisual({ areaColor: n, color: o })
13687        })
13688    }), hs(LI.PROCESSOR.STATISTIC, function(t) {
13689        var e = {};
13690        t.eachSeriesByType("map", function(t) {
13691            var i = t.getHostGeoModel(),
13692                n = i ? "o" + i.id : "i" + t.getMapType();
13693            (e[n] = e[n] || []).push(t)
13694        }), d(e, function(t, e) { for (var i = jh(f(t, function(t) { return t.getData() }), t[0].get("mapValueCalculation")), n = 0; n < t.length; n++) t[n].originalData = t[n].getData(); for (n = 0; n < t.length; n++) t[n].seriesGroup = t, t[n].needsDrawMap = 0 === n && !t[n].getHostGeoModel(), t[n].setData(i.cloneShallow()), t[n].mainSeries = t[0] })
13695    }), us(function(t) {
13696        var e = [];
13697        d(t.series, function(t) { t && "map" === t.type && (e.push(t), t.map = t.map || t.mapType, r(t, t.mapLocation)) })
13698    }), $D("map", [{ type: "mapToggleSelect", event: "mapselectchanged", method: "toggleSelected" }, { type: "mapSelect", event: "mapselected", method: "select" }, { type: "mapUnSelect", event: "mapunselected", method: "unSelect" }]);
13699    var wA = d,
13700        bA = "\0__link_datas",
13701        SA = "\0__link_mainData",
13702        MA = function(t, e) { this.name = t || "", this.depth = 0, this.height = 0, this.parentNode = null, this.dataIndex = -1, this.children = [], this.viewChildren = [], this.hostTree = e };
13703    MA.prototype = {
13704        constructor: MA,
13705        isRemoved: function() { return this.dataIndex < 0 },
13706        eachNode: function(t, e, i) {
13707            "function" == typeof t && (i = e, e = t, t = null), _(t = t || {}) && (t = { order: t });
13708            var n, o = t.order || "preorder",
13709                a = this[t.attr || "children"];
13710            "preorder" === o && (n = e.call(i, this));
13711            for (var r = 0; !n && r < a.length; r++) a[r].eachNode(t, e, i);
13712            "postorder" === o && e.call(i, this)
13713        },
13714        updateDepthAndHeight: function(t) {
13715            var e = 0;
13716            this.depth = t;
13717            for (var i = 0; i < this.children.length; i++) {
13718                var n = this.children[i];
13719                n.updateDepthAndHeight(t + 1), n.height > e && (e = n.height)
13720            }
13721            this.height = e + 1
13722        },
13723        getNodeById: function(t) { if (this.getId() === t) return this; for (var e = 0, i = this.children, n = i.length; e < n; e++) { var o = i[e].getNodeById(t); if (o) return o } },
13724        contains: function(t) { if (t === this) return !0; for (var e = 0, i = this.children, n = i.length; e < n; e++) { var o = i[e].contains(t); if (o) return o } },
13725        getAncestors: function(t) { for (var e = [], i = t ? this : this.parentNode; i;) e.push(i), i = i.parentNode; return e.reverse(), e },
13726        getValue: function(t) { var e = this.hostTree.data; return e.get(e.getDimension(t || "value"), this.dataIndex) },
13727        setLayout: function(t, e) { this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, t, e) },
13728        getLayout: function() { return this.hostTree.data.getItemLayout(this.dataIndex) },
13729        getModel: function(t) {
13730            if (!(this.dataIndex < 0)) {
13731                var e, i = this.hostTree,
13732                    n = i.data.getItemModel(this.dataIndex),
13733                    o = this.getLevelModel();
13734                return o || 0 !== this.children.length && (0 === this.children.length || !1 !== this.isExpand) || (e = this.getLeavesModel()), n.getModel(t, (o || e || i.hostModel).getModel(t))
13735            }
13736        },
13737        getLevelModel: function() { return (this.hostTree.levelModels || [])[this.depth] },
13738        getLeavesModel: function() { return this.hostTree.leavesModel },
13739        setVisual: function(t, e) { this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, t, e) },
13740        getVisual: function(t, e) { return this.hostTree.data.getItemVisual(this.dataIndex, t, e) },
13741        getRawIndex: function() { return this.hostTree.data.getRawIndex(this.dataIndex) },
13742        getId: function() { return this.hostTree.data.getId(this.dataIndex) },
13743        isAncestorOf: function(t) {
13744            for (var e = t.parentNode; e;) {
13745                if (e === this) return !0;
13746                e = e.parentNode
13747            }
13748            return !1
13749        },
13750        isDescendantOf: function(t) { return t !== this && t.isAncestorOf(this) }
13751    }, ic.prototype = { constructor: ic, type: "tree", eachNode: function(t, e, i) { this.root.eachNode(t, e, i) }, getNodeByDataIndex: function(t) { var e = this.data.getRawIndex(t); return this._nodes[e] }, getNodeByName: function(t) { return this.root.getNodeByName(t) }, update: function() { for (var t = this.data, e = this._nodes, i = 0, n = e.length; i < n; i++) e[i].dataIndex = -1; for (var i = 0, n = t.count(); i < n; i++) e[t.getRawIndex(i)].dataIndex = i }, clearLayouts: function() { this.data.clearItemLayouts() } }, ic.createTree = function(t, e, i) {
13752        function n(t, e) {
13753            var i = t.value;
13754            r = Math.max(r, y(i) ? i.length : 1), a.push(t);
13755            var s = new MA(t.name, o);
13756            e ? nc(s, e) : o.root = s, o._nodes.push(s);
13757            var l = t.children;
13758            if (l)
13759                for (var u = 0; u < l.length; u++) n(l[u], s)
13760        }
13761        var o = new ic(e, i.levels, i.leaves),
13762            a = [],
13763            r = 1;
13764        n(t), o.root.updateDepthAndHeight(0);
13765        var s = hT(a, { coordDimensions: ["value"], dimensionsCount: r }),
13766            l = new sT(s, e);
13767        return l.initData(a), Yh({ mainData: l, struct: o, structAttr: "tree" }), o.update(), o
13768    }, KM.extend({
13769        type: "series.tree",
13770        layoutInfo: null,
13771        layoutMode: "box",
13772        getInitialData: function(t) {
13773            var e = { name: t.name, children: t.data },
13774                i = t.leaves || {},
13775                n = {};
13776            n.leaves = i;
13777            var o = ic.createTree(e, this, n),
13778                a = 0;
13779            o.eachNode("preorder", function(t) { t.depth > a && (a = t.depth) });
13780            var r = t.expandAndCollapse && t.initialTreeDepth >= 0 ? t.initialTreeDepth : a;
13781            return o.root.eachNode("preorder", function(t) {
13782                var e = t.hostTree.data.getRawDataItem(t.dataIndex);
13783                t.isExpand = e && null != e.collapsed ? !e.collapsed : t.depth <= r
13784            }), o.data
13785        },
13786        getOrient: function() { var t = this.get("orient"); return "horizontal" === t ? t = "LR" : "vertical" === t && (t = "TB"), t },
13787        formatTooltip: function(t) { for (var e = this.getData().tree, i = e.root.children[0], n = e.getNodeByDataIndex(t), o = n.getValue(), a = n.name; n && n !== i;) a = n.parentNode.name + "." + a, n = n.parentNode; return Zo(a + (isNaN(o) || null == o ? "" : " : " + o)) },
13788        defaultOption: { zlevel: 0, z: 2, left: "12%", top: "12%", right: "12%", bottom: "12%", layout: "orthogonal", 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 }
13789    }), _s({
13790        type: "tree",
13791        init: function(t, e) { this._oldTree, this._mainGroup = new sw, this.group.add(this._mainGroup) },
13792        render: function(t, e, i, n) {
13793            var o = t.getData(),
13794                a = t.layoutInfo,
13795                r = this._mainGroup,
13796                s = t.get("layout");
13797            "radial" === s ? r.attr("position", [a.x + a.width / 2, a.y + a.height / 2]) : r.attr("position", [a.x, a.y]);
13798            var l = this._data,
13799                u = { expandAndCollapse: t.get("expandAndCollapse"), layout: s, orient: t.getOrient(), curvature: t.get("lineStyle.curveness"), symbolRotate: t.get("symbolRotate"), symbolOffset: t.get("symbolOffset"), hoverAnimation: t.get("hoverAnimation"), useNameLabel: !0, fadeIn: !0 };
13800            o.diff(l).add(function(e) { vc(o, e) && xc(o, e, null, r, t, u) }).update(function(e, i) {
13801                var n = l.getItemGraphicEl(i);
13802                vc(o, e) ? xc(o, e, n, r, t, u) : n && _c(l, i, n, r, t, u)
13803            }).remove(function(e) {
13804                var i = l.getItemGraphicEl(e);
13805                i && _c(l, e, i, r, t, u)
13806            }).execute(), !0 === u.expandAndCollapse && o.eachItemGraphicEl(function(e, n) { e.off("click").on("click", function() { i.dispatchAction({ type: "treeExpandAndCollapse", seriesId: t.id, dataIndex: n }) }) }), this._data = o
13807        },
13808        dispose: function() {},
13809        remove: function() { this._mainGroup.removeAll(), this._data = null }
13810    }), cs({ type: "treeExpandAndCollapse", event: "treeExpandAndCollapse", update: "update" }, function(t, e) {
13811        e.eachComponent({ mainType: "series", subType: "tree", query: t }, function(e) {
13812            var i = t.dataIndex,
13813                n = e.getData().tree.getNodeByDataIndex(i);
13814            n.isExpand = !n.isExpand
13815        })
13816    });
13817    ps(gD("tree", "circle")), fs(function(t, e) { t.eachSeriesByType("tree", function(t) { Mc(t, e) }) }), KM.extend({
13818        type: "series.treemap",
13819        layoutMode: "box",
13820        dependencies: ["grid", "polar"],
13821        _viewRoot: null,
13822        defaultOption: { progressive: 0, hoverLayerThreshold: 1 / 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" } }
13822, visualDimension: 0, visualMin: null, visualMax: null, color: [], colorAlpha: null, colorSaturation: null, colorMappingBy: "index", visibleMin: 10, childrenVisibleMin: null, levels: [] },
13823        getInitialData: function(t, e) {
13824            var i = { name: t.name, children: t.data };
13825            Cc(i);
13826            var n = t.levels || [];
13827            n = t.levels = Lc(n, e);
13828            var o = {};
13829            return o.levels = n, ic.createTree(i, this, o).data
13830        },
13831        optionUpdated: function() { this.resetViewRoot() },
13832        formatTooltip: function(t) {
13833            var e = this.getData(),
13834                i = this.getRawValue(t),
13835                n = Fo(y(i) ? i[0] : i);
13836            return Zo(e.getName(t) + ": " + n)
13837        },
13838        getDataParams: function(t) {
13839            var e = KM.prototype.getDataParams.apply(this, arguments),
13840                i = this.getData().tree.getNodeByDataIndex(t);
13841            return e.treePathInfo = Ac(i, this), e
13842        },
13843        setLayoutInfo: function(t) { this.layoutInfo = this.layoutInfo || {}, a(this.layoutInfo, t) },
13844        mapIdToIndex: function(t) {
13845            var e = this._idIndexMap;
13846            e || (e = this._idIndexMap = R(), this._idIndexMapCount = 0);
13847            var i = e.get(t);
13848            return null == i && e.set(t, i = this._idIndexMapCount++), i
13849        },
13850        getViewRoot: function() { return this._viewRoot },
13851        resetViewRoot: function(t) {
13852            t ? this._viewRoot = t : t = this._viewRoot;
13853            var e = this.getRawData().tree.root;
13854            t && (t === e || e.contains(t)) || (this._viewRoot = e)
13855        }
13856    });
13857    var IA = 5;
13858    kc.prototype = {
13859        constructor: kc,
13860        render: function(t, e, i, n) {
13861            var o = t.getModel("breadcrumb"),
13862                a = this.group;
13863            if (a.removeAll(), o.get("show") && i) {
13864                var r = o.getModel("itemStyle"),
13865                    s = r.getModel("textStyle"),
13866                    l = { pos: { left: o.get("left"), right: o.get("right"), top: o.get("top"), bottom: o.get("bottom") }, box: { width: e.getWidth(), height: e.getHeight() }, emptyItemWidth: o.get("emptyItemWidth"), totalWidth: 0, renderList: [] };
13867                this._prepare(i, l, s), this._renderContent(t, l, r, s, n), ta(a, l.pos, l.box)
13868            }
13869        },
13870        _prepare: function(t, e, i) {
13871            for (var n = t; n; n = n.parentNode) {
13872                var o = n.getModel().get("name"),
13873                    a = i.getTextRect(o),
13874                    r = Math.max(a.width + 16, e.emptyItemWidth);
13875                e.totalWidth += r + 8, e.renderList.push({ node: n, text: o, width: r })
13876            }
13877        },
13878        _renderContent: function(t, e, i, n, o) {
13879            for (var a = 0, s = e.emptyItemWidth, l = t.get("breadcrumb.height"), u = Jo(e.pos, e.box), h = e.totalWidth, c = e.renderList, d = c.length - 1; d >= 0; d--) {
13880                var f = c[d],
13881                    p = f.node,
13882                    g = f.width,
13883                    m = f.text;
13884                h > u.width && (h -= g - s, g = s, m = null);
13885                var y = new wS({ shape: { points: Pc(a, 0, g, l, d === c.length - 1, 0 === d) }, style: r(i.getItemStyle(), { lineJoin: "bevel", text: m, textFill: n.getTextColor(), textFont: n.getFont() }), z: 10, onclick: v(o, p) });
13886                this.group.add(y), Nc(y, t, p), a += g + 8
13887            }
13888        },
13889        remove: function() { this.group.removeAll() }
13890    };
13891    var TA = m,
13892        DA = sw,
13893        AA = SS,
13894        CA = d,
13895        LA = ["label"],
13896        kA = ["emphasis", "label"],
13897        PA = ["upperLabel"],
13898        NA = ["emphasis", "upperLabel"],
13899        OA = 10,
13900        EA = 1,
13901        RA = 2,
13902        zA = sb([
13903            ["fill", "color"],
13904            ["stroke", "strokeColor"],
13905            ["lineWidth", "strokeWidth"],
13906            ["shadowBlur"],
13907            ["shadowOffsetX"],
13908            ["shadowOffsetY"],
13909            ["shadowColor"]
13910        ]),
13911        BA = function(t) { var e = zA(t); return e.stroke = e.fill = e.lineWidth = null, e };
13912    _s({
13913        type: "treemap",
13914        init: function(t, e) { this._containerGroup, this._storage = { nodeGroup: [], background: [], content: [] }, this._oldTree, this._breadcrumb, this._controller, this._state = "ready" },
13915        render: function(t, e, i, n) {
13916            if (!(l(e.findComponents({ mainType: "series", subType: "treemap", query: n }), t) < 0)) {
13917                this.seriesModel = t, this.api = i, this.ecModel = e;
13918                var o = Ic(n, ["treemapZoomToNode", "treemapRootToNode"], t),
13919                    a = n && n.type,
13920                    r = t.layoutInfo,
13921                    s = !this._oldTree,
13922                    u = this._storage,
13923                    h = "treemapRootToNode" === a && o && u ? { rootNodeGroup: u.no
13923deGroup[o.node.getRawIndex()], direction: n.direction } : null,
13924                    c = this._giveContainerGroup(r),
13925                    d = this._doRender(c, t, h);
13926                s || a && "treemapZoomToNode" !== a && "treemapRootToNode" !== a ? d.renderFinally() : this._doAnimation(c, d, t, h), this._resetController(i), this._renderBreadcrumb(t, i, o)
13927            }
13928        },
13929        _giveContainerGroup: function(t) { var e = this._containerGroup; return e || (e = this._containerGroup = new DA, this._initEvents(e), this.group.add(e)), e.attr("position", [t.x, t.y]), e },
13930        _doRender: function(t, e, i) {
13931            function n(t, e, i, o, a) {
13932                function r(t) { return t.getId() }
13933
13934                function s(r, s) {
13935                    var l = null != r ? t[r] : null,
13936                        u = null != s ? e[s] : null,
13937                        c = h(l, u, i, a);
13938                    c && n(l && l.viewChildren || [], u && u.viewChildren || [], c, o, a + 1)
13939                }
13940                o ? (e = t, CA(t, function(t, e) {!t.isRemoved() && s(e, e) })) : new Ss(e, t, r, r).add(s).update(s).remove(v(s, null)).execute()
13941            }
13942            var o = e.getData().tree,
13943                a = this._oldTree,
13944                r = { nodeGroup: [], background: [], content: [] },
13945                s = { nodeGroup: [], background: [], content: [] },
13946                l = this._storage,
13947                u = [],
13948                h = v(Ec, e, s, l, i, r, u);
13949            n(o.root ? [o.root] : [], a && a.root ? [a.root] : [], t, o === a || !a, 0);
13950            var c = function(t) {
13951                var e = { nodeGroup: [], background: [], content: [] };
13952                return t && CA(t, function(t, i) {
13953                    var n = e[i];
13954                    CA(t, function(t) { t && (n.push(t), t.__tmWillDelete = 1) })
13955                }), e
13956            }(l);
13957            return this._oldTree = o, this._storage = s, { lastsForAnimation: r, willDeleteEls: c, renderFinally: function() { CA(c, function(t) { CA(t, function(t) { t.parent && t.parent.remove(t) }) }), CA(u, function(t) { t.invisible = !0, t.dirty() }) } }
13958        },
13959        _doAnimation: function(t, e, i, n) {
13960            if (i.get("animation")) {
13961                var o = i.get("animationDurationUpdate"),
13962                    r = i.get("animationEasing"),
13963                    s = Oc();
13964                CA(e.willDeleteEls, function(t, e) {
13965                    CA(t, function(t, i) {
13966                        if (!t.invisible) {
13967                            var a, l = t.parent;
13968                            if (n && "drillDown" === n.direction) a = l === n.rootNodeGroup ? { shape: { x: 0, y: 0, width: l.__tmNodeWidth, height: l.__tmNodeHeight }, style: { opacity: 0 } } : { style: { opacity: 0 } };
13969                            else {
13970                                var u = 0,
13971                                    h = 0;
13972                                l.__tmWillDelete || (u = l.__tmNodeWidth / 2, h = l.__tmNodeHeight / 2), a = "nodeGroup" === e ? { position: [u, h], style: { opacity: 0 } } : { shape: { x: u, y: h, width: 0, height: 0 }, style: { opacity: 0 } }
13973                            }
13974                            a && s.add(t, a, o, r)
13975                        }
13976                    })
13977                }), CA(this._storage, function(t, i) {
13978                    CA(t, function(t, n) {
13979                        var l = e.lastsForAnimation[i][n],
13980                            u = {};
13981                        l && ("nodeGroup" === i ? l.old && (u.position = t.position.slice(), t.attr("position", l.old)) : (l.old && (u.shape = a({}, t.shape), t.setShape(l.old)), l.fadein ? (t.setStyle("opacity", 0), u.style = { opacity: 1 }) : 1 !== t.style.opacity && (u.style = { opacity: 1 })), s.add(t, u, o, r))
13982                    })
13983                }, this), this._state = "animating", s.done(TA(function() { this._state = "ready", e.renderFinally() }, this)).start()
13984            }
13985        },
13986        _resetController: function(t) {
13987            var e = this._controller;
13988            e || ((e = this._controller = new kh(t.getZr())).enable(this.seriesModel.get("roam")), e.on("pan", TA(this._onPan, this)), e.on("zoom", TA(this._onZoom, this)));
13989            var i = new $t(0, 0, t.getWidth(), t.getHeight());
13990            e.setPointerChecker(function(t, e, n) { return i.contain(e, n) })
13991        },
13992        _clearController: function() {
13993            var t = this._controller;
13994            t && (t.dispose(), t = null)
13995        },
13996        _onPan: function(t, e) {
13997            if ("animating" !== this._state && (Math.abs(t) > 3 || Math.abs(e) > 3)) {
13998                var i = this.seriesModel.getData().tree.root;
13999                if (!i) return;
14000                var n = i.getLayout();
14001                if (!n) return;
14002                this.api.dispatchAction({ type: "treemapMove", from: this.uid, seriesId: this.seriesModel.id, rootRect: { x: n.x + t, y: n.y + e, width: n.width, height: n.height } })
14003            }
14004        },
14005        _onZoom: function(t, e, i) {
14006            if ("animating" !== this._state) {
14007                var n = this.seriesModel.getData().tree.root;
14008                if (!n) return;
14009                var o = n.getLayout();
14010                if (!o) return;
14011                var a = new $t(o.x, o.y, o.width, o.height),
14012                    r = this.seriesModel.layoutInfo;
14013                e -= r.x, i -= r.y;
14014                var s = st();
14015                ct(s, s, [-e, -i]), ft(s, s, [t, t]), ct(s, s, [e, i]), a.applyTransform(s), this.api.dispatchAction({ type: "treemapRender", from: this.uid, seriesId: this.seriesModel.id, rootRect: { x: a.x, y: a.y, width: a.width, height: a.height } })
14016            }
14017        },
14018        _initEvents: function(t) {
14019            t.on("click", function(t) {
14020                if ("ready" === this._state) {
14021                    var e = this.seriesModel.get("nodeClick", !0);
14022                    if (e) {
14023                        var i = this.findTarget(t.offsetX, t.offsetY);
14024                        if (i) {
14025                            var n = i.node;
14026                            if (n.getLayout().isLeafRoot) this._rootToNode(i);
14027                            else if ("zoomToNode" === e) this._zoomToNode(i);
14028                            else if ("link" === e) {
14029                                var o = n.hostTree.data.getItemModel(n.dataIndex),
14030                                    a = o.get("link", !0),
14031                                    r = o.get("target", !0) || "blank";
14032                                a && window.open(a, r)
14033                            }
14034                        }
14035                    }
14036                }
14037            }, this)
14038        },
14039        _renderBreadcrumb: function(t, e, i) { i || (i = null != t.get("leafDepth", !0) ? { node: t.getViewRoot() } : this.findTarget(e.getWidth() / 2, e.getHeight() / 2)) || (i = { node: t.getData().tree.root }), (this._breadcrumb || (this._breadcrumb = new kc(this.group))).render(t, e, i.node, TA(function(e) { "animating" !== this._state && (Dc(t.getViewRoot(), e) ? this._rootToNode({ node: e }) : this._zoomToNode({ node: e })) }, this)) },
14040        remove: function() { this._clearController(), this._containerGroup && this._containerGroup.removeAll(), this._storage = { nodeGroup: [], background: [], content: [] }, this._state = "ready", this._breadcrumb && this._breadcrumb.remove() },
14041        dispose: function() { this._clearController() },
14042        _zoomToNode: function(t) { this.api.dispatchAction({ type: "treemapZoomToNode", from: this.uid, seriesId: this.seriesModel.id, targetNode: t.node }) },
14043        _rootToNode: function(t) { this.api.dispatchAction({ type: "treemapRootToNode", from: this.uid, seriesId: this.seriesModel.id, targetNode: t.node }) },
14044        findTarget: function(t, e) {
14045            var i;
14046            return this.seriesModel.getViewRoot().eachNode({ attr: "viewChildren", order: "preorder" }, function(n) {
14047                var o = this._storage.background[n.getRawIndex()];
14048                if (o) {
14049                    var a = o.transformCoordToLocal(t, e),
14050                        r = o.shape;
14051                    if (!(r.x <= a[0] && a[0] <= r.x + r.width && r.y <= a[1] && a[1] <= r.y + r.height)) return !1;
14052                    i = { node: n, offsetX: a[0], offsetY: a[1] }
14053                }
14054            }, this), i
14055        }
14056    });
14057    for (var VA = ["treemapZoomToNode", "treemapRender", "treemapMove"], GA = 0; GA < VA.length; GA++) cs({ type: VA[GA], update: "updateView" }, function() {});
14058    cs({ type: "treemapRootToNode", update: "updateView" }, function(t, e) {
14059        e.eachComponent({ mainType: "series", subType: "treemap", query: t }, function(e, i) {
14060            var n = Ic(t, ["treemapZoomToNode", "treemapRootToNode"], e);
14061            if (n) {
14062                var o = e.getViewRoot();
14063                o && (t.direction = Dc(o, n.node) ? "rollUp" : "drillDown"), e.resetViewRoot(n.node)
14064            }
14065        })
14066    });
14067    var WA = d,
14068        FA = w,
14069        HA = -1,
14070        ZA = function(t) {
14071            var e = t.mappingMethod,
14072                n = t.type,
14073                o = this.option = i(t);
14074            this.type = n, this.mappingMethod = e, this._normalizeData = XA[e];
14075            var a = UA[n];
14076            this.applyVisual = a.applyVisual, this.getColorMapper = a.getColorMapper, this._doMap = a._doMap[e], "piecewise" === e ? (Vc(o), zc(o)) : "category" === e ? o.categories ? Bc(o) : Vc(o, !0) : (k("linear" !== e || o.dataExtent), Vc(o))
14077        };
14078    ZA.prototype = { constructor: ZA, mapValueToVisual: function(t) { var e = this._normalizeData(t); return this._doMap(e, t) }
14078, getNormalizer: function() { return m(this._normalizeData, this) } };
14079    var UA = ZA.visualHandlers = {
14080            color: { applyVisual: Fc("color"), getColorMapper: function() { var t = this.option; return m("category" === t.mappingMethod ? function(t, e) { return !e && (t = this._normalizeData(t)), Hc.call(this, t) } : function(e, i, n) { var o = !!n; return !i && (e = this._normalizeData(e)), n = Nt(e, t.parsedVisual, n), o ? n : zt(n, "rgba") }, this) }, _doMap: { linear: function(t) { return zt(Nt(t, this.option.parsedVisual), "rgba") }, category: Hc, piecewise: function(t, e) { var i = Xc.call(this, e); return null == i && (i = zt(Nt(t, this.option.parsedVisual), "rgba")), i }, fixed: Zc } },
14081            colorHue: Gc(function(t, e) { return Et(t, e) }),
14082            colorSaturation: Gc(function(t, e) { return Et(t, null, e) }),
14083            colorLightness: Gc(function(t, e) { return Et(t, null, null, e) }),
14084            colorAlpha: Gc(function(t, e) { return Rt(t, e) }),
14085            opacity: { applyVisual: Fc("opacity"), _doMap: Uc([0, 1]) },
14086            liftZ: { applyVisual: Fc("liftZ"), _doMap: { linear: Zc, category: Zc, piecewise: Zc, fixed: Zc } },
14087            symbol: {
14088                applyVisual: function(t, e, i) {
14089                    var n = this.mapValueToVisual(t);
14090                    if (_(n)) i("symbol", n);
14091                    else if (FA(n))
14092                        for (var o in n) n.hasOwnProperty(o) && i(o, n[o])
14093                },
14094                _doMap: { linear: Wc, category: Hc, piecewise: function(t, e) { var i = Xc.call(this, e); return null == i && (i = Wc.call(this, t)), i }, fixed: Zc }
14095            },
14096            symbolSize: { applyVisual: Fc("symbolSize"), _doMap: Uc([0, 1]) }
14097        },
14098        XA = {
14099            linear: function(t) { return To(t, this.option.dataExtent, [0, 1], !0) },
14100            piecewise: function(t) {
14101                var e = this.option.pieceList,
14102                    i = ZA.findPieceIndex(t, e, !0);
14103                if (null != i) return To(i, [0, e.length - 1], [0, 1], !0)
14104            },
14105            category: function(t) { var e = this.option.categories ? this.option.categoryMap[t] : t; return null == e ? HA : e },
14106            fixed: B
14107        };
14108    ZA.listVisualTypes = function() { var t = []; return d(UA, function(e, i) { t.push(i) }), t }, ZA.addVisualHandler = function(t, e) { UA[t] = e }, ZA.isValidType = function(t) { return UA.hasOwnProperty(t) }, ZA.eachVisual = function(t, e, i) { w(t) ? d(t, e, i) : e.call(i, t) }, ZA.mapVisual = function(t, e, i) {
14109        var n, o = y(t) ? [] : w(t) ? {} : (n = !0, null);
14110        return ZA.eachVisual(t, function(t, a) {
14111            var r = e.call(i, t, a);
14112            n ? o = r : o[a] = r
14113        }), o
14114    }, ZA.retrieveVisuals = function(t) { var e, i = {}; return t && WA(UA, function(n, o) { t.hasOwnProperty(o) && (i[o] = t[o], e = !0) }), e ? i : null }, ZA.prepareVisualTypes = function(t) {
14115        if (FA(t)) {
14116            var e = [];
14117            WA(t, function(t, i) { e.push(i) }), t = e
14118        } else {
14119            if (!y(t)) return [];
14120            t = t.slice()
14121        }
14122        return t.sort(function(t, e) { return "color" === e && "color" !== t && 0 === t.indexOf("color") ? 1 : -1 }), t
14123    }, ZA.dependsOn = function(t, e) { return "color" === e ? !(!t || 0 !== t.indexOf(e)) : t === e }, ZA.findPieceIndex = function(t, e, i) {
14124        function n(e, i) {
14125            var n = Math.abs(e - t);
14126            n < a && (a = n, o = i)
14127        }
14128        for (var o, a = 1 / 0, r = 0, s = e.length; r < s; r++) {
14129            var l = e[r].value;
14130            if (null != l) {
14131                if (l === t || "string" == typeof l && l === t + "") return r;
14132                i && n(l, r)
14133            }
14134        }
14135        for (var r = 0, s = e.length; r < s; r++) {
14136            var u = e[r],
14137                h = u.interval,
14138                c = u.close;
14139            if (h) {
14140                if (h[0] === -1 / 0) { if (Yc(c[1], t, h[1])) return r } else if (h[1] === 1 / 0) { if (Yc(c[0], h[0], t)) return r } else if (Yc(c[0], h[0], t) && Yc(c[1], t, h[1])) return r;
14141                i && n(h[0], r), i && n(h[1], r)
14142            }
14143        }
14144        if (i) return t === 1 / 0 ? e.length - 1 : t === -1 / 0 ? 0 : o
14145    };
14146    var jA = y,
14147        YA = "itemStyle",
14148        qA = {
14149            seriesType: "treemap",
14150            reset: function(t, e, i, n) {
14151                var o = t.getData().tree,
14152                    a = o.root,
14153                    r = t.getModel(YA);
14154                a.isRemoved() || qc(a, {}, f(o.levelModels, function(t) { return t ? t.get(YA) : null }), r, t.getViewRoot().getAncestors(), t)
14155            }
14156        },
14157        KA = Math.max,
14158        $A = Math.min,
14159        JA = T,
14160        QA = d,
14161        tC = ["itemStyle", "borderWidth"],
14162        eC = ["itemStyle", "gapWidth"],
14163        iC = ["upperLabel", "show"],
14164        nC = ["upperLabel", "height"],
14165        oC = {
14166            seriesType: "treemap",
14167            reset: function(t, e, i, n) {
14168                var o = i.getWidth(),
14169                    r = i.getHeight(),
14170                    s = t.option,
14171                    l = Qo(t.getBoxLayoutParams(), { width: i.getWidth(), height: i.getHeight() }),
14172                    u = s.size || [],
14173                    h = Do(JA(l.width, u[0]), o),
14174                    c = Do(JA(l.height, u[1]), r),
14175                    d = n && n.type,
14176                    f = Ic(n, ["treemapZoomToNode", "treemapRootToNode"], t),
14177                    p = "treemapRender" === d || "treemapMove" === d ? n.rootRect : null,
14178                    g = t.getViewRoot(),
14179                    m = Tc(g);
14180                if ("treemapMove" !== d) {
14181                    var v = "treemapZoomToNode" === d ? hd(t, f, g, h, c) : p ? [p.width, p.height] : [h, c],
14182                        y = s.sort;
14183                    y && "asc" !== y && "desc" !== y && (y = "desc");
14184                    var x = { squareRatio: s.squareRatio, sort: y, leafDepth: s.leafDepth };
14185                    g.hostTree.clearLayouts();
14186                    _ = { x: 0, y: 0, width: v[0], height: v[1], area: v[0] * v[1] };
14187                    g.setLayout(_), nd(g, x, !1, 0);
14188                    var _ = g.getLayout();
14189                    QA(m, function(t, e) {
14190                        var i = (m[e + 1] || g).getValue();
14191                        t.setLayout(a({ dataExtent: [i, i], borderWidth: 0, upperHeight: 0 }, _))
14192                    })
14193                }
14194                var w = t.getData().tree.root;
14195                w.setLayout(cd(l, p, f), !0), t.setLayoutInfo(l), dd(w, new $t(-l.x, -l.y, o, r), m, g, 0)
14196            }
14197        };
14198    ps(qA), fs(oC);
14199    var aC = function(t) { this._directed = t || !1, this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this.data, this.edgeData },
14200        rC = aC.prototype;
14201    rC.type = "graph", rC.isDirected = function() { return this._directed }, rC.addNode = function(t, e) { t = t || "" + e; var i = this._nodesMap; if (!i[pd(t)]) { var n = new gd(t, e); return n.hostGraph = this, this.nodes.push(n), i[pd(t)] = n, n } }, rC.getNodeByIndex = function(t) { var e = this.data.getRawIndex(t); return this.nodes[e] }, rC.getNodeById = function(t) { return this._nodesMap[pd(t)] }, rC.addEdge = function(t, e, i) {
14202        var n = this._nodesMap,
14203            o = this._edgesMap;
14204        if ("number" == typeof t && (t = this.nodes[t]), "number" == typeof e && (e = this.nodes[e]), gd.isInstance(t) || (t = n[pd(t)]), gd.isInstance(e) || (e = n[pd(e)]), t && e) { var a = t.id + "-" + e.id; if (!o[a]) { var r = new md(t, e, i); return r.hostGraph = this, this._directed && (t.outEdges.push(r), e.inEdges.push(r)), t.edges.push(r), t !== e && e.edges.push(r), this.edges.push(r), o[a] = r, r } }
14205    }, rC.getEdgeByIndex = function(t) { var e = this.edgeData.getRawIndex(t); return this.edges[e] }, rC.getEdge = function(t, e) { gd.isInstance(t) && (t = t.id), gd.isInstance(e) && (e = e.id); var i = this._edgesMap; return this._directed ? i[t + "-" + e] : i[t + "-" + e] || i[e + "-" + t] }, rC.eachNode = function(t, e) { for (var i = this.nodes, n = i.length, o = 0; o < n; o++) i[o].dataIndex >= 0 && t.call(e, i[o], o) }, rC.eachEdge = function(t, e) { for (var i = this.edges, n = i.length, o = 0; o < n; o++) i[o].dataIndex >= 0 && i[o].node1.dataIndex >= 0 && i[o].node2.dataIndex >= 0 && t.call(e, i[o], o) }, rC.breadthFirstTraverse = function(t, e, i, n) {
14206        if (gd.isInstance(e) || (e = this._nodesMap[pd(e)]), e) {
14207            for (var o = "out" === i ? "outEdges" : "in" === i ? "inEdges" : "edges", a = 0; a < this.nodes.length; a++) this.nodes[a].__visited = !1;
14208            if (!t.call(n, e, null))
14209                for (var r = [e]; r.length;)
14210                    for (var s = r.shift(), l = s[o], a = 0; a < l.length; a++) {
14211                        var u = l[a],
14212                            h = u.node1 === s ? u.node2 : u.node1;
14213                        if (!h.__visited) {
14214                            if (t.call(n, h, s)) return;
14215                            r.push(h), h.__visited = !0
14216                        }
14217                    }
14218        }
14219    }, rC.update = function() {
14220        for (var t = this.data, e = this.edgeData, i = this.nodes, n = this.edges, o = 0, a = i.length; o < a; o++) i[o].dataIndex = -1;
14221        for (var o = 0, a = t.count(); o < a; o++) i[t.getRawIndex(o)].dataIndex = o;
14222        e.filterSelf(function(t) { var i = n[e.getRawIndex(t)]; return i.node1.dataIndex >= 0 && i.node2.dataIndex >= 0 });
14223        for (var o = 0, a = n.length; o < a; o++) n[o].dataIndex = -1;
14224        for (var o = 0, a = e.count(); o < a; o++) n[e.getRawIndex(o)].dataIndex = o
14225    }, rC.clone = function() {
14226        for (var t = new aC(this._directed), e = this.nodes, i = this.edges, n = 0; n < e.length; n++) t.addNode(e[n].id, e[n].dataIndex);
14227        for (n = 0; n < i.length; n++) {
14228            var o = i[n];
14229            t.addEdge(o.node1.id, o.node2.id, o.dataIndex)
14230        }
14231        return t
14232    }, gd.prototype = { constructor: gd, degree: function() { return this.edges.length }, inDegree: function() { return this.inEdges.length }, outDegree: function() { return this.outEdges.length }, getModel: function(t) { if (!(this.dataIndex < 0)) return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t) } }, md.prototype.getModel = function(t) { if (!(this.dataIndex < 0)) return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t) };
14233    var sC = function(t, e) { return { getValue: function(i) { var n = this[t][e]; return n.get(n.getDimension(i || "value"), this.dataIndex) }, setVisual: function(i, n) { this.dataIndex >= 0 && this[t][e].setItemVisual(this.dataIndex, i, n) }, getVisual: function(i, n) { return this[t][e].getItemVisual(this.dataIndex, i, n) }, setLayout: function(i, n) { this.dataIndex >= 0 && this[t][e].setItemLayout(this.dataIndex, i, n) }, getLayout: function() { return this[t][e].getItemLayout(this.dataIndex) }, getGraphicEl: function() { return this[t][e].getItemGraphicEl(this.dataIndex) }, getRawIndex: function() { return this[t][e].getRawIndex(this.dataIndex) } } };
14234    h(gd, sC("hostGraph", "data")), h(md, sC("hostGraph", "edgeData")), aC.Node = gd, aC.Edge = md, Wi(gd), Wi(md);
14235    var lC = function(t, e, i, n, o) {
14236            for (var a = new aC(n), r = 0; r < t.length; r++) a.addNode(T(t[r].id, t[r].name, r), r);
14237            for (var s = [], u = [], h = 0, r = 0; r < e.length; r++) {
14238                var c = e[r],
14239                    d = c.source,
14240                    f = c.target;
14241                a.addEdge(d, f, h) && (u.push(c), s.push(T(c.id, d + " > " + f)), h++)
14242            }
14243            var p, g = i.get("coordinateSystem");
14244            if ("cartesian2d" === g || "polar" === g) p = Xs(t, i);
14245            else {
14246                var m = Ca.get(g),
14247                    v = m && "view" !== m.type ? m.dimensions || [] : [];
14248                l(v, "value") < 0 && v.concat(["value"]);
14249                var y = hT(t, { coordDimensions: v });
14250                (p = new sT(y, i)).initData(t)
14251            }
14252            var x = new sT(["value"], i);
14253            return x.initData(u, s), o && o(p, x), Yh({ mainData: p, struct: a, structAttr: "graph", datas: { node: p, edge: x }, datasAttr: { node: "data", edge: "edgeData" } }), a.update(), a
14254        },
14255        uC = xs({
14256            type: "series.graph",
14257            init: function(t) { uC.superApply(this, "init", arguments), this.legendDataProvider = function() { return this._categoriesData }, this.fillDataTextStyle(t.edges || t.links), this._updateCategoriesData() },
14258            mergeOption: function(t) { uC.superApply(this, "mergeOption", arguments), this.fillDataTextStyle(t.edges || t.links), this._updateCategoriesData() },
14259            mergeDefaultAndTheme: function(t) { uC.superApply(this, "mergeDefaultAndTheme", arguments), Mi(t, ["edgeLabel"], ["show"]) },
14260            getInitialData: function(t, e) {
14261                var i = t.edges || t.links || [],
14262                    n = t.data || t.nodes || [],
14263                    o = this;
14264                if (n && i) return lC(n, i, this, !0, function(t, i) {
14265                    function n(t) { return (t = this.parsePath(t)) && "label" === t[0] ? r : t && "emphasis" === t[0] && "label" === t[1] ? l : this.parentModel }
14266                    t.wrapMethod("getItemModel", function(t) { var e = o._categoriesModels[t.getShallow("category")]; return e && (e.parentModel = t.parentModel, t.parentModel = e), t });
14267                    var a = o.getModel("edgeLabel"),
14268                        r = new wo({ label: a.option }, a.parentModel, e),
14269                        s = o.getModel("emphasis.edgeLabel"),
14270                        l = new wo({ emphasis: { label: s.option } }, s.parentModel, e);
14271                    i.wrapMethod("getItemModel", function(t) { return t.customizeGetParent(n), t })
14272                }).data
14273            },
14274            getGraph: function() { return this.getData().graph },
14275            getEdgeData: function() { return this.getGraph().edgeData },
14276            getCategoriesData: function() { return this._categoriesData },
14277            formatTooltip: function(t, e, i) {
14278                if ("edge" === i) {
14279                    var n = this.getData(),
14280                        o = this.getDataParams(t, i),
14281                        a = n.graph.getEdgeByIndex(t),
14282                        r = n.getName(a.node1.dataIndex),
14283                        s = n.getName(a.node2.dataIndex),
14284                        l = [];
14285                    return null != r && l.push(r), null != s && l.push(s), l = Zo(l.join(" > ")), o.value && (l += " : " + Zo(o.value)), l
14286                }
14287                return uC.superApply(this, "formatTooltip", arguments)
14288            },
14289            _updateCategoriesData: function() {
14290                var t = f(this.option.categories || [], function(t) { return null != t.value ? t : a({ value: 0 }, t) }),
14291                    e = new sT(["value"], this);
14292                e.initData(t), this._categoriesData = e, this._categoriesModels = e.mapArray(function(t) { return e.getItemModel(t, !0) })
14293            },
14294            setZoom: function(t) { this.option.zoom = t },
14295            setCenter: function(t) { this.option.center = t },
14296            isAnimationEnabled: function() { return uC.superCall(this, "isAnimationEnabled") && !("force" === this.get("layout") && this.get("force.layoutAnimation")) },
14297            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, edgeLength: 30, layoutAnimation: !0 }
14297, left: "center", top: "center", symbol: "circle", symbolSize: 10, edgeSymbol: ["none", "none"], edgeSymbolSize: 10, edgeLabel: { position: "middle" }, 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 } } }
14298        }),
14299        hC = MS.prototype,
14300        cC = TS.prototype,
14301        dC = En({
14302            type: "ec-line",
14303            style: { stroke: "#000", fill: null },
14304            shape: { x1: 0, y1: 0, x2: 0, y2: 0, percent: 1, cpx1: null, cpy1: null },
14305            buildPath: function(t, e) {
14306                (vd(e) ? hC : cC).buildPath(t, e)
14307            },
14308            pointAt: function(t) { return vd(this.shape) ? hC.pointAt.call(this, t) : cC.pointAt.call(this, t) },
14309            tangentAt: function(t) {
14310                var e = this.shape,
14311                    i = vd(e) ? [e.x2 - e.x1, e.y2 - e.y1] : cC.tangentAt.call(this, t);
14312                return q(i, i)
14313            }
14314        }),
14315        fC = ["fromSymbol", "toSymbol"],
14316        pC = bd.prototype;
14317    pC.beforeUpdate = function() {
14318        var t = this,
14319            e = t.childOfName("fromSymbol"),
14320            i = t.childOfName("toSymbol"),
14321            n = t.childOfName("label");
14322        if (e || i || !n.ignore) {
14323            for (var o = 1, a = this.parent; a;) a.scale && (o /= a.scale[0]), a = a.parent;
14324            var r = t.childOfName("line");
14325            if (this.__dirty || r.__dirty) {
14326                var s = r.shape.percent,
14327                    l = r.pointAt(0),
14328                    u = r.pointAt(s),
14329                    h = U([], u, l);
14330                if (q(h, h), e && (e.attr("position", l), c = r.tangentAt(0), e.attr("rotation", Math.PI / 2 - Math.atan2(c[1], c[0])), e.attr("scale", [o * s, o * s])), i) {
14331                    i.attr("position", u);
14332                    var c = r.tangentAt(1);
14333                    i.attr("rotation", -Math.PI / 2 - Math.atan2(c[1], c[0])), i.attr("scale", [o * s, o * s])
14334                }
14335                if (!n.ignore) {
14336                    n.attr("position", u);
14337                    var d, f, p, g = 5 * o;
14338                    if ("end" === n.__position) d = [h[0] * g + u[0], h[1] * g + u[1]], f = h[0] > .8 ? "left" : h[0] < -.8 ? "right" : "center", p = h[1] > .8 ? "top" : h[1] < -.8 ? "bottom" : "middle";
14339                    else if ("middle" === n.__position) {
14340                        var m = s / 2,
14341                            v = [(c = r.tangentAt(m))[1], -c[0]],
14342                            y = r.pointAt(m);
14343                        v[1] > 0 && (v[0] = -v[0], v[1] = -v[1]), d = [y[0] + v[0] * g, y[1] + v[1] * g], f = "center", p = "bottom";
14344                        var x = -Math.atan2(c[1], c[0]);
14345                        u[0] < l[0] && (x = Math.PI + x), n.attr("rotation", x)
14346                    } else d = [-h[0] * g + l[0], -h[1] * g + l[1]], f = h[0] > .8 ? "right" : h[0] < -.8 ? "left" : "center", p = h[1] > .8 ? "bottom" : h[1] < -.8 ? "top" : "middle";
14347                    n.attr({ style: { textVerticalAlign: n.__verticalAlign || p, textAlign: n.__textAlign || f }, position: d, scale: [o, o] })
14348                }
14349            }
14350        }
14351    }, pC._createLine = function(t, e, i) {
14352        var n = t.hostModel,
14353            o = _d(t.getItemLayout(e));
14354        o.shape.percent = 0, po(o, { shape: { percent: 1 } }, n, e), this.add(o);
14355        var a = new fS({ name: "label" });
14356        this.add(a), d(fC, function(i) {
14357            var n = xd(i, t, e);
14358            this.add(n), this[yd(i)] = t.getItemVisual(e, i)
14359        }, this), this._updateCommonStl(t, e, i)
14360    }, pC.updateData = function(t, e, i) {
14361        var n = t.hostModel,
14362            o = this.childOfName("line"),
14363            a = t.getItemLayout(e),
14364            r = { shape: {} };
14365        wd(r.shape, a), fo(o, r, n, e), d(fC, function(i) {
14366            var n = t.getItemVisual(e, i),
14367                o = yd(i);
14368            if (this[o] !== n) {
14369                this.remove(this.childOfName(i));
14370                var a = xd(i, t, e);
14371                this.add(a)
14372            }
14373            this[o] = n
14374        }, this), this._updateCommonStl(t, e, i)
14375    }, pC._updateCommonStl = function(t, e, i) {
14376        var n = t.hostModel,
14377            o = this.childOfName("line"),
14378            a = i && i.lineStyle,
14379            s = i && i.hoverLineStyle,
14380            l = i && i.labelModel,
14381            u = i && i.hoverLabelModel;
14382        if (!i || t.hasItemOption) {
14383            var h = t.getItemModel(e);
14384            a = h.getModel("lineStyle").getLineStyle(), s = h.getModel("emphasis.lineStyle").getLineStyle(), l = h.getModel("label"), u = h.getModel("emphasis.label")
14385        }
14386        var c = t.getItemVisual(e, "color"),
14387            f = A(t.getItemVisual(e, "opacity"), a.opacity, 1);
14388        o.useStyle(r({ strokeNoScale: !0, fill: "none", stroke: c, opacity: f }, a)), o.hoverStyle = s, d(fC, function(t) {
14389            var e = this.childOfName(t);
14390            e && (e.setColor(c), e.setStyle({ opacity: f }))
14391        }, this);
14392        var p, g, m = l.getShallow("show"),
14393            v = u.getShallow("show"),
14394            y = this.childOfName("label");
14395        if ((m || v) && (p = c || "#000", null == (g = n.getFormattedLabel(e, "normal", t.dataType)))) {
14396            var x = n.getRawValue(e);
14397            g = null == x ? t.getName(e) : isFinite(x) ? Ao(x) : x
14398        }
14399        var _ = m ? g : null,
14400            w = v ? D(n.getFormattedLabel(e, "emphasis", t.dataType), g) : null,
14401            b = y.style;
14402        null == _ && null == w || (no(y.style, l, { text: _ }, { autoColor: p }), y.__textAlign = b.textAlign, y.__verticalAlign = b.textVerticalAlign, y.__position = l.get("position") || "middle"), y.hoverStyle = null != w ? { text: w, textFill: u.getTextColor(!0), fontStyle: u.getShallow("fontStyle"), fontWeight: u.getShallow("fontWeight"), fontSize: u.getShallow("fontSize"), fontFamily: u.getShallow("fontFamily") } : { text: null }, y.ignore = !m && !v, eo(this)
14403    }, pC.highlight = function() { this.trigger("emphasis") }, pC.downplay = function() { this.trigger("normal") }, pC.updateLayout = function(t, e) { this.setLinePoints(t.getItemLayout(e)) }, pC.setLinePoints = function(t) {
14404        var e = this.childOfName("line");
14405        wd(e.shape, t), e.dirty()
14406    }, u(bd, sw);
14407    var gC = Sd.prototype;
14408    gC.isPersistent = function() { return !0 }, gC.updateData = function(t) {
14409        var e = this,
14410            i = e.group,
14411            n = e._lineData;
14412        e._lineData = t, n || i.removeAll();
14413        var o = Td(t);
14414        t.diff(n).add(function(i) { Md(e, t, i, o) }).update(function(i, a) { Id(e, n, t, a, i, o) }).remove(function(t) { i.remove(n.getItemGraphicEl(t)) }).execute()
14415    }, gC.updateLayout = function() {
14416        var t = this._lineData;
14417        t && t.eachItemGraphicEl(function(e, i) { e.updateLayout(t, i) }, this)
14418    }, gC.incrementalPrepareUpdate = function(t) { this._seriesScope = Td(t), this._lineData = null, this.group.removeAll() }, gC.incrementalUpdate = function(t, e) {
14419        for (var i = t.start; i < t.end; i++)
14420            if (Ad(e.getItemLayout(i))) {
14421                var n = new this._ctor(e, i, this._seriesScope);
14422                n.traverse(function(t) { t.isGroup || (t.incremental = t.useHoverLayer = !0) }), this.group.add(n), e.setItemGraphicEl(i, n)
14423            }
14424    }, gC.remove = function() { this._clearIncremental(), this._incremental = null, this.group.removeAll() }, gC._clearIncremental = function() {
14425        var t = this._incremental;
14426        t && t.clearDisplaybles()
14427    };
14428    var mC = [],
14429        vC = [],
14430        yC = [],
14431        xC = Qi,
14432        _C = M_,
14433        wC = Math.abs,
14434        bC = function(t, e) {
14435            function i(t) { var e = t.getVisual("symbolSize"); return e instanceof Array && (e = (e[0] + e[1]) / 2), e }
14436            var n = [],
14437                o = on,
14438                a = [
14439                    [],
14440                    [],
14441                    []
14442                ],
14443                r = [
14444                    [],
14445                    []
14446                ],
14447                s = [];
14448            e /= 2, t.eachEdge(function(t, l) {
14449                var u = t.getLayout(),
14450                    h = t.getVisual("fromSymbol"),
14451                    c = t.getVisual("toSymbol");
14452                u.__original || (u.__original = [W(u[0]), W(u[1])], u[2] && u.__original.push(W(u[2])));
14453                var d = u.__original;
14454                if (null != u[2]) {
14455                    if (G(a[0], d[0]), G(a[1], d[2]), G(a[2], d[1]), h && "none" != h) {
14456                        var f = i(t.node1),
14457                            p = Cd(a, d[0], f * e);
14458                        o(a[0][0], a[1][0], a[2][0], p, n), a[0][0] = n[3], a[1][0] = n[4], o(a[0][1], a[1][1], a[2][1], p, n), a[0][1] = n[3], a[1][1] = n[4]
14459                    }
14460                    if (c && "none" != c) {
14461                        var f = i(t.node2),
14462                            p = Cd(a, d[1], f * e);
14463                        o(a[0][0], a[1][0], a[2][0], p, n), a[1][0] = n[1], a[2][0] = n[2], o(a[0][1], a[1][1], a[2][1], p, n), a[1][1] = n[
144631], a[2][1] = n[2]
14464                    }
14465                    G(u[0], a[0]), G(u[1], a[2]), G(u[2], a[1])
14466                } else {
14467                    if (G(r[0], d[0]), G(r[1], d[1]), U(s, r[1], r[0]), q(s, s), h && "none" != h) {
14468                        f = i(t.node1);
14469                        Z(r[0], r[0], s, f * e)
14470                    }
14471                    if (c && "none" != c) {
14472                        f = i(t.node2);
14473                        Z(r[1], r[1], s, -f * e)
14474                    }
14475                    G(u[0], r[0]), G(u[1], r[1])
14476                }
14477            })
14478        },
14479        SC = ["itemStyle", "opacity"],
14480        MC = ["lineStyle", "opacity"];
14481    _s({
14482        type: "graph",
14483        init: function(t, e) {
14484            var i = new Ql,
14485                n = new Sd,
14486                o = this.group;
14487            this._controller = new kh(e.getZr()), this._controllerHost = { target: o }, o.add(i.group), o.add(n.group), this._symbolDraw = i, this._lineDraw = n, this._firstRender = !0
14488        },
14489        render: function(t, e, i) {
14490            var n = t.coordinateSystem;
14491            this._model = t, this._nodeScaleRatio = t.get("nodeScaleRatio");
14492            var o = this._symbolDraw,
14493                a = this._lineDraw,
14494                r = this.group;
14495            if ("view" === n.type) {
14496                var s = { position: n.position, scale: n.scale };
14497                this._firstRender ? r.attr(s) : fo(r, s, t)
14498            }
14499            bC(t.getGraph(), this._getNodeGlobalScale(t));
14500            var l = t.getData();
14501            o.updateData(l);
14502            var u = t.getEdgeData();
14503            a.updateData(u), this._updateNodeAndLinkScale(), this._updateController(t, e, i), clearTimeout(this._layoutTimeout);
14504            var h = t.forceLayout,
14505                c = t.get("force.layoutAnimation");
14506            h && this._startForceLayoutIteration(h, c), l.eachItemGraphicEl(function(e, n) {
14507                var o = l.getItemModel(n);
14508                e.off("drag").off("dragend");
14509                var a = l.getItemModel(n).get("draggable");
14510                a && e.on("drag", function() { h && (h.warmUp(), !this._layouting && this._startForceLayoutIteration(h, c), h.setFixed(n), l.setItemLayout(n, e.position)) }, this).on("dragend", function() { h && h.setUnfixed(n) }, this), e.setDraggable(a && h), e.off("mouseover", e.__focusNodeAdjacency), e.off("mouseout", e.__unfocusNodeAdjacency), o.get("focusNodeAdjacency") && (e.on("mouseover", e.__focusNodeAdjacency = function() { i.dispatchAction({ type: "focusNodeAdjacency", seriesId: t.id, dataIndex: e.dataIndex }) }), e.on("mouseout", e.__unfocusNodeAdjacency = function() { i.dispatchAction({ type: "unfocusNodeAdjacency", seriesId: t.id }) }))
14511            }, this), l.graph.eachEdge(function(e) {
14512                var n = e.getGraphicEl();
14513                n.off("mouseover", n.__focusNodeAdjacency), n.off("mouseout", n.__unfocusNodeAdjacency), e.getModel().get("focusNodeAdjacency") && (n.on("mouseover", n.__focusNodeAdjacency = function() { i.dispatchAction({ type: "focusNodeAdjacency", seriesId: t.id, edgeDataIndex: e.dataIndex }) }), n.on("mouseout", n.__unfocusNodeAdjacency = function() { i.dispatchAction({ type: "unfocusNodeAdjacency", seriesId: t.id }) }))
14514            });
14515            var d = "circular" === t.get("layout") && t.get("circular.rotateLabel"),
14516                f = l.getLayout("cx"),
14517                p = l.getLayout("cy");
14518            l.eachItemGraphicEl(function(t, e) {
14519                var i = t.getSymbolPath();
14520                if (d) {
14521                    var n = l.getItemLayout(e),
14522                        o = Math.atan2(n[1] - p, n[0] - f);
14523                    o < 0 && (o = 2 * Math.PI + o);
14524                    var a = n[0] < f;
14525                    a && (o -= Math.PI);
14526                    var r = a ? "left" : "right";
14527                    i.setStyle({ textRotation: -o, textPosition: r, textOrigin: "center" }), i.hoverStyle && (i.hoverStyle.textPosition = r)
14528                } else i.setStyle({ textRotation: 0 })
14529            }), this._firstRender = !1
14530        },
14531        dispose: function() { this._controller && this._controller.dispose(), this._controllerHost = {} },
14532        focusNodeAdjacency: function(t, e, i, n) {
14533            var o = this._model.getData().graph,
14534                a = n.dataIndex,
14535                r = n.edgeDataIndex,
14536                s = o.getNodeByIndex(a),
14537                l = o.getEdgeByIndex(r);
14538            (s || l) && (o.eachNode(function(t) { kd(t, SC, .1) }), o.eachEdge(function(t) { kd(t, MC, .1) }), s && (Pd(s, SC), d(s.edges, function(t) { t.dataIndex < 0 || (Pd(t, MC), Pd(t.node1, SC), Pd(t.node2, SC)) })), l && (Pd(l, MC), Pd(l.node1, SC), Pd(l.node2, SC)))
14539        },
14540        unfocusNodeAdjacency: function(t, e, i, n) {
14541            var o = this._model.getData().graph;
14542            o.eachNode(function(t) { kd(t, SC) }), o.eachEdge(function(t) { kd(t, MC) })
14543        },
14544        _startForceLayoutIteration: function(t, e) { var i = this;! function n() { t.step(function(t) { i.updateLayout(i._model), (i._layouting = !t) && (e ? i._layoutTimeout = setTimeout(n, 16) : n()) }) }() },
14545        _updateController: function(t, e, i) {
14546            var n = this._controller,
14547                o = this._controllerHost,
14548                a = this.group;
14549            n.setPointerChecker(function(e, n, o) { var r = a.getBoundingRect
14549(); return r.applyTransform(a.transform), r.contain(n, o) && !Wh(e, i, t) }), "view" === t.coordinateSystem.type ? (n.enable(t.get("roam")), o.zoomLimit = t.get("scaleLimit"), o.zoom = t.coordinateSystem.getZoom(), n.off("pan").off("zoom").on("pan", function(e, n) { Vh(o, e, n), i.dispatchAction({ seriesId: t.id, type: "graphRoam", dx: e, dy: n }) }).on("zoom", function(e, n, a) { Gh(o, e, n, a), i.dispatchAction({ seriesId: t.id, type: "graphRoam", zoom: e, originX: n, originY: a }), this._updateNodeAndLinkScale(), bC(t.getGraph(), this._getNodeGlobalScale(t)), this._lineDraw.updateLayout() }, this)) : n.disable()
14550        },
14551        _updateNodeAndLinkScale: function() {
14552            var t = this._model,
14553                e = t.getData(),
14554                i = this._getNodeGlobalScale(t),
14555                n = [i, i];
14556            e.eachItemGraphicEl(function(t, e) { t.attr("scale", n) })
14557        },
14558        _getNodeGlobalScale: function(t) {
14559            var e = t.coordinateSystem;
14560            if ("view" !== e.type) return 1;
14561            var i = this._nodeScaleRatio,
14562                n = e.scale,
14563                o = n && n[0] || 1;
14564            return ((e.getZoom() - 1) * i + 1) / o
14565        },
14566        updateLayout: function(t) { bC(t.getGraph(), this._getNodeGlobalScale(t)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout() },
14567        remove: function(t, e) { this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove() }
14568    }), cs({ type: "graphRoam", event: "graphRoam", update: "none" }, function(t, e) {
14569        e.eachComponent({ mainType: "series", query: t }, function(e) {
14570            var i = Xh(e.coordinateSystem, t);
14571            e.setCenter && e.setCenter(i.center), e.setZoom && e.setZoom(i.zoom)
14572        })
14573    }), cs({ type: "focusNodeAdjacency", event: "focusNodeAdjacency", update: "series.graph:focusNodeAdjacency" }, function() {}), cs({ type: "unfocusNodeAdjacency", event: "unfocusNodeAdjacency", update: "series.graph:unfocusNodeAdjacency" }, function() {});
14574    var IC = Z;
14575    hs(function(t) {
14576        var e = t.findComponents({ mainType: "legend" });
14577        e && e.length && t.eachSeriesByType("graph", function(t) {
14578            var i = t.getCategoriesData(),
14579                n = t.getGraph().data,
14580                o = i.mapArray(i.getName);
14581            n.filterSelf(function(t) {
14582                var i = n.getItemModel(t).getShallow("category");
14583                if (null != i) {
14584                    "number" == typeof i && (i = o[i]);
14585                    for (var a = 0; a < e.length; a++)
14586                        if (!e[a].isSelected(i)) return !1
14587                }
14588                return !0
14589            })
14590        }, this)
14591    }), ps(gD("graph", "circle", null)), ps(function(t) {
14592        var e = {};
14593        t.eachSeriesByType("graph", function(t) {
14594            var i = t.getCategoriesData(),
14595                n = t.getData(),
14596                o = {};
14597            i.each(function(n) {
14598                var a = i.getName(n);
14599                o["ec-" + a] = n;
14600                var r = i.getItemModel(n).get("itemStyle.color") || t.getColorFromPalette(a, e);
14601                i.setItemVisual(n, "color", r)
14602            }), i.count() && n.each(function(t) {
14603                var e = n.getItemModel(t).getShallow("category");
14604                null != e && ("string" == typeof e && (e = o["ec-" + e]), n.getItemVisual(t, "color", !0) || n.setItemVisual(t, "color", i.getItemVisual(e, "color")))
14605            })
14606        })
14607    }), ps(function(t) {
14608        t.eachSeriesByType("graph", function(t) {
14609            var e = t.getGraph(),
14610                i = t.getEdgeData(),
14611                n = Nd(t.get("edgeSymbol")),
14612                o = Nd(t.get("edgeSymbolSize")),
14613                a = "lineStyle.color".split("."),
14614                r = "lineStyle.opacity".split(".");
14615            i.setVisual("fromSymbol", n && n[0]), i.setVisual("toSymbol", n && n[1]), i.setVisual("fromSymbolSize", o && o[0]), i.setVisual("toSymbolSize", o && o[1]), i.setVisual("color", t.get(a)), i.setVisual("opacity", t.get(r)), i.each(function(t) {
14616                var n = i.getItemModel(t),
14617                    o = e.getEdgeByIndex(t),
14618                    s = Nd(n.getShallow("symbol", !0)),
14619                    l = Nd(n.getShallow("symbolSize", !0)),
14620                    u = n.get(a),
14621                    h = n.get(r);
14622                switch (u) {
14623                    case "source":
14624                        u = o.node1.getVisual("color");
14625                        break;
14626                    case "target":
14627                        u = o.node2.getVisual("color")
14628                }
14629                s[0] && o.setVisual("fromSymbol", s[0]), s[1] && o.setVisual("toSymbol", s[1]), l[0] && o.setVisual("fromSymbolSize", l[0]), l[1] && o.setVisual("toSymbolSize", l[1]), o.setVisual("color", u), o.setVisual("opacity", h)
14630            })
14631        })
14632    }), fs(function(t, e) {
14633        t.eachSeriesByType("graph", function(t) {
14634            var e = t.get("layout"),
14635                i = t.coordinateSystem;
14636            if (i && "view" !== i.type) {
14637                var n = t.getData(),
14638                    o = [];
14639                d(i.dimensions, function(t) { o = o.concat(n.mapDimension(t, !0)) });
14640                for (var a = 0; a < n.count(); a++) {
14641                    for (var r = [], s = !1, l = 0; l < o.length; l++) {
14642                        var u = n.get(o[l], a);
14643                        isNaN(u) || (s = !0), r.push(u)
14644                    }
14645                    s ? n.setItemLayout(a, i.dataToPoint(r)) : n.setItemLayout(a, [
14645NaN, NaN])
14646                }
14647                Ed(n.graph)
14648            } else e && "none" !== e || Od(t)
14649        })
14650    }), fs(function(t) { t.eachSeriesByType("graph", function(t) { "circular" === t.get("layout") && Rd(t) }) }), fs(function(t) {
14651        t.eachSeriesByType("graph", function(t) {
14652            var e = t.coordinateSystem;
14653            if (!e || "view" === e.type)
14654                if ("force" === t.get("layout")) {
14655                    var i = t.preservedPoints || {},
14656                        n = t.getGraph(),
14657                        o = n.data,
14658                        a = n.edgeData,
14659                        r = t.getModel("force"),
14660                        s = r.get("initLayout");
14661                    t.preservedPoints ? o.each(function(t) {
14662                        var e = o.getId(t);
14663                        o.setItemLayout(t, i[e] || [NaN, NaN])
14664                    }) : s && "none" !== s ? "circular" === s && Rd(t) : Od(t);
14665                    var l = o.getDataExtent("value"),
14666                        u = a.getDataExtent("value"),
14667                        h = r.get("repulsion"),
14668                        c = r.get("edgeLength");
14669                    y(h) || (h = [h, h]), y(c) || (c = [c, c]), c = [c[1], c[0]];
14670                    var d = o.mapArray("value", function(t, e) {
14671                            var i = o.getItemLayout(e),
14672                                n = To(t, l, h);
14673                            return isNaN(n) && (n = (h[0] + h[1]) / 2), { w: n, rep: n, fixed: o.getItemModel(e).get("fixed"), p: !i || isNaN(i[0]) || isNaN(i[1]) ? null : i }
14674                        }),
14675                        f = a.mapArray("value", function(t, e) {
14676                            var i = n.getEdgeByIndex(e),
14677                                o = To(t, u, c);
14678                            return isNaN(o) && (o = (c[0] + c[1]) / 2), { n1: d[i.node1.dataIndex], n2: d[i.node2.dataIndex], d: o, curveness: i.getModel().get("lineStyle.curveness") || 0 }
14679                        }),
14680                        p = (e = t.coordinateSystem).getBoundingRect(),
14681                        g = zd(d, f, { rect: p, gravity: r.get("gravity") }),
14682                        m = g.step;
14683                    g.step = function(t) {
14684                        for (var e = 0, a = d.length; e < a; e++) d[e].fixed && G(d[e].p, n.getNodeByIndex(e).getLayout());
14685                        m(function(e, a, r) {
14686                            for (var s = 0, l = e.length; s < l; s++) e[s].fixed || n.getNodeByIndex(s).setLayout(e[s].p), i[o.getId(s)] = e[s].p;
14687                            for (var s = 0, l = a.length; s < l; s++) {
14688                                var u = a[s],
14689                                    h = n.getEdgeByIndex(s),
14690                                    c = u.n1.p,
14691                                    d = u.n2.p,
14692                                    f = h.getLayout();
14693                                (f = f ? f.slice() : [])[0] = f[0] || [], f[1] = f[1] || [], G(f[0], c), G(f[1], d), +u.curveness && (f[2] = [(c[0] + d[0]) / 2 - (c[1] - d[1]) * u.curveness, (c[1] + d[1]) / 2 - (d[0] - c[0]) * u.curveness]), h.setLayout(f)
14694                            }
14695                            t && t(r)
14696                        })
14697                    }, t.forceLayout = g, t.preservedPoints = i, g.step()
14698                } else t.forceLayout = null
14699        })
14700    }), ds("graphView", {
14701        create: function(t, e) {
14702            var i = [];
14703            return t.eachSeriesByType("graph", function(t) {
14704                var n = t.get("coordinateSystem");
14705                if (!n || "view" === n) {
14706                    var o = t.getData(),
14707                        a = [],
14708                        r = [];
14709                    rn(o.mapArray(function(t) { var e = o.getItemModel(t); return [+e.get("x"), +e.get("y")] }), a, r), r[0] - a[0] == 0 && (r[0] += 1, a[0] -= 1), r[1] - a[1] == 0 && (r[1] += 1, a[1] -= 1);
14710                    var s = (r[0] - a[0]) / (r[1] - a[1]),
14711                        l = Bd(t, e, s);
14712                    isNaN(s) && (a = [l.x, l.y], r = [l.x + l.width, l.y + l.height]);
14713                    var u = r[0] - a[0],
14714                        h = r[1] - a[1],
14715                        c = l.width,
14716                        d = l.height,
14717                        f = t.coordinateSystem = new wh;
14718                    f.zoomLimit = t.get("scaleLimit"), f.setBoundingRect
14718(a[0], a[1], u, h), f.setViewRect(l.x, l.y, c, d), f.setCenter(t.get("center")), f.setZoom(t.get("zoom")), i.push(f)
14719                }
14720            }), i
14721        }
14722    });
14723    KM.extend({
14724        type: "series.gauge",
14725        getInitialData: function(t, e) { var i = t.data || []; return y(i) || (i = [i]), t.data = i, jD(this, ["value"]) },
14726        defaultOption: {
14727            zlevel: 0,
14728            z: 2,
14729            center: ["50%", "50%"],
14730            legendHoverLink: !0,
14731            radius: "75%",
14732            startAngle: 225,
14733            endAngle: -45,
14734            clockwise: !0,
14735            min: 0,
14736            max: 100,
14737            splitNumber: 10,
14738            axisLine: {
14739                show: !0,
14740                lineStyle: {
14741                    color: [
14742                        [.2, "#91c7ae"],
14743                        [.8, "#63869e"],
14744                        [1, "#c23531"]
14745                    ],
14746                    width: 30
14747                }
14748            },
14749            splitLine: { show: !0, length: 30, lineStyle: { color: "#eee", width: 2, type: "solid" } },
14750            axisTick: { show: !0, splitNumber: 5, length: 8, lineStyle: { color: "#eee", width: 1, type: "solid" } },
14751            axisLabel: { show: !0, distance: 5, color: "auto" },
14752            pointer: { show: !0, length: "80%", width: 8 },
14753            itemStyle: { color: "auto" },
14754            title: { show: !0, offsetCenter: [0, "-40%"], color: "#333", fontSize: 15 },
14755            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 }
14756        }
14757    });
14758    var TC = In.extend({
14759            type: "echartsGaugePointer",
14760            shape: { angle: 0, width: 10, r: 10, x: 0, y: 0 },
14761            buildPath: function(t, e) {
14762                var i = Math.cos,
14763                    n = Math.sin,
14764                    o = e.r,
14765                    a = e.width,
14766                    r = e.angle,
14767                    s = e.x - i(r) * a * (a >= o / 3 ? 1 : 2),
14768                    l = e.y - n(r) * a * (a >= o / 3 ? 1 : 2);
14769                r = e.angle - Math.PI / 2, t.moveTo(s, l), t.lineTo(e.x + i(r) * a, e.y + n(r) * a), t.lineTo(e.x + i(e.angle) * o, e.y + n(e.angle) * o), t.lineTo(e.x - i(r) * a, e.y - n(r) * a), t.lineTo(s, l)
14770            }
14771        }),
14772        DC = 2 * Math.PI,
14773        AC = (gr.extend({
14774            type: "gauge",
14775            render: function(t, e, i) {
14776                this.group.removeAll();
14777                var n = t.get("axisLine.lineStyle.color"),
14778                    o = Vd(t, i);
14779                this._renderMain(t, e, i, n, o)
14780            },
14781            dispose: function() {},
14782            _renderMain: function(t, e, i, n, o) {
14783                for (var a = this.group, r = t.getModel("axisLine").getModel("lineStyle"), s = t.get("clockwise"), l = -t.get("startAngle") / 180 * Math.PI, u = -t.get("endAngle") / 180 * Math.PI, h = (u - l) % DC, c = l, d = r.get("width"), f = 0; f < n.length; f++) {
14784                    var p = Math.min(Math.max(n[f][0], 0), 1),
14785                        g = new vS({ shape: { startAngle: c, endAngle: u = l + h * p, cx: o.cx, cy: o.cy, clockwise: s, r0: o.r - d, r: o.r }, silent: !0 });
14786                    g.setStyle({ fill: n[f][1] }), g.setStyle(r.getLineStyle(["color", "borderWidth", "borderColor"])), a.add(g), c = u
14787                }
14788                var m = function(t) {
14789                    if (t <= 0) return n[0][1];
14790                    for (var e = 0; e < n.length; e++)
14791                        if (n[e][0] >= t && (0 === e ? 0 : n[e - 1][0]) < t) return n[e][1];
14792                    return n[e - 1][1]
14793                };
14794                if (!s) {
14795                    var v = l;
14796                    l = u, u = v
14797                }
14798                this._renderTicks(t, e, i, m, o, l, u, s), this._renderPointer(t, e, i, m, o, l, u, s), this._renderTitle(t, e, i, m, o), this._renderDetail(t, e, i, m, o)
14799            },
14800            _renderTicks: function(t, e, i, n, o, a, r, s) {
14801                for (var l = this.group, u = o.cx, h = o.cy, c = o.r, d = +t.get("min"), f = +t.get("max"), p = t.getModel("splitLine"), g = t.getModel("axisTick"), m = t.getModel("axisLabel"), v = t.get("splitNumber"), y = g.get("splitNumber"), x = Do(p.get("length"), c), _ = Do(g.get("length"), c), w = a, b = (r - a) / v, S = b / y, M = p.getModel("lineStyle").getLineStyle(), I = g.getModel("lineStyle").getLineStyle(), T = 0; T <= v; T++) {
14802                    var D = Math.cos(w),
14803                        A = Math.sin(w);
14804                    if (p.get("show")) { var C = new MS({ shape: { x1: D * c + u, y1: A * c + h, x2: D * (c - x) + u, y2: A * (c - x) + h }, style: M, silent: !0 }); "auto" === M.stroke && C.setStyle({ stroke: n(T / v) }), l.add(C) }
14805                    if (m.get("show")) {
14806                        var L = Gd(Ao(T / v * (f - d) + d), m.get("formatter")),
14807                            k = m.get("distance"),
14808                            P = n(T / v);
14809                        l.add(new fS({ style: no({}, m, { text: L, x: D * (c - x - k) + u, y: A * (c - x - k) + h, textVerticalAlign: A < -.4 ? "top" : A > .4 ? "bottom" : "middle", textAlign: D < -.4 ? "left" : D > .4 ? "right" : "center" }, { autoColor: P }), silent: !0 }))
14810                    }
14811                    if (g.get("show") && T !== v) {
14812                        for (var N = 0; N <= y; N++) {
14813                            var D = Math.cos(w),
14814                                A = Math.sin(w),
14815                                O = new MS({ shape: { x1: D * c + u, y1: A * c + h, x2: D * (c - _) + u, y2: A * (c - _) + h }, silent: !0, style: I });
14816                            "auto" === I.stroke && O.setStyle({ stroke: n((T + N / y
14816) / v) }), l.add(O), w += S
14817                        }
14818                        w -= S
14819                    } else w += b
14820                }
14821            },
14822            _renderPointer: function(t, e, i, n, o, a, r, s) {
14823                var l = this.group,
14824                    u = this._data;
14825                if (t.get("pointer.show")) {
14826                    var h = [+t.get("min"), +t.get("max")],
14827                        c = [a, r],
14828                        d = t.getData(),
14829                        f = d.mapDimension("value");
14830                    d.diff(u).add(function(e) {
14831                        var i = new TC({ shape: { angle: a } });
14832                        po(i, { shape: { angle: To(d.get(f, e), h, c, !0) } }, t), l.add(i), d.setItemGraphicEl(e, i)
14833                    }).update(function(e, i) {
14834                        var n = u.getItemGraphicEl(i);
14835                        fo(n, { shape: { angle: To(d.get(f, e), h, c, !0) } }, t), l.add(n), d.setItemGraphicEl(e, n)
14836                    }).remove(function(t) {
14837                        var e = u.getItemGraphicEl(t);
14838                        l.remove(e)
14839                    }).execute(), d.eachItemGraphicEl(function(t, e) {
14840                        var i = d.getItemModel(e),
14841                            a = i.getModel("pointer");
14842                        t.setShape({ x: o.cx, y: o.cy, width: Do(a.get("width"), o.r), r: Do(a.get("length"), o.r) }), t.useStyle(i.getModel("itemStyle").getItemStyle()), "auto" === t.style.fill && t.setStyle("fill", n(To(d.get(f, e), h, [0, 1], !0))), eo(t, i.getModel("emphasis.itemStyle").getItemStyle())
14843                    }), this._data = d
14844                } else u && u.eachItemGraphicEl(function(t) { l.remove(t) })
14845            },
14846            _renderTitle: function(t, e, i, n, o) {
14847                var a = t.getData(),
14848                    r = a.mapDimension("value"),
14849                    s = t.getModel("title");
14850                if (s.get("show")) {
14851                    var l = s.get("offsetCenter"),
14852                        u = o.cx + Do(l[0], o.r),
14853                        h = o.cy + Do(l[1], o.r),
14854                        c = +t.get("min"),
14855                        d = +t.get("max"),
14856                        f = n(To(t.getData().get(r, 0), [c, d], [0, 1], !0));
14857                    this.group.add(new fS({ silent: !0, style: no({}, s, { x: u, y: h, text: a.getName(0), textAlign: "center", textVerticalAlign: "middle" }, { autoColor: f, forceRich: !0 }) }))
14858                }
14859            },
14860            _renderDetail: function(t, e, i, n, o) {
14861                var a = t.getModel("detail"),
14862                    r = +t.get("min"),
14863                    s = +t.get("max");
14864                if (a.get("show")) {
14865                    var l = a.get("offsetCenter"),
14866                        u = o.cx + Do(l[0], o.r),
14867                        h = o.cy + Do(l[1], o.r),
14868                        c = Do(a.get("width"), o.r),
14869                        d = Do(a.get("height"), o.r),
14870                        f = t.getData(),
14871                        p = f.get(f.mapDimension("value"), 0),
14872                        g = n(To(p, [r, s], [0, 1], !0));
14873                    this.group.add(new fS({ silent: !0, style: no({}, a, { x: u, y: h, text: Gd(p, a.get("formatter")), textWidth: isNaN(c) ? null : c, textHeight: isNaN(d) ? null : d, textAlign: "center", textVerticalAlign: "middle" }, { autoColor: g, forceRich: !0 }) }))
14874                }
14875            }
14876        }), xs({
14877            type: "series.funnel",
14878            init: function(t) { AC.superApply(this, "init", arguments), this.legendDataProvider = function() { return this.getRawData() }, this._defaultLabelLine(t) },
14879            getInitialData: function(t, e) { return jD(this, ["value"]) },
14880            _defaultLabelLine: function(t) {
14881                Mi(t, "labelLine", ["show"]);
14882                var e = t.labelLine,
14883                    i = t.emphasis.labelLine;
14884                e.show = e.show && t.label.show, i.show = i.show && t.emphasis.label.show
14885            },
14886            getDataParams: function(t) {
14887                var e = this.getData(),
14888                    i = AC.superCall(this, "getDataParams", t),
14889                    n = e.mapDimension("value"),
14890                    o = e.getSum(n);
14891                return i.percent = o ? +(e.get(n, t) / o * 100).toFixed(2) : 0, i.$vars.push("percent"), i
14892            },
14893            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 } } }
14894        })),
14895        CC = Wd.prototype,
14896        LC = ["itemStyle", "opacity"];
14897    CC.updateData = function(t, e, i) {
14898        var n = this.childAt(0),
14899            o = t.hostModel,
14900            a = t.getItemModel(e),
14901            s = t.getItemLayout(e),
14902            l = t.getItemModel(e).get(LC);
14903        l = null == l ? 1 : l, n.useStyle({}), i ? (n.setShape({ points: s.points }), n.setStyle({ opacity: 0 }), po(n, { style: { opacity: l } }, o, e)) : fo(n, { style: { opacity: l }, shape: { points: s.points } }, o, e);
14904        var u = a.getModel("itemStyle"),
14905            h = t.getItemVisual(e, "color");
14906        n.setStyle(r({ lineJoin: "round", fill: h }, u.getItemStyle(["opacity"]))), n.hoverStyle = u.getModel("emphasis").getItemStyle(), this._updateLabel(t, e), eo(this)
14907    }, CC._updateLabel = function(t, e) {
14908        var i = this.childAt(1),
14909            n = this.childAt(2),
14910            o = t.hostModel,
14911            a = t.getItemModel(e),
14912            r = t.getItemLayout(e).label,
14913            s = t.getItemVisual(e, "color");
14914        fo(i, { shape: { points: r.linePoints || r.linePoints } }, o, e), fo(n, { style: { x: r.x, y: r.y } }, o, e), n.attr({ rotation: r.rotation, origin: [r.x, r.y], z2: 10 });
14915        var l = a.getModel("label"),
14916            u = a.getModel("emphasis.label"),
14917            h = a.getModel("labelLine"),
14918            c = a.getModel("emphasis.labelLine"),
14919            s = t.getItemVisual(e, "color");
14920        io(n.style, n.hoverStyle = {}, l, u, { labelFetcher: t.hostModel, labelDataIndex: e, defaultText: t.getName(e), autoColor: s, useInsideStyle: !!r.inside }, { textAlign: r.textAlign, textVerticalAlign: r.verticalAlign }), n.ignore = n.normalIgnore = !l.get("show"), n.hoverIgnore = !u.get("show"), i.ignore = i.normalIgnore = !h.get("show"), i.hoverIgnore = !c.get("show"), i.setStyle({ stroke: s }), i.setStyle(h.getModel("lineStyle").getLineStyle()), i.hoverStyle = c.getModel("lineStyle").getLineStyle()
14921    }, u(Wd, sw);
14922    gr.extend({
14923        type: "funnel",
14924        render: function(t, e, i) {
14925            var n = t.getData(),
14926                o = this._data,
14927                a = this.group;
14928            n.diff(o).add(function(t) {
14929                var e = new Wd(n, t);
14930                n.setItemGraphicEl(t, e), a.add(e)
14931            }).update(function(t, e) {
14932                var i = o.getItemGraphicEl(e);
14933                i.updateData(n, t), a.add(i), n.setItemGraphicEl(t, i)
14934            }).remove(function(t) {
14935                var e = o.getItemGraphicEl(t);
14936                a.remove(e)
14937            }).execute(), this._data = n
14938        },
14939        remove: function() { this.group.removeAll(), this._data = null },
14940        dispose: function() {}
14941    });
14942    ps(JD("funnel")), fs(function(t, e, i) {
14943        t.eachSeriesByType("funnel", function(t) {
14944            var i = t.getData(),
14945                n = i.mapDimension("value"),
14946                o = t.get("sort"),
14947                a = Fd(t, e),
14948                r = Hd(i, o),
14949                s = [Do(t.get("minSize"), a.width), Do(t.get("maxSize"), a.width)],
14950                l = i.getDataExtent(n),
14951                u = t.get("min"),
14952                h = t.get("max");
14953            null == u && (u = Math.min(l[0], 0)), null == h && (h = l[1]);
14954            var c = t.get("funnelAlign"),
14955                d = t.get("gap"),
14956                f = (a.height - d * (i.count() - 1)) / i.count(),
14957                p = a.y,
14958                g = function(t, e) {
14959                    var o, r = To(i.get(n, t) || 0, [u, h], s, !0);
14960                    switch (c) {
14961                        case "left":
14962                            o = a.x;
14963                            break;
14964                        case "center":
14965                            o = a.x + (a.width - r) / 2;
14966                            break;
14967                        case "right":
14968                            o = a.x + a.width - r
14969                    }
14970                    return [
14971                        [o, e],
14972                        [o + r, e]
14973                    ]
14974                };
14975            "ascending" === o && (f = -f, d = -d, p += a.height, r = r.reverse());
14976            for (var m = 0; m < r.length; m++) {
14977                var v = r[m],
14978                    y = r[m + 1],
14979                    x = i.getItemModel(v).get("itemStyle.height");
14980                null == x ? x = f : (x = Do(x, a.height), "ascending" === o && (x = -x));
14981                var _ = g(v, p),
14982                    w = g(y, p + x);
14983                p += x + d, i.setItemLayout(v, { points: _.concat(w.slice().reverse()) })
14984            }
14985            Zd(i)
14986        })
14987    }), hs(iA("funnel"));
14988    var kC = function(t, e, i, n, o) { qT.call(this, t, e, i), this.type = n || "value", this.axisIndex = o };
14989    kC.prototype = { constructor: kC, model: null, isHorizontal: function() { return "horizontal" !== this.coordinateSystem.getModel().get("layout") } }, u(kC, qT);
14990    var PC = function(t, e, i, n, o, a) {
14991            e[0] = Yd(e[0], i), e[1] = Yd(e[1], i), t = t || 0;
14992            var r = i[1] - i[0];
14993            null != o && (o = Yd(o, [0, r])), null != a && (a = Math.max(a, null != o ? o : 0)), "all" === n && (o = a = Math.abs(e[1] - e[0]), n = 0);
14994            var s = jd(e, n);
14995            e[n] += t;
14996            var l = o || 0,
14997                u = i.slice();
14998            s.sign < 0 ? u[0] += l : u[1] -= l, e[n] = Yd(e[n], u);
14999            h = jd(e, n);
15000            null != o && (h.sign !== s.sign || h.span < o) && (e[1 - n] = e[n] + s.sign * o);
15001            var h = jd(e, n);
15002            return null != a && h.span > a && (e[1 - n] = e[n] + h.sign * a), e
15003        },
15004        NC = d,
15005        OC = Math.min,
15006        EC = Math.max,
15007        RC = Math.floor,
15008        zC = Math.ceil,
15009        BC = Ao,
15010        VC = Math.PI;
15011    qd.prototype = {
15012        type: "parallel",
15013        constructor: qd,
15014        _init: function(t, e, i) {
15015            var n = t.dimensions,
15016                o = t.parallelAxisIndex;
15017            NC(n, function(t, i) {
15018                var n = o[i],
15019                    a = e.getComponent("parallelAxis", n),
15020                    r = this._axesMap.set(t, new kC(t, xl(a), [0, 0], a.get("type"), n)),
15021                    s = "category" === r.type;
15022                r.onBand = s && a.get("boundaryGap"), r.inverse = a.get("inverse"), a.axis = r, r.model = a, r.coordinateSystem = a.coordinateSystem = this
15023            }, this)
15024        },
15025        update: function(t, e) { this._updateAxesFromSeries(this._model, t) },
15026        containPoint: function(t) {
15027            var e = this._makeLayoutInfo(),
15028                i = e.axisBase,
15029                n = e.layoutBase,
15030                o = e.pixelDimIndex,
15031                a = t[1 - o],
15032                r = t[o];
15033            return a >= i && a <= i + e.axisLength && r >= n && r <= n + e.layoutLength
15034        },
15035        getModel: function() { return this._model },
15036        _updateAxesFromSeries: function(t, e) {
15037            e.eachSeries(function(i) {
15038                if (t.contains(i, e)) {
15039                    var n = i.getData();
15040                    NC(this.dimensions, function(t) {
15041                        var e = this._axesMap.get(t);
15042                        e.scale.unionExtentFromData(n, n.mapDimension(t)), yl(e.scale, e.model)
15043                    }, this)
15044                }
15045            }, this)
15046        },
15047        resize: function(t, e) { this._rect = Qo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }), this._layoutAxes() },
15048        getRect: function() { return this._rect },
15049        _makeLayoutInfo: function() {
15050            var t, e = this._model,
15051                i = this._rect,
15052                n = ["x", "y"],
15053                o = ["width", "height"],
15054                a = e.get("layout"),
15055                r = "horizontal" === a ? 0 : 1,
15056                s = i[o[r]],
15057                l = [0, s],
15058                u = this.dimensions.length,
15059                h = Kd(e.get("axisExpandWidth"), l),
15060                c = Kd(e.get("axisExpandCount") || 0, [0, u]),
15061                d = e.get("axisExpandable") && u > 3 && u > c && c > 1 && h > 0 && s > 0,
15062                f = e.get("axisExpandWindow");
15063            f ? (t = Kd(f[1] - f[0], l), f[1] = f[0] + t) : (t = Kd(h * (c - 1), l), (f = [h * (e.get("axisExpandCenter") || RC(u / 2)) - t / 2])[1] = f[0] + t);
15064            var p = (s - t) / (u - c);
15065            p < 3 && (p = 0);
15066            var g = [RC(BC(f[0] / h, 1)) + 1, zC(BC(f[1] / h, 1)) - 1],
15067                m = p / h * f[0];
15068            return { layout: a, pixelDimIndex: r, layoutBase: i[n[r]], layoutLength: s, axisBase: i[n[1 - r]], axisLength: i[o[1 - r]], axisExpandable: d, axisExpandWidth: h, axisCollapseWidth: p, axisExpandWindow: f, axisCount: u, winInnerIndices: g, axisExpandWindow0Pos: m }
15069        },
15070        _layoutAxes: function() {
15071            var t = this._rect,
15072                e = this._axesMap,
15073                i = this.dimensions,
15074                n = this._makeLayoutInfo(),
15075                o = n.layout;
15076            e.each(function(t) {
15077                var e = [0, n.axisLength],
15078                    i = t.inverse ? 1 : 0;
15079                t.setExtent(e[i], e[1 - i])
15080            }), NC(i, function(e, i) {
15081                var a = (n.axisExpandable ? Jd : $d)(i, n),
15082                    r = { horizontal: { x: a.position, y: n.axisLength }, vertical: { x: 0, y: a.position } },
15083                    s = { horizontal: VC / 2, vertical: 0 },
15084                    l = [r[o].x + t.x, r[o].y + t.y],
15085                    u = s[o],
15086                    h = st();
15087                dt(h, h, u), ct(h, h, l), this._axesLayout[e] = { position: l, rotation: u, transform: h, axisNameAvailableWidth: a.axisNameAvailableWidth, axisLabelShow: a.axisLabelShow, nameTruncateMaxWidth: a.nameTruncateMaxWidth, tickDirection: 1, labelDirection: 1 }
15088            }, this)
15089        },
15090        getAxis: function(t) { return this._axesMap.get(t) },
15091        dataToPoint: function(t, e) { return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t), e) },
15092        eachActiveState: function(t, e, i, n) {
15093            null == i && (i = 0), null == n && (n = t.count());
15094            var o = this._axesMap,
15095                a = this.dimensions,
15096                r = [],
15097                s = [];
15098            d(a, function(e) { r.push(t.mapDimension(e)), s.push(o.get(e).model) });
15099            for (var l = this.hasAxisBrushed(), u = i; u < n; u++) {
15100                var h;
15101                if (l) {
15102                    h = "active";
15103                    for (var c = t.getValues(r, u), f = 0, p = a.length; f < p; f++)
15104                        if ("inactive" === s[f].getActiveState(c[f])) { h = "inactive"; break }
15105                } else h = "normal";
15106                e(h, u)
15107            }
15108        },
15109        hasAxisBrushed: function() { for (var t = this.dimensions, e = this._axesMap, i = !1, n = 0, o = t.length; n < o; n++) "normal" !== e.get(t[n]).model.getActiveState() && (i = !0); return i },
15110        axisCoordToPoint: function(t, e) { return mo([t, 0], this._axesLayout[e].transform) },
15111        getAxisLayout: function(t) { return i(this._axesLayout[t]) },
15112        getSlidedAxisExpandWindow: function(t) {
15113            var e = this._makeLayoutInfo(),
15114                i = e.pixelDimIndex,
15115                n = e.axisExpandWindow.slice(),
15116                o = n[1] - n[0],
15117                a = [0, e.axisExpandWidth * (e.axisCount - 1)];
15118            if (!this.containPoint(t)) return { behavior: "none", axisExpandWindow: n };
15119            var r, s = t[i] - e.layoutBase - e.axisExpandWindow0Pos,
15120                l = "slide",
15121                u = e.axisCollapseWidth,
15122                h = this._model.get("axisExpandSlideTriggerArea"),
15123                c = null != h[0];
15124            if (u) c && u && s < o * h[0] ? (l = "jump", r = s - o * h[2]) : c && u && s > o * (1 - h[0]) ? (l = "jump", r = s - o * (1 - h[2])) : (r = s - o * h[1]) >
15124= 0 && (r = s - o * (1 - h[1])) <= 0 && (r = 0), (r *= e.axisExpandWidth / u) ? PC(r, n, a, "all") : l = "none";
15125            else {
15126                o = n[1] - n[0];
15127                (n = [EC(0, a[1] * s / o - o / 2)])[1] = OC(a[1], n[0] + o), n[0] = n[1] - o
15128            }
15129            return { axisExpandWindow: n, behavior: l }
15130        }
15131    }, Ca.register("parallel", {
15132        create: function(t, e) {
15133            var i = [];
15134            return t.eachComponent("parallel", function(n, o) {
15135                var a = new qd(n, t, e);
15136                a.name = "parallel_" + o, a.resize(n, e), n.coordinateSystem = a, a.model = n, i.push(a)
15137            }), t.eachSeries(function(e) {
15138                if ("parallel" === e.get("coordinateSystem")) {
15139                    var i = t.queryComponents({ mainType: "parallel", index: e.get("parallelIndex"), id: e.get("parallelId") })[0];
15140                    e.coordinateSystem = i.coordinateSystem
15141                }
15142            }), i
15143        }
15144    });
15145    var GC = hM.extend({
15146            type: "baseParallelAxis",
15147            axis: null,
15148            activeIntervals: [],
15149            getAreaSelectStyle: function() {
15150                return sb([
15151                    ["fill", "color"],
15152                    ["lineWidth", "borderWidth"],
15153                    ["stroke", "borderColor"],
15154                    ["width", "width"],
15155                    ["opacity", "opacity"]
15156                ])(this.getModel("areaSelectStyle"))
15157            },
15158            setActiveIntervals: function(t) {
15159                var e = this.activeIntervals = i(t);
15160                if (e)
15161                    for (var n = e.length - 1; n >= 0; n--) Co(e[n])
15162            },
15163            getActiveState: function(t) {
15164                var e = this.activeIntervals;
15165                if (!e.length) return "normal";
15166                if (null == t || isNaN(t)) return "inactive";
15167                if (1 === e.length) { var i = e[0]; if (i[0] <= t && t <= i[1]) return "active" } else
15168                    for (var n = 0, o = e.length; n < o; n++)
15169                        if (e[n][0] <= t && t <= e[n][1]) return "active"; return "inactive"
15170            }
15171        }),
15172        WC = { 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 };
15173    n(GC.prototype, ET), MD("parallel", GC, function(t, e) { return e.type || (e.data ? "category" : "value") }, WC), hM.extend({
15174        type: "parallel",
15175        dependencies: ["parallelAxis"],
15176        coordinateSystem: null,
15177        dimensions: null,
15178        parallelAxisIndex: null,
15179        layoutMode: "box",
15180        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 },
15181        init: function() { hM.prototype.init.apply(this, arguments), this.mergeOption({}) },
15182        mergeOption: function(t) {
15183            var e = this.option;
15184            t && n(e, t, !0), this._initDimensions()
15185        },
15186        contains: function(t, e) { var i = t.get("parallelIndex"); return null != i && e.getComponent("parallel", i) === this },
15187        setAxisExpand: function(t) { d(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(e) { t.hasOwnProperty(e) && (this.option[e] = t[e]) }, this) },
15188        _initDimensions: function() {
15189            var t = this.dimensions = [],
15190                e = this.parallelAxisIndex = [];
15191            d(g(this.dependentModels.parallelAxis, function(t) { return (t.get("parallelIndex") || 0) === this.componentIndex }, this), function(i) { t.push("dim" + i.get("dim")), e.push(i.componentIndex) })
15192        }
15193    }), cs({ type: "axisAreaSelect", event: "axisAreaSelected" }, function(t, e) { e.eachComponent({ mainType: "parallelAxis", query: t }, function(e) { e.axis.model.setActiveIntervals(t.intervals) }) }), cs("parallelAxisExpand", function(t, e) { e.eachComponent({ mainType: "parallel", query: t }, function(e) { e.setAxisExpand(t) }) });
15194    var FC = v,
15195        HC = d,
15196        ZC = f,
15197        UC = Math.min,
15198        XC = Math.max,
15199        jC = Math.pow,
15200        YC = 1e4,
15201        qC = 6,
15202        KC = 6,
15203        $C = "globalPan",
15204        JC = { w: [0, 0], e: [0, 1], n: [1, 0], s: [1, 1] },
15205        QC = { w: "ew", e: "ew", n: "ns", s: "ns", ne: "nesw", sw: "nesw", nw: "nwse", se: "nwse" },
15206        tL = { brushStyle: { lineWidth: 2, stroke: "rgba(0,0,0,0.3)", fill: "rgba(0,0,0,0.1)" }, transformable: !0, brushMode: "single", removeOnClick: !1 },
15207        eL = 0;
15208    Qd.prototype = {
15209        constructor: Qd,
15210        enableBrush: function(t) { return this._brushType && ef(this), t.brushType && tf(this, t), this },
15211        setPanels: function(t) {
15212            if (t && t.length) {
15213                var e = this._panels = {};
15214                d(t, function(t) { e[t.panelId] = i(t) })
15215            } else this._panels = null;
15216            return this
15217        },
15218        mount: function(t) { t = t || {}, this._enableGlobalPan = t.enableGlobalPan; var e = this.group; return this._zr.add(e), e.attr({ position: t.position || [0, 0], rotation: t.rotation || 0, scale: t.scale || [1, 1] }), this._transform = e.getLocalTransform(), this },
15219        eachCover: function(t, e) { HC(this._covers, t, e) },
15220        updateCovers: function(t) {
15221            function e(t, e) { return (null != t.id ? t.id : a + e) + "-" + t.brushType }
15222
15223            function o(e, i) {
15224                var n = t[e];
15225                if (null != i && r[i] === u) s[e] = r[i];
15226                else {
15227                    var o = s[e] = null != i ? (r[i].__brushOption = n, r[i]) : of(l, nf(l, n));
15228                    sf(l, o)
15229                }
15230            }
15231            t = f(t, function(t) { return n(i(tL), t, !0) });
15232            var a = "\0-brush-index-",
15233                r = this._covers,
15234                s = this._covers = [],
15235                l = this,
15236                u = this._creatingCover;
15237            return new Ss(r, t, function(t, i) { return e(t.__brushOption, i) }, e).add(o).update(o).remove(function(t) { r[t] !== u && l.group.remove(r[t]) }).execute(), this
15238        },
15239        unmount: function() { return this.enableBrush(!1), cf(this), this._zr.remove(this.group), this },
15240        dispose: function() { this.unmount(), this.off() }
15241    }, h(Qd, D_);
15242    var iL = {
15243            mousedown: function(t) {
15244                if (this._dragging) Nf.call(this, t);
15245                else if (!t.target || !t.target.draggable) {
15246                    Cf(t);
15247                    var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY);
15248                    this._creatingCover = null, (this._creatingPanel = uf(this, t, e)) && (this._dragging = !0, this._track = [e.slice()])
15249                }
15250            },
15251            mousemove: function(t) {
15252                var e = this.group.transformCoordToLocal(t.offsetX, t.offsetY);
15253                if (Af(this, t, e), this._dragging) {
15254                    Cf(t);
15255                    var i = kf(this, t, e, !1);
15256                    i && df(this, i)
15257                }
15258            },
15259            mouseup: Nf
15260        },
15261        nL = { lineX: Of(0), lineY: Of(1), rect: { createCover: function(t, e) { return gf(FC(Sf, function(t) { return t }, function(t) { return t }), t, e, ["w", "e", "n", "s", "se", "sw", "ne", "nw"]) }, getCreatingRange: function(t) { var e = pf(t); return _f(e[1][0], e[1][1], e[0][0], e[0][1]) }, updateCoverShape: function(t, e, i, n) { mf(t, e, i, n) }, updateCommon: vf, contain: Lf }, polygon: { createCover: function(t, e) { var i = new sw; return i.add(new bS({ name: "main", style: xf(e), silent: !0 })), i }, getCreatingRange: function(t) { return t }, endCreating: function(t, e) { e.remove(e.childAt(0)), e.add(new wS({ name: "main", draggable: !0, drift: FC(Mf, t, e), ondragend: FC(df, t, { isEnd: !0 }) })) }, updateCoverShape: function(t, e, i, n) { e.childAt(0).setShape({ points: Tf(t, e, i) }) }, updateCommon: vf, contain: Lf } },
15262        oL = ["axisLine", "axisTickLabel", "axisName"],
15263        aL = ys({
15264            type: "parallelAxis",
15265            init: function(t, e) { aL.superApply(this, "init", arguments), (this._brushController = new Qd(e.getZr())).on("brush", m(this._onBrush, this)) },
15266            render: function(t, e, i, n) {
15267                if (!Vf(t, e, n)) {
15268                    this.axisModel = t, this.api = i, this.group.removeAll();
15269                    var o = this._axisGroup;
15270                    if (this._axisGroup = new sw, this.group.add(this._axisGroup), t.get("show")) {
15271                        var r = Wf(t, e),
15272                            s = r.coordinateSystem,
15273                            l = t.getAreaSelectStyle(),
15274                            u = l.width,
15275                            h = t.axis.dim,
15276                            c = a({ strokeContainThreshold: u }, s.getAxisLayout(h)),
15277                            f = new LD(t, c);
15278                        d(oL, f.add, f), this._axisGroup.add(f.getGroup()), this._refreshBrushController(c, l, t, r, u, i);
15279                        var p = n && !1 === n.animation ? null : t;
15280                        yo(o, this._axisGroup, p)
15281                    }
15282                }
15283            },
15284            _refreshBrushController: function(t, e, i, n, o, a) {
15285                var r = i.axis.getExtent(),
15286                    s = r[1] - r[0],
15287                    l = Math.min(30, .1 * Math.abs(s)),
15288                    u = $t.create({ x: r[0], y: -o / 2, width: s, height: o });
15289                u.x -= l, u.width += 2 * l, this._brushController.mount({ enableGlobalPan: !0, rotation: t.rotation, position: t.position }).setPanels([{ panelId: "pl", clipPath: Ef(u), isTargetByCursor: zf(u, a, n), getLinearBrushOtherExtent: Rf(u, 0) }]).enableBrush({ brushType: "lineX", brushStyle: e, removeOnClick: !0 }).updateCovers(Gf(i))
15290            },
15291            _onBrush: function(t, e) {
15292                var i = this.axisModel,
15293                    n = i.axis,
15294                    o = f(t, function(t) { return [n.coordToData(t.range[0], !0), n.coordToData(t.range[1], !0)] });
15295                (!i.option.realtime === e.isEnd || e.removeOnClick) && this.api.dispatchAction({ type: "axisAreaSelect", parallelAxisId: i.id, intervals: o })
15296            },
15297            dispose: function() { this._brushController.dispose() }
15298        });
15299    ys({ type: "parallel", render: function(t, e, i) { this._model = t, this._api = i, this._handlers || (this._handlers = {}, d(rL, function(t, e) { i.getZr().on(e, this._handlers[e] = m(t, this)) }, this)), wr(this, "_throttledDispatchExpand", t.get("axisExpandRate"), "fixRate") }, dispose: function(t, e) { d(this._handlers, function(t, i) { e.getZr().off(i, t) }), this._handlers = null }, _throttledDispatchExpand: function(t) { this._dispatchExpand(t) }, _dispatchExpand: function(t) { t && this._api.dispatchAction(a({ type: "parallelAxisExpand" }, t)) } });
15300    var rL = {
15301        mousedown: function(t) { Ff(this, "click") && (this._mouseDownPoint = [t.offsetX, t.offsetY]) },
15302        mouseup: function(t) {
15303            var e = this._mouseDownPoint;
15304            if (Ff(this, "click") && e) { var i = [t.offsetX, t.offsetY]; if (Math.pow(e[0] - i[0], 2) + Math.pow(e[1] - i[1], 2) > 5) return; var n = this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]); "none" !== n.behavior && this._dispatchExpand({ axisExpandWindow: n.axisExpandWindow }) }
15305            this._mouseDownPoint = null
15306        },
15307        mousemove: function(t) {
15308            if (!this._mouseDownPoint && Ff(this, "mousemove")) {
15309                var e = this._model,
15310                    i = e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX, t.offsetY]),
15311                    n = i.behavior;
15312                "jump" === n && this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")), this._throttledDispatchExpand("none" === n ? null : { axisExpandWindow: i.axisExpandWindow, animation: "jump" === n && null })
15313            }
15314        }
15315    };
15316    us(function(t) { Ud(t), Xd(t) }), KM.extend({
15317        type: "series.parallel",
15318        dependencies: ["parallel"],
15319        visualColorAccessPath: "lineStyle.color",
15320        getInitialData: function(t, e) { var i = this.getSource(); return Hf(i, this), Xs(i, this) },
15321        getRawIndicesByActiveState: function(t) {
15322            var e = this.coordinateSystem,
15323                i = this.getData(),
15324                n = [];
15325            return e.eachActiveState(i, function(e, o) { t === e && n.push(i.getRawIndex(o)) }), n
15326        },
15327        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" }
15328    });
15329    var sL = .3,
15330        lL = (gr.extend({
15331            type: "parallel",
15332            init: function() { this._dataGroup = new sw, this.group.add(this._dataGroup), this._data, this._initialized },
15333            render: function(t, e, i, n) {
15334                var o = this._dataGroup,
15335                    a = t.getData(),
15336                    r = this._data,
15337                    s = t.coordinateSystem,
15338                    l = s.dimensions,
15339                    u = Yf(t);
15340                if (a.diff(r).add(function(t) { qf(jf(a, o, t, l, s), a, t, u) }).update(function(e, i) {
15341                        var o = r.getItemGraphicEl(i),
15342                            h = Xf(a, e, l, s);
15343                        a.setItemGraphicEl(e, o), fo(o, { shape: { points: h } }, n && !1 === n.animation ? null : t, e), qf(o, a, e, u)
15344                    }).remove(function(t) {
15345                        var e = r.getItemGraphicEl(t);
15346                        o.remove(e)
15347                    }).execute(), !this._initialized) {
15348                    this._initialized = !0;
15349                    var h = Uf(s, t, function() { setTimeout(function() { o.removeClipPath() }) });
15350                    o.setClipPath(h)
15351                }
15352                this._data = a
15353            },
15354            incrementalPrepareRender: function(t, e, i) { this._initialized = !0, this._data = null, this._dataGroup.removeAll() },
15355            incrementalRender: function(t, e, i) {
15356                for (var n = e.getData(), o = e.coordinateSystem, a = o.dimensions, r = Yf(e), s = t.start; s < t.end; s++) {
15357                    var l = jf(n, this._dataGroup, s, a, o);
15358                    l.incremental = !0, qf(l, n, s, r)
15359                }
15360            },
15361            dispose: function() {},
15362            remove: function() { this._dataGroup && this._dataGroup.removeAll(), this._data = null }
15363        }), ["lineStyle", "normal", "opacity"]);
15364    ps({
15365        seriesType: "parallel",
15366        reset: function(t, e, i) {
15367            var n = t.getModel("itemStyle"),
15368                o = t.getModel("lineStyle"),
15369                a = e.get("color"),
15370                r = o.get("color") || n.get("color") || a[t.seriesIndex % a.length],
15371                s = t.get("inactiveOpacity"),
15372                l = t.get("activeOpacity"),
15373                u = t.getModel("lineStyle").getLineStyle(),
15374                h = t.coordinateSystem,
15375                c = t.getData(),
15376                d = { normal: u.opacity, active: l, inactive: s };
15377            return c.setVisual("color", r), {
15378                progress: function(t, e) {
15379                    h.eachActiveState(e, function(t, i) {
15380                        var n = d[t];
15381                        if ("normal" === t && e.hasItemOption) {
15382                            var o = e.getItemModel(i).get(lL, !0);
15383                            null != o && (n = o)
15384                        }
15385                        e.setItemVisual(i, "opacity", n)
15386                    }, t.start, t.end)
15387                }
15388            }
15389        }
15390    });
15391    var uL = KM.extend({
15392            type: "series.sankey",
15393            layoutInfo: null,
15394            getInitialData: function(t) {
15395                var e = t.edges || t.links,
15396                    i = t.data || t.nodes;
15397                if (i && e) return lC(i, e, this, !0).data
15398            },
15399            setNodePosition: function(t, e) {
15400                var i = this.option.data[t];
15401                i.localX = e[0], i.localY = e[1]
15402            },
15403            getGraph: function() { return this.getData().graph },
15404            getEdgeData: function() { return this.getGraph().edgeData },
15405            formatTooltip: function(t, e, i) {
15406                if ("edge" === i) {
15407                    var n = this.getDataParams(t, i),
15408                        o = n.data,
15409                        a = o.source + " -- " + o.target;
15410                    return n.value && (a += " : " + n.value), Zo(a)
15411                }
15412                return uL.superCall(this, "formatTooltip", t, e)
15413            },
15414            defaultOption: { zlevel: 0, z: 2, coordinateSystem: "view", layout: null, left: "5%", top: "5%", right: "20%", bottom: "5%", nodeWidth: 20, nodeGap: 8, draggable: !0, layoutIterations: 32, label: { show: !0, position: "right", color: "#000", fontSize: 12 }, itemStyle: { borderWidth: 1, borderColor: "#333" }, lineStyle: { color: "#314656", opacity: .2, curveness: .5 }, emphasis: { label: { show: !0 }, lineStyle: { opacity: .6 } }, animationEasing: "linear", animationDuration: 1e3 }
15415        }),
15416        hL = En({
15417            shape: { x1: 0, y1: 0, x2: 0, y2: 0, cpx1: 0, cpy1: 0, cpx2: 0, cpy2: 0, extent: 0 },
15418            buildPath: function(t, e) {
15419                var i = e.extent / 2;
15420                t.moveTo(e.x1, e.y1 - i), t.bezierCurveTo(e.cpx1, e.cpy1 - i, e.cpx2, e.cpy2 - i, e.x2, e.y2 - i), t.lineTo(e.x2, e.y2 + i), t.bezierCurveTo(e.cpx2, e.cpy2 + i, e.cpx1, e.cpy1 + i, e.x1, e.y1 + i
15420), t.closePath()
15421            }
15422        });
15423    _s({
15424        type: "sankey",
15425        _model: null,
15426        render: function(t, e, i) {
15427            var n = t.getGraph(),
15428                o = this.group,
15429                a = t.layoutInfo,
15430                r = a.width,
15431                s = a.height,
15432                l = t.getData(),
15433                u = t.getData("edge");
15434            this._model = t, o.removeAll(), o.attr("position", [a.x, a.y]), n.eachEdge(function(e) {
15435                var i = new hL;
15436                i.dataIndex = e.dataIndex, i.seriesIndex = t.seriesIndex, i.dataType = "edge";
15437                var n = e.getModel("lineStyle"),
15438                    a = n.get("curveness"),
15439                    l = e.node1.getLayout(),
15440                    h = e.node1.getModel(),
15441                    c = h.get("localX"),
15442                    d = h.get("localY"),
15443                    f = e.node2.getLayout(),
15444                    p = e.node2.getModel(),
15445                    g = p.get("localX"),
15446                    m = p.get("localY"),
15447                    v = e.getLayout();
15448                i.shape.extent = Math.max(1, v.dy);
15449                var y = (null != c ? c * r : l.x) + l.dx,
15450                    x = (null != d ? d * s : l.y) + v.sy + v.dy / 2,
15451                    _ = null != g ? g * r : f.x,
15452                    w = (null != m ? m * s : f.y) + v.ty + v.dy / 2,
15453                    b = y * (1 - a) + _ * a,
15454                    S = x,
15455                    M = y * a + _ * (1 - a),
15456                    I = w;
15457                switch (i.setShape({ x1: y, y1: x, x2: _, y2: w, cpx1: b, cpy1: S, cpx2: M, cpy2: I }), i.setStyle(n.getItemStyle()), i.style.fill) {
15458                    case "source":
15459                        i.style.fill = e.node1.getVisual("color");
15460                        break;
15461                    case "target":
15462                        i.style.fill = e.node2.getVisual("color")
15463                }
15464                eo(i, e.getModel("emphasis.lineStyle").getItemStyle()), o.add(i), u.setItemGraphicEl(e.dataIndex, i)
15465            }), n.eachNode(function(e) {
15466                var i = e.getLayout(),
15467                    n = e.getModel(),
15468                    a = n.get("localX"),
15469                    u = n.get("localY"),
15470                    h = n.getModel("label"),
15471                    c = n.getModel("emphasis.label"),
15472                    d = new SS({ shape: { x: null != a ? a * r : i.x, y: null != u ? u * s : i.y, width: i.dx, height: i.dy }, style: n.getModel("itemStyle").getItemStyle() }),
15473                    f = e.getModel("emphasis.itemStyle").getItemStyle();
15474                io(d.style, f, h, c, { labelFetcher: t, labelDataIndex: e.dataIndex, defaultText: e.id, isRectText: !0 }), d.setStyle("fill", e.getVisual("color")), eo(d, f), o.add(d), l.setItemGraphicEl(e.dataIndex, d), d.dataType = "node"
15475            }), t.get("draggable") && l.eachItemGraphicEl(function(e, n) { e.drift = function(e, o) { this.shape.x += e, this.shape.y += o, this.dirty(), i.dispatchAction({ type: "dragNode", seriesId: t.id, dataIndex: l.getRawIndex(n), localX: this.shape.x / r, localY: this.shape.y / s }) }, e.draggable = !0, e.cursor = "move" }), !this._data && t.get("animation") && o.setClipPath($f(o.getBoundingRect(), t, function() { o.removeClipPath() })), this._data = t.getData()
15476        },
15477        dispose: function() {}
15478    }), cs({ type: "dragNode", event: "dragNode", update: "update" }, function(t, e) { e.eachComponent({ mainType: "series", subType: "sankey", query: t }, function(e) { e.setNodePosition(t.dataIndex, [t.localX, t.localY]) }) });
15479    fs(function(t, e, i) {
15480        t.eachSeriesByType("sankey", function(t) {
15481            var i = t.get("nodeWidth"),
15482                n = t.get("nodeGap"),
15483                o = Qf(t, e);
15484            t.layoutInfo = o;
15485            var a = o.width,
15486                r = o.height,
15487                s = t.getGraph(),
15488                l = s.nodes,
15489                u = s.edges;
15490            ep(l), tp(l, u, i, n, a, r, 0 !== g(l, function(t) { return 0 === t.getLayout().value }).length ? 0 : t.get("layoutIterations"))
15491        })
15492    }), ps(function(t, e) {
15493        t.eachSeriesByType("sankey", function(t) {
15494            var e = t.getGraph().nodes;
15495            if (e.length) {
15496                var i = 1 / 0,
15497                    n = -1 / 0;
15498                d(e, function(t) {
15499                    var e = t.getLayout().value;
15500                    e < i && (i = e), e > n && (n = e)
15501                }), d(e, function(e) {
15502                    var o = new ZA({ type: "color", mappingMethod: "linear", dataExtent: [i, n], visual: t.get("
15502color") }).mapValueToVisual(e.getLayout().value);
15503                    e.setVisual("color", o);
15504                    var a = e.getModel().get("itemStyle.color");
15505                    null != a && e.setVisual("color", a)
15506                })
15507            }
15508        })
15509    });
15510    var cL = {
15511        _baseAxisDim: null,
15512        getInitialData: function(t, e) {
15513            var i, n, o = e.getComponent("xAxis", this.get("xAxisIndex")),
15514                a = e.getComponent("yAxis", this.get("yAxisIndex")),
15515                r = o.get("type"),
15516                s = a.get("type");
15517            "category" === r ? (t.layout = "horizontal", i = o.getOrdinalMeta(), n = !0) : "category" === s ? (t.layout = "vertical", i = a.getOrdinalMeta(), n = !0) : t.layout = t.layout || "horizontal";
15518            var l = ["x", "y"],
15519                u = "horizontal" === t.layout ? 0 : 1,
15520                h = this._baseAxisDim = l[u],
15521                c = l[1 - u],
15522                f = [o, a],
15523                p = f[u].get("type"),
15524                g = f[1 - u].get("type"),
15525                m = t.data;
15526            if (m && n) {
15527                var v = [];
15528                d(m, function(t, e) {
15529                    var i;
15530                    t.value && y(t.value) ? (i = t.value.slice(), t.value.unshift(e)) : y(t) ? (i = t.slice(), t.unshift(e)) : i = t, v.push(i)
15531                }), t.data = v
15532            }
15533            var x = this.defaultValueDimensions;
15534            return jD(this, { coordDimensions: [{ name: h, type: Ts(p), ordinalMeta: i, otherDims: { tooltip: !1, itemName: 0 }, dimsDef: ["base"] }, { name: c, type: Ts(g), dimsDef: x.slice() }], dimensionsCount: x.length + 1 })
15535        },
15536        getBaseAxis: function() { var t = this._baseAxisDim; return this.ecModel.getComponent(t + "Axis", this.get(t + "AxisIndex")).axis }
15537    };
15538    h(KM.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 } }), cL, !0);
15539    var dL = ["itemStyle"],
15540        fL = ["emphasis", "itemStyle"],
15541        pL = (gr.extend({
15542            type: "boxplot",
15543            render: function(t, e, i) {
15544                var n = t.getData(),
15545                    o = this.group,
15546                    a = this._data;
15547                this._data || o.removeAll();
15548                var r = "horizontal" === t.get("layout") ? 1 : 0;
15549                n.diff(a).add(function(t) {
15550                    if (n.hasValue(t)) {
15551                        var e = _p(n.getItemLayout(t), n, t, r, !0);
15552                        n.setItemGraphicEl(t, e), o.add(e)
15553                    }
15554                }).update(function(t, e) {
15555                    var i = a.getItemGraphicEl(e);
15556                    if (n.hasValue(t)) {
15557                        var s = n.getItemLayout(t);
15558                        i ? wp(s, i, n, t) : i = _p(s, n, t, r), o.add(i), n.setItemGraphicEl(t, i)
15559                    } else o.remove(i)
15560                }).remove(function(t) {
15561                    var e = a.getItemGraphicEl(t);
15562                    e && o.remove(e)
15563                }).execute(), this._data = n
15564            },
15565            remove: function(t) {
15566                var e = this.group,
15567                    i = this._data;
15568                this._data = null, i && i.eachItemGraphicEl(function(t) { t && e.remove(t) })
15569            },
15570            dispose: B
15571        }), In.extend({
15572            type: "boxplotBoxPath",
15573            shape: {},
15574            buildPath: function(t, e) {
15575                var i = e.points,
15576                    n = 0;
15577                for (t.moveTo(i[n][0], i[n][1]), n++; n < 4; n++) t.lineTo(i[n][0], i[n][1]);
15578                for (t.closePath(); n < i.length; n++) t.moveTo(i[n][0], i[n][1]), n++, t.lineTo(i[n][0], i[n][1])
15579            }
15580        })),
15581        gL = ["itemStyle", "borderColor"],
15582        mL = d;
15583    ps(function(t, e) {
15584        var i = t.get("color");
15585        t.eachRawSeriesByType("boxplot", function(e) {
15586            var n = i[e.seriesIndex % i.length],
15587                o = e.getData();
15588            o.setVisual({ legendSymbol: "roundRect", color: e.get(gL) || n }), t.isSeriesFiltered(e) || o.each(function(t) {
15589                var e = o.getItemModel(t);
15590                o.setItemVisual(t, { color: e.get(gL, !0) })
15591            })
15592        })
15593    }), fs(function(t) {
15594        var e = Sp(t);
15595        mL(e, function(t) {
15596            var e = t.seriesModels;
15597            e.length && (Mp(t), mL(e, function(e, i) { Ip(e, t.boxOffsetList[i], t.boxWidthList[i]) }))
15598        })
15599    }), h(KM.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, 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(t, e, i) { var n = e.getItemLayout(t); return n && i.rect(n.brushRect) } }), cL, !0);
15600    var vL = ["itemStyle"],
15601        yL = ["emphasis", "itemStyle"],
15602        xL = ["color", "color0", "borderColor", "borderColor0"],
15603        _L = (gr.extend({
15604            type: "candlestick",
15605            render: function(t, e, i) { this._updateDrawMode(t), this._isLargeDraw ? this._renderLarge(t) : this._renderNormal(t) },
15606            incrementalPrepareRender: function(t, e, i) { this._clear(), this._updateDrawMode(t) },
15607            incrementalRender: function(t, e, i, n) { this._isLargeDraw ? this._incrementalRenderLarge(t, e) : this._incrementalRenderNormal(t, e) },
15608            _updateDrawMode: function(t) {
15609                var e = t.pipelineContext.large;
15610                (null == this._isLargeDraw || e ^ this._isLargeDraw) && (this._isLargeDraw = e, this._clear())
15611            },
15612            _renderNormal: function(t) {
15613                var e = t.getData(),
15614                    i = this._data,
15615                    n = this.group,
15616                    o = e.getLayout("isSimpleBox");
15617                this._data || n.removeAll(), e.diff(i).add(function(i) {
15618                    if (e.hasValue(i)) {
15619                        var a, r = e.getItemLayout(i);
15620                        po(a = Tp(r, 0, !0), { shape: { points: r.ends } }, t, i), Dp(a, e, i, o), n.add(a), e.setItemGraphicEl(i, a)
15621                    }
15622                }).update(function(a, r) {
15623                    var s = i.getItemGraphicEl(r);
15624                    if (e.hasValue(a)) {
15625                        var l = e.getItemLayout(a);
15626                        s ? fo(s, { shape: { points: l.ends } }, t, a) : s = Tp(l), Dp(s, e, a, o), n.add(s), e.setItemGraphicEl(a, s)
15627                    } else n.remove(s)
15628                }).remove(function(t) {
15629                    var e = i.getItemGraphicEl(t);
15630                    e && n.remove(e)
15631                }).execute(), this._data = e
15632            },
15633            _renderLarge: function(t) { this._clear(), Cp(t, this.group) },
15634            _incrementalRenderNormal: function(t, e) {
15635                for (var i, n = e.getData(), o = n.getLayout("isSimpleBox"); null != (i = t.next());) {
15636                    var a;
15637                    Dp(a = Tp(n.getItemLayout(i)), n, i, o), a.incremental = !0, this.group.add(a)
15638                }
15639            },
15640            _incrementalRenderLarge: function(t, e) { Cp(e, this.group, !0) },
15641            remove: function(t) { this._clear() },
15642            _clear: function() { this.group.removeAll(), this._data = null },
15643            dispose: B
15644        }), In.extend({
15645            type: "normalCandlestickBox",
15646            shape: {},
15647            buildPath: function(t, e) {
15648                var i = e.points;
15649                this.__simpleBox ? (t.moveTo(i[4][0], i[4][1]), t.lineTo(i[6][0], i[6][1])) : (t.moveTo(i[0][0], i[0][1]), t.lineTo(i[1][0], i[1][1]), t.lineTo(i[2][0], i[2][1]), t.lineTo(i[3][0], i[3][1]), t.closePath(), t.moveTo(i[4][0], i[4][1]), t.lineTo(i[5][0], i[5][1]), t.moveTo(i[6][0], i[6][1]), t.lineTo(i[7][0], i[7][1]))
15650            }
15651        })),
15652        wL = In.extend({
15653            type: "largeCandlestickBox",
15654            shape: {},
15655            buildPath: function(t, e) {
15656                for (var i = e.points, n = 0; n < i.length;)
15657                    if (this.__sign === i[n++]) {
15658                        var o = i[n++];
15659                        t.moveTo(o, i[n++]), t.lineTo(o, i[n++])
15660                    } else n += 3
15661            }
15662        }),
15663        bL = ["itemStyle", "borderColor"],
15664        SL = ["itemStyle", "borderColor0"],
15665        ML = ["itemStyle", "color"],
15666        IL = ["itemStyle", "color0"],
15667        TL = {
15668            seriesType: "candlestick",
15669            plan: QM(),
15670            performRawSeries: !0,
15671            reset: function(t, e) {
15672                function i(t, e) { return e.get(t > 0 ? ML : IL) }
15673
15674                function n(t, e) { return e.get(t > 0 ? bL : SL) }
15675                var o = t.getData(),
15676                    a = t.pipelineContext.large;
15677                if (o.setVisual({ legendSymbol: "roundRect", colorP: i(1, t), colorN: i(-1, t), borderColorP: n(1, t), borderColorN: n(-1, t) }), !e.isSeriesFiltered(t)) return !a && {
15678                    progress: function(t, e) {
15679                        for (var o; null != (o = t.next());) {
15680                            var a = e.getItemModel(o),
15681                                r = e.getItemLayout(o).sign;
15682                            e.setItemVisual(o, { color: i(r, a), borderColor: n(r, a) })
15683                        }
15684                    }
15685                }
15686            }
15687        },
15688        DL = "undefined" != typeof Float32Array ? Float32Array : Array,
15689        AL = {
15690            seriesType: "candlestick",
15691            plan: QM(),
15692            reset: function(t) {
15693                var e = t.coordinateSystem,
15694                    i = t.getData(),
15695                    n = Pp(t, i),
15696                    o = 0,
15697                    a = 1,
15698                    r = ["x", "y"],
15699                    s = i.mapDimension(r[o]),
15700                    l = i.mapDimension(r[a], !0),
15701                    u = l[0],
15702                    h = l[1],
15703                    c = l[2],
15704                    d = l[3];
15705                if (i.setLayout({ candleWidth: n, isSimpleBox: n <= 1.3 }), !(null == s || l.length < 4)) return {
15706                    progress: t.pipelineContext.large ? function(t, i) {
15707                        for (var n, r, l = new DL(5 * t.count), f = 0, p = [], g = []; null != (r = t.next());) {
15708                            var m = i.get(s, r),
15709                                v = i.get(u, r),
15710                                y = i.get(h, r),
15711                                x = i.get(c, r),
15712                                _ = i.get(d, r);
15713                            isNaN(m) || isNaN(x) || isNaN(_) ? (l[f++] = NaN, f += 4) : (l[f++] = kp(i, r, v, y, h), p[o] = m, p[a] = x, n = e.dataToPoint(p, null, g), l[f++] = n ? n[0] : NaN, l[f++] = n ? n[1] : NaN, p[a] = _, n = e.dataToPoint(p, null, g), l[f++] = n ? n[1] : NaN)
15714                        }
15715                        i.setLayout("largePoints", l)
15716                    } : function(t, i) {
15717                        function r(t, i) { var n = []; return n[o] = i, n[a] = t, isNaN(i) || isNaN(t) ? [NaN, NaN] : e.dataToPoint(n) }
15718
15719                        function l(t, e, i) {
15720                            var a = e.slice(),
15721                                r = e.slice();
15722                            a[o] = Fn(a[o] + n / 2, 1, !1), r[o] = Fn(r[o] - n / 2, 1, !0), i ? t.push(a, r) : t.push(r, a)
15723                        }
15724
15725                        function f(t) { return t[o] = Fn(t[o], 1), t }
15726                        for (var p; null != (p = t.next());) {
15727                            var g = i.get(s, p),
15728                                m = i.get(u, p),
15729                                v = i.get(h, p),
15730                                y = i.get(c, p),
15731                                x = i.get(d, p),
15732                                _ = Math.min(m, v),
15733                                w = Math.max(m, v),
15734                                b = r(_, g),
15735                                S = r(w, g),
15736                                M = r(y, g),
15737                                I = r(x, g),
15738                                T = [];
15739                            l(T, S, 0), l(T, b, 1), T.push(f(I), f(S), f(M), f(b)), i.setItemLayout(p, {
15740                                sign: kp(i, p, m, v, h),
15741                                initBaseline: m > v ? S[a] : b[a],
15742                                ends: T,
15743                                brushRect: function(t, e, i) {
15744                                    var s = r(t, i),
15745                                        l = r(e, i);
15746                                    return s[o] -= n / 2, l[o] -= n / 2, { x: s[0], y: s[1], width: a ? n : l[0] - s[0], height: a ? l[1] - s[1] : n }
15747                                }(y, x, g)
15748                            })
15749                        }
15750                    }
15751                }
15752            }
15753        };
15754    us(function(t) { t && y(t.series) && d(t.series, function(t) { w(t) && "k" === t.type && (t.type = "candlestick") }) }), ps(TL), fs(AL), KM.extend({ type: "series.effectScatter", dependencies: ["grid", "polar"], getInitialData: function(t, e) { return Xs(this.getSource(), this) }, 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 } });
15755    var CL = Ep.prototype;
15756    CL.stopEffectAnimation = function() { this.childAt(1).removeAll() }
15756, CL.startEffectAnimation = function(t) {
15757        for (var e = t.symbolType, i = t.color, n = this.childAt(1), o = 0; o < 3; o++) {
15758            var a = Tl(e, -1, -1, 2, 2, i);
15759            a.attr({ style: { strokeNoScale: !0 }, z2: 99, silent: !0, scale: [.5, .5] });
15760            var r = -o / 3 * t.period + t.effectOffset;
15761            a.animate("", !0).when(t.period, { scale: [t.rippleScale / 2, t.rippleScale / 2] }).delay(r).start(), a.animateStyle(!0).when(t.period, { opacity: 0 }).delay(r).start(), n.add(a)
15762        }
15763        Op(n, t)
15764    }, CL.updateEffectAnimation = function(t) {
15765        for (var e = this._effectCfg, i = this.childAt(1), n = ["symbolType", "period", "rippleScale"], o = 0; o < n.length; o++) { var a = n[o]; if (e[a] !== t[a]) return this.stopEffectAnimation(), void this.startEffectAnimation(t) }
15766        Op(i, t)
15767    }, CL.highlight = function() { this.trigger("emphasis") }, CL.downplay = function() { this.trigger("normal") }, CL.updateData = function(t, e) {
15768        var i = t.hostModel;
15769        this.childAt(0).updateData(t, e);
15770        var n = this.childAt(1),
15771            o = t.getItemModel(e),
15772            a = t.getItemVisual(e, "symbol"),
15773            r = Np(t.getItemVisual(e, "symbolSize")),
15774            s = t.getItemVisual(e, "color");
15775        n.attr("scale", r), n.traverse(function(t) { t.attr({ fill: s }) });
15776        var l = o.getShallow("symbolOffset");
15777        if (l) {
15778            var u = n.position;
15779            u[0] = Do(l[0], r[0]), u[1] = Do(l[1], r[1])
15780        }
15781        n.rotation = (o.getShallow("symbolRotate") || 0) * Math.PI / 180 || 0;
15782        var h = {};
15783        if (h.showEffectOn = i.get("showEffectOn"), h.rippleScale = o.get("rippleEffect.scale"), h.brushType = o.get("rippleEffect.brushType"), h.period = 1e3 * o.get("rippleEffect.period"), h.effectOffset = e / t.count(), h.z = o.getShallow("z") || 0, h.zlevel = o.getShallow("zlevel") || 0, h.symbolType = a, h.color = s, this.off("mouseover").off("mouseout").off("emphasis").off("normal"), "render" === h.showEffectOn) this._effectCfg ? this.updateEffectAnimation(h) : this.startEffectAnimation(h), this._effectCfg = h;
15784        else {
15785            this._effectCfg = null, this.stopEffectAnimation();
15786            var c = this.childAt(0),
15787                d = function() { c.highlight(), "render" !== h.showEffectOn && this.startEffectAnimation(h) },
15788                f = function() { c.downplay(), "render" !== h.showEffectOn && this.stopEffectAnimation() };
15789            this.on("mouseover", d, this).on("mouseout", f, this).on("emphasis", d, this).on("normal", f, this)
15790        }
15791        this._effectCfg = h
15792    }, CL.fadeOut = function(t) { this.off("mouseover").off("mouseout").off("emphasis").off("normal"), t && t() }, u(Ep, sw), _s({
15793        type: "effectScatter",
15794        init: function() { this._symbolDraw = new Ql(Ep) },
15795        render: function(t, e, i) {
15796            var n = t.getData(),
15797                o = this._symbolDraw;
15798            o.updateData(n), this.group.add(o.group)
15799        },
15800        updateTransform: function(t, e, i) {
15801            var n = t.getData();
15802            this.group.dirty();
15803            var o = mD().reset(t);
15804            o.progress && o.progress({ start: 0, end: n.count() }, n), this._symbolDraw.updateLayout(n)
15805        },
15806        _updateGroupTransform: function(t) {
15807            var e = t.coordinateSystem;
15808            e && e.getRoamTransform && (this.group.transform = gt(e.getRoamTransform()), this.group.decomposeTransform())
15809        },
15810        remove: function(t, e) { this._symbolDraw && this._symbolDraw.remove(e) },
15811        dispose: function() {}
15812    }), ps(gD("effectScatter", "circle")), fs(mD("effectScatter"));
15813    var LL = "undefined" == typeof Uint32Array ? Array : Uint32Array,
15814        kL = "undefined" == typeof Float64Array ? Array : Float64Array,
15815        PL = KM.extend({
15816            type: "series.lines",
15817            dependencies: ["grid", "polar"],
15818            visualColorAccessPath: "lineStyle.color",
15819            init: function(t) {
15820                t.data = t.data || [], Rp(t);
15821                var e = this._processFlatCoordsArray(t.data);
15822                this._flatCoords = e.flatCoords, this._flatCoordsOffset = e.flatCoordsOffset, e.flatCoords && (t.data = new Float32Array(e.count)), PL.superApply(this, "init", arguments)
15823            },
15824            mergeOption: function(t) {
15825                if (t.data = t.data || [], Rp(t), t.data) {
15826                    var e = this._processFlatCoordsArray(t.data);
15827                    this._flatCoords = e.flatCoords, this._flatCoordsOffset = e.flatCoordsOffset, e.flatCoords && (t.data = new Float32Array(e.count))
15828                }
15829                PL.superApply(this, "mergeOption", arguments)
15830            },
15831            appendData: function(t) {
15832                var e = this._processFlatCoordsArray(t.data);
15833                e.flatCoords && (this._flatCoords ? (this._flatCoords = z(this._flatCoords, e.flatCoords), this._flatCoordsOffset = z(this._flatCoordsOffset, e.flatCoordsOffset)) : (this._flatCoords = e.flatCoords, this._flatCoordsOffset = e.flatCoordsOffset), t.data = new Float32Array(e.count)), this.getRawData().appendData(t.data)
15834            },
15835            _getCoordsFromItemModel: function(t) { var e = this.getData().getItemModel(t); return e.option instanceof Array ? e.option : e.getShallow("coords") },
15836            getLineCoordsCount: function(t) { return this._flatCoordsOffset ? this._flatCoordsOffset[2 * t + 1] : this._getCoordsFromItemModel(t).length },
15837            getLineCoords: function(t, e) { if (this._flatCoordsOffset) { for (var i = this._flatCoordsOffset[2 * t], n = this._flatCoordsOffset[2 * t + 1], o = 0; o < n; o++) e[o] = e[o] || [], e[o][0] = this._flatCoords[i + 2 * o], e[o][1] = this._flatCoords[i + 2 * o + 1]; return n } for (var a = this._getCoordsFromItemModel(t), o = 0; o < a.length; o++) e[o] = e[o] || [], e[o][0] = a[o][0], e[o][1] = a[o][1]; return a.length },
15838            _processFlatCoordsArray: function(t) {
15839                var e = 0;
15840                if (this._flatCoords && (e = this._flatCoords.length), "number" == typeof t[0]) {
15841                    for (var i = t.length, n = new LL(i), o = new kL(i), a = 0, r = 0, s = 0, l = 0; l < i;) {
15842                        s++;
15843                        var u = t[l++];
15844                        n[r++] = a + e, n[r++] = u;
15845                        for (var h = 0; h < u; h++) {
15846                            var c = t[l++],
15847                                d = t[l++];
15848                            o[a++] = c, o[a++] = d
15849                        }
15850                    }
15851                    return { flatCoordsOffset: new Uint32Array(n.buffer, 0, r), flatCoords: o, count: s }
15852                }
15853                return { flatCoordsOffset: null, flatCoords: null, count: t.length }
15854            },
15855            getInitialData: function(t, e) {
15856                var i = new sT(["value"], this);
15857                return i.hasItemOption = !1, i.initData(t.data, [], function(t, e, n, o) {
15858                    if (t instanceof Array) return NaN;
15859                    i.hasItemOption = !0;
15860                    var a = t.value;
15861                    return null != a ? a instanceof Array ? a[o] : a : void 0
15862                }), i
15863            },
15864            formatTooltip: function(t) {
15865                var e = this.getData().getItemModel(t),
15866                    i = e.get("name");
15867                if (i) return i;
15868                var n = e.get("fromName"),
15869                    o = e.get("toName"),
15870                    a = [];
15871                return null != n && a.push(n), null != o && a.push(o), Zo(a.join(" > "))
15872            },
15873            preventIncremental: function() { return !!this.get("effect.show") },
15874            getProgressive: function() { var t = this.option.progressive; return null == t ? this.option.large ? 1e4 : this.get("progressive") : t },
15875            getProgressiveThreshold: function() { var t = this.option.progressiveThreshold; return null == t ? this.option.large ? 2e4 : this.get("progressiveThreshold") : t },
15876            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, label: { show: !1, position: "end" }, lineStyle: { opacity: .5 } }
15877        }),
15878        NL = zp.prototype;
15879    NL.createLine = function(t, e, i) { return new bd(t, e, i) }, NL._updateEffectSymbol = function(t, e) {
15880        var i = t.getItemModel(e).getModel("effect"),
15881            n = i.get("symbolSize"),
15882            o = i.get("symbol");
15883        y(n) || (n = [n, n]);
15884        var a = i.get("color") || t.getItemVisual(e, "color"),
15885            r = this.childAt(1);
15886        this._symbolType !== o && (this.remove(r), (r = Tl(o, -.5, -.5, 1, 1, a)).z2 = 100, r.culling = !0, this.add(r)), r && (r.setStyle("shadowColor", a), r.setStyle(i.getItemStyle(["color"])), r.attr("scale", n), r.setColor(a), r.attr("scale", n), this._symbolType = o, this._updateEffectAnimation(t, i, e))
15887    }, NL._updateEffectAnimation = function(t, e, i) {
15888        var n = this.childAt(1);
15889        if (n) {
15890            var o = this,
15891                a = t.getItemLayout(i),
15892                r = 1e3 * e.get("period"),
15893                s = e.get("loop"),
15894                l = e.get("constantSpeed"),
15895                u = T(e.get("delay"), function(e) { return e / t.count() * r / 3 }),
15896                h = "function" == typeof u;
15897            if (n.ignore = !0, this.updateAnimationPoints(n, a), l > 0 && (r = this.getLineLength(n) / l * 1e3), r !== this._period || s !== this._loop) {
15898                n.stopAnimation();
15899                var c = u;
15900                h && (c = u(i)), n.__t > 0 && (c = -r * n.__t), n.__t = 0;
15901                var d = n.animate("", s).when(r, { __t: 1 }).delay(c).during(function() { o.updateSymbolPosition(n) });
15902                s || d.done(function() { o.remove(n) }), d.start()
15903            }
15904            this._period = r, this._loop = s
15905        }
15906    }, NL.getLineLength = function(t) { return S_(t.__p1, t.__cp1) + S_(t.__cp1, t.__p2) }, NL.updateAnimationPoints = function(t, e) { t.__p1 = e[0], t.__p2 = e[1], t.__cp1 = e[2] || [(e[0][0] + e[1][0]) / 2, (e[0][1] + e[1][1]) / 2] }, NL.updateData = function(t, e, i) { this.childAt(0).updateData(t, e, i), this._updateEffectSymbol(t, e) }, NL.updateSymbolPosition = function(t) {
15907        var e = t.__p1,
15908            i = t.__p2,
15909            n = t.__cp1,
15910            o = t.__t,
15911            a = t.position,
15912            r = Qi,
15913            s = tn;
15914        a[0] = r(e[0], n[0], i[0], o), a[1] = r(e[1], n[1], i[1], o);
15915        var l = s(e[0], n[0], i[0], o),
15916            u = s(e[1], n[1], i[1], o);
15917        t.rotation = -Math.atan2(u, l) - Math.PI / 2, t.ignore = !1
15918    }, NL.updateLayout = function(t, e) {
15919        this.childAt(0).updateLayout(t, e);
15920        var i = t.getItemModel(e).getModel("effect");
15921        this._updateEffectAnimation(t, i, e)
15922    }, u(zp, sw);
15923    var OL = Bp.prototype;
15924    OL._createPolyline = function(t, e, i) {
15925        var n = t.getItemLayout(e),
15926            o = new bS({ shape: { points: n } });
15927        this.add(o), this._updateCommonStl(t, e, i)
15928    }, OL.updateData = function(t, e, i) {
15929        var n = t.hostModel;
15930        fo(this.childAt(0), { shape: { points: t.getItemLayout(e) } }, n, e), this._updateCommonStl(t, e, i)
15931    }, OL._updateCommonStl = function(t, e, i) {
15932        var n = this.childAt(0),
15933            o = t.getItemModel(e),
15934            a = t.getItemVisual(e, "color"),
15935            s = i && i.lineStyle,
15936            l = i && i.hoverLineStyle;
15937        i && !t.hasItemOption || (s = o.getModel("lineStyle").getLineStyle(), l = o.getModel("emphasis.lineStyle").getLineStyle()), n.useStyle(r({ strokeNoScale: !0, fill: "none", stroke: a }, s)), n.hoverStyle = l, eo(this)
15938    }, OL.updateLayout = function(t, e) { this.childAt(0).setShape("points", t.getItemLayout(e)) }, u(Bp, sw);
15939    var EL = Vp.prototype;
15940    EL.createLine = function(t, e, i) { return new Bp(t, e, i) }, EL.updateAnimationPoints = function(t, e) {
15941        this._points = e;
15942        for (var i = [0], n = 0, o = 1; o < e.length; o++) {
15943            var a = e[o - 1],
15944                r = e[o];
15945            n += S_(a, r), i.push(n)
15946        }
15947        if (0 !== n) {
15948            for (o = 0; o < i.length; o++) i[o] /= n;
15949            this._offsets = i, this._length = n
15950        }
15951    }, EL.getLineLength = function(t) { return this._length }, EL.updateSymbolPosition = function(t) {
15952        var e = t.__t,
15953            i = this._points,
15954            n = this._offsets,
15955            o = i.length;
15956        if (n) {
15957            var a = this._lastFrame;
15958            if (e < this._lastFramePercent) {
15959                for (r = Math.min(a + 1, o - 1); r >= 0 && !(n[r] <= e); r--);
15960                r = Math.min(r, o - 2)
15961            } else {
15962                for (var r = a; r < o && !(n[r] > e); r++);
15963                r = Math.min(r - 1, o - 2)
15964            }
15965            J(t.position, i[r], i[r + 1], (e - n[r]) / (n[r + 1] - n[r]));
15966            var s = i[r + 1][0] - i[r][0],
15967                l = i[r + 1][1] - i[r][1];
15968            t.rotation = -Math.atan2(l, s) - Math.PI / 2, this._lastFrame = r, this._lastFramePercent = e, t.ignore = !1
15969        }
15970    }, u(Vp, zp);
15971    var RL = En({
15972            shape: { polyline: !1, curveness: 0, segs: [] },
15973            buildPath: function(t, e) {
15974                var i = e.segs,
15975                    n = e.curveness;
15976                if (e.polyline)
15977                    for (r = 0; r < i.length;) { var o = i[r++]; if (o > 0) { t.moveTo(i[r++], i[r++]); for (var a = 1; a < o; a++) t.lineTo(i[r++], i[r++]) } } else
15978                        for (var r = 0; r < i.length;) {
15979                            var s = i[r++],
15980                                l = i[r++],
15981                                u = i[r++],
15982                                h = i[r++];
15983                            if (t.moveTo(s, l), n > 0) {
15984                                var c = (s + u) / 2 - (l - h) * n,
15985                                    d = (l + h) / 2 - (u - s) * n;
15986                                t.quadraticCurveTo(c, d, u, h)
15987                            } else t.lineTo(u, h)
15988                        }
15989            },
15990            findDataIndex: function(t, e) {
15991                var i = this.shape,
15992                    n = i.segs,
15993                    o = i.curveness;
15994                if (i.polyline)
15995                    for (var a = 0, r = 0; r < n.length;) {
15996                        var s = n[r++];
15997                        if (s > 0)
15998                            for (var l = n[r++], u = n[r++], h = 1; h < s; h++)
15999                                if (cn(l, u, c = n[r++], d = n[r++])) return a;
16000                        a++
16001                    } else
16002                        for (var a = 0, r = 0; r < n.length;) {
16003                            var l = n[r++],
16004                                u = n[r++],
16005                                c = n[r++],
16006                                d = n[r++];
16007                            if (o > 0) { if (fn(l, u, (l + c) / 2 - (u - d) * o, (u + d) / 2 - (c - l) * o, c, d)) return a } else if (cn(l, u, c, d)) return a;
16008                            a++
16009                        }
16010                return -1
16011            }
16012        }),
16013        zL = Gp.prototype;
16014    zL.isPersistent = function() { return !this._incremental }, zL.updateData = function(t) {
16015        this.group.removeAll();
16016        var e = new RL({ rectHover: !0, cursor: "default" });
16017        e.setShape({ segs: t.getLayout("linesPoints") }), this._setCommon(e, t), this.group.add(e), this._incremental = null
16018    }, zL.incrementalPrepareUpdate = function(t) { this.group.removeAll(), this._clearIncremental(), t.count() > 5e5 ? (this._incremental || (this._incremental = new On({ silent: !0 })), this.group.add(this._incremental)) : this._incremental = null }, zL.incrementalUpdate = function(t, e) {
16019        var i = new RL;
16020        i.setShape({ segs: e.getLayout("linesPoints") }), this._setCommon(i, e, !!this._incremental), this._incremental ? this._incremental.addDisplayable(i, !0) : (i.rectHover = !0, i.cursor = "default", i.__startIndex = t.start, this.group.add(i))
16021    }, zL.remove = function() { this._clearIncremental(), this._incremental = null, this.group.removeAll() }, zL._setCommon = function(t, e, i) {
16022        var n = e.hostModel;
16023        t.setShape({ polyline: n.get("polyline"), curveness: n.get("lineStyle.curveness") }), t.useStyle(n.getModel("lineStyle").getLineStyle()), t.style.strokeNoScale = !0;
16024        var o = e.getVisual("color");
16025        o && t.setStyle("stroke", o), t.setStyle("fill"), i || (t.seriesIndex = n.seriesIndex, t.on("mousemove", function(e) {
16026            t.dataIndex = null;
16027            var i = t.findDataIndex(e.offsetX, e.offsetY);
16028            i > 0 && (t.dataIndex = i + t.__startIndex)
16029        }))
16030    }, zL._clearIncremental = function() {
16031        var t = this._incremental;
16032        t && t.clearDisplaybles()
16033    };
16034    var BL = {
16035        seriesType: "lines",
16036        plan: QM(),
16037        reset: function(t) {
16038            var e = t.coordinateSystem,
16039                i = t.get("polyline"),
16040                n = t.pipelineContext.large;
16041            return {
16042                progress: function(o, a) {
16043                    var r = [];
16044                    if (n) {
16045                        var s, l = o.end - o.start;
16046                        if (i) {
16047                            for (var u = 0, h = o.start; h < o.end; h++) u += t.getLineCoordsCount(h);
16048                            s = new Float32Array(l + 2 * u)
16049                        } else s = new Float32Array(4 * l);
16050                        for (var c = 0, d = [], h = o.start; h < o.end; h++) { g = t.getLineCoords(h, r), i && (s[c++] = g); for (var f = 0; f < g; f++) d = e.dataToPoint(r[f], !1, d), s[c++] = d[0], s[c++] = d[1] }
16051                        a.setLayout("linesPoints", s)
16052                    } else
16053                        for (h = o.start; h < o.end; h++) {
16054                            var p = a.getItemModel(h),
16055                                g = t.getLineCoords(h, r),
16056                                m = [];
16057                            if (i)
16058                                for (var v = 0; v < g; v++) m.push(e.dataToPoint(r[v]));
16059                            else { m[0] = e.dataToPoint(r[0]), m[1] = e.dataToPoint(r[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]) }
16060                            a.setItemLayout(h, m)
16061                        }
16062                }
16063            }
16064        }
16065    };
16066    _s({
16067        type: "lines",
16068        init: function() {},
16069        render: function(t, e, i) {
16070            var n = t.getData(),
16071                o = this._updateLineDraw(n, t),
16072                a = t.get("zlevel"),
16073                r = t.get("effect.trailLength"),
16074                s = i.getZr(),
16075                l = "svg" === s.painter.getType();
16076            l || s.painter.getLayer(a).clear(!0), null == this._lastZlevel || l || s.configLayer(this._lastZlevel, { motionBlur: !1 }), this._showEffect(t) && r && (l || s.configLayer(a, { motionBlur: !0, lastFrameAlpha: Math.max(Math.min(r / 10 + .9, 1), 0
16076) })), o.updateData(n), this._lastZlevel = a, this._finished = !0
16077        },
16078        incrementalPrepareRender: function(t, e, i) {
16079            var n = t.getData();
16080            this._updateLineDraw(n, t).incrementalPrepareUpdate(n), this._clearLayer(i), this._finished = !1
16081        },
16082        incrementalRender: function(t, e, i) { this._lineDraw.incrementalUpdate(t, e.getData()), this._finished = t.end === e.getData().count() },
16083        updateTransform: function(t, e, i) {
16084            var n = t.getData(),
16085                o = t.pipelineContext;
16086            if (!this._finished || o.large || o.progressiveRender) return { update: !0 };
16087            var a = BL.reset(t);
16088            a.progress && a.progress({ start: 0, end: n.count() }, n), this._lineDraw.updateLayout(), this._clearLayer(i)
16089        },
16090        _updateLineDraw: function(t, e) {
16091            var i = this._lineDraw,
16092                n = this._showEffect(e),
16093                o = !!e.get("polyline"),
16094                a = e.pipelineContext.large;
16095            return i && n === this._hasEffet && o === this._isPolyline && a === this._isLargeDraw || (i && i.remove(), i = this._lineDraw = a ? new Gp : new Sd(o ? n ? Vp : Bp : n ? zp : bd), this._hasEffet = n, this._isPolyline = o, this._isLargeDraw = a, this.group.removeAll()), this.group.add(i.group), i
16096        },
16097        _showEffect: function(t) { return !!t.get("effect.show") },
16098        _clearLayer: function(t) { var e = t.getZr(); "svg" === e.painter.getType() || null == this._lastZlevel || e.painter.getLayer(this._lastZlevel).clear(!0) },
16099        remove: function(t, e) { this._lineDraw && this._lineDraw.remove(), this._lineDraw = null, this._clearLayer(e) },
16100        dispose: function() {}
16101    });
16102    var VL = "lineStyle.opacity".split("."),
16103        GL = {
16104            seriesType: "lines",
16105            reset: function(t, e, i) {
16106                var n = Wp(t.get("symbol")),
16107                    o = Wp(t.get("symbolSize")),
16108                    a = t.getData();
16109                return a.setVisual("fromSymbol", n && n[0]), a.setVisual("toSymbol", n && n[1]), a.setVisual("fromSymbolSize", o && o[0]), a.setVisual("toSymbolSize", o && o[1]), a.setVisual("opacity", t.get(VL)), {
16110                    dataEach: a.hasItemOption ? function(t, e) {
16111                        var i = t.getItemModel(e),
16112                            n = Wp(i.getShallow("symbol", !0)),
16113                            o = Wp(i.getShallow("symbolSize", !0)),
16114                            a = i.get(VL);
16115                        n[0] && t.setItemVisual(e, "fromSymbol", n[0]), n[1] && t.setItemVisual(e, "toSymbol", n[1]), o[0] && t.setItemVisual(e, "fromSymbolSize", o[0]), o[1] && t.setItemVisual(e, "toSymbolSize", o[1]), t.setItemVisual(e, "opacity", a)
16116                    } : null
16117                }
16118            }
16119        };
16120    fs(BL), ps(GL), KM.extend({ type: "series.heatmap", getInitialData: function(t, e) { return Xs(this.getSource(), this, { generateCoord: "value" }) }, preventIncremental: function() { var t = Ca.get(this.get("coordinateSystem")); if (t && t.dimensions) return "lng" === t.dimensions[0] && "lat" === t.dimensions[1] }, defaultOption: { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, geoIndex: 0, blurSize: 30, pointSize: 20, maxOpacity: 1, minOpacity: 0 } });
16121    Fp.prototype = {
16122        update: function(t, e, i, n, o, a) {
16123            var r = this._getBrush(),
16124                s = this._getGradient(t, o, "inRange"),
16125                l = this._getGradient(t, o, "outOfRange"),
16126                u = this.pointSize + this.blurSize,
16127                h = this.canvas,
16128                c = h.getContext("2d"),
16129                d = t.length;
16130            h.width = e, h.height = i;
16131            for (var f = 0; f < d; ++f) {
16132                var p = t[f],
16133                    g = p[0],
16134                    m = p[1],
16135                    v = n(p[2]);
16136                c.globalAlpha = v, c.drawImage(r, g - u, m - u)
16137            }
16138            if (!h.width || !h.height) return h;
16139            for (var y = c.getImageData(0, 0, h.width, h.height), x = y.data, _ = 0, w = x.length, b = this.minOpacity, S = this.maxOpacity - b; _ < w;) {
16140                var v = x[_ + 3] / 256,
16141                    M = 4 * Math.floor(255 * v);
16142                if (v > 0) {
16143                    var I = a(v) ? s : l;
16144                    v > 0 && (v = v * S + b), x[_++] = I[M], x[_++] = I[M + 1], x[_++] = I[M + 2], x[_++] = I[M + 3] * v * 256
16145                } else _ += 4
16146            }
16147            return c.putImageData(y, 0, 0), h
16148        },
16149        _getBrush: function() {
16150            var t = this._brushCanvas || (this._brushCanvas = m_()),
16151                e = this.pointSize + this.blurSize,
16152                i = 2 * e;
16153            t.width = i, t.height = i;
16154            var n = t.getContext("2d");
16155            return n.clearRect(0, 0, i, i), n.shadowOffsetX = i, n.shadowBlur = this.blurSize, n.shadowColor = "#000", n.beginPath(), n.arc(-e, e, this.pointSize, 0, 2 * Math.PI, !0), n.closePath(), n.fill(), t
16156        },
16157        _getGradient: function(t, e, i) { for (var n = this._gradientPixels, o = n[i] || (n[i] = new Uint8ClampedArray(1024)), a = [0, 0, 0, 0], r = 0, s = 0; s < 256; s++) e[i](s / 255, !0, a), o[r++] = a[0], o[r++] = a[1], o[r++] = a[2], o[r++] = a[3]; return o }
16158    }, _s({
16159        type: "heatmap",
16160        render: function(t, e, i) {
16161            var n;
16162            e.eachComponent("visualMap", function(e) { e.eachTargetSeries(function(i) { i === t && (n = e) }) }
16162), this.group.removeAll(), this._incrementalDisplayable = null;
16163            var o = t.coordinateSystem;
16164            "cartesian2d" === o.type || "calendar" === o.type ? this._renderOnCartesianAndCalendar(t, i, 0, t.getData().count()) : Up(o) && this._renderOnGeo(o, t, n, i)
16165        },
16166        incrementalPrepareRender: function(t, e, i) { this.group.removeAll() },
16167        incrementalRender: function(t, e, i, n) { e.coordinateSystem && this._renderOnCartesianAndCalendar(e, n, t.start, t.end, !0) },
16168        _renderOnCartesianAndCalendar: function(t, e, i, n, o) {
16169            var r, s, l = t.coordinateSystem;
16170            if ("cartesian2d" === l.type) {
16171                var u = l.getAxis("x"),
16172                    h = l.getAxis("y");
16173                r = u.getBandWidth(), s = h.getBandWidth()
16174            }
16175            for (var c = this.group, d = t.getData(), f = t.getModel("itemStyle").getItemStyle(["color"]), p = t.getModel("emphasis.itemStyle").getItemStyle(), g = t.getModel("label"), m = t.getModel("emphasis.label"), v = l.type, y = "cartesian2d" === v ? [d.mapDimension("x"), d.mapDimension("y"), d.mapDimension("value")] : [d.mapDimension("time"), d.mapDimension("value")], x = i; x < n; x++) {
16176                var _;
16177                if ("cartesian2d" === v) {
16178                    if (isNaN(d.get(y[2], x))) continue;
16179                    var w = l.dataToPoint([d.get(y[0], x), d.get(y[1], x)]);
16180                    _ = new SS({ shape: { x: w[0] - r / 2, y: w[1] - s / 2, width: r, height: s }, style: { fill: d.getItemVisual(x, "color"), opacity: d.getItemVisual(x, "opacity") } })
16181                } else {
16182                    if (isNaN(d.get(y[1], x))) continue;
16183                    _ = new SS({ z2: 1, shape: l.dataToRect([d.get(y[0], x)]).contentShape, style: { fill: d.getItemVisual(x, "color"), opacity: d.getItemVisual(x, "opacity") } })
16184                }
16185                var b = d.getItemModel(x);
16186                d.hasItemOption && (f = b.getModel("itemStyle").getItemStyle(["color"]), p = b.getModel("emphasis.itemStyle").getItemStyle(), g = b.getModel("label"), m = b.getModel("emphasis.label"));
16187                var S = t.getRawValue(x),
16188                    M = "-";
16189                S && null != S[2] && (M = S[2]), io(f, p, g, m, { labelFetcher: t, labelDataIndex: x, defaultText: M, isRectText: !0 }), _.setStyle(f), eo(_, d.hasItemOption ? p : a({}, p)), _.incremental = o, o && (_.useHoverLayer = !0), c.add(_), d.setItemGraphicEl(x, _)
16190            }
16191        },
16192        _renderOnGeo: function(t, e, i, n) {
16193            var o = i.targetVisuals.inRange,
16194                a = i.targetVisuals.outOfRange,
16195                r = e.getData(),
16196                s = this._hmLayer || this._hmLayer || new Fp;
16197            s.blurSize = e.get("blurSize"), s.pointSize = e.get("pointSize"), s.minOpacity = e.get("minOpacity"), s.maxOpacity = e.get("maxOpacity");
16198            var l = t.getViewRect().clone(),
16199                u = t.getRoamTransform();
16200            l.applyTransform(u);
16201            var h = Math.max(l.x, 0),
16202                c = Math.max(l.y, 0),
16203                d = Math.min(l.width + l.x, n.getWidth()),
16204                f = Math.min(l.height + l.y, n.getHeight()),
16205                p = d - h,
16206                g = f - c,
16207                m = [r.mapDimension("lng"), r.mapDimension("lat"), r.mapDimension("value")],
16208                v = r.mapArray(m, function(e, i, n) { var o = t.dataToPoint([e, i]); return o[0] -= h, o[1] -= c, o.push(n), o }),
16209                y = i.getExtent(),
16210                x = "visualMap.continuous" === i.type ? Zp(y, i.option.range) : Hp(y, i.getPieceList(), i.option.selected);
16211            s.update(v, p, g, o.color.getNormalizer(), { inRange: o.color.getColorMapper(), outOfRange: a.color.getColorMapper() }, x);
16212            var _ = new Je({ style: { width: p, height: g, x: h, y: c, image: s.canvas }, silent: !0 });
16213            this.group.add(_)
16214        },
16215        dispose: function() {}
16216    });
16217    var WL = GD.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(t) { return t.stack = null, WL.superApply(this, "getInitialData", arguments) } }),
16218        FL = ["itemStyle", "borderWidth"],
16219        HL = [{ xy: "x", wh: "width", index: 0, posDesc: ["left", "right"] }, { xy: "y", wh: "height", index: 1, posDesc: ["top", "bottom"] }],
16220        ZL = new pS;
16221    _s({
16222        type: "pictorialBar",
16223        render: function(t, e, i) {
16224            var n = this.group,
16225                o = t.getData(),
16226                a = this._data,
16227                r = t.coordinateSystem,
16228                s = !!r.getBaseAxis().isHorizontal(),
16229                l = r.grid.getRect(),
16230                u = {
16231                    ecSize: { width: i.getWidth(), height: i.getHeight() },
16232                    seriesModel: t,
16233                    coordSys: r,
16234                    coordSysExtent: [
16235                        [l.x, l.x + l.width],
16236                        [l.y, l.y + l.height]
16237                    ],
16238                    isHorizontal: s,
16239                    valueDim: HL[+s],
16240                    categoryDim: HL[1 - s]
16241                };
16242            return o.diff(a).add(function(t) {
16243                if (o.hasValue(t)) {
16244                    var e = ng(o, t),
16245                        i = Xp(o, t, e, u),
16246                        a = sg(o, u, i);
16247                    o.setItemGraphicEl(t, a), n.add(a), fg(a, u, i)
16248                }
16249            }).update(function(t, e) {
16250                var i = a.getItemGraphicEl(e);
16251                if (o.hasValue(t)) {
16252                    var r = ng(o, t),
16253                        s = Xp(o, t, r, u),
16254                        l = hg(o, s);
16255                    i && l !== i.__pictorialShapeStr && (n.remove(i), o.setItemGraphicEl(t, null), i = null), i ? lg(i, u, s) : i = sg(o, u, s, !0), o.setItemGraphicEl(t, i), i.__pictorialSymbolMeta = s, n.add(i), fg(i, u, s)
16256                } else n.remove(i)
16257            }).remove(function(t) {
16258                var e = a.getItemGraphicEl(t);
16259                e && ug(a, t, e.__pictorialSymbolMeta.animationModel, e)
16260            }).execute(), this._data = o, this.group
16261        },
16262        dispose: B,
16263        remove: function(t, e) {
16264            var i = this.group,
16265                n = this._data;
16266            t.get("animation") ? n && n.eachItemGraphicEl(function(e) { ug(n, e.dataIndex, t, e) }) : i.removeAll()
16267        }
16268    });
16269    fs(v(cl, "pictorialBar")), ps(gD("pictorialBar", "roundRect"));
16270    var UL = function(t, e, i, n, o) { qT.call(this, t, e, i), this.type = n || "value", this.position = o || "bottom", this.orient = null };
16271    UL.prototype = { constructor: UL, model: null, isHorizontal: function() { var t = this.position; return "top" === t || "bottom" === t }, pointToData: function(t, e) { return this.coordinateSystem.pointToData(t, e)[0] }, toGlobalCoord: null, toLocalCoord: null }, u(UL, qT), gg.prototype = {
16272        type: "singleAxis",
16273        axisPointerEnabled: !0,
16274        constructor: gg,
16275        _init: function(t, e, i) {
16276            var n = this.dimension,
16277                o = new UL(n, xl(t), [0, 0], t.get("type"), t.get("position")),
16278                a = "category" === o.type;
16279            o.onBand = a && t.get("boundaryGap"), o.inverse = t.get("inverse"), o.orient = t.get("orient"), t.axis = o, o.model = t, o.coordinateSystem = this, this._axis = o
16280        },
16281        update: function(t, e) {
16282            t.eachSeries(function(t) {
16283                if (t.coordinateSystem === this) {
16284                    var e = t.getData();
16285                    d(e.mapDimension(this.dimension, !0), function(t) { this._axis.scale.unionExtentFromData(e, t) }, this), yl(this._axis.scale, this._axis.model)
16286                }
16287            }, this)
16288        },
16289        resize: function(t, e) { this._rect = Qo({ left: t.get("left"), top: t.get("top"), right: t.get("right"), bottom: t.get("bottom"), width: t.get("width"), height: t.get("height") }, { width: e.getWidth(), height: e.getHeight() }), this._adjustAxis() },
16290        getRect: function() { return this._rect },
16291        _adjustAxis: function() {
16292            var t = this._rect,
16293                e = this._axis,
16294                i = e.isHorizontal(),
16295                n = i ? [0, t.width] : [0, t.height],
16296                o = e.reverse ? 1 : 0;
16297            e.setExtent(n[o], n[1 - o]), this._updateAxisTransform(e, i ? t.x : t.
16297y)
16298        },
16299        _updateAxisTransform: function(t, e) {
16300            var i = t.getExtent(),
16301                n = i[0] + i[1],
16302                o = t.isHorizontal();
16303            t.toGlobalCoord = o ? function(t) { return t + e } : function(t) { return n - t + e }, t.toLocalCoord = o ? function(t) { return t - e } : function(t) { return n - t + e }
16304        },
16305        getAxis: function() { return this._axis },
16306        getBaseAxis: function() { return this._axis },
16307        getAxes: function() { return [this._axis] },
16308        getTooltipAxes: function() { return { baseAxes: [this.getAxis()] } },
16309        containPoint: function(t) {
16310            var e = this.getRect(),
16311                i = this.getAxis();
16312            return "horizontal" === i.orient ? i.contain(i.toLocalCoord(t[0])) && t[1] >= e.y && t[1] <= e.y + e.height : i.contain(i.toLocalCoord(t[1])) && t[0] >= e.y && t[0] <= e.y + e.height
16313        },
16314        pointToData: function(t) { var e = this.getAxis(); return [e.coordToData(e.toLocalCoord(t["horizontal" === e.orient ? 0 : 1]))] },
16315        dataToPoint: function(t) {
16316            var e = this.getAxis(),
16317                i = this.getRect(),
16318                n = [],
16319                o = "horizontal" === e.orient ? 0 : 1;
16320            return t instanceof Array && (t = t[0]), n[o] = e.toGlobalCoord(e.dataToCoord(+t)), n[1 - o] = 0 === o ? i.y + i.height / 2 : i.x + i.width / 2, n
16321        }
16322    }, Ca.register("single", {
16323        create: function(t, e) {
16324            var i = [];
16325            return t.eachComponent("singleAxis", function(n, o) {
16326                var a = new gg(n, t, e);
16327                a.name = "single_" + o, a.resize(n, e), n.coordinateSystem = a, i.push(a)
16328            }), t.eachSeries(function(e) {
16329                if ("singleAxis" === e.get("coordinateSystem")) {
16330                    var i = t.queryComponents({ mainType: "singleAxis", index: e.get("singleAxisIndex"), id: e.get("singleAxisId") })[0];
16331                    e.coordinateSystem = i && i.coordinateSystem
16332                }
16333            }), i
16334        },
16335        dimensions: gg.prototype.dimensions
16336    });
16337    var XL = ["axisLine", "axisTickLabel", "axisName"],
16338        jL = ED.extend({
16339            type: "singleAxis",
16340            axisPointerClass: "SingleAxisPointer",
16341            render: function(t, e, i, n) {
16342                var o = this.group;
16343                o.removeAll();
16344                var a = mg(t),
16345                    r = new LD(t, a);
16346                d(XL, r.add, r), o.add(r.getGroup()), t.get("splitLine.show") && this._splitLine(t), jL.superCall(this, "render", t, e, i, n)
16347            },
16348            _splitLine: function(t) {
16349                var e = t.axis;
16350                if (!e.scale.isBlank()) {
16351                    var i = t.getModel("splitLine"),
16352                        n = i.getModel("lineStyle"),
16353                        o = n.get("width"),
16354                        a = n.get("color");
16355                    a = a instanceof Array ? a : [a];
16356                    for (var r = t.coordinateSystem.getRect(), s = e.isHorizontal(), l = [], u = 0, h = e.getTicksCoords({ tickModel: i }), c = [], d = [], f = 0; f < h.length; ++f) {
16357                        var p = e.toGlobalCoord(h[f].coord);
16358                        s ? (c[0] = p, c[1] = r.y, d[0] = p, d[1] = r.y + r.height) : (c[0] = r.x, c[1] = p, d[0] = r.x + r.width, d[1] = p);
16359                        var g = u++ % a.length;
16360                        l[g] = l[g] || [], l[g].push(new MS(Gn({ shape: { x1: c[0], y1: c[1], x2: d[0], y2: d[1] }, style: { lineWidth: o }, silent: !0 })))
16361                    }
16362                    for (f = 0; f < l.length; ++f) this.group.add(zS(l[f], { style: { stroke: a[f % a.length], lineDash: n.getLineDash(o), lineWidth: o }, silent: !0 }))
16363                }
16364            }
16365        }),
16366        YL = hM.extend({ type: "singleAxis", layoutMode: "box", axis: null, coordinateSystem: null, getCoordSysModel: function() { return this } }),
16367        qL = { left: "5%", top: "5%", right: "5%", bottom: "5%", type: "value", position: "bottom", orient: "horizontal", axisLine: { show: !0, lineStyle: { width: 2, type: "solid" } }, tooltip: { show: !0 }, axisTick: { show: !0, length: 6, lineStyle: { width: 2 } }, axisLabel: { show: !0, interval: "auto" }, splitLine: { show: !0, lineStyle: { type: "dashed", opacity: .2 } } };
16368    n(YL.prototype, ET), MD("single", YL, function(t, e) { return e.type || (e.data ? "category" : "value") }, qL);
16369    var KL = function(t, e) {
16370            var i, n = [],
16371                o = t.seriesIndex;
16372            if (null == o || !(i = e.getSeriesByIndex(o))) return { point: [] };
16373            var a = i.getData(),
16374                r = Pi(a, t);
16375            if (null == r || r < 0 || y(r)) return { point: [] };
16376            var s = a.getItemGraphicEl(r),
16377                l = i.coordinateSystem;
16378            if (i.getTooltipPosition) n = i.getTooltipPosition(r) || [];
16379            else if (l && l.dataToPoint) n = l.dataToPoint(a.getValues(f(l.dimensions, function(t) { return a.mapDimension(t) }), r, !0)) || [];
16380            else if (s) {
16381                var u = s.getBoundingRect().clone();
16382                u.applyTransform(s.transform), n = [u.x + u.width / 2, u.y + u.height / 2]
16383            }
16384            return { point: n, el: s }
16385        },
16386        $L = d,
16387        JL = v,
16388        QL = Ni(),
16389        tk = (vs({ 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 } } }), Ni()),
16390        ek = d,
16391        ik = ys({
16392            type: "axisPointer",
16393            render: function(t, e, i) {
16394                var n = e.getComponent("tooltip"),
16395                    o = t.get("triggerOn") || n && n.get("triggerOn") || "mousemove|click";
16396                Dg("axisPointer", i, function(t, e, i) { "none" !== o && ("leave" === t || o.indexOf(t) >= 0) && i({ type: "updateAxisPointer", currTrigger: t, x: e && e.offsetX, y: e && e.offsetY }) })
16397            },
16398            remove: function(t, e) { Ng(e.getZr(), "axisPointer"), ik.superApply(this._model, "remove", arguments) },
16399            dispose: function(t, e) { Ng("axisPointer", e), ik.superApply(this._model, "dispose", arguments) }
16400        }),
16401        nk = Ni(),
16402        ok = i,
16403        ak = m;
16404    (Og.prototype = {
16405        _group: null,
16406        _lastGraphicKey: null,
16407        _handle: null,
16408        _dragging: !1,
16409        _lastValue: null,
16410        _lastStatus: null,
16411        _payloadInfo: null,
16412        animationThreshold: 15,
16413        render: function(t, e, i, n) {
16414            var o = e.get("value"),
16415                a = e.get("status");
16416            if (this._axisModel = t, this._axisPointerModel = e, this._api = i, n || this._lastValue !== o || this._lastStatus !== a) {
16417                this._lastValue = o, this._lastStatus = a;
16418                var r = this._group,
16419                    s = this._handle;
16420                if (!a || "hide" === a) return r && r.hide(), void(s && s.hide());
16421                r && r.show(), s && s.show();
16422                var l = {};
16423                this.makeElOption(l, o, t, e, i);
16424                var u = l.graphicKey;
16425                u !== this._lastGraphicKey && this.clear(i), this._lastGraphicKey = u;
16426                var h = this._moveAnimation = this.determineAnimation(t, e);
16427                if (r) {
16428                    var c = v(Eg, e, h);
16429                    this.updatePointerEl(r, l, c, e), this.updateLabelEl(r, l, c, e)
16430                } else r = this._group = new sw, this.createPointerEl(r, l, t, e), this.createLabelEl(r, l, t, e), i.getZr().add(r);
16431                Vg(r, e, !0), this._renderHandle(o)
16432            }
16433        },
16434        remove: function(t) { this.clear(t) },
16435        dispose: function(t) { this.clear(t) },
16436        determineAnimation: function(t, e) {
16437            var i = e.get("animation"),
16438                n = t.axis,
16439                o = "category" === n.type,
16440                a = e.get("snap");
16441            if (!a && !o) return !1;
16442            if ("auto" === i || null == i) {
16443                var r = this.animationThreshold;
16444                if (o && n.getBandWidth() > r) return !0;
16445                if (a) {
16446                    var s = qu(t).seriesDataCount,
16447                        l = n.getExtent();
16448                    return Math.abs(l[0] - l[1]) / s > r
16449                }
16450                return !1
16451            }
16452            return !0 === i
16453        },
16454        makeElOption: function(t, e, i, n, o) {},
16455        createPointerEl: function(t, e, i, n) {
16456            var o = e.pointer;
16457            if (o) {
16458                var a = nk(t).pointerEl = new BS[o.type](ok(e.pointer));
16459                t.add(a)
16460            }
16461        },
16462        createLabelEl: function(t, e, i, n) {
16463            if (e.label) {
16464                var o = nk(t).labelEl = new SS(ok(e.label));
16465                t.add(o), zg(o, n)
16466            }
16467        },
16468        updatePointerEl: function(t, e, i) {
16469            var n = nk(t).pointerEl;
16470            n && (n.setStyle(e.pointer.style), i(n, { shape: e.pointer.shape }))
16471        },
16472        updateLabelEl: function(t, e, i, n) {
16473            var o = nk(t).labelEl;
16474            o && (o.setStyle(e.label.style), i(o, { shape: e.label.shape, position: e.label.position }), zg(o, n))
16475        },
16476        _renderHandle: function(t) {
16477            if (!this._dragging && this.updateHandleTransform) {
16478                var e = this._axisPointerModel,
16479                    i = this._api.getZr(),
16480                    n = this._handle,
16481                    o = e.getModel("handle"),
16482                    a = e.get("status");
16483                if (!o.get("show") || !a || "hide" === a) return n && i.remove(n), void(this._handle = null);
16484                var r;
16485                this._handle || (r = !0, n = this._handle = _o(o.get("icon"), { cursor: "move", draggable: !0, onmousemove: function(t) { zw(t.event) }, onmousedown: ak(this._onHandleDragMove, this, 0, 0), drift: ak(this._onHandleDragMove, this), ondragend: ak(this._onHandleDragEnd, this) }), i.add(n)), Vg(n, e, !1);
16486                var s = ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"];
16487                n.setStyle(o.getItemStyle(null, s));
16488                var l = o.get("size");
16489                y(l) || (l = [l, l]), n.attr("scale", [l[0] / 2, l[1] / 2]), wr(this, "_doDispat
16489chAxisPointer", o.get("throttle") || 0, "fixRate"), this._moveHandleToValue(t, r)
16490            }
16491        },
16492        _moveHandleToValue: function(t, e) { Eg(this._axisPointerModel, !e && this._moveAnimation, this._handle, Bg(this.getHandleTransform(t, this._axisModel, this._axisPointerModel))) },
16493        _onHandleDragMove: function(t, e) {
16494            var i = this._handle;
16495            if (i) {
16496                this._dragging = !0;
16497                var n = this.updateHandleTransform(Bg(i), [t, e], this._axisModel, this._axisPointerModel);
16498                this._payloadInfo = n, i.stopAnimation(), i.attr(Bg(n)), nk(i).lastProp = null, this._doDispatchAxisPointer()
16499            }
16500        },
16501        _doDispatchAxisPointer: function() {
16502            if (this._handle) {
16503                var t = this._payloadInfo,
16504                    e = this._axisModel;
16505                this._api.dispatchAction({ type: "updateAxisPointer", x: t.cursorPoint[0], y: t.cursorPoint[1], tooltipOption: t.tooltipOption, axesInfo: [{ axisDim: e.axis.dim, axisIndex: e.componentIndex }] })
16506            }
16507        },
16508        _onHandleDragEnd: function(t) {
16509            if (this._dragging = !1, this._handle) {
16510                var e = this._axisPointerModel.get("value");
16511                this._moveHandleToValue(e), this._api.dispatchAction({ type: "hideTip" })
16512            }
16513        },
16514        getHandleTransform: null,
16515        updateHandleTransform: null,
16516        clear: function(t) {
16517            this._lastValue = null, this._lastStatus = null;
16518            var e = t.getZr(),
16519                i = this._group,
16520                n = this._handle;
16521            e && i && (this._lastGraphicKey = null, i && e.remove(i), n && e.remove(n), this._group = null, this._handle = null, this._payloadInfo = null)
16522        },
16523        doClear: function() {},
16524        buildLabel: function(t, e, i) { return i = i || 0, { x: t[i], y: t[1 - i], width: e[i], height: e[1 - i] } }
16525    }).constructor = Og, Gi(Og);
16526    var rk = Og.extend({
16527            makeElOption: function(t, e, i, n, o) {
16528                var a = i.axis,
16529                    r = a.grid,
16530                    s = n.get("type"),
16531                    l = qg(r, a).getOtherAxis(a).getGlobalExtent(),
16532                    u = a.toGlobalCoord(a.dataToCoord(e, !0));
16533                if (s && "none" !== s) {
16534                    var h = Gg(n),
16535                        c = sk[s](a, u, l, h);
16536                    c.style = h, t.graphicKey = c.type, t.pointer = c
16537                }
16538                Ug(e, t, eh(r.model, i), i, n, o)
16539            },
16540            getHandleTransform: function(t, e, i) { var n = eh(e.axis.grid.model, e, { labelInside: !1 }); return n.labelMargin = i.get("handle.margin"), { position: Zg(e.axis, t, n), rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0) } },
16541            updateHandleTransform: function(t, e, i, n) {
16542                var o = i.axis,
16543                    a = o.grid,
16544                    r = o.getGlobalExtent(!0),
16545                    s = qg(a, o).getOtherAxis(o).getGlobalExtent(),
16546                    l = "x" === o.dim ? 0 : 1,
16547                    u = t.position;
16548                u[l] += e[l], u[l] = Math.min(r[1], u[l]), u[l] = Math.max(r[0], u[l]);
16549                var h = (s[1] + s[0]) / 2,
16550                    c = [h, h];
16551                c[l] = u[l];
16552                var d = [{ verticalAlign: "middle" }, { align: "center" }];
16553                return { position: u, rotation: t.rotation, cursorPoint: c, tooltipOption: d[l] }
16554            }
16555        }),
16556        sk = {
16557            line: function(t, e, i, n) { var o = Xg([e, i[0]], [e, i[1]], Kg(t)); return Gn({ shape: o, style: n }), { type: "Line", shape: o } },
16558            shadow: function(t, e, i, n) {
16559                var o = Math.max(1, t.getBandWidth()),
16560                    a = i[1] - i[0];
16561                return { type: "Rect", shape: jg([e - o / 2, i[0]], [o, a], Kg(t)) }
16562            }
16563        };
16564    ED.registerAxisPointerClass("CartesianAxisPointer", rk), us(function(t) {
16565        if (t) {
16566            (!t.axisPointer || 0 === t.axisPointer.length) && (t.axisPointer = {});
16567            var e = t.axisPointer.link;
16568            e && !y(e) && (t.axisPointer.link = [e])
16569        }
16570    }), hs(LI.PROCESSOR.STATISTIC, function(t, e) { t.getComponent("axisPointer").coordSysAxesInfo = Fu(t, e) }), cs({ type: "updateAxisPointer", event: "updateAxisPointer", update: ":updateAxisPointer" }, function(t, e, i) {
16571        var n = t.currTrigger,
16572            o = [t.x, t.y],
16573            a = t,
16574            r = t.dispatchAction || m(i.dispatchAction, i),
16575            s = e.getComponent("axisPointer").coordSysAxesInfo;
16576        if (s) {
16577            Tg(o) && (o = KL({ seriesIndex: a.seriesIndex, dataIndex: a.dataIndex }, e).point);
16578            var l = Tg(o),
16579                u = a.axesInfo,
16580                h = s.axesInfo,
16581                c = "leave" === n || Tg(o),
16582                d = {},
16583                f = {},
16584                p = { list: [], map: {} },
16585                g = { showPointer: JL(xg, f), showTooltip: JL(_g, p) };
16586            $L(s.coordSysMap, function(t, e) {
16587                var i = l || t.containPoint(o);
16588                $L(s.coordSysAxesInfo[e], function(t, e) {
16589                    var n = t.axis,
16590                        a = Mg(u, t);
16591                    if (!c && i && (!u || a)) {
16592                        var r = a && a.value;
16593                        null != r || l || (r = n.pointToData(o)), null != r && vg(t, r, g, !1, d)
16594                    }
16595                })
16596            });
16597            var v = {};
16598            return $L(h, function(t, e) {
16599                var i = t.linkGroup;
16600                i && !f[e] && $L(i.axesInfo, function(e, n) {
16601                    var o = f[n];
16602                    if (e !== t && o) {
16603                        var a = o.value;
16604                        i.mapper && (a = t.axis.scale.parse(i.mapper(a, Ig(e), Ig(t)))), v[t.key] = a
16605                    }
16606                })
16607            }), $L(v, function(t, e) { vg(h[e], t, g, !0, d) }), wg(f, h, d), bg(p, o, t, r), Sg(h, 0, i), d
16608        }
16609    });
16610    var lk = ["x", "y"],
16611        uk = ["width", "height"],
16612        hk = Og.extend({
16613            makeElOption: function(t, e, i, n, o) {
16614                var a = i.axis,
16615                    r = a.coordinateSystem,
16616                    s = Jg(r, 1 - $g(a)),
16617                    l = r.dataToPoint(e)[0],
16618                    u = n.get("type");
16619                if (u && "none" !== u) {
16620                    var h = Gg(n),
16621                        c = ck[u](a, l, s, h);
16622                    c.style = h, t.graphicKey = c.type, t.pointer = c
16623                }
16624                Ug(e, t, mg(i), i, n, o)
16625            },
16626            getHandleTransform: function(t, e, i) { var n = mg(e, { labelInside: !1 }); return n.labelMargin = i.get("handle.margin"), { position: Zg(e.axis, t, n), rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0) } },
16627            updateHandleTransform: function(t, e, i, n) {
16628                var o = i.axis,
16629                    a = o.coordinateSystem,
16630                    r = $g(o),
16631                    s = Jg(a, r),
16632                    l = t.position;
16633                l[r] += e[r], l[r] = Math.min(s[1], l[r]), l[r] = Math.max(s[0], l[r]);
16634                var u = Jg(a, 1 - r),
16635                    h = (u[1] + u[0]) / 2,
16636                    c = [h, h];
16637                return c[r] = l[r], { position: l, rotation: t.rotation, cursorPoint: c, tooltipOption: { verticalAlign: "middle" } }
16638            }
16639        }),
16640        ck = {
16641            line: function(t, e, i, n) { var o = Xg([e, i[0]], [e, i[1]], $g(t)); return Gn({ shape: o, style: n }), { type: "Line", shape: o } },
16642            shadow: function(t, e, i, n) {
16643                var o = t.getBandWidth(),
16644                    a = i[1] - i[0];
16645                return { type: "Rect", shape: jg([e - o / 2, i[0]], [o, a], $g(t)) }
16646            }
16647        };
16648    ED.registerAxisPointerClass("SingleAxisPointer", hk), ys({ type: "single" });
16649    var dk = KM.extend({
16650        type: "series.themeRiver",
16651        dependencies: ["singleAxis"],
16652        nameMap: null,
16653        init: function(t) { dk.superApply(this, "init", arguments), this.legendDataProvider = function() { return this.getRawData() } },
16654        fixData: function(t) {
16655            for (var e = t.length, i = f(Jf().key(function(t) { return t[2] }).entries(t), function(t) { return { name: t.key, dataList: t.values } }), n = i.length, o = -1, a = -1, r = 0; r < n; ++r) {
16656                var s = i[r].dataList.length;
16657                s > o && (o = s, a = r)
16658            }
16659            for (var l = 0; l < n; ++l)
16660                if (l !== a)
16661                    for (var u = i[l].name, h = 0; h < o; ++h) {
16662                        for (var c = i[a].dataList[h][0], d = i[l].dataList.length, p = -1, g = 0; g < d; ++g)
16663                            if (i[l].dataList[g][0] === c) { p = g; break } - 1 === p && (t[e] = [], t[e][0] = c, t[e][1] = 0, t[e][2] = u, e++)
16664                    }
16665            return t
16666        },
16667        getInitialData: function(t, e) {
16668            for (var i = e.queryComponents({ mainType: "singleAxis", index: this.get("singleAxisIndex"), id: this.get("singleAxisId") })[0].get("type"), n = g(t.data, function(t) { return void 0 !== t[2] }), o = this.fixData(n || []), a = [], r = this.nameMap = R(), s = 0, l = 0; l < o.length; ++l) a.push(o[l][2]), r.get(o[l][2]) || (r.set(o[l][2], s), s++);
16669            var u = hT(o, { coordDimensions: ["single"], dimensionsDefine: [{ name: "time", type: Ts(i) }, { name: "value", type: "float" }, { name: "name", type: "ordinal" }], encodeDefine: { single: 0, value: 1, itemName: 2 } }),
16670                h = new sT(u, this);
16671            return h.initData(o), h
16672        },
16673        getLayerSeries: function() { for (var t = this.getData(), e = t.count(), i = [], n = 0; n < e; ++n) i[n] = n; for (var o = f(Jf().key(function(e) { return t.get("name", e) }).entries(i), function(t) { return { name: t.key, indices: t.values } }), a = t.mapDimension("single"), r = 0; r < o.length; ++r) o[r].indices.sort(function(e, i) { return t.get(a, e) - t.get(a, i) }); return o },
16674        getAxisTooltipData: function(t, e, i) {
16675            y(t) || (t = t ? [t] : []);
16676            for (var n, o = this.getData(), a = this.getLayerSeries(), r = [], s = a.length, l = 0; l < s; ++l) {
16677                for (var u = Number.MAX_VALUE, h = -1, c = a[l].indices.length, d = 0; d < c; ++d) {
16678                    var f = o.get(t[0], a[l].indices[d]),
16679                        p = Math.abs(f - e);
16680                    p <= u && (n = f, u = p, h = a[l].indices[d])
16681                }
16682                r.push(h)
16683            }
16684            return { dataIndices: r, nestestValue: n }
16685        },
16686        formatTooltip: function(t) {
16687            var e = this.getData(),
16688                i = e.getName(t),
16689                n = e.get(e.mapDimension("value"), t);
16690            return (isNaN(n) || null == n) && (n = "-"), Zo(i + " : " + n)
16691        },
16692        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 } } }
16693    });
16694    _s({
16695        type: "themeRiver",
16696        init: function() { this._layers = [] },
16697        render: function(t, e, i) {
16698            function n(t) { return t.name }
16699
16700            function o(e, i, n) {
16701                var o = this._layers;
16702                if ("remove" !== e) {
16703                    for (var u, h = [], c = [], f = l[i].indices, p = 0; p < f.length; p++) {
16704                        var g = r.getItemLayout(f[p]),
16705                            m = g.x,
16706                            v = g.y0,
16707                            y = g.y;
16708                        h.push([m, v]), c.push([m, v + y]), u = r.getItemVisual(f[p], "color")
16709                    }
16710                    var x, _, w = r.getItemLayout(f[0]),
16711                        b = r.getItemModel(f[p - 1]),
16712                        S = b.getModel("label"),
16713                        M = S.get("margin");
16714                    if ("add" === e) {
16715                        I = d[i] = new sw;
16716                        x = new pD({ shape: { points: h, stackedOnPoints: c, smooth: .4, stackedOnSmooth: .4, smoothConstraint: !1 }, z2: 0 }), _ = new fS({ style: { x: w.x - M, y: w.y0 + w.y / 2 } }), I.add(x), I.add(_), s.add(I), x.setClipPath(Qg(x.getBoundingRect(), t, function() { x.removeClipPath() }))
16717                    } else {
16718                        var I = o[n];
16719                        x = I.childAt(0), _ = I.childAt(1), s.add(I), d[i] = I, fo(x, { shape: { points: h, stackedOnPoints: c } }, t), fo(_, { style: { x: w.x - M, y: w.y0 + w.y / 2 } }, t)
16720                    }
16721                    var T = b.getModel("emphasis.itemStyle"),
16722                        D = b.getModel("itemStyle");
16723                    no(_.style, S, { text: S.get("show") ? t.getFormattedLabel(f[p - 1], "normal") || r.getName(f[p - 1]) : null, textVerticalAlign: "middle" }), x.setStyle(a({ fill: u }, D.getItemStyle(["color"]))), eo(x, T.getItemStyle())
16724                } else s.remove(o[i])
16725            }
16726            var r = t.getData(),
16727                s = this.group,
16728                l = t.getLayerSeries(),
16729                u = r.getLayout("layoutInfo"),
16730                h = u.rect,
16731                c = u.boundaryGap;
16732            s.attr("position", [0, h.y + c[0]]);
16733            var d = {};
16734            new Ss(this._layersSeries || [], l, n, n).add(m(o, this, "add")).update(m(o, this, "update")).remove(m(o, this, "remove")).execute(), this._layersSeries = l, this._layers = d
16735        },
16736        dispose: function() {}
16737    });
16738    fs(function(t, e) {
16739        t.eachSeriesByType("themeRiver", function(t) {
16740            var e = t.getData(),
16741                i = t.coordinateSystem,
16742                n = {},
16743                o = i.getRect();
16744            n.rect = o;
16745            var a = t.get("boundaryGap"),
16746                r = i.getAxis();
16747            n.boundaryGap = a, "horizontal" === r.orient ? (a[0] = Do(a[0], o.height), a[1] = Do(a[1], o.height), tm(e, t, o.height - a[0] - a[1])) : (a[0] = Do(a[0], o.width), a[1] = Do(a[1], o.width), tm(e, t, o.width - a[0] - a[1])), e.setLayout("layoutInfo", n)
16748        })
16749    }), ps(function(t) {
16750        t.eachSeriesByType("themeRiver", function(t) {
16751            var e = t.getData(),
16752                i = t.getRawData(),
16753                n = t.get("color"),
16754                o = R();
16755            e.each(function(t) { o.set(e.getRawIndex(t), t) }), i.each(function(a) {
16756                var r = i.getName(a),
16757                    s = n[(t.nameMap.get(r) - 1) % n.length];
16758                i.setItemVisual(a, "color", s);
16759                var l = o.get(a);
16760                null != l && e.setItemVisual(l, "color", s)
16761            })
16762        })
16763    }), hs(iA("themeRiver")), KM.extend({
16764        type: "series.sunburst",
16765        _viewRoot: null,
16766        getInitialData: function(t, e) {
16767            var i = { name: t.name, children: t.data };
16768            im(i);
16769            var n = t.levels || [],
16770                o = {};
16771            return o.levels = n, ic.createTree(i, this, o).data
16772        },
16773        optionUpdated: function() { this.resetViewRoot() },
16774        getDataParams: function(t) {
16775            var e = KM.prototype.getDataParams.apply(this, arguments),
16776                i = this.getData().tree.getNodeByDataIndex(t);
16777            return e.treePathInfo = Ac(i, this), e
16778        },
16779        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, emphasis: {} }, itemStyle: { borderWidth: 1, borderColor: "white", opacity: 1, emphasis: {}, highlight: { opacity: 1 }, downplay: { opacity: .9 } }, animationType: "expansion", animationDuration: 1e3, animationDurationUpdate: 500, animationEasing: "cubicOut", data: [], levels: [], sort: "desc" },
16780        getViewRoot: function() { return this._viewRoot },
16781        resetViewRoot: function(t) {
16782            t ? this._viewRoot = t : t = this._viewRoot;
16783            var e = this.getRawData().tree.root;
16784            t && (t === e || e.contains(t)) || (this._viewRoot = e)
16785        }
16786    });
16787    var fk = { NONE: "none", DESCENDANT: "descendant", ANCESTOR: "ancestor", SELF: "self" },
16788        pk = 2,
16789        gk = 4,
16790        mk = nm.prototype;
16791    mk.updateData = function(t, e, i, o, s) {
16792        this.node = e, e.piece = this, o = o || this._seriesModel, s = s || this._ecModel;
16793        var l = this.childAt(0);
16794        l.dataIndex = e.dataIndex;
16795        var u = e.getModel(),
16796            h = e.getLayout();
16797        h || console.log(e.getLayout());
16798        var c = a({}, h);
16799        c.label = null;
16800        var d, f = om(e, 0, s),
16801            p = u.getModel("itemStyle").getItemStyle();
16802        d = r({ lineJoin: "bevel", fill: (d = "normal" === i ? p : n(u.getModel(i + ".itemStyle").getItemStyle(), p)).fill || f }, d), t ? (l.setShape(c), l.shape.r = h.r0, fo(l, { shape: { r: h.r } }, o, e.dataIndex), l.useStyle(d)) : "object" == typeof d.fill && d.fill.type || "object" == typeof l.style.fill && l.style.fill.type ? (fo(l, { shape: c }, o), l.useStyle(d)) : fo(l, { shape: c, style: d }, o), this._updateLabel(o, f, i);
16803        var g = u.getShallow("cursor");
16804        if (g && l.attr("cursor", g), t) {
16805            var m = o.getShallow("highlightPolicy");
16806            this._initEvents(l, e, o, m)
16807        }
16808        this._seriesModel = o || this._seriesModel, this._ecModel = s || this._ecModel
16809    }
16809, mk.onEmphasis = function(t) {
16810        var e = this;
16811        this.node.hostTree.root.eachNode(function(i) { i.piece && (e.node === i ? i.piece.updateData(!1, i, "emphasis") : rm(i, e.node, t) ? i.piece.childAt(0).trigger("highlight") : t !== fk.NONE && i.piece.childAt(0).trigger("downplay")) })
16812    }, mk.onNormal = function() { this.node.hostTree.root.eachNode(function(t) { t.piece && t.piece.updateData(!1, t, "normal") }) }, mk.onHighlight = function() { this.updateData(!1, this.node, "highlight") }, mk.onDownplay = function() { this.updateData(!1, this.node, "downplay") }, mk._updateLabel = function(t, e, i) {
16813        function n(t) { var e = r.get(t); return null == e ? a.get(t) : e }
16814        var o = this.node.getModel(),
16815            a = o.getModel("label"),
16816            r = "normal" === i || "emphasis" === i ? a : o.getModel(i + ".label"),
16817            s = o.getModel("emphasis.label"),
16818            l = T(t.getFormattedLabel(this.node.dataIndex, "normal", null, null, "label"), this.node.name);
16819        !1 === n("show") && (l = "");
16820        var u = this.node.getLayout(),
16821            h = r.get("minAngle");
16822        null == h && (h = a.get("minAngle")), h = h / 180 * Math.PI;
16823        var c = u.endAngle - u.startAngle;
16824        null != h && Math.abs(c) < h && (l = "");
16825        var d = this.childAt(1);
16826        io(d.style, d.hoverStyle || {}, a, s, { defaultText: r.getShallow("show") ? l : null, autoColor: e, useInsideStyle: !0 });
16827        var f, p = (u.startAngle + u.endAngle) / 2,
16828            g = Math.cos(p),
16829            m = Math.sin(p),
16830            v = n("position"),
16831            y = n("distance") || 0,
16832            x = n("align");
16833        "outside" === v ? (f = u.r + y, x = p > Math.PI / 2 ? "right" : "left") : x && "center" !== x ? "left" === x ? (f = u.r0 + y, p > Math.PI / 2 && (x = "right")) : "right" === x && (f = u.r - y, p > Math.PI / 2 && (x = "left")) : (f = (u.r + u.r0) / 2, x = "center"), d.attr("style", { text: l, textAlign: x, textVerticalAlign: n("verticalAlign") || "middle", opacity: n("opacity") });
16834        var _ = f * g + u.cx,
16835            w = f * m + u.cy;
16836        d.attr("position", [_, w]);
16837        var b = n("rotate"),
16838            S = 0;
16839        "radial" === b ? (S = -p) < -Math.PI / 2 && (S += Math.PI) : "tangential" === b ? (S = Math.PI / 2 - p) > Math.PI / 2 ? S -= Math.PI : S < -Math.PI / 2 && (S += Math.PI) : "number" == typeof b && (S = b * Math.PI / 180), d.attr("rotation", S)
16840    }, mk._initEvents = function(t, e, i, n) {
16841        t.off("mouseover").off("mouseout").off("emphasis").off("normal");
16842        var o = this,
16843            a = function() { o.onEmphasis(n) },
16844            r = function() { o.onNormal() };
16845        i.isAnimationEnabled() && t.on("mouseover", a).on("mouseout", r).on("emphasis", a).on("normal", r).on("downplay", function() { o.onDownplay() }).on("highlight", function() { o.onHighlight() })
16846    }, u(nm, sw);
16847    gr.extend({
16848        type: "sunburst",
16849        init: function() {},
16850        render: function(t, e, i, n) {
16851            function o(i, n) {
16852                if (c || !i || i.getValue() || (i = null), i !== l && n !== l)
16853                    if (n && n.piece) i ? (n.piece.updateData(!1, i, "normal", t, e), s.setItemGraphicEl(i.dataIndex, n.piece)) : a(n);
16854                    else if (i) {
16855                    var o = new nm(i, t, e);
16856                    h.add(o), s.setItemGraphicEl(i.dataIndex, o)
16857                }
16858            }
16859
16860            function a(t) { t && t.piece && (h.remove(t.piece), t.piece = null) }
16861            var r = this;
16862            this.seriesModel = t, this.api = i, this.ecModel = e;
16863            var s = t.getData(),
16864                l = s.tree.root,
16865                u = t.getViewRoot(),
16866                h = this.group,
16867                c = t.get("renderLabelForZeroData"),
16868                d = [];
16869            u.eachNode(function(t) { d.push(t) });
16870            var f = this._oldChildren || [];
16871            if (function(t, e) {
16872                    function i(t) { return t.getId() }
16873
16874                    function n(i, n) { o(null == i ? null : t[i], null == n ? null : e[n]) }
16875                    0 === t.length && 0 === e.length || new Ss(e, t, i, i).add(n).update(n).remove(v(n, null)).execute()
16876                }(d, f), function(i, n) {
16877                    if (n.depth > 0) {
16878                        r.virtualPiece ? r.virtualPiece.updateData(!1, i, "normal", t, e) : (r.virtualPiece = new nm(i, t, e), h.add(r.virtualPiece)), n.piece._onclickEvent && n.piece.off("click", n.piece._onclickEvent);
16879                        var o = function(t) { r._rootToNode(n.parentNode) };
16880                        n.piece._onclickEvent = o, r.virtualPiece.on("click", o)
16881                    } else r.virtualPiece && (h.remove(r.virtualPiece), r.virtualPiece = null)
16882                }(l, u), n && n.highlight && n.highlight.piece) {
16883                var p = t.getShallow("highlightPolicy");
16884                n.highlight.piece.onEmphasis(p)
16885            } else if (n && n.unhighlight) { var g = this.virtualPiece;!g && l.children.length && (g = l.children[0].piece), g && g.onNormal() }
16886            this._initEvents(), this._oldChildren = d
16887        },
16888        dispose: function() {},
16889        _initEvents: function() {
16890            var t = this,
16891                e = function(e) {
16892                    var i = !1;
16893                    t.seriesModel.getViewRoot().eachNode(function(n) {
16894                        if (!i && n.piece && n.piece.childAt(0) === e.target) {
16895                            var o = n.getModel().get("nodeClick");
16896                            if ("rootToNode" === o) t._rootToNode(n);
16897                            else if ("link" === o) {
16898                                var a = n.getModel(),
16899                                    r = a.get("link");
16900                                if (r) {
16901                                    var s = a.get("target", !0) || "_blank";
16902                                    window.open(r, s)
16903                                }
16904                            }
16905                            i = !0
16906                        }
16907                    })
16908                };
16909            this.group._onclickEvent && this.group.off("click", this.group._onclickEvent), this.group.on("click", e), this.group._onclickEvent = e
16910        },
16911        _rootToNode: function(t) { t !== this.seriesModel.getViewRoot() && this.api.dispatchAction({ type: "sunburstRootToNode", from: this.uid, seriesId: this.seriesModel.id, targetNode: t }) },
16912        containPoint: function(t, e) {
16913            var i = e.getData().getItemLayout(0);
16914            if (i) {
16915                var n = t[0] - i.cx,
16916                    o = t[1] - i.cy,
16917                    a = Math.sqrt(n * n + o * o);
16918                return a <= i.r && a >= i.r0
16919            }
16920        }
16921    });
16922    var vk = "sunburstRootToNode";
16923    cs({ type: vk, update: "updateView" }, function(t, e) {
16924        e.eachComponent({ mainType: "series", subType: "sunburst", query: t }, function(e, i) {
16925            var n = Ic(t, [vk], e);
16926            if (n) {
16927                var o = e.getViewRoot();
16928                o && (t.direction = Dc(o, n.node) ? "rollUp" : "drillDown"), e.resetViewRoot(n.node)
16929            }
16930        })
16931    });
16932    var yk = "sunburstHighlight";
16933    cs({ type: yk, update: "updateView" }, function(t, e) {
16934        e.eachComponent({ mainType: "series", subType: "sunburst", query: t }, function(e, i) {
16935            var n = Ic(t, [yk], e);
16936            n && (t.highlight = n.node)
16937        })
16938    });
16939    cs({ type: "sunburstUnhighlight", update: "updateView" }, function(t, e) { e.eachComponent({ mainType: "series", subType: "sunburst", query: t }, function(e, i) { t.unhighlight = !0 }) });
16940    var xk = Math.PI / 180;
16941    ps(v(JD, "sunburst")), fs(v(function(t, e, i, n) {
16942        e.eachSeriesByType(t, function(t) {
16943            var e = t.get("center"),
16944                n = t.get("radius");
16945            y(n) || (n = [0, n]), y(e) || (e = [e, e]);
16946            var o = i.getWidth(),
16947                a = i.getHeight(),
16948                r = Math.min(o, a),
16949                s = Do(e[0], o),
16950                l = Do(e[1], a),
16951                u = Do(n[0], r / 2),
16952                h = Do(n[1], r / 2),
16953                c = -t.get("startAngle") * xk,
16954                f = t.get("minAngle") * xk,
16955                p = t.getData().tree.root,
16956                g = t.getViewRoot(),
16957                m = g.depth,
16958                v = t.get("sort");
16959            null != v && sm(g, v);
16960            var x = 0;
16961            d(g.children, function(t) {!isNaN(t.getValue()) && x++ });
16962            var _ = g.getValue(),
16963                w = Math.PI / (_ || x) * 2,
16964                b = g.depth > 0,
16965                S = g.height - (b ? -1 : 1),
16966                M = (h - u) / (S || 1),
16967                I = t.get("clockwise"),
16968                T = t.get("stillShowZeroSum"),
16969                D = I ? 1 : -1,
16970                A = function(t, e) {
16971                    if (t) {
16972                        var i = e;
16973                        if (t !== p) {
16974                            var n = t.getValue(),
16975                                o = 0 === _ && T ? w : n * w;
16976                            o < f && (o = f), i = e + D * o;
16977                            var a = t.depth - m - (b ? -1 : 1),
16978                                h = u + M * a,
16979                                c = u + M * (a + 1),
16980                                g = t.getModel();
16981                            null != g.get("r0") && (h = Do(g.get("r0"), r / 2)), null != g.get("r") && (c = Do(g.get("r"), r / 2)), t.setLayout({ angle: o, startAngle: e, endAngle: i, clockwise: I, cx: s, cy: l, r0: h, r: c })
16982                        }
16983                        if (t.children && t.children.length) {
16984                            var v = 0;
16985                            d(t.children, function(t) { v += A(t, e + v) })
16986                        }
16987                        return i - e
16988                    }
16989                };
16990            if (b) {
16991                var C = u,
16992                    L = u + M,
16993                    k = 2 * Math.PI;
16994                p.setLayout({ angle: k, startAngle: c, endAngle: c + k, clockwise: I, cx: s, cy: l, r0: C, r: L })
16995            }
16996            A(g, c)
16997        })
16998    }, "sunburst")), hs(v(iA, "sunburst"));
16999    var _k = ["itemStyle"],
17000        wk = ["emphasis", "itemStyle"],
17001        bk = ["label"],
17002        Sk = ["emphasis", "label"],
17003        Mk = "e\0\0",
17004        Ik = {
17005            cartesian2d: function(t) { var e = t.grid.getRect(); return { coordSys: { type: "cartesian2d", x: e.x, y: e.y, width: e.width, height: e.height }, api: { coord: function(e) { return t.dataToPoint(e) }, size: m(um, t) } } },
17006            geo: function(t) { var e = t.getBoundingRect(); return { coordSys: { type: "geo", x: e.x, y: e.y, width: e.width, height: e.height }, api: { coord: function(e) { return t.dataToPoint(e) }, size: m(hm, t) } } },
17007            singleAxis: function(t) { var e = t.getRect(); return { coordSys: { type: "singleAxis", x: e.x, y: e.y, width: e.width, height: e.height }, api: { coord: function(e) { return t.dataToPoint(e) }, size: m(cm, t) } } },
17008            polar: function(t) {
17009                var e = t.getRadiusAxis(),
17010                    i = t.getAngleAxis(),
17011                    n = e.getExtent();
17012                return n[0] > n[1] && n.reverse(), {
17013                    coordSys: { type: "polar", cx: t.cx, cy: t.cy, r: n[1], r0: n[0] },
17014                    api: {
17015                        coord: m(function(n) {
17016                            var o = e.dataToRadius(n[0]),
17017                                a = i.dataToAngle(n[1]),
17018                                r = t.coordToPoint([o, a]);
17019                            return r.push(o, a * Math.PI / 180), r
17020                        }),
17021                        size: m(dm, t)
17022                    }
17023                }
17024            },
17025            calendar: function(t) {
17026                var e = t.getRect(),
17027                    i = t.getRangeInfo();
17028                return { coordSys: { type: "calendar", x: e.x, y: e.y, width: e.width, height: e.height, cellWidth: t.getCellWidth(), cellHeight: t.getCellHeight(), rangeInfo: { start: i.start, end: i.end, weeks: i.weeks, dayCount: i.allDay } }, api: { coord: function(e, i) { return t.dataToPoint(e, i) } } }
17029            }
17030        };
17031    xs({ type: "series.custom", dependencies: ["grid", "polar", "geo", "singleAxis", "calendar"], defaultOption: { coordinateSystem: "cartesian2d", zlevel: 0, z: 2, legendHoverLink: !0 }, getInitialData: function(t, e) { return Xs(this.getSource(), this) } }), _s({
17032        type: "custom",
17033        _data: null,
17034        render: function(t, e, i) {
17035            var n = this._data,
17036                o = t.getData(),
17037                a = this.group,
17038                r = mm(t, o, e, i);
17039            this.group.removeAll(), o.diff(n).add(function(e) { ym(null, e, r(e), t, a, o) }).update(function(e, i) { ym(n.getItemGraphicEl(i), e, r(e), t, a, o) }).remove(function(t) {
17040                var e = n.getItemGraphicEl(t);
17041                e && a.remove(e)
17042            }).execute(), this._data = o
17043        },
17044        incrementalPrepareRender: function(t, e, i) { this.group.removeAll(), this._data = null },
17045        incrementalRender: function(t, e, i, n) { for (var o = e.getData(), a = mm(e, o, i, n), r = t.start; r < t.end; r++) ym(null, r, a(r), e, this.group, o).traverse(function(t) { t.isGroup || (t.incremental = !0, t.useHoverLayer = !0) }) },
17046        dispose: B
17047    }), us(function(t) {
17048        var e = t.graphic;
17049        y(e) ? e[0] && e[0].elements ? t.graphic = [t.graphic[0]] : t.graphic = [{ elements: e }] : e && !e.elements && (t.graphic = [{ elements: [e] }])
17050    });
17051    var Tk = vs({
17052        type: "graphic",
17053        defaultOption: { elements: [], parentId: null },
17054        _elOptionsToUpdate: null,
17055        mergeOption: function(t) {
17056            var e = this.option.elements;
17057            this.option.elements = null, Tk.superApply(this, "mergeOption", arguments), this.option.elements = e
17058        },
17059        optionUpdated: function(t, e) {
17060            var i = this.option,
17061                n = (e ? i : t).elements,
17062                o = i.elements = e ? [] : i.elements,
17063                a = [];
17064            this._flatten(n, a);
17065            var r = Di(o, a);
17066            Ai(r);
17067            var s = this._elOptionsToUpdate = [];
17068            d(r, function(t, e) {
17069                var i = t.option;
17070                i && (s.push(i), Am(t, i), Cm(o, e, i), Lm(o[e], i))
17071            }, this);
17072            for (var l = o.length - 1; l >= 0; l--) null == o[l] ? o.splice(l, 1) : delete o[l].$action
17073        },
17074        _flatten: function(t, e, i) { d(t, function(t) { if (t) { i && (t.parentOption = i), e.push(t); var n = t.children; "group" === t.type && n && this._flatten(n, e, t), delete t.children } }, this) },
17075        useElOptionsToUpdate: function() { var t = this._elOptionsToUpdate; return this._elOptionsToUpdate = null, t }
17076    });
17077    ys({
17078        type: "graphic",
17079        init: function(t, e) { this._elMap = R(), this._lastGraphicModel },
17080        render: function(t, e, i) { t !== this._lastGraphicModel && this._clear(), this._lastGraphicModel = t, this._updateElements(t, i), this._relocate(t, i) },
17081        _updateElements: function(t, e) {
17082            var i = t.useElOptionsToUpdate();
17083            if (i) {
17084                var n = this._elMap,
17085                    o = this.group;
17086                d(i, function(t) {
17087                    var e = t.$action,
17088                        i = t.id,
17089                        a = n.get(i),
17090                        r = t.parentId,
17091                        s = null != r ? n.get(r) : o;
17092                    if ("text" === t.type) {
17093                        var l = t.style;
17094                        t.hv && t.hv[1] && (l.textVerticalAlign = l.textBaseline = null), !l.hasOwnProperty("textFill") && l.fill && (l.textFill = l.fill), !l.hasOwnProperty("textStroke") && l.stroke && (l.textStroke = l.stroke)
17095                    }
17096                    var u = Tm(t);
17097                    e && "merge" !== e ? "replace" === e ? (Im(a, n), Mm(i, s, u, n)) : "remove" === e && Im(a, n) : a ? a.attr(u) : Mm(i, s, u, n);
17098                    var h = n.get(i);
17099                    h && (h.__ecGraphicWidth = t.width, h.__ecGraphicHeight = t.height)
17100                })
17101            }
17102        },
17103        _relocate: function(t, e) {
17104            for (var i = t.option.elements, n = this.group, o = this._elMap, a = i.length - 1; a >= 0; a--) {
17105                var r = i[a],
17106                    s = o.get(r.id);
17107                if (s) {
17108                    var l = s.parent;
17109                    ta(s, r, l === n ? { width: e.getWidth(), height: e.getHeight() } : { width: l.__ecGraphicWidth || 0, height: l.__ecGraphicHeight || 0 }, null, { hv: r.hv, boundingMode: r.bounding })
17110                }
17111            }
17112        },
17113        _clear: function() {
17114            var t = this._elMap;
17115            t.each(function(e) { Im(e, t) }), this._elMap = R()
17116        },
17117        dispose: function() { this._clear() }
17118    });
17119    var Dk = vs({
17120        type: "legend.plain",
17121        dependencies: ["series"],
17122        layoutMode: { type: "box", ignoreSize: !0 },
17123        init: function(t, e, i) { this.mergeDefaultAndTheme(t, i), t.selected = t.selected || {} },
17124        mergeOption: function(t) { Dk.superCall(this, "mergeOption", t) },
17125        optionUpdated: function() { this._updateData(this.ecModel); var t = this._data; if (t[0] && "single" === this.get("selectedMode")) { for (var e = !1, i = 0; i < t.length; i++) { var n = t[i].get("name"); if (this.isSelected(n)) { this.select(n), e = !0; break } }!e && this.select(t[0].get("name")) } },
17126        _updateData: function(t) {
17127            var e = [],
17128                i = [];
17129            t.eachRawSeries(function(n) {
17130                var o = n.name;
17131                i.push(o);
17132                var a;
17133                if (n.legendDataProvider) {
17134                    var r = n.legendDataProvider(),
17135                        s = r.mapArray(r.getName);
17136                    t.isSeriesFiltered(n) || (i = i.concat(s)), s.length ? e = e.concat(s) : a = !0
17137                } else a = !0;
17138                a && Ci(n) && e.push(n.name)
17139            }), this._availableNames = i;
17140            var n = f(this.get("data") || e, function(t) { return "string" != typeof t && "number" != typeof t || (t = { name: t }), new wo(t, this, this.ecModel) }, this);
17141            this._data = n
17142        },
17143        getData: function() { return this._data },
17144        select: function(t) { var e = this.option.selected; "single" === this.get("selectedMode") && d(this._data, function(t) { e[t.get("name")] = !1 }), e[t] = !0 },
17145        unSelect: function(t) { "single" !== this.get("selectedMode") && (this.option.selected[t] = !1) },
17146        toggleSelected: function(t) {
17147            var e = this.option.selected;
17148            e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t)
17149        },
17150        isSelected: function(t) { var e = this.option.selected; return !(e.hasOwnProperty(t) && !e[t]) && l(this._availableNames, t) >= 0 },
17151        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", textStyle: { color: "#333" }, selectedMode: !0, tooltip: { show: !1 } }
17152    });
17153    cs("legendToggleSelect", "legendselectchanged", v(km, "toggleSelected")), cs("legendSelect", "legendselected", v(km, "select")), cs("legendUnSelect", "legendunselected", v(km, "unSelect"));
17154    var Ak = v,
17155        Ck = d,
17156        Lk = sw,
17157        kk = ys({
17158            type: "legend.plain",
17159            newlineDisabled: !1,
17160            init: function() { this.group.add(this._contentGroup = new Lk), this._backgroundEl },
17161            getContentGroup: function() { return this._contentGroup },
17162            render: function(t, e, i) {
17163                if (this.resetInner(), t.get("show", !0)) {
17164                    var n = t.get("align");
17165                    n && "auto" !== n || (n = "right" === t.get("left") && "vertical" === t.get("orient") ? "right" : "left"), this.renderInner(n, t, e, i);
17166                    var o = t.getBoxLayoutParams(),
17167                        a = { width: i.getWidth(), height: i.getHeight() },
17168                        s = t.get("padding"),
17169                        l = Qo(o, a, s),
17170                        u = this.layoutInner(t, n, l),
17171                        h = Qo(r({ width: u.width, height: u.height }, o), a, s);
17172                    this.group.attr("position", [h.x - u.x, h.y - u.y]), this.group.add(this._backgroundEl = Nm(u, t))
17173                }
17174            },
17175            resetInner: function() { this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl) },
17176            renderInner: function(t, e, i, n) {
17177                var o = this.getContentGroup(),
17178                    a = R(),
17179                    r = e.get("selectedMode"),
17180                    s = [];
17181                i.eachRawSeries(function(t) {!t.get("legendHoverLink") && s.push(t.id) }), Ck(e.getData(), function(l, u) {
17182                    var h = l.get("name");
17183                    if (this.newlineDisabled || "" !== h && "\n" !== h) {
17184                        var c = i.getSeriesByName(h)[0];
17185                        if (!a.get(h))
17186                            if (c) {
17187                                var d = c.getData(),
17188                                    f = d.getVisual("color");
17189                                "function" == typeof f && (f = f(c.getDataParams(0)));
17190                                var p = d.getVisual("legendSymbol") || "roundRect",
17191                                    g = d.getVisual("symbol");
17192                                this._createItem(h, u, l, e, p, g, t, f, r).on("click", Ak(Om, h, n)).on("mouseover", Ak(Em, c, null, n, s)).on("mouseout", Ak(Rm, c, null, n, s)), a.set(h, !0)
17193                            } else i.eachRawSeries(function(i) {
17194                                if (!a.get(h) && i.legendDataProvider) {
17195                                    var o = i.legendDataProvider(),
17196                                        c = o.indexOfName(h);
17197                                    if (c < 0) return;
17198                                    var d = o.getItemVisual(c, "color");
17199                                    this._createItem(h, u, l, e, "roundRect", null, t, d, r).on("click", Ak(Om, h, n)).on("mouseover", Ak(Em, i, h, n, s)).on("mouseout", Ak(Rm, i, h, n, s)), a.set(h, !0)
17200                                }
17201                            }, this)
17202                    } else o.add(new Lk({ newline: !0 }))
17203                }, this)
17204            },
17205            _createItem: function(t, e, i, n, o, r, s, l, u) {
17206                var h = n.get("itemWidth"),
17207                    c = n.get("itemHeight"),
17208                    d = n.get("inactiveColor"),
17209                    f = n.get("symbolKeepAspect"),
17210                    p = n.isSelected(t),
17211                    g = new Lk,
17212                    m = i.getModel("textStyle"),
17213                    v = i.get("icon"),
17214                    y = i.getModel("tooltip"),
17215                    x = y.parentModel;
17216                if (o = v || o, g.add(Tl(o, 0, 0, h, c, p ? l : d, null == f || f)), !v && r && (r !== o || "none" == r)) { var _ = .8 * c; "none" === r && (r = "circle"), g.add(Tl(r, (h - _) / 2, (c - _) / 2, _, _, p ? l : d, null == f || f)) }
17217                var w = "left" === s ? h + 5 : -5,
17218                    b = s,
17219                    S = n.get("formatter"),
17220                    M = t;
17221                "string" == typeof S && S ? M = S.replace("{name}", null != t ? t : "") : "function" == typeof S && (M = S(t)), g.add(new fS({ style: no({}, m, { text: M, x: w, y: c / 2, textFill: p ? m.getTextColor() : d, textAlign: b, textVerticalAlign: "middle" }) }));
17222                var I = new SS({ shape: g.getBoundingRect(), invisible: !0, tooltip: y.get("show") ? a({ content: t, formatter: x.get("formatter", !0) || function() { return t }, formatterParams: { componentType: "legend", legendIndex: n.componentIndex, name: t, $vars: ["name"] } }, y.option) : null });
17223                return g.add(I), g.eachChild(function(t) { t.silent = !0 }), I.silent = !u, this.getContentGroup().add(g), eo(g), g.__legendDataIndex = e, g
17224            },
17225            layoutInner: function(t, e, i) {
17226                var n = this.getContentGroup();
17227                sM(t.get("orient"), n, t.get("itemGap"), i.width, i.height);
17228                var o = n.getBoundingRect();
17229                return n.attr("position", [-o.x, -o.y]), this.group.getBoundingRect()
17230            }
17231        });
17232    hs(function(t) {
17233        var e = t.findComponents({ mainType: "legend" });
17234        e && e.length && t.filterSeries(function(t) {
17235            for (var i = 0; i < e.length; i++)
17236                if (!e[i].isSelected(t.name)) return !1;
17237            return !0
17238        })
17239    }), hM.registerSubTypeDefaulter("legend", function() { return "plain" });
17240    var Pk = Dk.extend({
17241            type: "legend.scroll",
17242            setScrollDataIndex: function(t) { this.option.scrollDataIndex = t },
17243            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 },
17244            init: function(t, e, i, n) {
17245                var o = na(t);
17246                Pk.superCall(this, "init", t, e, i, n), zm(this, t, o)
17247            },
17248            mergeOption: function(t, e) { Pk.superCall(this, "mergeOption", t, e), zm(this, this.option, t) },
17249            getOrient: function() { return "vertical" === this.get("orient") ? { index: 1, name: "vertical" } : { index: 0, name: "horizontal" } }
17250        }),
17251        Nk = sw,
17252        Ok = ["width", "height"],
17253        Ek = ["x", "y"],
17254        Rk = kk.extend({
17255            type: "legend.scroll",
17256            newlineDisabled: !0,
17257            init: function() { Rk.superCall(this, "init"), this._currentIndex = 0, this.group.add(this._containerGroup = new Nk), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new Nk), this._showController },
17258            resetInner: function() { Rk.superCall(this, "resetInner"), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null },
17259            renderInner: function(t, e, i, n) {
17260                function o(t, i) {
17261                    var o = t + "DataIndex",
17262                        l = _o(e.get("pageIcons", !0)[e.getOrient().name][i], { onclick: m(a._pageGo, a, o, e, n) }, { x: -s[0] / 2, y: -s[1] / 2, width: s[0], height: s[1] });
17263                    l.name = t, r.add(l)
17264                }
17265                var a = this;
17266                Rk.superCall(this, "renderInner", t, e, i, n);
17267                var r = this._controllerGroup,
17268                    s = e.get("pageIconSize", !0);
17269                y(s) || (s = [s, s]), o("pagePrev", 0);
17270                var l = e.getModel("pageTextStyle");
17271                r.add(new fS({ name: "pageText", style: { textFill: l.getTextColor(), font: l.getFont(), textVerticalAlign: "middle", textAlign: "center" }, silent: !0 })), o("pageNext", 1)
17272            },
17273            layoutInner: function(t, e, i) {
17274                var n = this.getContentGroup(),
17275                    o = this._containerGroup,
17276                    a = this._controllerGroup,
17277                    r = t.getOrient().index,
17278                    s = Ok[r],
17279                    l = Ok[1 - r],
17280                    u = Ek[1 - r];
17281                sM(t.get("orient"), n, t.get("itemGap"), r ? i.width : null, r ? null : i.height), sM("horizontal", a, t.get("pageButtonItemGap", !0));
17282                var h = n.getBoundingRect(),
17283                    c = a.getBoundingRect(),
17284                    d = this._showController = h[s] > i[s],
17285                    f = [-h.x, -h.y];
17286                f[r] = n.position[r];
17287                var p = [0, 0],
17288                    g = [-c.x, -c.y],
17289                    m = D(t.get("pageButtonGap", !0), t.get("itemGap", !0));
17290                d && ("end" === t.get("pageButtonPosition", !0) ? g[r] += i[s] - c[s] : p[r] += c[s] + m), g[1 - r] += h[l] / 2 - c[l] / 2, n.attr("position", f), o.attr("position", p), a.attr("position", g);
17291                var v = this.group.getBoundingRect();
17292                if ((v = { x: 0, y: 0 })[s] = d ? i[s] : h[s], v[l] = Math.max(h[l], c[l]), v[u] = Math.min(0, c[u] + g[1 - r]), o.__rectSize = i[s], d) {
17293                    var y = { x: 0, y: 0 };
17294                    y[s] = Math.max(i[s] - c[s] - m, 0), y[l] = v[l], o.setClipPath(new SS({ shape: y })), o.__rectSize = y[s]
17295                } else a.eachChild(function(t) { t.attr({ invisible: !0, silent: !0 }) });
17296                var x = this._getPageInfo(t);
17297                return null != x.pageIndex && fo(n, { position: x.contentPosition }, !!d && t), this._updatePageInfoView(t, x), v
17298            },
17299            _pageGo: function(t, e, i) {
17300                var n = this._getPageInfo(e)[t];
17301                null != n && i.dispatchAction({ type: "legendScroll", scrollDataIndex: n, legendId: e.id })
17302            },
17303            _updatePageInfoView: function(t, e) {
17304                var i = this._controllerGroup;
17305                d(["pagePrev", "pageNext"], function(n) {
17306                    var o = null != e[n + "DataIndex"],
17307                        a = i.childOfName(n);
17308                    a && (a.setStyle("fill", o ? t.get("pageIconColor", !0) : t.get("pageIconInactiveColor", !0)), a.cursor = o ? "pointer" : "default")
17309                });
17310                var n = i.childOfName("pageText"),
17311                    o = t.get("pageFormatter"),
17312                    a = e.pageIndex,
17313                    r = null != a ? a + 1 : 0,
17314                    s = e.pageCount;
17315                n && o && n.setStyle("text", _(o) ? o.replace("{current}", r).replace("{total}", s) : o({ current: r, total: s }))
17316            },
17317            _getPageInfo: function(t) {
17318                function e(t) { var e = t.getBoundingRect().clone(); return e[f] += t.position[h], e }
17319                var i, n, o, a, r = t.get("scrollDataIndex", !0),
17320                    s = this.getContentGroup(),
17321                    l = s.getBoundingRect(),
17322                    u = this._containerGroup.__rectSize,
17323                    h = t.getOrient().index,
17324                    c = Ok[h],
17325                    d = Ok[1 - h],
17326                    f = Ek[h],
17327                    p = s.position.slice();
17328                this._showController ? s.eachChild(function(t) { t.__legendDataIndex === r && (a = t) }) : a = s.childAt(0);
17329                var g = u ? Math.ceil(l[c] / u) : 0;
17330                if (a) {
17331                    var m = a.getBoundingRect(),
17332                        v = a.position[h] + m[f];
17333                    p[h] = -v - l[f], i = Math.floor(g * (v + m[f] + u / 2) / l[c]), i = l[c] && g ? Math.max(0, Math.min(g - 1, i)) : -1;
17334                    var y = { x: 0, y: 0 };
17335                    y[c] = u, y[d] = l[d], y[f] = -p[h] - l[f];
17336                    var x, _ = s.children();
17337                    if (s.eachChild(function(t, i) {
17338                            var n = e(t);
17339                            n.intersect(y) && (null == x && (x = i), o = t.__legendDataIndex), i === _.length - 1 && n[f] + n[c] <= y[f] + y[c] && (o = null)
17340                        }), null != x) {
17341                        var w = e(_[x]);
17342                        if (y[f] = w[f] + w[c] - y[c], x <= 0 && w[f] >= y[f]) n = null;
17343                        else {
17344                            for (; x > 0 && e(_[x - 1]).intersect(y);) x--;
17345                            n = _[x].__legendDataIndex
17346                        }
17347                    }
17348                }
17349                return { contentPosition: p, pageIndex: i, pageCount: g, pagePrevDataIndex: n, pageNextDataIndex: o }
17350            }
17351        });
17352    cs("legendScroll", "legendscroll", function(t, e) {
17353        var i = t.scrollDataIndex;
17354        null != i && e.eachComponent({ mainType: "legend", subType: "scroll", query: t }, function(t) { t.setScrollDataIndex(i) })
17355    }), vs({ type: "tooltip", dependencies: ["axisPointer"], defaultOption: { zlevel: 0, z: 8, show: !0, showContent: !0, trigger: "item", triggerOn: "mousemove|click", alwaysShowContent: !1, displayMode: "single", 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 } } });
17356    var zk = d,
17357        Bk = Ho,
17358        Vk = ["", "-webkit-", "-moz-", "-o-"];
17359    Wm.prototype = {
17360        constructor: Wm,
17361        _enterable: !0,
17362        update: function() {
17363            var t = this._container,
17364                e = t.currentStyle || document.defaultView.getComputedStyle(t),
17365                i = t.style;
17366            "absolute" !== i.position && "absolute" !== e.position && (i.position = "relative")
17367        },
17368        show: function(t) {
17369            clearTimeout(this._hideTimeout);
17370            var e = this.el;
17371            e.style.cssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + Gm(t) + ";left:" + this._x + "px;top:" + this._y + "px;" + (t.get("extraCssText") || ""), e.style.display = e.innerHTML ? "block" : "none", this._show = !0
17372        },
17373        setContent: function(t) { this.el.innerHTML = null == t ? "" : t },
17374        setEnterable: function(t) { this._enterable = t },
17375        getSize: function() { var t = this.el; return [t.clientWidth, t.clientHeight] },
17376        moveTo: function(t, e) {
17377            var i, n = this._zr;
17378            n && n.painter && (i = n.painter.getViewportRootOffset()) && (t += i.offsetLeft, e += i.offsetTop);
17379            var o = this.el.style;
17380            o.left = t + "px", o.top = e + "px", this._x = t, this._y = e
17381        },
17382        hide: function() { this.el.style.display = "none", this._show = !1 },
17383        hideLater: function(t) {!this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(m(this.hide, this), t)) : this.hide()) },
17384        isShow: function() { return this._show }
17385    };
17386    var Gk = m,
17387        Wk = d,
17388        Fk = Do,
17389        Hk = new SS({ shape: { x: -1, y: -1, width: 2, height: 2 } });
17390    ys({
17391        type: "tooltip",
17392        init: function(t, e) {
17393            if (!a_.node) {
17394                var i = new Wm(e.getDom(), e);
17395                this._tooltipContent = i
17396            }
17397        },
17398        render: function(t, e, i) {
17399            if (!a_.node && !a_.wxa) {
17400                this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = i, this._lastDataByCoordSys = null, this._alwaysShowContent = t.get("alwaysShowContent");
17401                var n = this._tooltipContent;
17402                n.update(), n.setEnterable(t.get("enterable")), this._initGlobalListener(), this._keepShow()
17403            }
17404        },
17405        _initGlobalListener: function() {
17406            var t = this._tooltipModel.get("triggerOn");
17407            Dg("itemTooltip", this._api, Gk(function(e, i, n) { "none" !== t && (t.indexOf(e) >= 0 ? this._tryShow(i, n) : "leave" === e && this._hide(n)) }, this))
17408        },
17409        _keepShow: function() {
17410            var t = this._tooltipModel,
17411                e = this._ecModel,
17412                i = this._api;
17413            if (null != this._lastX && null != this._lastY && "none" !== t.get("triggerOn")) {
17414                var n = this;
17415                clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function() { n.manuallyShowTip(t, e, i, { x: n._lastX, y: n._lastY }) })
17416            }
17417        },
17418        manuallyShowTip: function(t, e, i, n) {
17419            if (n.from !== this.uid && !a_.node) {
17420                var o = Hm(n, i);
17421                this._ticket = "";
17422                var a = n.dataByCoordSys;
17423                if (n.tooltip && null != n.x && null != n.y) {
17424                    var r = Hk;
17425                    r.position = [n.x, n.y], r.update(), r.tooltip = n.tooltip, this._tryShow({ offsetX: n.x, offsetY: n.y, target: r }, o)
17426                } else if (a) this._tryShow({ offsetX: n.x, offsetY: n.y, position: n.position, event: {}, dataByCoordSys: n.dataByCoordSys, tooltipOption: n.tooltipOption }, o);
17427                else if (null != n.seriesIndex) {
17428                    if (this._manuallyAxisShowTip(t, e, i, n)) return;
17429                    var s = KL(n, e),
17430                        l = s.point[0],
17431                        u = s.point[1];
17432                    null != l && null != u && this._tryShow({ offsetX: l, offsetY: u, position: n.position, target: s.el, event: {} }, o)
17433                } else null != n.x && null != n.y && (i.dispatchAction({ type: "updateAxisPointer", x: n.x, y: n.y }), this._tryShow({ offsetX: n.x, offsetY: n.y, position: n.position, target: i.getZr().findHover(n.x, n.y).target, event: {} }, o))
17434            }
17435        },
17436        manuallyHideTip: function(t, e, i, n) { var o = this._tooltipContent;!this._alwaysShowContent && this._tooltipModel && o.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = null, n.from !== this.uid && this._hide(Hm(n, i)) },
17437        _manuallyAxisShowTip: function(t, e, i, n) {
17438            var o = n.seriesIndex,
17439                a = n.dataIndex,
17440                r = e.getComponent("axisPointer").coordSysAxesInfo;
17441            if (null != o && null != a && null != r) { var s = e.getSeriesByIndex(o); if (s && "axis" === (t = Fm([s.getData().getItemModel(a), s, (s.coordinateSystem || {}).model, t])).get("trigger")) return i.dispatchAction({ type: "updateAxisPointer", seriesIndex: o, dataIndex: a, position: n.position }), !0 }
17442        },
17443        _tryShow: function(t, e) {
17444            var i = t.target;
17445            if (this._tooltipModel) {
17446                this._lastX = t.offsetX, this._lastY = t.offsetY;
17447                var n = t.dataByCoordSys;
17448                n && n.length ? this._showAxisTooltip(n, t) : i && null != i.dataIndex ? (this._lastDataByCoordSys = null, this._showSeriesItemTooltip(t, i, e)) : i && i.tooltip ? (this._lastDataByCoordSys = null, this._showComponentItemTooltip(t, i, e)) : (this._lastDataByCoordSys = null, this._hide(e))
17449            }
17450        },
17451        _showOrMove: function(t, e) {
17452            var i = t.get("showDelay");
17453            e = m(e, this), clearTimeout(this._showTimout), i > 0 ? this._showTimout = setTimeout(e, i) : e()
17454        },
17455        _showAxisTooltip: function(t, e) {
17456            var i = this._ecModel,
17457                n = this._tooltipModel,
17458                o = [e.offsetX, e.offsetY],
17459                a = [],
17460                r = [],
17461                s = Fm([e.tooltipOption, n]);
17462            Wk(t, function(t) {
17463                Wk(t.dataByAxis, function(t) {
17464                    var e = i.getComponent(t.axisDim + "Axis", t.axisIndex),
17465                        n = t.value,
17466                        o = [];
17467                    if (e && null != n) {
17468                        var s = Hg(n, e.axis, i, t.seriesDataIndices, t.valueLabelOpt);
17469                        d(t.seriesDataIndices, function(a) {
17470                            var l = i.getSeriesByIndex(a.seriesIndex),
17471                                u = a.dataIndexInside,
17472                                h = l && l.getDataParams(u);
17473                            h.axisDim = t.axisDim, h.axisIndex = t.axisIndex, h.axisType = t.axisType, h.axisId = t.axisId, h.axisValue = bl(e.axis, n), h.axisValueLabel = s, h && (r.push(h), o.push(l.formatTooltip(u, !0)))
17474                        });
17475                        var l = s;
17476                        a.push((l ? Zo(l) + "<br />" : "") + o.join("<br />"))
17477                    }
17478                })
17479            }, this), a.reverse(), a = a.join("<br /><br />");
17480            var l = e.position;
17481            this._showOrMove(s, function() { this._updateContentNotChangedOnAxis(t) ? this._updatePosition(s, l, o[0], o[1], this._tooltipContent, r) : this._showTooltipContent(s, a, r, Math.random(), o[0], o[1], l) })
17482        },
17483        _showSeriesItemTooltip: function(t, e, i) {
17484            var n = this._ecModel,
17485                o = e.seriesIndex,
17486                a = n.getSeriesByIndex(o),
17487                r = e.dataModel || a,
17488                s = e.dataIndex,
17489                l = e.dataType,
17490                u = r.getData(),
17491                h = Fm([u.getItemModel(s), r, a && (a.coordinateSystem || {}).model, this._tooltipModel]),
17492                c = h.get("trigger");
17493            if (null == c || "item" === c) {
17494                var d = r.getDataParams(s, l),
17495                    f = r.formatTooltip(s, !1, l),
17496                    p = "item_" + r.name + "_" + s;
17497                this._showOrMove(h, function() { this._showTooltipContent(h, f, d, p, t.offsetX, t.offsetY, t.position, t.target) }), i({ type: "showTip", dataIndexInside: s, dataIndex: u.getRawIndex(s), seriesIndex: o, from: this.uid })
17498            }
17499        },
17500        _showComponentItemTooltip: function(t, e, i) {
17501            var n = e.tooltip;
17502            if ("string" == typeof n) {
17503                var o = n;
17504                n = { content: o, formatter: o }
17505            }
17506            var a = new wo(n, this._tooltipModel, this._ecModel),
17507                r = a.get("content"),
17508                s = Math.random();
17509            this._showOrMove(a, function() { this._showTooltipContent(a, r, a.get("formatterParams") || {}, s, t.offsetX, t.offsetY, t.position, e) }), i({ type: "showTip", from: this.uid })
17510        },
17511        _showTooltipContent: function(t, e, i, n, o, a, r, s) {
17512            if (this._ticket = "", t.get("showContent") && t.get("show")) {
17513                var l = this._tooltipContent,
17514                    u = t.get("formatter");
17515                r = r || t.get("position");
17516                var h = e;
17517                if (u && "string" == typeof u) h = Uo(u, i, !0);
17518                else if ("function" == typeof u) {
17519                    var c = Gk(function(e, n) { e === this._ticket && (l.setContent(n), this._updatePosition(t, r, o, a, l, i, s)) }, this);
17520                    this._ticket = n, h = u(i, n, c)
17521                }
17522                l.setContent(h), l.show(t), this._updatePosition(t, r, o, a, l, i, s)
17523            }
17524        },
17525        _updatePosition: function(t, e, i, n, o, a, r) {
17526            var s = this._api.getWidth(),
17527                l = this._api.getHeight();
17528            e = e || t.get("position");
17529            var u = o.getSize(),
17530                h = t.get("align"),
17531                c = t.get("verticalAlign"),
17532                d = r && r.getBoundingRect().clone();
17533            if (r && d.applyTransform(r.transform), "function" == typeof e && (e = e([i, n], a, o.el, d, { viewSize: [s, l], contentSize: u.slice() })), y(e)) i = Fk(e[0], s), n = Fk(e[1], l);
17534            else if (w(e)) {
17535                e.width = u[0], e.height = u[1];
17536                var f = Qo(e, { width: s, height: l });
17537                i = f.x, n = f.y, h = null, c = null
17538            } else "string" == typeof e && r ? (i = (p = jm(e, d, u))[0], n = p[1]) : (i = (p = Zm(i, n, o.el, s, l, h ? null : 20, c ? null : 20))[0], n = p[1]);
17539            if (h && (i -= Ym(h) ? u[0] / 2 : "right" === h ? u[0] : 0), c && (n -= Ym(c) ? u[1] / 2 : "bottom" === c ? u[1] : 0), t.get("confine")) {
17540                var p = Um(i, n, o.el, s, l);
17541                i = p[0], n = p[1]
17542            }
17543            o.moveTo(i, n)
17544        },
17545        _updateContentNotChangedOnAxis: function(t) {
17546            var e = this._lastDataByCoordSys,
17547                i = !!e && e.length === t.length;
17548            return i && Wk(e, function(e, n) {
17549                var o = e.dataByAxis || {},
17550                    a = (t[n] || {}).dataByAxis || [];
17551                (i &= o.length === a.length) && Wk(o, function(t, e) {
17552                    var n = a[e] || {},
17553                        o = t.seriesDataIndices || [],
17554                        r = n.seriesDataIndices || [];
17555                    (i &= t.value === n.value && t.axisType === n.axisType && t.axisId === n.axisId && o.length === r.length) && Wk(o, function(t, e) {
17556                        var n = r[e];
17557                        i &= t.seriesIndex === n.seriesIndex && t.dataIndex === n.dataIndex
17558                    })
17559                })
17560            }), this._lastDataByCoordSys = t, !!i
17561        },
17562        _hide: function(t) { this._lastDataByCoordSys = null, t({ type: "hideTip", from: this.uid }) },
17563        dispose: function(t, e) { a_.node || a_.wxa || (this._tooltipContent.hide(), Ng("itemTooltip", e)) }
17564    }), cs({ type: "showTip", event: "showTip", update: "tooltip:manuallyShowTip" }, function() {}), cs({ type: "hideTip", event: "hideTip", update: "tooltip:manuallyHideTip" }, function() {}), Jm.prototype = { constructor: Jm, pointToData: function(t, e) { return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1] }, dataToRadius: qT.prototype.dataToCoord, radiusToData: qT.prototype.coordToData }, u(Jm, qT), Qm.prototype = { constructor: Qm, pointToData: function(t, e) { return this.polar.pointToData(t, e)["radius" === this.dim ? 0 : 1] }, dataToAngle: qT.prototype.dataToCoord, angleToData: qT.prototype.coordToData }, u(Qm, qT);
17565    var Zk = function(t) { this.name = t || "", this.cx = 0, this.cy = 0, this._radiusAxis = new Jm, this._angleAxis = new Qm, this._radiusAxis.polar = this._angleAxis.polar = this };
17566    Zk.prototype = {
17567        type: "polar",
17568        axisPointerEnabled: !0,
17569        constructor: Zk,
17570        dimensions: ["radius", "angle"],
17571        model: null,
17572        containPoint: function(t) { var e = this.pointToCoord(t); return this._radiusAxis.contain(e[0]) && this._angleAxis.contain(e[1]) },
17573        containData: function(t) { return this._radiusAxis.containData(t[0]) && this._angleAxis.containData(t[1]) },
17574        getAxis: function(t) { return this["_" + t + "Axis"] },
17575        getAxes: function() { return [this._radiusAxis, this._angleAxis] },
17576        getAxesByScale: function(t) {
17577            var e = [],
17578                i = this._angleAxis,
17579                n = this._radiusAxis;
17580            return i.scale.type === t && e.push(i), n.scale.type === t && e.push(n), e
17581        },
17582        getAngleAxis: function() { return this._angleAxis },
17583        getRadiusAxis: function() { return this._radiusAxis },
17584        getOtherAxis: function(t) { var e = this._angleAxis; return t === e ? this._radiusAxis : e },
17585        getBaseAxis: function() { return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis() },
17586        getTooltipAxes: function(t) { var e = null != t && "auto" !== t ? this.getAxis(t) : this.getBaseAxis(); return { baseAxes: [e], otherAxes: [this.getOtherAxis(e)] } },
17587        dataToPoint: function(t, e) { return this.coordToPoint([this._radiusAxis.dataToRadius(t[0], e), this._angleAxis.dataToAngle(t[1], e)]) },
17588        pointToData: function(t, e) { var i = this.pointToCoord(t); return [this._radiusAxis.radiusToData(i[0], e), this._angleAxis.angleToData(i[1], e)] },
17589        pointToCoord: function(t) {
17590            var e = t[0] - this.cx,
17591                i = t[1] - this.cy,
17592                n = this.getAngleAxis(),
17593                o = n.getExtent(),
17594                a = Math.min(o[0], o[1]),
17595                r = Math.max(o[0], o[1]);
17596            n.inverse ? a = r - 360 : r = a + 360;
17597            var s = Math.sqrt(e * e + i * i);
17598            e /= s, i /= s;
17599            for (var l = Math.atan2(-i, e) / Math.PI * 180, u = l < a ? 1 : -1; l < a || l > r;) l += 360 * u;
17600            return [s, l]
17601        },
17602        coordToPoint: function(t) {
17603            var e = t[0],
17604                i = t[1] / 180 * Math.PI;
17605            return [Math.cos(i) * e + this.cx, -Math.sin(i) * e + this.cy]
17606        }
17607    };
17608    var Uk = hM.extend({ type: "polarAxis", axis: null, getCoordSysModel: function() { return this.ecModel.queryComponents({ mainType: "polar", index: this.option.polarIndex, id: this.option.polarId })[0] } });
17609    n(Uk.prototype, ET);
17610    var Xk = { angle: { startAngle: 90, clockwise: !0, splitNumber: 12, axisLabel: { rotate: !1 } }, radius: { splitNumber: 5 } };
17611    MD("angle", Uk, tv, Xk.angle), MD("radius", Uk, tv, Xk.radius), vs({ type: "polar", dependencies: ["polarAxis", "angleAxis"], coordinateSystem: null, findAxisModel: function(t) { var e; return this.ecModel.eachComponent(t, function(t) { t.getCoordSysModel() === this && (e = t) }, this), e }, defaultOption: { zlevel: 0, z: 0, center: ["50%", "50%"], radius: "80%" } });
17612    var jk = {
17613        dimensions: Zk.prototype.dimensions,
17614        create: function(t, e) {
17615            var i = [];
17616            return t.eachComponent("polar", function(t, n) {
17617                var o = new Zk(n);
17618                o.update = iv;
17619                var a = o.getRadiusAxis(),
17620                    r = o.getAngleAxis(),
17621                    s = t.findAxisModel("radiusAxis"),
17622                    l = t.findAxisModel("angleAxis");
17623                nv(a, s), nv(r, l), ev(o, t, e), i.push(o), t.coordinateSystem = o, o.model = t
17624            }), t.eachSeries(function(e) {
17625                if ("polar" === e.get("coordinateSystem")) {
17626                    var i = t.queryComponents({ mainType: "polar", index: e.get("polarIndex"), id: e.get("polarId") })[0];
17627                    e.coordinateSystem = i.coordinateSystem
17628                }
17629            }), i
17630        }
17631    };
17632    Ca.register("polar", jk);
17633    var Yk = ["axisLine", "axisLabel", "axisTick", "splitLine", "splitArea"];
17634    ED.extend({
17635        type: "angleAxis",
17636        axisPointerClass: "PolarAxisPointer",
17637        render: function(t, e) {
17638            if (this.group.removeAll(), t.get("show")) {
17639                var n = t.axis,
17640                    o = n.polar,
17641                    a = o.getRadiusAxis().getExtent(),
17642                    r = n.getTicksCoords(),
17643                    s = f(n.getViewLabels(), function(t) { return (t = i(t)).coord = n.dataToCoord(t.tickValue), t });
17644                rv(s), rv(r), d(Yk, function(e) {!t.get(e + ".show") || n.scale.isBlank() && "axisLine" !== e || this["_" + e](t, o, r, a, s) }, this)
17645            }
17646        },
17647        _axisLine: function(t, e, i, n) {
17648            var o = t.getModel("axisLine.lineStyle"),
17649                a = new pS({ shape: { cx: e.cx, cy: e.cy, r: n[av(e)] }, style: o.getLineStyle(), z2: 1, silent: !0 });
17650            a.style.fill = null, this.group.add(a)
17651        },
17652        _axisTick: function(t, e, i, n) {
17653            var o = t.getModel("axisTick"),
17654                a = (o.get("inside") ? -1 : 1) * o.get("length"),
17655                s = n[av(e)],
17656                l = f(i, function(t) { return new MS({ shape: ov(e, [s, s + a], t.coord) }) });
17657            this.group.add(zS(l, { style: r(o.getModel("lineStyle").getLineStyle(), { stroke: t.get("axisLine.lineStyle.color") }) }))
17658        },
17659        _axisLabel: function(t, e, i, n, o) {
17660            var a = t.getCategories(!0),
17661                r = t.getModel("axisLabel"),
17662                s = r.get("margin");
17663            d(o, function(i, o) {
17664                var l = r,
17665                    u = i.tickValue,
17666                    h = n[av(e)],
17667                    c = e.coordToPoint([h + s, i.coord]),
17668                    d = e.cx,
17669                    f = e.cy,
17670                    p = Math.abs(c[0] - d) / h < .3 ? "center" : c[0] > d ? "left" : "right",
17671                    g = Math.abs(c[1] - f) / h < .3 ? "middle" : c[1] > f ? "top" : "bottom";
17672                a && a[u] && a[u].textStyle && (l = new wo(a[u].textStyle, r, r.ecModel));
17673                var m = new fS({ silent: !0 });
17674                this.group.add(m), no(m.style, l, { x: c[0], y: c[1], textFill: l.getTextColor() || t.get("axisLine.lineStyle.color"), text: i.formattedLabel, textAlign: p, textVerticalAlign: g })
17675            }, this)
17676        },
17677        _splitLine: function(t, e, i, n) {
17678            var o = t.getModel("splitLine").getModel("lineStyle"),
17679                a = o.get("color"),
17680                s = 0;
17681            a = a instanceof Array ? a : [a];
17682            for (var l = [], u = 0; u < i.length; u++) {
17683                var h = s++ % a.length;
17684                l[h] = l[h] || [], l[h].push(new MS({ shape: ov(e, n, i[u].coord) }))
17685            }
17686            for (u = 0; u < l.length; u++) this.group.add(zS(l[u], { style: r({ stroke: a[u % a.length] }, o.getLineStyle()), silent: !0, z: t.get("z") }))
17687        },
17688        _splitArea: function(t, e, i, n) {
17689            if (i.length) {
17690                var o = t.getModel("splitArea").getModel("areaStyle"),
17691                    a = o.get("color"),
17692                    s = 0;
17693                a = a instanceof Array ? a : [a];
17694                for (var l = [], u = Math.PI / 180, h = -i[0].coord * u, c = Math.min(n[0], n[1]), d = Math.max(n[0], n[1]), f = t.get("clockwise"), p = 1; p < i.length; p++) {
17695                    var g = s++ % a.length;
17696                    l[g] = l[g] || [], l[g].push(new vS({ shape: { cx: e.cx, cy: e.cy, r0: c, r: d, startAngle: h, endAngle: -i[p].coord * u, clockwise: f }, silent: !0 })), h = -i[p].coord * u
17697                }
17698                for (p = 0; p < l.length; p++) this.group.add(zS(l[p], { style: r({ fill: a[p % a.length] }, o.getAreaStyle()), silent: !0 }))
17699            }
17700        }
17701    });
17702    var qk = ["axisLine", "axisTickLabel", "axisName"],
17703        Kk = ["splitLine", "splitArea"];
17704    ED.extend({
17705        type: "radiusAxis",
17706        axisPointerClass: "PolarAxisPointer",
17707        render: function(t, e) {
17708            if (this.group.removeAll(), t.get("show")) {
17709                var i = t.axis,
17710                    n = i.polar,
17711                    o = n.getAngleAxis(),
17712                    a = i.getTicksCoords(),
17713                    r = o.getExtent()[0],
17714                    s = i.getExtent(),
17715                    l = sv(n, t, r),
17716                    u = new LD(t, l);
17717                d(qk, u.add, u), this.group.add(u.getGroup()), d(Kk, function(e) { t.get(e + ".show") && !i.scale.isBlank() && this["_" + e](t, n, r, s, a) }, this)
17718            }
17719        },
17720        _splitLine: function(t, e, i, n, o) {
17721            var a = t.getModel("splitLine").getModel("lineStyle"),
17722                s = a.get("color"),
17723                l = 0;
17724            s = s instanceof Array ? s : [s];
17725            for (var u = [], h = 0; h < o.length; h++) {
17726                var c = l++ % s.length;
17727                u[c] = u[c] || [], u[c].push(new pS({ shape: { cx: e.cx, cy: e.cy, r: o[h].coord }, silent: !0 }))
17728            }
17729            for (h = 0; h < u.length; h++) this.group.add(zS(u[h], { style: r({ stroke: s[h % s.length], fill: null }, a.getLineStyle()), silent: !0 }))
17730        },
17731        _splitArea: function(t, e, i, n, o) {
17732            if (o.length) {
17733                var a = t.getModel("splitArea").getModel("areaStyle"),
17734                    s = a.get("color"),
17735                    l = 0;
17736                s = s instanceof Array ? s : [s];
17737                for (var u = [], h = o[0].coord, c = 1; c < o.length; c++) {
17738                    var d = l++ % s.length;
17739                    u[d] = u[d] || [], u[d].push(new vS({ shape: { cx: e.cx, cy: e.cy, r0: h, r: o[c].coord, startAngle: 0, endAngle: 2 * Math.PI }, silent: !0 })), h = o[c].coord
17740                }
17741                for (c = 0; c < u.length; c++) this.group.add(zS(u[c], { style: r({ fill: s[c % s.length] }, a.getAreaStyle()), silent: !0 }))
17742            }
17743        }
17744    });
17745    var $k = Og.extend({
17746            makeElOption: function(t, e, i, n, o) {
17747                var a = i.axis;
17748                "angle" === a.dim && (this.animationThreshold = Math.PI / 18);
17749                var r, s = a.polar,
17750                    l = s.getOtherAxis(a).getExtent();
17751                r = a["dataTo" + Ko(a.dim)](e);
17752                var u = n.get("type");
17753                if (u && "none" !== u) {
17754                    var h = Gg(n),
17755                        c = Jk[u](a, s, r, l, h);
17756                    c.style = h, t.graphicKey = c.type, t.pointer = c
17757                }
17758                Wg(t, i, n, o, lv(e, i, 0, s, n.get("label.margin")))
17759            }
17760        }),
17761        Jk = {
17762            line: function(t, e, i, n, o) { return "angle" === t.dim ? { type: "Line", shape: Xg(e.coordToPoint([n[0], i]), e.coordToPoint([n[1], i])) } : { type: "Circle", shape: { cx: e.cx, cy: e.cy, r: i } } },
17763            shadow: function(t, e, i, n, o) {
17764                var a = Math.max(1, t.getBandWidth()),
17765                    r = Math.PI / 180;
17766                return "angle" === t.dim ? { type: "Sector", shape: Yg(e.cx, e.cy, n[0], n[1], (-i - a / 2) * r, (a / 2 - i) * r) } : { type: "Sector", shape: Yg(e.cx, e.cy, i - a / 2, i + a / 2, 0, 2 * Math.PI) }
17767            }
17768        };
17769    ED.registerAxisPointerClass("PolarAxisPointer", $k), fs(v(function(t, e, i) {
17770        var n = i.getWidth(),
17771            o = i.getHeight(),
17772            a = {},
17773            r = $m(g(e.getSeriesByType(t), function(t) { return !e.isSeriesFiltered(t) && t.coordinateSystem && "polar" === t.coordinateSystem.type }));
17774        e.eachSeriesByType(t, function(t) {
17775            if ("polar" === t.coordinateSystem.type) {
17776                var e = t.getData(),
17777                    i = t.coordinateSystem,
17778                    s = i.getBaseAxis(),
17779                    l = qm(t),
17780                    u = r[Km(s)][l],
17781                    h = u.offset,
17782                    c = u.width,
17783                    d = i.getOtherAxis(s),
17784                    f = t.get("center") || ["50%", "50%"],
17785                    p = Do(f[0], n),
17786                    g = Do(f[1], o),
17787                    m = t.get("barMinHeight") || 0,
17788                    v = t.get("barMinAngle") || 0;
17789                a[l] = a[l] || [];
17790                for (var y = e.mapDimension(d.dim), x = e.mapDimension(s.dim), _ = Zs(e, y), w = d.getExtent()[0], b = 0, S = e.count(); b < S; b++) {
17791                    var M = e.get(y, b),
17792                        I = e.get(x, b);
17793                    if (!isNaN(M)) {
17794                        var T = M >= 0 ? "p" : "n",
17795                            D = w;
17796                        _ && (a[l][I] || (a[l][I] = { p: w, n: w }), D = a[l][I][T]);
17797                        var A, C, L, k;
17798                        if ("radius" === d.dim) {
17799                            var P = d.dataToRadius(M) - w,
17800                                N = s.dataToAngle(I);
17801                            Math.abs(P) < m && (P = (P < 0 ? -1 : 1) * m), A = D, C = D + P, k = (L = N - h) - c, _ && (a[l][I][T] = C)
17802                        } else {
17803                            var O = d.dataToAngle(M, !0) - w,
17804                                E = s.dataToRadius(I);
17805                            Math.abs(O) < v && (O = (O < 0 ? -1 : 1) * v), C = (A = E + h) + c, L = D, k = D + O, _ && (a[l][I][T] = k)
17806                        }
17807                        e.setItemLayout(b, { cx: p, cy: g, r0: A, r: C, startAngle: -L * Math.PI / 180, endAngle: -k * Math.PI / 180 })
17808                    }
17809                }
17810            }
17811        }, this)
17812    }, "bar")), ys({ type: "polar" }), h(hM.extend({
17813        type: "geo",
17814        coordinateSystem: null,
17815        layoutMode: "box",
17816        init: function(t) { hM.prototype.init.apply(this, arguments), Mi(t, "label", ["show"]) },
17817        optionUpdated: function() {
17818            var t = this.option,
17819                e = this;
17820            t.regions = vA.getFilledRegions(t.regions, t.map, t.nameMap), this._optionModelMap = p(t.regions || [], function(t, i) { return i.name && t.set(i.name, new wo(i, e)), t }, R()), this.updateSelectedMap(t.regions)
17821        },
17822        defaultOption: { zlevel: 0, z: 0, show: !0, left: "center", top: "center", aspectScale: .75, 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: [] },
17823        getRegionModel: function(t) { return this._optionModelMap.get(t) || new wo(null, this, this.ecModel) },
17824        getFormattedLabel: function(t, e) {
17825            var i = this.getRegionModel(t).get("label." + e + ".formatter"),
17826                n = { name: t };
17827            return "function" == typeof i ? (n.status = e, i(n)) : "string" == typeof i ? i.replace("{a}", null != t ? t : "") : void 0
17828        },
17829        setZoom: function(t) { this.option.zoom = t },
17830        setCenter: function(t) { this.option.center = t }
17831    }), YD), ys({
17832        type: "geo",
17833        init: function(t, e) {
17834            var i = new Uh(e, !0);
17835            this._mapDraw = i, this.group.add(i.group)
17836        },
17837        render: function(t, e, i, n) {
17838            if (!n || "geoToggleSelect" !== n.type || n.from !== this.uid) {
17839                var o = this._mapDraw;
17840                t.get("show") ? o.draw(t, e, i, this, n) : this._mapDraw.group.removeAll(), this.group.silent = t.get("silent")
17841            }
17842        },
17843        dispose: function() { this._mapDraw && this._mapDraw.remove() }
17844    }), uv("toggleSelected", { type: "geoToggleSelect", event: "geoselectchanged" }), uv("select", { type: "geoSelect", event: "geoselected" }), uv("unSelect", { type: "geoUnSelect", event: "geounselected" });
17845    var Qk = ["rect", "polygon", "keep", "clear"],
17846        tP = d,
17847        eP = {
17848            lineX: mv(0),
17849            lineY: mv(1),
17850            rect: { point: function(t, e, i) { return t && i.boundingRect.contain(t[0], t[1]) }, rect: function(t, e, i) { return t && i.boundingRect.intersect(t) } },
17851            polygon: {
17852                point: function(t, e, i) { return t && i.boundingRect.contain(t[0], t[1]) && Al(i.range, t[0], t[1]) },
17853                rect: function(t, e, i) {
17854                    var n = i.range;
17855                    if (!t || n.length <= 1) return !1;
17856                    var o = t.x,
17857                        a = t.y,
17858                        r = t.width,
17859                        s = t.height,
17860                        l = n[0];
17861                    return !!(Al(n, o, a) || Al(n, o + r, a) || Al(n, o, a + s) || Al(n, o + r, a + s) || $t.create(t).contain(l[0], l[1]) || yv(o, a, o + r, a, n) || yv(o, a, o, a + s, n) || yv(o + r, a, o + r, a + s, n) || yv(o, a + s, o + r, a + s, n)) || void 0
17862                }
17863            }
17864        },
17865        iP = d,
17866        nP = l,
17867        oP = v,
17868        aP = ["dataToPoint", "pointToData"],
17869        rP = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiu
17869sAxis", "angleAxis", "bmap"],
17870        sP = bv.prototype;
17871    sP.setOutputRanges = function(t, e) {
17872        this.matchOutputRanges(t, e, function(t, e, i) {
17873            if ((t.coordRanges || (t.coordRanges = [])).push(e), !t.coordRange) {
17874                t.coordRange = e;
17875                var n = cP[t.brushType](0, i, e);
17876                t.__rangeOffset = { offset: dP[t.brushType](n.values, t.range, [1, 1]), xyMinMax: n.xyMinMax }
17877            }
17878        })
17879    }, sP.matchOutputRanges = function(t, e, i) {
17880        iP(t, function(t) {
17881            var n = this.findTargetInfo(t, e);
17882            n && !0 !== n && d(n.coordSyses, function(n) {
17883                var o = cP[t.brushType](1, n, t.range);
17884                i(t, o.values, n, e)
17885            })
17886        }, this)
17887    }, sP.setInputRanges = function(t, e) {
17888        iP(t, function(t) {
17889            var i = this.findTargetInfo(t, e);
17890            if (t.range = t.range || [], i && !0 !== i) {
17891                t.panelId = i.panelId;
17892                var n = cP[t.brushType](0, i.coordSys, t.coordRange),
17893                    o = t.__rangeOffset;
17894                t.range = o ? dP[t.brushType](n.values, o.offset, Dv(n.xyMinMax, o.xyMinMax)) : n.values
17895            }
17896        }, this)
17897    }, sP.makePanelOpts = function(t, e) { return f(this._targetInfoList, function(i) { var n = i.getPanelRect(); return { panelId: i.panelId, defaultBrushType: e && e(i), clipPath: Ef(n), isTargetByCursor: zf(n, t, i.coordSysModel), getLinearBrushOtherExtent: Rf(n) } }) }, sP.controlSeries = function(t, e, i) { var n = this.findTargetInfo(t, i); return !0 === n || n && nP(n.coordSyses, e.coordinateSystem) >= 0 }, sP.findTargetInfo = function(t, e) {
17898        for (var i = this._targetInfoList, n = Mv(e, t), o = 0; o < i.length; o++) {
17899            var a = i[o],
17900                r = t.panelId;
17901            if (r) { if (a.panelId === r) return a } else
17902                for (o = 0; o < uP.length; o++)
17903                    if (uP[o](n, a)) return a
17904        }
17905        return !0
17906    };
17907    var lP = {
17908            grid: function(t, e) {
17909                var i = t.xAxisModels,
17910                    n = t.yAxisModels,
17911                    o = t.gridModels,
17912                    a = R(),
17913                    r = {},
17914                    s = {};
17915                (i || n || o) && (iP(i, function(t) {
17916                    var e = t.axis.grid.model;
17917                    a.set(e.id, e), r[e.id] = !0
17918                }), iP(n, function(t) {
17919                    var e = t.axis.grid.model;
17920                    a.set(e.id, e), s[e.id] = !0
17921                }), iP(o, function(t) { a.set(t.id, t), r[t.id] = !0, s[t.id] = !0 }), a.each(function(t) {
17922                    var o = t.coordinateSystem,
17923                        a = [];
17924                    iP(o.getCartesians(), function(t, e) {
17925                        (nP(i, t.getAxis("x").model) >= 0 || nP(n, t.getAxis("y").model) >= 0) && a.push(t)
17926                    }), e.push({ panelId: "grid--" + t.id, gridModel: t, coordSysModel: t, coordSys: a[0], coordSyses: a, getPanelRect: hP.grid, xAxisDeclared: r[t.id], yAxisDeclared: s[t.id] })
17927                }))
17928            },
17929            geo: function(t, e) {
17930                iP(t.geoModels, function(t) {
17931                    var i = t.coordinateSystem;
17932                    e.push({ panelId: "geo--" + t.id, geoModel: t, coordSysModel: t, coordSys: i, coordSyses: [i], getPanelRect: hP.geo })
17933                })
17934            }
17935        },
17936        uP = [function(t, e) {
17937            var i = t.xAxisModel,
17938                n = t.yAxisModel,
17939                o = t.gridModel;
17940            return !o && i && (o = i.axis.grid.model), !o && n && (o = n.axis.grid.model), o && o === e.gridModel
17941        }, function(t, e) { var i = t.geoModel; return i && i === e.geoModel }],
17942        hP = {
17943            grid: function() { return this.coordSys.grid.getRect().clone() },
17944            geo: function() {
17945                var t = this.coordSys,
17946                    e = t.getBoundingRect().clone();
17947                return e.applyTransform(go(t)), e
17948            }
17949        },
17950        cP = {
17951            lineX: oP(Iv, 0),
17952            lineY: oP(Iv, 1),
17953            rect: function(t, e, i) {
17954                var n = e[aP[t]]([i[0][0], i[1][0]]),
17955                    o = e[aP[t]]([i[0][1], i[1][1]]),
17956                    a = [Sv([n[0], o[0]]), Sv([n[1], o[1]])];
17957                return { values: a, xyMinMax: a }
17958            },
17959            polygon: function(t, e, i) {
17960                var n = [
17961                    [1 / 0, -1 / 0],
17962                    [1 / 0, -1 / 0]
17963                ];
17964                return { values: f(i, function(i) { var o = e[aP[t]](i); return n[0][0] = Math.min(n[0][0], o[0]), n[1][0] = Math.min(n[1][0], o[1]), n[0][1] = Math.max(n[0][1], o[0]), n[1][1] = Math.max(n[1][1], o[1]), o }), xyMinMax: n }
17965            }
17966        },
17967        dP = {
17968            lineX: oP(Tv, 0),
17969            lineY: oP(Tv, 1),
17970            rect: function(t, e, i) {
17971                return [
17972                    [t[0][0] - i[0] * e[0][0], t[0][1] - i[0] * e[0][1]],
17973                    [t[1][0] - i[1] * e[1][0], t[1][1] - i[1] * e[1][1]]
17974                ]
17975            },
17976            polygon: function(t, e, i) { return f(t, function(t, n) { return [t[0] - i[0] * e[n][0], t[1] - i[1] * e[n][1]] }) }
17977        },
17978        fP = ["inBrush", "outOfBrush"],
17979        pP = "__ecBrushSelect",
17980        gP = "__ecInBrushSelectEvent",
17981        mP = LI.VISUAL.BRUSH;
17982    fs(mP, function(t, e, i) { t.eachComponent({ mainType: "brush" }, function(e) { i && "takeGlobalCursor" === i.type && e.setBrushOption("brush" === i.key ? i.brushOption : { brushType: !1 }), (e.brushTargetManager = new bv(e.option, t)).setInputRanges(e.areas, t) }) }), ps(mP, function(t, e, n) {
17983        var o, a, s = [];
17984        t.eachComponent({ mainType: "brush" }, function(e, n) {
17985            function l(t) { return "all" === m || v[t] }
17986
17987            function u(t) { return !!t.length }
17988
17989            function h(t, e) {
17990                var i = t.coordinateSystem;
17991                w |= i.hasAxisBrushed(), l(e) && i.eachActiveState(t.getData(), function(t, e) { "active" === t && (x[e] = 1) })
17992            }
17993
17994            function c(i, n, o) {
17995                var a = Pv(i);
17996                if (a && !Nv(e, n) && (d(b, function(n) { a[n.brushType] && e.brushTargetManager.controlSeries(n, i, t) && o.push(n), w |= u(o) }), l(n) && u(o))) {
17997                    var r = i.getData();
17998                    r.each(function(t) { kv(a, o, r, t) && (x[t] = 1) })
17999                }
18000            }
18001            var p = { brushId: e.id, brushIndex: n, brushName: e.name, areas: i(e.areas), selected: [] };
18002            s.push(p);
18003            var g = e.option,
18004                m = g.brushLink,
18005                v = [],
18006                x = [],
18007                _ = [],
18008                w = 0;
18009            n || (o = g.throttleType, a = g.throttleDelay);
18010            var b = f(e.areas, function(t) { return Ov(r({ boundingRect: vP[t.brushType](t) }, t)) }),
18011                S = dv(e.option, fP, function(t) { t.mappingMethod = "fixed" });
18012            y(m) && d(m, function(t) { v[t] = 1 }), t.eachSeries(function(t, e) { var i = _[e] = []; "parallel" === t.subType ? h(t, e) : c(t, e, i) }), t.eachSeries(function(t, e) {
18013                var i = { seriesId: t.id, seriesIndex: e, seriesName: t.name, dataIndex: [] };
18014                p.selected.push(i);
18015                var n = Pv(t),
18016                    o = _[e],
18017                    a = t.getData(),
18018                    r = l(e) ? function(t) { return x[t] ? (i.dataIndex.push(a.getRawIndex(t)), "inBrush") : "outOfBrush" } : function(t) { return kv(n, o, a, t) ? (i.dataIndex.push(a.getRawIndex(t)), "inBrush") : "outOfBrush" };
18019                (l(e) ? w : u(o)) && pv(fP, S, a, r)
18020            })
18021        }), Cv(e, o, a, s, n)
18022    });
18023    var vP = {
18024            lineX: B,
18025            lineY: B,
18026            rect: function(t) { return Ev(t.range) },
18027            polygon: function(t) {
18028                for (var e, i = t.range, n = 0, o = i.length; n < o; n++) {
18029                    e = e || [
18030                        [1 / 0, -1 / 0],
18031                        [1 / 0, -1 / 0]
18032                    ];
18033                    var a = i[n];
18034                    a[0] < e[0][0] && (e[0][0] = a[0]), a[0] > e[0][1] && (e[0][1] = a[0]), a[1] < e[1][0] && (e[1][0] = a[1]), a[1] > e[1][1] && (e[1][1] = a[1])
18035                }
18036                return e && Ev(e)
18037            }
18038        },
18039        yP = ["#ddd"];
18040    vs({
18041        type: "brush",
18042        dependencies: ["geo", "grid", "xAxis", "yAxis", "parallel", "series"],
18043        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 },
18044        areas: [],
18045        brushType: null,
18046        brushOption: {},
18047        coordInfoList: [],
18048        optionUpdated: function(t, e) {
18049            var i = this.option;
18050            !e && fv(i, t, ["inBrush", "outOfBrush"]);
18051            var n = i.inBrush = i.inBrush || {};
18052            i.outOfBrush = i.outOfBrush || { color: yP }, n.hasOwnProperty("liftZ") || (n.liftZ = 5)
18053        },
18054        setAreas: function(t) { t && (this.areas = f(t, function(t) { return Rv(this.option, t) }, this)) },
18055        setBrushOption: function(t) { this.brushOption = Rv(this.option, t), this.brushType = this.brushOption.brushType }
18056    });
18057    ys({
18058        type: "brush",
18059        init: function(t, e) { this.ecModel = t, this.api = e, this.model, (this._brushController = new Qd(e.getZr())).on("brush", m(this._onBrush, this)).mount() },
18060        render: function(t) { return this.model = t, zv.apply(this, arguments) },
18061        updateTransform: zv,
18062        updateView: zv,
18063        dispose: function() { this._brushController.dispose() },
18064        _onBrush: function(t, e) {
18065            var n = this.model.id;
18066            this.model.brushTargetManager.setOutputRanges(t, this.ecModel), (!e.isEnd || e.removeOnClick) && this.api.dispatchAction({ type: "brush", brushId: n, areas: i(t), $from: n })
18067        }
18068    }), cs({ type: "brush", event: "brush" }, function(t, e) { e.eachComponent({ mainType: "brush", query: t }, function(e) { e.setAreas(t.areas) }) }), cs({ type: "brushSelect", event: "brushSelected", update: "none" }, function() {});
18069    var xP = {},
18070        _P = lI.toolbox.brush;
18071    Gv.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
18071-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(_P.title) };
18072    var wP = Gv.prototype;
18073    wP.render = wP.updateView = function(t, e, i) {
18074        var n, o, a;
18075        e.eachComponent({ mainType: "brush" }, function(t) { n = t.brushType, o = t.brushOption.brushMode || "single", a |= t.areas.length }), this._brushType = n, this._brushMode = o, d(t.get("type", !0), function(e) { t.setIconStatus(e, ("keep" === e ? "multiple" === o : "clear" === e ? a : e === n) ? "emphasis" : "normal") })
18076    }, wP.getIcons = function() {
18077        var t = this.model,
18078            e = t.get("icon", !0),
18079            i = {};
18080        return d(t.get("type", !0), function(t) { e[t] && (i[t] = e[t]) }), i
18081    }, wP.onclick = function(t, e, i) {
18082        var n = this._brushType,
18083            o = this._brushMode;
18084        "clear" === i ? (e.dispatchAction({ type: "axisAreaSelect", intervals: [] }), e.dispatchAction({ type: "brush", command: "clear", areas: [] })) : e.dispatchAction({ type: "takeGlobalCursor", key: "brush", brushOption: { brushType: "keep" === i ? n : n !== i && i, brushMode: "keep" === i ? "multiple" === o ? "single" : "multiple" : o } })
18085    }, Bv("brush", Gv), us(function(t, e) {
18086        var i = t && t.brush;
18087        if (y(i) || (i = i ? [i] : []), i.length) {
18088            var n = [];
18089            d(i, function(t) {
18090                var e = t.hasOwnProperty("toolbox") ? t.toolbox : [];
18091                e instanceof Array && (n = n.concat(e))
18092            });
18093            var o = t && t.toolbox;
18094            y(o) && (o = o[0]), o || (o = { feature: {} }, t.toolbox = [o]);
18095            var a = o.feature || (o.feature = {}),
18096                r = a.brush || (a.brush = {}),
18097                s = r.type || (r.type = []);
18098            s.push.apply(s, n), hv(s), e && !s.length && s.push.apply(s, Qk)
18099        }
18100    });
18101    Wv.prototype = {
18102        constructor: Wv,
18103        type: "calendar",
18104        dimensions: ["time", "value"],
18105        getDimensionsInfo: function() { return [{ name: "time", type: "time" }, "value"] },
18106        getRangeInfo: function() { return this._rangeInfo },
18107        getModel: function() { return this._model },
18108        getRect: function() { return this._rect },
18109        getCellWidth: function() { return this._sw },
18110        getCellHeight: function() { return this._sh },
18111        getOrient: function() { return this._orient },
18112        getFirstDayOfWeek: function() { return this._firstDayOfWeek },
18113        getDateInfo: function(t) {
18114            var e = (t = Ro(t)).getFullYear(),
18115                i = t.getMonth() + 1;
18116            i = i < 10 ? "0" + i : i;
18117            var n = t.getDate();
18118            n = n < 10 ? "0" + n : n;
18119            var o = t.getDay();
18120            return o = Math.abs((o + 7 - this.getFirstDayOfWeek()) % 7), { y: e, m: i, d: n, day: o, time: t.getTime(), formatedDate: e + "-" + i + "-" + n, date: t }
18121        },
18122        getNextNDay: function(t, e) { return 0 === (e = e || 0) ? this.getDateInfo(t) : ((t = new Date(this.getDateInfo(t).time)).setDate(t.getDate() + e), this.getDateInfo(t)) },
18123        update: function(t, e) {
18124            function i(t, e) { return null != t[e] && "auto" !== t[e] }
18125            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());
18126            var n = this._rangeInfo.weeks || 1,
18127                o = ["width", "height"],
18128                a = this._model.get("cellSize").slice(),
18129                r = this._model.getBoxLayoutParams(),
18130                s = "horizontal" === this._orient ? [n, 7] : [7, n];
18131            d([0, 1], function(t) { i(a, t) && (r[o[t]] = a[t] * s[t]) });
18132            var l = { width: e.getWidth(), height: e.getHeight() },
18133                u = this._rect = Qo(r, l);
18134            d([0, 1], function(t) { i(a, t) || (a[t] = u[o[t]] / s[t]) }), this._sw = a[0], this._sh = a[1]
18135        },
18136        dataToPoint: function(t, e) {
18137            y(t) && (t = t[0]), null == e && (e = !0);
18138            var i = this.getDateInfo(t),
18139                n = this._rangeInfo,
18140                o = i.formatedDate;
18141            if (e && !(i.time >= n.start.time && i.time < n.end.time + 864e5)) return [NaN, NaN];
18142            var a = i.day,
18143                r = this._getRangeInfo([n.start.time, o]).nthWeek;
18144            return "vertical" === this._orient ? [this._rect.x + a * this._sw + this._sw / 2, this._rect.y + r * this._sh + this._sh / 2] : [this._rect.x + r * this._sw + this._sw / 2, this._rect.y + a * this._sh + this._sh / 2]
18145        },
18146        pointToData: function(t) { var e = this.pointToDate(t);
18146 return e && e.time },
18147        dataToRect: function(t, e) { var i = this.dataToPoint(t, e); return { contentShape: { x: i[0] - (this._sw - this._lineWidth) / 2, y: i[1] - (this._sh - this._lineWidth) / 2, width: this._sw - this._lineWidth, height: this._sh - this._lineWidth }, center: i, tl: [i[0] - this._sw / 2, i[1] - this._sh / 2], tr: [i[0] + this._sw / 2, i[1] - this._sh / 2], br: [i[0] + this._sw / 2, i[1] + this._sh / 2], bl: [i[0] - this._sw / 2, i[1] + this._sh / 2] } },
18148        pointToDate: function(t) {
18149            var e = Math.floor((t[0] - this._rect.x) / this._sw) + 1,
18150                i = Math.floor((t[1] - this._rect.y) / this._sh) + 1,
18151                n = this._rangeInfo.range;
18152            return "vertical" === this._orient ? this._getDateByWeeksAndDay(i, e - 1, n) : this._getDateByWeeksAndDay(e, i - 1, n)
18153        },
18154        convertToPixel: v(Fv, "dataToPoint"),
18155        convertFromPixel: v(Fv, "pointToData"),
18156        _initRangeOption: function() {
18157            var t = this._model.get("range"),
18158                e = t;
18159            if (y(e) && 1 === e.length && (e = e[0]), /^\d{4}$/.test(e) && (t = [e + "-01-01", e + "-12-31"]), /^\d{4}[\/|-]\d{1,2}$/.test(e)) {
18160                var i = this.getDateInfo(e),
18161                    n = i.date;
18162                n.setMonth(n.getMonth() + 1);
18163                var o = this.getNextNDay(n, -1);
18164                t = [i.formatedDate, o.formatedDate]
18165            }
18166            /^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e) && (t = [e, e]);
18167            var a = this._getRangeInfo(t);
18168            return a.start.time > a.end.time && t.reverse(), t
18169        },
18170        _getRangeInfo: function(t) {
18171            var e;
18172            (t = [this.getDateInfo(t[0]), this.getDateInfo(t[1])])[0].time > t[1].time && (e = !0, t.reverse());
18173            var i = Math.floor(t[1].time / 864e5) - Math.floor(t[0].time / 864e5) + 1,
18174                n = new Date(t[0].time),
18175                o = n.getDate(),
18176                a = t[1].date.getDate();
18177            if (n.setDate(o + i - 1), n.getDate() !== a)
18178                for (var r = n.getTime() - t[1].time > 0 ? 1 : -1; n.getDate() !== a && (n.getTime() - t[1].time) * r > 0;) i -= r, n.setDate(o + i - 1);
18179            var s = Math.floor((i + t[0].day + 6) / 7),
18180                l = e ? 1 - s : s - 1;
18181            return e && t.reverse(), { range: [t[0].formatedDate, t[1].formatedDate], start: t[0], end: t[1], allDay: i, weeks: s, nthWeek: l, fweek: t[0].day, lweek: t[1].day }
18182        },
18183        _getDateByWeeksAndDay: function(t, e, i) {
18184            var n = this._getRangeInfo(i);
18185            if (t > n.weeks || 0 === t && e < n.fweek || t === n.weeks && e > n.lweek) return !1;
18186            var o = 7 * (t - 1) - n.fweek + e,
18187                a = new Date(n.start.time);
18188            return a.setDate(n.start.d + o), this.getDateInfo(a)
18189        }
18190    }, Wv.dimensions = Wv.prototype.dimensions, Wv.getDimensionsInfo = Wv.prototype.getDimensionsInfo, Wv.create = function(t, e) {
18191        var i = [];
18192        return t.eachComponent("calendar", function(n) {
18193            var o = new Wv(n, t, e);
18194            i.push(o), n.coordinateSystem = o
18195        }), t.eachSeries(function(t) { "calendar" === t.get("coordinateSystem") && (t.coordinateSystem = i[t.get("calendarIndex") || 0]) }), i
18196    }, Ca.register("calendar", Wv);
18197    var bP = hM.extend({
18198            type: "calendar",
18199            coordinateSystem: null,
18200            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 } },
18201            init: function(t, e, i, n) {
18202                var o = na(t);
18203                bP.superApply(this, "init", arguments), Hv(t, o)
18204            },
18205            mergeOption: function(t, e) { bP.superApply(this, "mergeOption", arguments), Hv(this.option, t) }
18206        }),
18207        SP = { EN: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], CN: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"] },
18208        MP = { EN: ["S", "M", "T", "W", "T", "F", "S"], CN: ["日", "一", "二", "三", "四", "五", "六"] };
18209    ys({
18210        type: "calendar",
18211        _tlpoints: null,
18212        _blpoints: null,
18213        _firstDayOfMonth: null,
18214        _firstDayPoints: null,
18215        render: function(t, e, i) {
18216            var n = this.group;
18217            n.removeAll();
18218            var o = t.coordinateSystem,
18219                a = o.getRangeInfo(),
18220                r = o.getOrient();
18221            this._renderDayRect(t, a, n), this._renderLines(t, a, r, n), this._renderYearText(t, a, r, n), this._renderMonthText(t, r, n), this._renderWeekText(t, a, r, n)
18222        },
18223        _renderDayRect: function(t, e, i) {
18224            for (var n = t.coordinateSystem, o = t.getModel("itemStyle").getItemStyle(), a = n.getCellWidth(), r = n.getCellHeight(), s = e.start.time; s <= e.end.time; s = n.getNextNDay(s, 1).time) {
18225                var l = n.dataToRect([s], !1).tl,
18226                    u = new SS({ shape: { x: l[0], y: l[1], width: a, height: r }, cursor: "default", style: o });
18227                i.add(u)
18228            }
18229        },
18230        _renderLines: function(t, e, i, n) {
18231            function o(e) {
18232                a._firstDayOfMonth.push(r.getDateInfo(e)), a._firstDayPoints.push(r.dataToRect([e], !1).tl);
18233                var o = a._getLinePointsOfOneWeek(t, e, i);
18234                a._tlpoints.push(o[0]), a._blpoints.push(o[o.length - 1]), l && a._drawSplitline(o, s, n)
18235            }
18236            var a = this,
18237                r = t.coordinateSystem,
18238                s = t.getModel("splitLine.lineStyle").getLineStyle(),
18239                l = t.get("splitLine.show"),
18240                u = s.lineWidth;
18241            this._tlpoints = [], this._blpoints = [], this._firstDayOfMonth = [], this._firstDayPoints = [];
18242            for (var h = e.start, c = 0; h.time <= e.end.time; c++) {
18243                o(h.formatedDate), 0 === c && (h = r.getDateInfo(e.start.y + "-" + e.start.m));
18244                var d = h.date;
18245                d.setMonth(d.getMonth() + 1), h = r.getDateInfo(d)
18246            }
18247            o(r.getNextNDay(e.end.time, 1).formatedDate), l && this._drawSplitline(a._getEdgesPoints(a._tlpoints, u, i), s, n), l && this._drawSplitline(a._getEdgesPoints(a._blpoints, u, i), s, n)
18248        },
18249        _getEdgesPoints: function(t, e, i) {
18250            var n = [t[0].slice(), t[t.length - 1].slice()],
18251                o = "horizontal" === i ? 0 : 1;
18252            return n[0][o] = n[0][o] - e / 2, n[1][o] = n[1][o] + e / 2, n
18253        },
18254        _drawSplitline: function(t, e, i) {
18255            var n = new bS({ z2: 20, shape: { points: t }, style: e });
18256            i.add(n)
18257        },
18258        _getLinePointsOfOneWeek: function(t, e, i) {
18259            var n = t.coordinateSystem;
18260            e = n.getDateInfo(e);
18261            for (var o = [], a = 0; a < 7; a++) {
18262                var r = n.getNextNDay(e.time, a),
18263                    s = n.dataToRect([r.time], !1);
18264                o[2 * r.day] = s.tl, o[2 * r.day + 1] = s["horizontal" === i ? "bl" : "tr"]
18265            }
18266            return o
18267        },
18268        _formatterLabel: function(t, e) { return "string" == typeof t && t ? Xo(t, e) : "function" == typeof t ? t(e) : e.nameMap },
18269        _yearTextPositionControl: function(t, e, i, n, o) { e = e.slice(); var a = ["center", "bottom"]; "bottom" === n ? (e[1] += o, a = ["center", "top"]) : "left" === n ? e[0] -= o : "right" === n ? (e[0] += o, a = ["center", "top"]) : e[1] -= o; var r = 0; return "left" !== n && "right" !== n || (r = Math.PI / 2), { rotation: r, position: e, style: { textAlign: a[0], textVerticalAlign: a[1] } } },
18270        _renderYearText: function(t, e, i, n) {
18271            var o = t.getModel("yearLabel");
18272            if (o.get("show")) {
18273                var a = o.get("margin"),
18274                    r = o.get("position");
18275                r || (r = "horizontal" !== i ? "top" : "left");
18276                var s = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]],
18277                    l = (s[0][0] + s[1][0]) / 2,
18278                    u = (s[0][1] + s[1][1]) / 2,
18279                    h = "horizontal" === i ? 0 : 1,
18280                    c = { top: [l, s[h][1]], bottom: [l, s[1 - h][1]], left: [s[1 - h][0], u], right: [s[h][0], u] },
18281                    d = e.start.y; + e.end.y > +e.start.y && (d = d + "-" + e.end.y);
18282                var f = o.get("formatter"),
18283                    p = { start: e.start.y, end: e.end.y, nameMap: d },
18284                    g = this._formatterLabel(f, p),
18285                    m = new fS({ z2: 30 });
18286                no(m.style, o, { text: g }), m.attr(this._yearTextPositionControl(m, c[r], i, r, a)), n.add(m)
18287            }
18288        },
18289        _monthTextPositionControl: function(t, e, i, n, o) {
18290            var a = "left",
18291                r = "top",
18292                s = t[0],
18293                l = t[1];
18294            return "horizontal" === i ? (l += o, e && (a = "center"), "start" === n && (r = "bottom")) : (s += o, e && (r = "middle"), "start" === n && (a = "right")), { x: s, y: l, textAlign: a, textVerticalAlign: r }
18295        },
18296        _renderMonthText: function(t, e, i) {
18297            var n = t.getModel("monthLabel");
18298            if (n.get("show")) {
18299                var o = n.get("nameMap"),
18300                    r = n.get("margin"),
18301                    s = n.get("position"),
18302                    l = n.get("align"),
18303                    u = [this._tlpoints, this._blpoints];
18304                _(o) && (o = SP[o.toUpperCase()] || []);
18305                var h = "start" === s ? 0 : 1,
18306                    c = "horizontal" === e ? 0 : 1;
18307                r = "start" === s ? -r : r;
18308                for (var d = "center" === l, f = 0; f < u[h].length - 1; f++) {
18309                    var p = u[h][f].slice(),
18310                        g = this._firstDayOfMonth[f];
18311                    if (d) {
18312                        var m = this._firstDayPoints[f];
18313                        p[c] = (m[c] + u[0][f + 1][c]) / 2
18314                    }
18315                    var v = n.get("formatter"),
18316                        y = o[+g.m - 1],
18317                        x = { yyyy: g.y, yy: (g.y + "").slice(2), MM: g.m, M: +g.m, nameMap: y },
18318                        w = this._formatterLabel(v, x),
18319                        b = new fS({ z2: 30 });
18320                    a(no(b.style, n, { text: w }), this._monthTextPositionControl(p, d, e, s, r)), i.add(b)
18321                }
18322            }
18323        },
18324        _weekTextPositionControl: function(t, e, i, n, o) {
18325            var a = "center",
18326                r = "middle",
18327                s = t[0],
18328                l = t[1],
18329                u = "start" === i;
18330            return "horizontal" === e ? (s = s + n + (u ? 1 : -1) * o[0] / 2, a = u ? "right" : "left") : (l = l + n + (u ? 1 : -1) * o[1] / 2, r = u ? "bottom" : "top"), { x: s, y: l, textAlign: a, textVerticalAlign: r }
18331        },
18332        _renderWeekText: function(t, e, i, n) {
18333            var o = t.getModel("dayLabel");
18334            if (o.get("show")) {
18335                var r = t.coordinateSystem,
18336                    s = o.get("position"),
18337                    l = o.get("nameMap"),
18338                    u = o.get("margin"),
18339                    h = r.getFirstDayOfWeek();
18340                _(l) && (l = MP[l.toUpperCase()] || []);
18341                var c = r.getNextNDay(e.end.time, 7 - e.lweek).time,
18342                    d = [r.getCellWidth(), r.getCellHeight()];
18343                u = Do(u, d["horizontal" === i ? 0 : 1]), "start" === s && (c = r.getNextNDay(e.start.time, -(7 + e.fweek)).time, u = -u);
18344                for (var f = 0; f < 7; f++) {
18345                    var p = r.getNextNDay(c, f),
18346                        g = r.dataToRect([p.time], !1).center,
18347                        m = f;
18348                    m = Math.abs((f + h) % 7);
18349                    var v = new fS({ z2: 30 });
18350                    a(no(v.style, o, { text: l[m] }), this._weekTextPositionControl(g, i, s, u, d)), n.add(v)
18351                }
18352            }
18353        }
18354    }), vs({ 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" } } }), ys({
18355        type: "title",
18356        render: function(t, e, i) {
18357            if (this.group.removeAll(), t.get("show")) {
18358                var n = this.group,
18359                    o = t.getModel("textStyle"),
18360                    a = t.getModel("subtextStyle"),
18361                    r = t.get("textAlign"),
18362                    s = t.get("textBaseline"),
18363                    l = new fS({ style: no({}, o, { text: t.get("text"), textFill: o.getTextColor() }, { disableBox: !0 }), z2: 10 }),
18364                    u = l.getBoundingRect(),
18365                    h = t.get("subtext"),
18366                    c = new fS({ style: no({}, a, { text: h, textFill: a.getTextColor(), y: u.height + t.get("itemGap"), textVerticalAlign: "top" }, { disableBox: !0 }), z2: 10 }),
18367                    d = t.get("link"),
18368                    f = t.get("sublink");
18369                l.silent = !d, c.silent = !f, d && l.on("click", function() { window.open(d, "_" + t.get("target")) }), f && c.on("click", function() { window.open(f, "_" + t.get("subtarget")) }), n.add(l), h && n.add(c);
18370                var p = n.getBoundingRect(),
18371                    g = t.getBoxLayoutParams();
18372                g.width = p.width, g.height = p.height;
18373                var m = Qo(g, { width: i.getWidth(), height: i.getHeight() }, t.get("padding"));
18374                r || ("middle" === (r = t.get("left") || t.get("right")) && (r = "center"), "right" === r ? m.x += m.width : "center" === r && (m.x += m.width / 2)), s || ("center" === (s = t.get("top") || t.get("bottom")) && (s = "middle"), "bottom" === s ? m.y += m.height : "middle" === s && (m.y += m.height / 2), s = s || "top"), n.attr("position", [m.x, m.y]);
18375                var v = { textAlign: r, textVerticalAlign: s };
18376                l.setStyle(v), c.setStyle(v), p = n.getBoundingRect();
18377                var y = m.margin,
18378                    x = t.getItemStyle(["color", "opacity"]);
18379                x.fill = t.get("backgroundColor");
18380                var _ = new SS({ shape: { x: p.x - y[3], y: p.y - y[0], width: p.width + y[1] + y[3], height: p.height + y[0] + y[2], r: t.get("borderRadius") }, style: x, silent: !0 });
18381                Wn(_), n.add(_)
18382            }
18383        }
18384    }), hM.registerSubTypeDefaulter("dataZoom", function() { return "slider" });
18385    var IP = ["cartesian2d", "polar", "singleAxis"],
18386        TP = function(t, e) {
18387            var i = f(t = t.slice(), Ko),
18388                n = f(e = (e || []).slice(), Ko);
18389            return function(o, a) {
18390                d(t, function(t, r) {
18391                    for (var s = { name: t, capital: i[r] }, l = 0; l < e.length; l++) s[e[l]] = t + n[l];
18392                    o.call(a, s)
18393                })
18394            }
18395        }(["x", "y", "z", "radius", "angle", "single"], ["axisIndex", "axis", "index", "id"]),
18396        DP = d,
18397        AP = Co,
18398        CP = function(t, e, i, n) { this._dimName = t, this._axisIndex = e, this._valueWindow, this._percentWindow, this._dataExtent, this._minMaxSpan, this.ecModel = n, this._dataZoomModel = i };
18399    CP.prototype = {
18400        constructor: CP,
18401        hostedBy: function(t) { return this._dataZoomModel === t },
18402        getDataValueWindow: function() { return this._valueWindow.slice() },
18403        getDataPercentWindow: function() { return this._percentWindow.slice() },
18404        getTargetSeriesModels: function() {
18405            var t = [],
18406                e = this.ecModel;
18407            return e.eachSeries(function(i) {
18408                if (Zv(i.get("coordinateSystem"))) {
18409                    var n = this._dimName,
18410                        o = e.queryComponents({ mainType: n + "Axis", index: i.get(n + "AxisIndex"), id: i.get(n + "AxisId") })[0];
18411                    this._axisIndex === (o && o.componentIndex) && t.push(i)
18412                }
18413            }, this), t
18414        },
18415        getAxisModel: function() { return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex) },
18416        getOtherAxisModel: function() {
18417            var t, e, i = this._dimName,
18418                n = this.ecModel,
18419                o = this.getAxisModel();
18420            "x" === i || "y" === i ? (e = "gridIndex", t = "x" === i ? "y" : "x") : (e = "polarIndex", t = "angle" === i ? "radius" : "angle");
18421            var a;
18422            return n.eachComponent(t + "Axis", function(t) {
18423                (t.get(e) || 0) === (o.get(e) || 0) && (a = t)
18424            }), a
18425        },
18426        getMinMaxSpan: function() { return i(this._minMaxSpan) },
18427        calculateDataWindow: function(t) {
18428            var e = this._dataExtent,
18429                i = this.getAxisModel().axis.scale,
18430                n = this._dataZoomModel.getRangePropMode(),
18431                o = [0, 100],
18432                a = [t.start, t.end],
18433                r = [];
18434            return DP(["startValue", "endValue"], function(e) { r.push(null != t[e] ? i.parse(t[e]) : null) }), DP([0, 1], function(t) {
18435                var s = r[t],
18436                    l = a[t];
18437                "percent" === n[t] ? (null == l && (l = o[t]), s = i.parse(To(l, o, e, !0))) : l = To(s, e, o, !0), r[t] = s, a[t] = l
18438            }), { valueWindow: AP(r), percentWindow: AP(a) }
18439        },
18440        reset: function(t) {
18441            if (t === this._dataZoomModel) {
18442                var e = this.getTargetSeriesModels();
18443                this._dataExtent = Xv(this, this._dimName, e);
18444                var i = this.calculateDataWindow(t.option);
18445                this._valueWindow = i.valueWindow, this._percentWindow = i.percentWindow, qv(this), Yv(this)
18446            }
18447        },
18448        restore: function(t) { t === this._dataZoomModel && (this._valueWindow = this._percentWindow = null, Yv(this, !0)) },
18449        filterData: function(t, e) {
18450            function i(t) { return t >= r[0] && t <= r[1] }
18451            if (t === this._dataZoomModel) {
18452                var n = this._dimName,
18453                    o = this.getTargetSeriesModels(),
18454                    a = t.get("filterMode"),
18455                    r = this._valueWindow;
18456                "none" !== a && DP(o, function(t) {
18457                    var e = t.getData(),
18458                        o = e.mapDimension(n, !0);
18459                    "weakFilter" === a ? e.filterSelf(function(t) {
18460                        for (var i, n, a, s = 0; s < o.length; s++) {
18461                            var l = e.get(o[s], t),
18462                                u = !isNaN(l),
18463                                h = l < r[0],
18464                                c = l > r[1];
18465                            if (u && !h && !c) return !0;
18466                            u && (a = !0), h && (i = !0), c && (n = !0)
18467                        }
18468                        return a && i && n
18469                    }) : DP(o, function(n) {
18470                        if ("empty" === a) t.setData(e.map(n, function(t) { return i(t) ? t : NaN }));
18471                        else {
18472                            var o = {};
18473                            o[n] = r, e.selectRange(o)
18474                        }
18475                    }), DP(o, function(t) { e.setApproximateExtent(r, t) })
18476                })
18477            }
18478        }
18479    };
18480    var LP = d,
18481        kP = TP,
18482        PP = vs({
18483            type: "dataZoom",
18484            dependencies: ["xAxis", "yAxis", "zAxis", "radiusAxis", "angleAxis", "singleAxis", "series"],
18485            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 },
18486            init: function(t, e, i) {
18487                this._dataIntervalByAxis = {}, this._dataInfo = {}, this._axisProxies = {}, this.textStyleModel, this._autoThrottle = !0, this._rangePropMode = ["percent", "percent"];
18488                var n = Kv(t);
18489                this.mergeDefaultAndTheme(t, i), this.doInit(n)
18490            },
18491            mergeOption: function(t) {
18492                var e = Kv(t);
18493                n(this.option, t, !0), this.doInit(e)
18494            },
18495            doInit: function(t) {
18496                var e = this.option;
18497                a_.canvasSupported || (e.realtime = !1), this._setDefaultThrottle(t), $v(this, t), LP([
18498                    ["start", "startValue"],
18499                    ["end", "endValue"]
18500                ], function(t, i) { "value" === this._rangePropMode[i] && (e[t[0]] = null) }, this), this.textStyleModel = this.getModel("textStyle"), this._resetTarget(), this._giveAxisProxies()
18501            },
18502            _giveAxisProxies: function() {
18503                var t = this._axisProxies;
18504                this.eachTargetAxis(function(e, i, n, o) {
18505                    var a = this.dependentModels[e.axis][i],
18506                        r = a.__dzAxisProxy || (a.__dzAxisProxy = new CP(e.name, i, this, o));
18507                    t[e.name + "_" + i] = r
18508                }, this)
18509            },
18510            _resetTarget: function() {
18511                var t = this.option,
18512                    e = this._judgeAutoMode();
18513                kP(function(e) {
18514                    var i = e.axisIndex;
18515                    t[i] = Si(t[i])
18516                }, this), "axisIndex" === e ? this._autoSetAxisIndex() : "orient" === e && this._autoSetOrient()
18517            },
18518            _judgeAutoMode: function() {
18519                var t = this.option,
18520                    e = !1;
18521                kP(function(i) { null != t[i.axisIndex] && (e = !0) }, this);
18522                var i = t.orient;
18523                return null == i && e ? "orient" : e ? void 0 : (null == i && (t.orient = "horizontal"), "axisIndex")
18524            },
18525            _autoSetAxisIndex: function() {
18526                var t = !0,
18527                    e = this.get("orient", !0),
18528                    i = this.option,
18529                    n = this.dependentModels;
18530                if (t) {
18531                    var o = "vertical" === e ? "y" : "x";
18532                    n[o + "Axis"].length ? (i[o + "AxisIndex"] = [0], t = !1) : LP(n.singleAxis, function(n) { t && n.get("orient", !0) === e && (i.singleAxisIndex = [n.componentIndex], t = !1) })
18533                }
18534                t && kP(function(e) {
18535                    if (t) {
18536                        var n = [],
18537                            o = this.dependentModels[e.axis];
18538                        if (o.length && !n.length)
18539                            for (var a = 0, r = o.length; a < r; a++) "category" === o[a].get("type") && n.push(a);
18540                        i[e.axisIndex] = n, n.length && (t = !1)
18541                    }
18542                }, this), t && this.ecModel.eachSeries(function(t) {
18543                    this._isSeriesHasAllAxesTypeOf(t, "value") && kP(function(e) {
18544                        var n = i[e.axisIndex],
18545                            o = t.get(e.axisIndex),
18546                            a = t.get(e.axisId);
18547                        l(n, o = t.ecModel.queryComponents({ mainType: e.axis, index: o, id: a })[0].componentIndex) < 0 && n.push(o)
18548                    })
18549                }, this)
18550            },
18551            _autoSetOrient: function() {
18552                var t;
18553                this.eachTargetAxis(function(e) {!t && (t = e.name) }, this), this.option.orient = "y" === t ? "vertical" : "horizontal"
18554            },
18555            _isSeriesHasAllAxesTypeOf: function(t, e) {
18556                var i = !0;
18557                return kP(function(n) {
18558                    var o = t.get(n.axisIndex),
18559                        a = this.dependentModels[n.axis][o];
18560                    a && a.get("type") === e || (i = !1)
18561                }, this), i
18562            },
18563            _setDefaultThrottle: function(t) {
18564                if (t.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) {
18565                    var e = this.ecModel.option;
18566                    this.option.throttle = e.animation && e.animationDurationUpdate > 0 ? 100 : 20
18567                }
18568            },
18569            getFirstTargetAxisModel: function() {
18570                var t;
18571                return kP(function(e) {
18572                    if (null == t) {
18573                        var i = this.get(e.axisIndex);
18574                        i.length && (t = this.dependentModels[e.axis][i[0]])
18575                    }
18576                }, this), t
18577            },
18578            eachTargetAxis: function(t, e) {
18579                var i = this.ecModel;
18580                kP(function(n) { LP(this.get(n.axisIndex), function(o) { t.call(e, n, o, this, i) }, this) }, this)
18581            },
18582            getAxisProxy: function(t, e) { return this._axisProxies[t + "_" + e] },
18583            getAxisModel: function(t, e) { var i = this.getAxisProxy(t, e); return i && i.getAxisModel() },
18584            setRawRange: function(t, e) {
18585                var i = this.option;
18586                LP([
18587                    ["start", "startValue"],
18588                    ["end", "endValue"]
18589                ], function(e) { null == t[e[0]] && null == t[e[1]] || (i[e[0]] = t[e[0]], i[e[1]] = t[e[1]]) }, this), !e && $v(this, t)
18590            },
18591            getPercentRange: function() { var t = this.findRepresentativeAxisProxy(); if (t) return t.getDataPercentWindow() },
18592            getValueRange: function(t, e) { if (null != t || null != e) return this.getAxisProxy(t, e).getDataValueWindow(); var i = this.findRepresentativeAxisProxy(); return i ? i.getDataValueWindow() : void 0 },
18593            findRepresentativeAxisProxy: function(t) {
18594                if (t) return t.__dzAxisProxy;
18595                var e = this._axisProxies;
18596                for (var i in e)
18597                    if (e.hasOwnProperty(i) && e[i].hostedBy(this)) return e[i];
18598                for (var i in e)
18599                    if (e.hasOwnProperty(i) && !e[i].hostedBy(this)) return e[i]
18600            },
18601            getRangePropMode: function() { return this._rangePropMode.slice() }
18602        }),
18603        NP = $M.extend({
18604            type: "dataZoom",
18605            render: function(t, e, i, n) { this.dataZoomModel = t, this.ecModel = e, this.api = i },
18606            getTargetCoordInfo: function() {
18607                function t(t, e, i, n) {
18608                    for (var o, a = 0; a < i.length; a++)
18609                        if (i[a].model === t) { o = i[a]; break }
18610                    o || i.push(o = { model: t, axisModels: [], coordIndex: n }), o.axisModels.push(e)
18611                }
18612                var e = this.dataZoomModel,
18613                    i = this.ecModel,
18614                    n = {};
18615                return e.eachTargetAxis(function(e, o) {
18616                    var a = i.getComponent(e.axis, o);
18617                    if (a) {
18618                        var r = a.getCoordSysModel();
18619                        r && t(r, a, n[r.mainType] || (n[r.mainType] = []), r.componentIndex)
18620                    }
18621                }, this), n
18622            }
18623        }),
18624        OP = (PP.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)", dataBackgroun
18624d: { 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" } } }), SS),
18625        EP = To,
18626        RP = Co,
18627        zP = m,
18628        BP = d,
18629        VP = "horizontal",
18630        GP = 5,
18631        WP = ["line", "bar", "candlestick", "scatter"],
18632        FP = NP.extend({
18633            type: "dataZoom.slider",
18634            init: function(t, e) { this._displayables = {}, this._orient, this._range, this._handleEnds, this._size, this._handleWidth, this._handleHeight, this._location, this._dragging, this._dataShadowInfo, this.api = e },
18635            render: function(t, e, i, n) { FP.superApply(this, "render", arguments), wr(this, "_dispatchZoomAction", this.dataZoomModel.get("throttle"), "fixRate"), this._orient = t.get("orient"), !1 !== this.dataZoomModel.get("show") ? (n && "dataZoom" === n.type && n.from === this.uid || this._buildView(), this._updateView()) : this.group.removeAll() },
18636            remove: function() { FP.superApply(this, "remove", arguments), br(this, "_dispatchZoomAction") },
18637            dispose: function() { FP.superApply(this, "dispose", arguments), br(this, "_dispatchZoomAction") },
18638            _buildView: function() {
18639                var t = this.group;
18640                t.removeAll(), this._resetLocation(), this._resetInterval();
18641                var e = this._displayables.barGroup = new sw;
18642                this._renderBackground(), this._renderHandle(), this._renderDataShadow(), t.add(e), this._positionGroup()
18643            },
18644            _resetLocation: function() {
18645                var t = this.dataZoomModel,
18646                    e = this.api,
18647                    i = this._findCoordRect(),
18648                    n = { width: e.getWidth(), height: e.getHeight() },
18649                    o = this._orient === VP ? { right: n.width - i.x - i.width, top: n.height - 30 - 7, width: i.width, height: 30 } : { right: 7, top: i.y, width: 30, height: i.height },
18650                    a = na(t.option);
18651                d(["right", "top", "width", "height"], function(t) { "ph" === a[t] && (a[t] = o[t]) });
18652                var r = Qo(a, n, t.padding);
18653                this._location = { x: r.x, y: r.y }, this._size = [r.width, r.height], "vertical" === this._orient && this._size.reverse()
18654            },
18655            _positionGroup: function() {
18656                var t = this.group,
18657                    e = this._location,
18658                    i = this._orient,
18659                    n = this.dataZoomModel.getFirstTargetAxisModel(),
18660                    o = n && n.get("inverse"),
18661                    a = this._displayables.barGroup,
18662                    r = (this._dataShadowInfo || {}).otherAxisInverse;
18663                a.attr(i !== VP || o ? i === VP && o ? { scale: r ? [-1, 1] : [-1, -1] } : "vertical" !== i || o ? { scale: r ? [-1, -1] : [-1, 1], rotation: Math.PI / 2 } : { scale: r ? [1, -1] : [1, 1], rotation: Math.PI / 2 } : { scale: r ? [1, 1] : [1, -1] });
18664                var s = t.getBoundingRect([a]);
18665                t.attr("position", [e.x - s.x, e.y - s.y])
18666            },
18667            _getViewExtent: function() { return [0, this._size[0]] },
18668            _renderBackground: function() {
18669                var t = this.dataZoomModel,
18670                    e = this._size,
18671                    i = this._displayables.barGroup;
18672                i.add(new OP({ silent: !0, shape: { x: 0, y: 0, width: e[0], height: e[1] }, style: { fill: t.get("backgroundColor") }, z2: -40 })), i.add(new OP({ shape: { x: 0, y: 0, width: e[0], height: e[1] }, style: { fill: "transparent" }, z2: 0, onclick: m(this._onClickPanelClick, this) }))
18673            },
18674            _renderDataShadow: function() {
18675                var t = this._dataShadowInfo = this._prepareDataShadowInfo();
18676                if (t) {
18677                    var e = this._size,
18678                        i = t.series,
18679                        n = i.getRawData(),
18680                        o = i.getShadowDim ? i.getShadowDim() : t.otherDim;
18681                    if (null != o) {
18682                        var a = n.getDataExtent(o),
18683                            s = .3 * (a[1] - a[0]);
18684                        a = [a[0] - s, a[1] + s];
18685                        var l, u = [0, e[1]],
18686                            h = [0, e[0]],
18687                            c = [
18688                                [e[0], 0],
18689                                [0, 0]
18690                            ],
18691                            d = [],
18692                            f = h[1] / (n.count() - 1),
18693                            p = 0,
18694                            g = Math.round(n.count() / e[0]);
18695                        n.each([o], function(t, e) {
18696                            if (g > 0 && e % g) p += f;
18697                            else {
18698                                var i = null == t || isNaN(t) || "" === t,
18699                                    n = i ? 0 : EP(t, a, u, !0);
18700                                i && !l && e ? (c.push([c[c.length - 1][0], 0]), d.push([d[d.length - 1][0], 0])) : !i && l && (c.push([p, 0]), d.push([p, 0])), c.push([p, n]), d.push([p, n]), p += f, l = i
18701                            }
18702                        });
18703                        var m = this.dataZoomModel;
18704                        this._displayables.barGroup.add(new wS({ shape: { points: c }
18704, style: r({ fill: m.get("dataBackgroundColor") }, m.getModel("dataBackground.areaStyle").getAreaStyle()), silent: !0, z2: -20 })), this._displayables.barGroup.add(new bS({ shape: { points: d }, style: m.getModel("dataBackground.lineStyle").getLineStyle(), silent: !0, z2: -19 }))
18705                    }
18706                }
18707            },
18708            _prepareDataShadowInfo: function() {
18709                var t = this.dataZoomModel,
18710                    e = t.get("showDataShadow");
18711                if (!1 !== e) {
18712                    var i, n = this.ecModel;
18713                    return t.eachTargetAxis(function(o, a) {
18714                        d(t.getAxisProxy(o.name, a).getTargetSeriesModels(), function(t) {
18715                            if (!(i || !0 !== e && l(WP, t.get("type")) < 0)) {
18716                                var r, s = n.getComponent(o.axis, a).axis,
18717                                    u = Jv(o.name),
18718                                    h = t.coordinateSystem;
18719                                null != u && h.getOtherAxis && (r = h.getOtherAxis(s).inverse), u = t.getData().mapDimension(u), i = { thisAxis: s, series: t, thisDim: o.name, otherDim: u, otherAxisInverse: r }
18720                            }
18721                        }, this)
18722                    }, this), i
18723                }
18724            },
18725            _renderHandle: function() {
18726                var t = this._displayables,
18727                    e = t.handles = [],
18728                    i = t.handleLabels = [],
18729                    n = this._displayables.barGroup,
18730                    o = this._size,
18731                    a = this.dataZoomModel;
18732                n.add(t.filler = new OP({ draggable: !0, cursor: Qv(this._orient), drift: zP(this._onDragMove, this, "all"), onmousemove: function(t) { zw(t.event) }, ondragstart: zP(this._showDataInfo, this, !0), ondragend: zP(this._onDragEnd, this), onmouseover: zP(this._showDataInfo, this, !0), onmouseout: zP(this._showDataInfo, this, !1), style: { fill: a.get("fillerColor"), textPosition: "inside" } })), n.add(new OP(Wn({ silent: !0, shape: { x: 0, y: 0, width: o[0], height: o[1] }, style: { stroke: a.get("dataBackgroundColor") || a.get("borderColor"), lineWidth: 1, fill: "rgba(0,0,0,0)" } }))), BP([0, 1], function(t) {
18733                    var o = _o(a.get("handleIcon"), { cursor: Qv(this._orient), draggable: !0, drift: zP(this._onDragMove, this, t), onmousemove: function(t) { zw(t.event) }, ondragend: zP(this._onDragEnd, this), onmouseover: zP(this._showDataInfo, this, !0), onmouseout: zP(this._showDataInfo, this, !1) }, { x: -1, y: 0, width: 2, height: 2 }),
18734                        r = o.getBoundingRect();
18735                    this._handleHeight = Do(a.get("handleSize"), this._size[1]), this._handleWidth = r.width / r.height * this._handleHeight, o.setStyle(a.getModel("handleStyle").getItemStyle());
18736                    var s = a.get("handleColor");
18737                    null != s && (o.style.fill = s), n.add(e[t] = o);
18738                    var l = a.textStyleModel;
18739                    this.group.add(i[t] = new fS({ silent: !0, invisible: !0, style: { x: 0, y: 0, text: "", textVerticalAlign: "middle", textAlign: "center", textFill: l.getTextColor(), textFont: l.getFont() }, z2: 10 }))
18740                }, this)
18741            },
18742            _resetInterval: function() {
18743                var t = this._range = this.dataZoomModel.getPercentRange(),
18744                    e = this._getViewExtent();
18745                this._handleEnds = [EP(t[0], [0, 100], e, !0), EP(t[1], [0, 100], e, !0)]
18746            },
18747            _updateInterval: function(t, e) {
18748                var i = this.dataZoomModel,
18749                    n = this._handleEnds,
18750                    o = this._getViewExtent(),
18751                    a = i.findRepresentativeAxisProxy().getMinMaxSpan(),
18752                    r = [0, 100];
18753                PC(e, n, o, i.get("zoomLock") ? "all" : t, null != a.minSpan ? EP(a.minSpan, r, o, !0) : null, null != a.maxSpan ? EP(a.maxSpan, r, o, !0) : null);
18754                var s = this._range,
18755                    l = this._range = RP([EP(n[0], o, r, !0), EP(n[1], o, r, !0)]);
18756                return !s || s[0] !== l[0] || s[1] !== l[1]
18757            },
18758            _updateView: function(t) {
18759                var e = this._displayables,
18760                    i = this._handleEnds,
18761                    n = RP(i.slice()),
18762                    o = this._size;
18763                BP([0, 1], function(t) {
18764                    var n = e.handles[t],
18765                        a = this._handleHeight;
18766                    n.attr({ scale: [a / 2, a / 2], position: [i[t], o[1] / 2 - a / 2] })
18767                }, this), e.filler.setShape({ x: n[0], y: 0, width: n[1] - n[0], height: o[1] }), this._updateDataInfo(t)
18768            },
18769            _updateDataInfo: function(t) {
18770                function e(t) {
18771                    var e = go(n.handles[t].parent, this.group),
18772                        i = vo(0 === t ? "right" : "left", e),
18773                        s = this._handleWidth / 2 + GP,
18774                        l = mo([c[t] + (0 === t ? -s : s), this._size[1] / 2], e);
18775                    o[t].setStyle({ x: l[0], y: l[1], textVerticalAlign: a === VP ? "middle" : i, textAlign: a === VP ? i : "center", text: r[t] })
18776                }
18777                var i = this.dataZoomModel,
18778                    n = this._displayables,
18779                    o = n.handleLabels,
18780                    a = this._orient,
18781                    r = ["", ""];
18782                if (i.get("showDetail")) {
18783                    var s = i.findRepresentativeAxisProxy();
18784                    if (s) {
18785                        var l = s.getAxisModel().axis,
18786                            u = this._range,
18787                            h = t ? s.calculateDataWindow({ start: u[0], end: u[1] }).valueWindow : s.getDataValueWindow();
18788                        r = [this._formatLabel(h[0], l), this._formatLabel(h[1], l)]
18789                    }
18790                }
18791                var c = RP(this._handleEnds.slice());
18792                e.call(this, 0), e.call(this, 1)
18793            },
18794            _formatLabel: function(t, e) {
18795                var i = this.dataZoomModel,
18796                    n = i.get("labelFormatter"),
18797                    o = i.get("labelPrecision");
18798                null != o && "auto" !== o || (o = e.getPixelPrecision());
18799                var a = null == t || isNaN(t) ? "" : "category" === e.type || "time" === e.type ? e.scale.getLabel(Math.round(t)) : t.toFixed(Math.min(o, 20));
18800                return x(n) ? n(t, a) : _(n) ? n.replace("{value}", a) : a
18801            },
18802            _showDataInfo: function(t) {
18803                t = this._dragging || t;
18804                var e = this._displayables.handleLabels;
18805                e[0].attr("invisible", !t), e[1].attr("invisible", !t)
18806            },
18807            _onDragMove: function(t, e, i) {
18808                this._dragging = !0;
18809                var n = mo([e, i], this._displayables.barGroup.getL
18809ocalTransform(), !0),
18810                    o = this._updateInterval(t, n[0]),
18811                    a = this.dataZoomModel.get("realtime");
18812                this._updateView(!a), o && a && this._dispatchZoomAction()
18813            },
18814            _onDragEnd: function() { this._dragging = !1, this._showDataInfo(!1), !this.dataZoomModel.get("realtime") && this._dispatchZoomAction() },
18815            _onClickPanelClick: function(t) {
18816                var e = this._size,
18817                    i = this._displayables.barGroup.transformCoordToLocal(t.offsetX, t.offsetY);
18818                if (!(i[0] < 0 || i[0] > e[0] || i[1] < 0 || i[1] > e[1])) {
18819                    var n = this._handleEnds,
18820                        o = (n[0] + n[1]) / 2,
18821                        a = this._updateInterval("all", i[0] - o);
18822                    this._updateView(), a && this._dispatchZoomAction()
18823                }
18824            },
18825            _dispatchZoomAction: function() {
18826                var t = this._range;
18827                this.api.dispatchAction({ type: "dataZoom", from: this.uid, dataZoomId: this.dataZoomModel.id, start: t[0], end: t[1] })
18828            },
18829            _findCoordRect: function() {
18830                var t;
18831                if (BP(this.getTargetCoordInfo(), function(e) {
18832                        if (!t && e.length) {
18833                            var i = e[0].model.coordinateSystem;
18834                            t = i.getRect && i.getRect()
18835                        }
18836                    }), !t) {
18837                    var e = this.api.getWidth(),
18838                        i = this.api.getHeight();
18839                    t = { x: .2 * e, y: .2 * i, width: .6 * e, height: .6 * i }
18840                }
18841                return t
18842            }
18843        });
18844    PP.extend({ type: "dataZoom.inside", defaultOption: { disabled: !1, zoomLock: !1, zoomOnMouseWheel: !0, moveOnMouseMove: !0, preventDefaultMouseMove: !0 } });
18845    var HP = v,
18846        ZP = "\0_ec_dataZoom_roams",
18847        UP = m,
18848        XP = NP.extend({
18849            type: "dataZoom.inside",
18850            init: function(t, e) { this._range },
18851            render: function(t, e, i, n) {
18852                XP.superApply(this, "render", arguments), this._range = t.getPercentRange(), d(this.getTargetCoordInfo(), function(e, n) {
18853                    var o = f(e, function(t) { return iy(t.model) });
18854                    d(e, function(e) {
18855                        var a = e.model,
18856                            r = t.option;
18857                        ty(i, { coordId: iy(a), allCoordIds: o, containsPoint: function(t, e, i) { return a.coordinateSystem.containPoint([e, i]) }, dataZoomId: t.id, throttleRate: t.get("throttle", !0), panGetRange: UP(this._onPan, this, e, n), zoomGetRange: UP(this._onZoom, this, e, n), zoomLock: r.zoomLock, disabled: r.disabled, roamControllerOpt: { zoomOnMouseWheel: r.zoomOnMouseWheel, moveOnMouseMove: r.moveOnMouseMove, preventDefaultMouseMove: r.preventDefaultMouseMove } })
18858                    }, this)
18859                }, this)
18860            },
18861            dispose: function() { ey(this.api, this.dataZoomModel.id), XP.superApply(this, "dispose", arguments), this._range = null },
18862            _onPan: function(t, e, i, n, o, a, r, s, l) {
18863                var u = this._range,
18864                    h = u.slice(),
18865                    c = t.axisModels[0];
18866                if (c) {
18867                    var d = jP[e]([a, r], [s, l], c, i, t),
18868                        f = d.signal * (h[1] - h[0]) * d.pixel / d.pixelLength;
18869                    return PC(f, h, [0, 100], "all"), this._range = h, u[0] !== h[0] || u[1] !== h[1] ? h : void 0
18870                }
18871            },
18872            _onZoom: function(t, e, i, n, o, a) {
18873                var r = this._range,
18874                    s = r.slice(),
18875                    l = t.axisModels[0];
18876                if (l) {
18877                    var u = jP[e](null, [o, a], l, i, t),
18878                        h = (u.signal > 0 ? u.pixelStart + u.pixelLength - u.pixel : u.pixel - u.pixelStart) / u.pixelLength * (s[1] - s[0]) + s[0];
18879                    n = Math.max(1 / n, 0), s[0] = (s[0] - h) * n + h, s[1] = (s[1] - h) * n + h;
18880                    var c = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
18881                    return PC(0, s, [0, 100], 0, c.minSpan, c.maxSpan), this._range = s, r[0] !== s[0] || r[1] !== s[1] ? s : void 0
18882                }
18883            }
18884        }),
18885        jP = {
18886            grid: function(t, e, i, n, o) {
18887                var a = i.axis,
18888                    r = {},
18889                    s = o.model.coordinateSystem.getRect();
18890                return t = t || [0, 0], "x" === a.dim ? (r.pixel = e[0] - t[0], r.pixelLength = s.width, r.pixelStart = s.x, r.signal = a.inverse ? 1 : -1) : (r.pixel = e[1] - t[1], r.pixelLength = s.height, r.pixelStart = s.y, r.signal = a.inverse ? -1 : 1), r
18891            },
18892            polar: function(t, e, i, n, o) {
18893                var a = i.axis,
18894                    r = {},
18895                    s = o.model.coordinateSystem,
18896                    l = s.getRadiusAxis().getExtent(),
18897                    u = s.getAngleAxis().getExtent();
18898                return t = t ? s.pointToCoord(t) : [0, 0], e = s.pointToCoord(e), "radiusAxis" === i.mainType ? (r.pixel = e[0] - t[0], r.pixelLength = l[1] - l[0], r.pixelStart = l[0], r.signal = a.inverse ? 1 : -1) : (r.pixel = e[1] - t[1], r.pixelLength = u[1] - u[0], r.pixelStart = u[0], r.signal = a.inverse ? -1 : 1), r
18899            },
18900            singleAxis: function(t, e, i, n, o) {
18901                var a = i.axis,
18902                    r = o.model.coordinateSystem.getRect(),
18903                    s = {};
18904                return t = t || [0, 0], "horizontal" === a.orient ? (s.pixel = e[0] - t[0], s.pixelLength = r.width, s.pixelStart = r.x, s.signal = a.inverse ? 1 : -1) : (s.pixel = e[1] - t[1], s.pixelLength = r.height, s.pixelStart = r.y, s.signal = a.inverse ? -1 : 1), s
18905            }
18906        };
18907    hs({
18908        getTargetSeries: function(t) { var e = R(); return t.eachComponent("dataZoom", function(t) { t.eachTargetAxis(function(t, i, n) { d(n.getAxisProxy(t.name, i).getTargetSeriesModels(), function(t) { e.set(t.uid, t) }) }) }), e },
18909        modifyOutputEnd: !0,
18910        overallReset: function(t, e) {
18911            t.eachComponent("dataZoom", function(t) { t.eachTargetAxis(function(t, i, n) { n.getAxisProxy(t.name, i).reset(n, e) }), t.eachTargetAxis(function(t, i, n) { n.getAxisProxy(t.name, i).filterData(n, e) }) }), t.eachComponent("dataZoom", function(t) {
18912                var e = t.findRepresentativeAxisProxy(),
18913                    i = e.getDataPercentWindow(),
18914                    n = e.getDataValueWindow();
18915                t.setRawRange({ start: i[0], end: i[1], startValue: n[0], endValue: n[1] }, !0)
18916            })
18917        }
18918    }), cs("dataZoom", function(t, e) {
18919        var i = Uv(m(e.eachComponent, e, "dataZoom"), TP, function(t, e) { return t.get(e.axisIndex) }),
18920            n = [];
18921        e.eachComponent({ mainType: "dataZoom", query: t }, function(t, e) { n.push.apply(n, i(t).nodes) }), d(n, function(e, i) { e.setRawRange({ start: t.start, end: t.end, startValue: t.startValue, endValue: t.endValue }) })
18922    });
18923    var YP = d,
18924        qP = function(t) {
18925            var e = t && t.visualMap;
18926            y(e) || (e = e ? [e] : []), YP(e, function(t) {
18927                if (t) {
18928                    cy(t, "splitList") && !cy(t, "pieces") && (t.pieces = t.splitList, delete t.splitList);
18929                    var e = t.pieces;
18930                    e && y(e) && YP(e, function(t) { w(t) && (cy(t, "start") && !cy(t, "min") && (t.min = t.start), cy(t, "end") && !cy(t, "max") && (t.max = t.end)) })
18931                }
18932            })
18933        };
18934    hM.registerSubTypeDefaulter("visualMap", function(t) { return t.categories || (t.pieces ? t.pieces.length > 0 : t.splitNumber > 0) && !t.calculable ? "piecewise" : "continuous" });
18935    var KP = LI.VISUAL.COMPONENT;
18936    ps(KP, { createOnAllSeries: !0, reset: function(t, e) { var i = []; return e.eachComponent("visualMap", function(e) { var n = t.pipelineContext;!e.isTargetSeries(t) || n && n.large || i.push(gv(e.stateList, e.targetVisuals, m(e.getValueState, e), e.getDataDimension(t.getData()))) }), i } }), ps(KP, {
18937        createOnAllSeries: !0,
18938        reset: function(t, e) {
18939            var i = t.getData(),
18940                n = [];
18941            e.eachComponent("visualMap", function(e) {
18942                if (e.isTargetSeries(t)) {
18943                    var o = e.getVisualMeta(m(dy, null, t, e)) || { stops: [], outerColors: [] },
18944                        a = e.getDataDimension(i),
18945                        r = i.getDimensionInfo(a);
18946                    null != r && (o.dimension = r.index, n.push(o))
18947                }
18948            }), t.getData().setVisual("visualMeta", n)
18949        }
18950    });
18951    var $P = { get: function(t, e, n) { var o = i((JP[t] || {})[e]); return n && y(o) ? o[o.length - 1] : o } },
18952        JP = { 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] } },
18953        QP = ZA.mapVisual,
18954        tN = ZA.eachVisual,
18955        eN = y,
18956        iN = d,
18957        nN = Co,
18958        oN = To,
18959        aN = B,
18960        rN = vs({
18961            type: "visualMap",
18962            dependencies: ["series"],
18963            stateList: ["inRange", "outOfRange"],
18964            replacableOptionKeys: ["inRange", "outOfRange", "target", "controller", "color"],
18965            dataBound: [-1 / 0, 1 / 0],
18966            layoutMode: { type: "box", ignoreSize: !0 },
18967            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" } },
18968            init: function(t, e, i) { this._dataExtent, this.targetVisuals = {}, this.controllerVisuals = {}, this.textStyleModel, this.itemSize, this.mergeDefaultAndTheme(t, i) },
18969            optionUpdated: function(t, e) {
18970                var i = this.option;
18971                a_.canvasSupported || (i.realtime = !1), !e && fv(i, t, this.replacableOptionKeys), this.textStyleModel = this.getModel("textStyle"), this.resetItemSize(), this.completeVisualOption()
18972            },
18973            resetVisual: function(t) {
18974                var e = this.stateList;
18975                t = m(t, this), this.controllerVisuals = dv(this.option.controller, e, t), this.targetVisuals = dv(this.option.target, e, t)
18976            },
18977            getTargetSeriesIndices: function() {
18978                var t = this.option.seriesIndex,
18979                    e = [];
18980                return null == t || "all" === t ? this.ecModel.eachSeries(function(t, i) { e.push(i) }) : e = Si(t), e
18981            },
18982            eachTargetSeries: function(t, e) { d(this.getTargetSeriesIndices(), function(i) { t.call(e, this.ecModel.getSeriesByIndex(i)) }, this) },
18983            isTargetSeries: function(t) { var e = !1; return this.eachTargetSeries(function(i) { i === t && (e = !0) }), e },
18984            formatValueText: function(t, e, i) {
18985                function n(t) { return t === l[0] ? "min" : t === l[1] ? "max" : (+t).toFixed(Math.min(s, 20)) }
18986                var o, a, r = this.option,
18987                    s = r.precision,
18988                    l = this.dataBound,
18989                    u = r.formatter;
18990                return i = i || ["<", ">"], y(t) && (t = t.slice(), o = !0), a = e ? t : o ? [n(t[0]), n(t[1])] : n(t), _(u) ? u.replace("{value}", o ? a[0] : a).replace("{value2}", o ? a[1] : a) : x(u) ? o ? u(t[0], t[1]) : u(t) : o ? t[0] === l[0] ? i[0] + " " + a[1] : t[1] === l[1] ? i[1] + " " + a[0] : a[0] + " - " + a[1] : a
18991            },
18992            resetExtent: function() {
18993                var t = this.option,
18994                    e = nN([t.min, t.max]);
18995                this._dataExtent = e
18996            },
18997            getDataDimension: function(t) {
18998                var e = this.option.dimension,
18999                    i = t.dimensions;
19000                if (null != e || i.length) { if (null != e) return t.getDimension(e); for (var n = t.dimensions, o = n.length - 1; o >= 0; o--) { var a = n[o]; if (!t.getDimensionInfo(a).isCalculationCoord) return a } }
19001            },
19002            getExtent: function() { return this._dataExtent.slice() },
19003            completeVisualOption: function() {
19004                function t(t) {
19005                    eN(o.color) && !t.inRange && (t.inRange = { color: o.color.slice().reverse() }), t.inRange = t.inRange || { color: e.get("gradientColor") }, iN(this.stateList, function(e) {
19006                        var i = t[e];
19007                        if (_(i)) {
19008                            var n = $P.get(i, "active", l);
19009                            n ? (t[e] = {}, t[e][i] = n) : delete t[e]
19010                        }
19011                    }, this)
19012                }
19013                var e = this.ecModel,
19014                    o = this.option,
19015                    a = { inRange: o.inRange, outOfRange: o.outOfRange },
19016                    r = o.target || (o.target = {}),
19017                    s = o.controller || (o.controller = {});
19018                n(r, a), n(s, a);
19019                var l = this.isCategory();
19020                t.call(this, r), t.call(this, s),
19021                    function(t, e, i) {
19022                        var n = t[e],
19023                            o = t[i];
19024                        n && !o && (o = t[i] = {}, iN(n, function(t, e) {
19025                            if (ZA.isValidType(e)) {
19026                                var i = $P.get(e, "inactive", l);
19027                                null != i && (o[e] = i, "color" !== e || o.hasOwnProperty("opacity") || o.hasOwnProperty("colorAlpha") || (o.opacity = [0, 0]))
19028                            }
19029                        }))
19030                    }.call(this, r, "inRange", "outOfRange"),
19031                    function(t) {
19032                        var e = (t.inRange || {}).symbol || (t.outOfRange || {}).symbol,
19033                            n = (t.inRange || {}).symbolSize || (t.outOfRange || {}).symbolSize,
19034                            o = this.get("inactiveColor");
19035                        iN(this.stateList, function(a) {
19036                            var r = this.itemSize,
19037                                s = t[a];
19038                            s || (s = t[a] = { color: l ? o : [o] }), null == s.symbol && (s.symbol = e && i(e) || (l ? "roundRect" : ["roundRect"])), null == s.symbolSize && (s.symbolSize = n && i(n) || (l ? r[0] : [r[0], r[0]])), s.symbol = QP(s.symbol, function(t) { return "none" === t || "square" === t ? "roundRect" : t });
19039                            var u = s.symbolSize;
19040                            if (null != u) {
19041                                var h = -1 / 0;
19042                                tN(u, function(t) { t > h && (h = t) }), s.symbolSize = QP(u, function(t) { return oN(t, [0, h], [0, r[0]], !0) })
19043                            }
19044                        }, this)
19045                    }.call(this, s)
19046            },
19047            resetItemSize: function() { this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))] },
19048            isCategory: function() { return !!this.option.categories },
19049            setSelected: aN,
19050            getValueState: aN,
19051            getVisualMeta: aN
19052        }),
19053        sN = [20, 140],
19054        lN = rN.extend({
19055            type: "visualMap.continuous",
19056            defaultOption: { align: "auto", calculable: !1, range: null, realtime: !0, itemHeight: null, itemWidth: null, hoverLink: !0, hoverLinkDataSize: null, hoverLinkOnHandle: null },
19057            optionUpdated: function(t, e) { lN.superApply(this, "optionUpdated", arguments), this.resetExtent(), this.resetVisual(function(t) { t.mappingMethod = "linear", t.dataExtent = this.getExtent() }), this._resetRange() },
19058            resetItemSize: function() { lN.superApply(this, "resetItemSize", arguments); var t = this.itemSize; "horizontal" === this._orient && t.reverse(), (null == t[0] || isNaN(t[0])) && (t[0] = sN[0]), (null == t[1] || isNaN(t[1])) && (t[1] = sN[1]) },
19059            _resetRange: function() {
19060                var t = this.getExtent(),
19061                    e = this.option.range;
19062                !e || e.auto ? (t.auto = 1, this.option.range = t) : y(e) && (e[0] > e[1] && e.reverse(), e[0] = Math.max(e[0], t[0]), e[1] = Math.min(e[1], t[1]))
19063            },
19064            completeVisualOption: function() {
19065                rN.prototype.completeVisualOption.apply(this, arguments), d(this.stateList, function(t) {
19066                    var e = this.option.controller[t].symbolSize;
19067                    e && e[0] !== e[1] && (e[0] = 0)
19068                }, this)
19069            },
19070            setSelected: function(t) { this.option.range = t.slice(), this._resetRange() },
19071            getSelected: function() {
19072                var t = this.getExtent(),
19073                    e = Co((this.get("range") || []).slice());
19074                return e[0] > t[1] && (e[0] = t[1]), e[1] > t[1] && (e[1] = t[1]), e[0] < t[0] && (e[0] = t[0]), e[1] < t[0] && (e[1] = t[0]), e
19075            },
19076            getValueState: function(t) {
19077                var e = this.option.range,
19078                    i = this.getExtent();
19079                return (e[0] <= i[0] || e[0] <= t) && (e[1] >= i[1] || t <= e[1]) ? "inRange" : "outOfRange"
19080            },
19081            findTargetDataIndices: function(t) {
19082                var e = [];
19083                return this.eachTargetSeries(function(i) {
19084                    var n = [],
19085                        o = i.getData();
19086                    o.each(this.getDataDimension(o), function(e, i) { t[0] <= e && e <= t[1] && n.push(i) }, this), e.push({ seriesId: i.id, dataIndex: n })
19087                }, this), e
19088            },
19089            getVisualMeta: function(t) {
19090                function e(e, i) { o.push({ value: e, color: t(e, i) }) }
19091                for (var i = fy(0, 0, this.getExtent()), n = fy(0, 0, this.option.range.slice()), o = [], a = 0, r = 0, s = n.length, l = i.length; r < l && (!n.length || i[r] <= n[0]); r++) i[r] < n[a] && e(i[r], "outOfRange");
19092                for (u = 1; a < s; a++, u = 0) u && o.length && e(n[a], "outOfRange"), e(n[a], "inRange");
19093                for (var u = 1; r < l; r++)(!n.length || n[n.length - 1] < i[r]) && (u && (o.length && e(o[o.length - 1].value, "outOfRange"), u = 0), e(i[r], "outOfRange"));
19094                var h = o.length;
19095                return { stops: o, outerColors: [h ? o[0].color : "transparent", h ? o[h - 1].color : "transparent"] }
19096            }
19097        }),
19098        uN = ys({
19099            type: "visualMap",
19100            autoPositionValues: { left: 1, right: 1, top: 1, bottom: 1 },
19101            init: function(t, e) { this.ecModel = t, this.api = e, this.visualMapModel },
19102            render: function(t, e, i, n) { this.visualMapModel = t, !1 !== t.get("show") ? this.doRender.apply(this, arguments) : this.group.removeAll() },
19103            renderBackground: function(t) {
19104                var e = this.visualMapModel,
19105                    i = KS(e.get("padding") || 0),
19106                    n = t.getBoundingRect();
19107                t.add(new SS({ z2: -1, silent: !0, shape: { x: n.x - i[3], y: n.y - i[0], width: n.width + i[3] + i[1], height: n.height + i[0] + i[2] }, style: { fill: e.get("backgroundColor"), stroke: e.get("borderColor"), lineWidth: e.get("borderWidth") } }))
19108            },
19109            getControllerVisual: function(t, e, i) {
19110                function n(t) { return s[t] }
19111
19112                function o(t, e) { s[t] = e }
19113                var a = (i = i || {}).forceState,
19114                    r = this.visualMapModel,
19115                    s = {};
19116                if ("symbol" === e && (s.symbol = r.get("itemSymbol")), "color" === e) {
19117                    var l = r.get("contentColor");
19118                    s.color = l
19119                }
19120                var u = r.controllerVisuals[a || r.getValueState(t)];
19121                return d(ZA.prepareVisualTypes(u), function(a) {
19122                    var r = u[a];
19123                    i.convertOpacityToAlpha && "opacity" === a && (a = "colorAlpha", r = u.__alphaForOpacity), ZA.dependsOn(a, e) && r && r.applyVisual(t, n, o)
19124                }), s[e]
19125            },
19126            positionGroup: function(t) {
19127                var e = this.visualMapModel,
19128                    i = this.api;
19129                ta(t, e.getBoxLayoutParams(), { width: i.getWidth(), height: i.getHeight() })
19130            },
19131            doRender: B
19132        }),
19133        hN = To,
19134        cN = d,
19135        dN = Math.min,
19136        fN = Math.max,
19137        pN = 12,
19138        gN = 6,
19139        mN = uN.extend({
19140            type: "visualMap.continuous",
19141            init: function() { mN.superApply(this, "init", arguments), this._shapes = {}, this._dataInterval = [], this._handleEnds = [], this._orient, this._useHandle, this._hoverLinkDataIndices = [], this._dragging, this._hovering },
19142            doRender: function(t, e, i, n) { n && "selectDataRange" === n.type && n.from === this.uid || this._buildView() },
19143            _buildView: function() {
19144                this.group.removeAll();
19145                var t = this.visualMapModel,
19146                    e = this.group;
19147                this._orient = t.get("orient"), this._useHandle = t.get("calculable"), this._resetInterval(), this._renderBar(e);
19148                var i = t.get("text");
19149                this._renderEndsText(e, i, 0), this._renderEndsText(e, i, 1), this._updateView(!0), this.renderBackground(e), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(e)
19150            },
19151            _renderEndsText: function(t, e, i) {
19152                if (e) {
19153                    var n = e[1 - i];
19154                    n = null != n ? n + "" : "";
19155                    var o = this.visualMapModel,
19156                        a = o.get("textGap"),
19157                        r = o.itemSize,
19158                        s = this._shapes.barGroup,
19159                        l = this._applyTransform([r[0] / 2, 0 === i ? -a : r[1] + a], s),
19160                        u = this._applyTransform(0 === i ? "bottom" : "top", s),
19161                        h = this._orient,
19162                        c = this.visualMapModel.textStyleModel;
19163                    this.group.add(new fS({ style: { x: l[0], y: l[1], textVerticalAlign: "horizontal" === h ? "middle" : u, textAlign: "horizontal" === h ? u : "center", text: n, textFont: c.getFont(), textFill: c.getTextColor() } }))
19164                }
19165            },
19166            _renderBar: function(t) {
19167                var e = this.visualMapModel,
19168                    i = this._shapes,
19169                    n = e.itemSize,
19170                    o = this._orient,
19171                    a = this._useHandle,
19172                    r = py(e, this.api, n),
19173                    s = i.barGroup = this._createBarGroup(r);
19174                s.add(i.outOfRange = my()), s.add(i.inRange = my(null, a ? wy(this._orient) : null, m(this._dragHandle, this, "all", !1), m(this._dragHandle, this, "all", !0)));
19175                var l = e.textStyleModel.getTextRect("国"),
19176                    u = fN(l.width, l.height);
19177                a && (i.handleThumbs = [], i.handleLabels = [], i.handleLabelPoints = [], this._createHandle(s, 0, n, u, o, r), this._createHandle(s, 1, n, u, o, r)), this._createIndicator(s, n, u, o), t.add(s)
19178            },
19179            _createHandle: function(t, e, i, n, o) {
19180                var a = m(this._dragHandle, this, e, !1),
19181                    r = m(this._dragHandle, this, e, !0),
19182                    s = my(vy(e, n), wy(this._orient), a, r);
19183                s.position[0] = i[0], t.add(s);
19184                var l = this.visualMapModel.textStyleModel,
19185                    u = new fS({ draggable: !0, drift: a, onmousemove: function(t) { zw(t.event) }, ondragend: r, style: { x: 0, y: 0, text: "", textFont: l.getFont(), textFill: l.getTextColor() } });
19186                this.group.add(u);
19187                var h = ["horizontal" === o ? n / 2 : 1.5 * n, "horizontal" === o ? 0 === e ? -1.5 * n : 1.5 * n : 0 === e ? -n / 2 : n / 2],
19188                    c = this._shapes;
19189                c.handleThumbs[e] = s, c.handleLabelPoints[e] = h, c.handleLabels[e] = u
19190            },
19191            _createIndicator: function(t, e, i, n) {
19192                var o = my([
19193                    [0, 0]
19194                ], "move");
19195                o.position[0] = e[0], o.attr({ invisible: !0, silent: !0 }), t.add(o);
19196                var a = this.visualMapModel.textStyleModel,
19197                    r = new fS({ silent: !0, invisible: !0, style: { x: 0, y: 0, text: "", textFont: a.getFont(), textFill: a.getTextColor() } });
19198                this.group.add(r);
19199                var s = ["horizontal" === n ? i / 2 : gN + 3, 0],
19200                    l = this._shapes;
19201                l.indicator = o, l.indicatorLabel = r, l.indicatorLabelPoint = s
19202            },
19203            _dragHandle: function(t, e, i, n) {
19204                if (this._useHandle) {
19205                    if (this._dragging = !e, !e) {
19206                        var o = this._applyTransform([i, n], this._shapes.barGroup, !0);
19207                        this._updateInterval(t, o[1]), this._updateView()
19208                    }
19209                    e === !this.visualMapModel.get("realtime") && this.api.dispatchAction({ type: "selectDataRange", from: this.uid, visualMapId: this.visualMapModel.id, selected: this._dataInterval.slice() }), e ? !this._hovering && this._clearHoverLinkToSeries() : _y(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[t], !1)
19210                }
19211            },
19212            _resetInterval: function() {
19213                var t = this.visualMapModel,
19214                    e = this._dataInterval = t.getSelected(),
19215                    i = t.getExtent(),
19216                    n = [0, t.itemSize[1]];
19217                this._handleEnds = [hN(e[0], i, n, !0), hN(e[1], i, n, !0)]
19218            },
19219            _updateInterval: function(t, e) {
19220                e = e || 0;
19221                var i = this.visualMapModel,
19222                    n = this._handleEnds,
19223                    o = [0, i.itemSize[1]];
19224                PC(e, n, o, t, 0);
19225                var a = i.getExtent();
19226                this._dataInterval = [hN(n[0], o, a, !0), hN(n[1], o, a, !0)]
19227            },
19228            _updateView: function(t) {
19229                var e = this.visualMapModel,
19230                    i = e.getExtent(),
19231                    n = this._shapes,
19232                    o = [0, e.itemSize[1]],
19233                    a = t ? o : this._handleEnds,
19234                    r = this._createBarVisual(this._dataInterval, i, a, "inRange"),
19235                    s = this._createBarVisual(i, i, o, "outOfRange");
19236                n.inRange.setStyle({ fill: r.barColor, opacity: r.opacity }).setShape("points", r.barPoints), n.outOfRange.setStyle({ fill: s.barColor, opacity: s.opacity }).setShape("points", s.barPoints), this._updateHandle(a, r)
19237            },
19238            _createBarVisual: function(t, e, i, n) {
19239                var o = { forceState: n, convertOpacityToAlpha: !0 },
19240                    a = this._makeColorGradient(t, o),
19241                    r = [this.getControllerVisual(t[0], "symbolSize", o), this.getControllerVisual(t[1], "symbolSize", o)],
19242                    s = this._createBarPoints(i, r);
19243                return { barColor: new LS(0, 0, 0, 1, a), barPoints: s, handlesColor: [a[0].color, a[a.length - 1].color] }
19244            },
19245            _makeColorGradient: function(t, e) {
19246                var i = [],
19247                    n = (t[1] - t[0]) / 100;
19248                i.push({ color: this.getControllerVisual(t[0], "color", e), offset: 0 });
19249                for (var o = 1; o < 100; o++) {
19250                    var a = t[0] + n * o;
19251                    if (a > t[1]) break;
19252                    i.push({ color: this.getControllerVisual(a, "color", e), offset: o / 100 })
19253                }
19254                return i.push({ color: this.getControllerVisual(t[1], "color", e), offset: 1 }), i
19255            },
19256            _createBarPoints: function(t, e) {
19257                var i = this.visualMapModel.itemSize;
19258                return [
19259                    [i[0] - e[0], t[0]],
19260                    [i[0], t[0]],
19261                    [i[0], t[1]],
19262                    [i[0] - e[1], t[1]]
19263                ]
19264            },
19265            _createBarGroup: function(t) {
19266                var e = this._orient,
19267                    i = this.visualMapModel.get("inverse");
19268                return new sw("horizontal" !== e || i ? "horizontal" === e && i ? { scale: "bottom" === t ? [-1, 1] : [1, 1], rotation: -Math.PI / 2 } : "vertical" !== e || i ? { scale: "left" === t ? [1, 1] : [-1, 1] } : { scale: "left" === t ? [1, -1] : [-1, -1] } : { scale: "bottom" === t ? [1, 1] : [-1, 1], rotation: Math.PI / 2 })
19269            },
19270            _updateHandle: function(t, e) {
19271                if (this._useHandle) {
19272                    var i = this._shapes,
19273                        n = this.visualMapModel,
19274                        o = i.handleThumbs,
19275                        a = i.handleLabels;
19276                    cN([0, 1], function(r) {
19277                        var s = o[r];
19278                        s.setStyle("fill", e.handlesColor[r]), s.position[1] = t[r];
19279                        var l = mo(i.handleLabelPoints[r], go(s, this.group));
19280                        a[r].setStyle({ x: l[0], y: l[1], text: n.formatValueText(this._dataInterval[r]), textVerticalAlign: "middle", textAlign: this._applyTransform("horizontal" === this._orient ? 0 === r ? "bottom" : "top" : "left", i.barGroup) })
19281                    }, this)
19282                }
19283            },
19284            _showIndicator: function(t, e, i, n) {
19285                var o = this.visualMapModel,
19286                    a = o.getExtent(),
19287                    r = o.itemSize,
19288                    s = [0, r[1]],
19289                    l = hN(t, a, s, !0),
19290                    u = this._shapes,
19291                    h = u.indicator;
19292                if (h) {
19293                    h.position[1] = l, h.attr("invisible", !1), h.setShape("points", yy(!!i, n, l, r[1]));
19294                    var c = { convertOpacityToAlpha: !0 },
19295                        d = this.getControllerVisual(t, "color", c);
19296                    h.setStyle("fill", d);
19297                    var f = mo(u.indicatorLabelPoint, go(h, this.group)),
19298                        p = u.indicatorLabel;
19299                    p.attr("invisible", !1);
19300                    var g = this._applyTransform("left", u.barGroup),
19301                        m = this._orient;
19302                    p.setStyle({ text: (i || "") + o.formatValueText(e), textVerticalAlign: "horizontal" === m ? g : "middle", textAlign: "horizontal" === m ? "center" : g, x: f[0], y: f[1] })
19303                }
19304            },
19305            _enableHoverLinkToSeries: function() {
19306                var t = this;
19307                this._shapes.barGroup.on("mousemove", function(e) {
19308                    if (t._hovering = !0, !t._dragging) {
19309                        var i = t.visualMapModel.itemSize,
19310                            n = t._applyTransform([e.offsetX, e.offsetY], t._shapes.barGroup, !0, !0);
19311                        n[1] = dN(fN(0, n[1]), i[1]), t._doHoverLinkToSeries(n[1], 0 <= n[0] && n[0] <= 
19311i[0])
19312                    }
19313                }).on("mouseout", function() { t._hovering = !1, !t._dragging && t._clearHoverLinkToSeries() })
19314            },
19315            _enableHoverLinkFromSeries: function() {
19316                var t = this.api.getZr();
19317                this.visualMapModel.option.hoverLink ? (t.on("mouseover", this._hoverLinkFromSeriesMouseOver, this), t.on("mouseout", this._hideIndicator, this)) : this._clearHoverLinkFromSeries()
19318            },
19319            _doHoverLinkToSeries: function(t, e) {
19320                var i = this.visualMapModel,
19321                    n = i.itemSize;
19322                if (i.option.hoverLink) {
19323                    var o = [0, n[1]],
19324                        a = i.getExtent();
19325                    t = dN(fN(o[0], t), o[1]);
19326                    var r = xy(i, a, o),
19327                        s = [t - r, t + r],
19328                        l = hN(t, o, a, !0),
19329                        u = [hN(s[0], o, a, !0), hN(s[1], o, a, !0)];
19330                    s[0] < o[0] && (u[0] = -1 / 0), s[1] > o[1] && (u[1] = 1 / 0), e && (u[0] === -1 / 0 ? this._showIndicator(l, u[1], "< ", r) : u[1] === 1 / 0 ? this._showIndicator(l, u[0], "> ", r) : this._showIndicator(l, l, "≈ ", r));
19331                    var h = this._hoverLinkDataIndices,
19332                        c = [];
19333                    (e || _y(i)) && (c = this._hoverLinkDataIndices = i.findTargetDataIndices(u));
19334                    var d = ki(h, c);
19335                    this._dispatchHighDown("downplay", gy(d[0])), this._dispatchHighDown("highlight", gy(d[1]))
19336                }
19337            },
19338            _hoverLinkFromSeriesMouseOver: function(t) {
19339                var e = t.target,
19340                    i = this.visualMapModel;
19341                if (e && null != e.dataIndex) {
19342                    var n = this.ecModel.getSeriesByIndex(e.seriesIndex);
19343                    if (i.isTargetSeries(n)) {
19344                        var o = n.getData(e.dataType),
19345                            a = o.get(i.getDataDimension(o), e.dataIndex, !0);
19346                        isNaN(a) || this._showIndicator(a, a)
19347                    }
19348                }
19349            },
19350            _hideIndicator: function() {
19351                var t = this._shapes;
19352                t.indicator && t.indicator.attr("invisible", !0), t.indicatorLabel && t.indicatorLabel.attr("invisible", !0)
19353            },
19354            _clearHoverLinkToSeries: function() {
19355                this._hideIndicator();
19356                var t = this._hoverLinkDataIndices;
19357                this._dispatchHighDown("downplay", gy(t)), t.length = 0
19358            },
19359            _clearHoverLinkFromSeries: function() {
19360                this._hideIndicator();
19361                var t = this.api.getZr();
19362                t.off("mouseover", this._hoverLinkFromSeriesMouseOver), t.off("mouseout", this._hideIndicator)
19363            },
19364            _applyTransform: function(t, e, i, n) { var o = go(e, n ? null : this.group); return BS[y(t) ? "applyTransform" : "transformDirection"](t, o, i) },
19365            _dispatchHighDown: function(t, e) { e && e.length && this.api.dispatchAction({ type: t, batch: e }) },
19366            dispose: function() { this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries() },
19367            remove: function() { this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries() }
19368        });
19369    cs({ type: "selectDataRange", event: "dataRangeSelected", update: "update" }, function(t, e) { e.eachComponent({ mainType: "visualMap", query: t }, function(e) { e.setSelected(t.selected) }) }), us(qP);
19370    var vN = rN.extend({
19371            type: "visualMap.piecewise",
19372            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 },
19373            optionUpdated: function(t, e) {
19374                vN.superApply(this, "optionUpdated", arguments), this._pieceList = [], this.resetExtent();
19375                var n = this._mode = this._determineMode();
19376                yN[this._mode].call(this), this._resetSelected(t, e);
19377                var o = this.option.categories;
19378                this.resetVisual(function(t, e) { "categories" === n ? (t.mappingMethod = "category", t.categories = i(o)) : (t.dataExtent = this.getExtent(), t.mappingMethod = "piecewise", t.pieceList = f(this._pieceList, function(t) { var t = i(t); return "inRange" !== e && (t.visual = null), t })) })
19379            },
19380            completeVisualOption: function() {
19381                function t(t, e, i) { return t && t[e] && (w(t[e]) ? t[e].hasOwnProperty(i) : t[e] === i) }
19382                var e = this.option,
19383                    i = {},
19384                    n = ZA.listVisualTypes(),
19385                    o = this.isCategory();
19386                d(e.pieces, function(t) { d(n, function(e) { t.hasOwnProperty(e) && (i[e] = 1) }) }), d(i, function(i, n) {
19387                    var a = 0;
19388                    d(this.stateList, function(i) { a |= t(e, i, n) || t(e.target, i, n) }, this), !a && d(this.stateList, function(t) {
19389                        (e[t] || (e[t] = {}))[n] = $P.get(n, "inRange" === t ? "active" : "inactive", o)
19390                    })
19391                }, this), rN.prototype.completeVisualOption.apply(this, arguments)
19392            },
19393            _resetSelected: function(t, e) {
19394                var i = this.option,
19395                    n = this._pieceList,
19396                    o = (e ? i : t).selected || {};
19397                if (i.selected = o, d(n, function(t, e) {
19398                        var i = this.getSelectedMapKey(t);
19399                        o.hasOwnProperty(i) || (o[i] = !0)
19400                    }, this), "single" === i.selectedMode) {
19401                    var a = !1;
19402                    d(n, function(t, e) {
19403                        var i = this.getSelectedMapKey(t);
19404                        o[i] && (a ? o[i] = !1 : a = !0)
19405                    }, this)
19406                }
19407            },
19408            getSelectedMapKey: function(t) { return "categories" === this._mode ? t.value + "" : t.index + "" },
19409            getPieceList: function() { return this._pieceList },
19410            _determineMode: function() { var t = this.option; return t.pieces && t.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber" },
19411            setSelected: function(t) { this.option.selected = i(t) },
19412            getValueState: function(t) { var e = ZA.findPieceIndex(t, this._pieceList); return null != e && this.option.selected[this.getSelectedMapKey(this._pieceList[e])] ? "inRange" : "outOfRange" },
19413            findTargetDataIndices: function(t) {
19414                var e = [];
19415                return this.eachTargetSeries(function(i) {
19416                    var n = [],
19417                        o = i.getData();
19418                    o.each(this.getDataDimension(o), function(e, i) { ZA.findPieceIndex(e, this._pieceList) === t && n.push(i) }, this), e.push({ seriesId: i.id, dataIndex: n })
19419                }, this), e
19420            },
19421            getRepresentValue: function(t) {
19422                var e;
19423                if (this.isCategory()) e = t.value;
19424                else if (null != t.value) e = t.value;
19425                else {
19426                    var i = t.interval || [];
19427                    e = i[0] === -1 / 0 && i[1] === 1 / 0 ? 0 : (i[0] + i[1]) / 2
19428                }
19429                return e
19430            },
19431            getVisualMeta: function(t) {
19432                function e(e, a) {
19433                    var r = o.getRepresentValue({ interval: e });
19434                    a || (a = o.getValueState(r));
19435                    var s = t(r, a);
19436                    e[0] === -1 / 0 ? n[0] = s : e[1] === 1 / 0 ? n[1] = s : i.push({ value: e[0], color: s }, { value: e[1], color: s })
19437                }
19438                if (!this.isCategory()) {
19439                    var i = [],
19440                        n = [],
19441                        o = this,
19442                        a = this._pieceList.slice();
19443                    if (a.length) {
19444                        var r = a[0].interval[0];
19445                        r !== -1 / 0 && a.unshift({ interval: [-1 / 0, r] }), (r = a[a.length - 1].interval[1]) !== 1 / 0 && a.push({ interval: [r, 1 / 0] })
19446                    } else a.push({ interval: [-1 / 0, 1 / 0] });
19447                    var s = -1 / 0;
19448                    return d(a, function(t) {
19449                        var i = t.interval;
19450                        i && (i[0] > s && e([s, i[0]], "outOfRange"), e(i.slice()), s = i[1])
19451                    }, this), { stops: i, outerColors: n }
19452                }
19453            }
19454        }),
19455        yN = {
19456            splitNumber: function() {
19457                var t = this.option,
19458                    e = this._pieceList,
19459                    i = Math.min(t.precision, 20),
19460                    n = this.getExtent(),
19461                    o = t.splitNumber;
19462                o = Math.max(parseInt(o, 10), 1), t.splitNumber = o;
19463                for (var a = (n[1] - n[0]) / o; + a.toFixed(i) !== a && i < 5;) i++;
19464                t.precision = i, a = +a.toFixed(i);
19465                var r = 0;
19466                t.minOpen && e.push({ index: r++, interval: [-1 / 0, n[0]], close: [0, 0] });
19467                for (var s = n[0], l = r + o; r < l; s += a) {
19468                    var u = r === o - 1 ? n[1] : s + a;
19469                    e.push({ index: r++, interval: [s, u], close: [1, 1] })
19470                }
19471                t.maxOpen && e.push({ index: r++, interval: [n[1], 1 / 0], close: [0, 0] }), Go(e), d(e, function(t) { t.text = this.formatValueText(t.interval) }, this)
19472            },
19473            categories: function() {
19474                var t = this.option;
19475                d(t.categories, function(t) { this._pieceList.push({ text: this.formatValueText(t, !0), value: t }) }, this), by(t, this._pieceList)
19476            },
19477            pieces: function() {
19478                var t = this.option,
19479                    e = this._pieceList;
19480                d(t.pieces, function(t, i) {
19481                    w(t) || (t = { value: t });
19482                    var n = { text: "", index: i };
19483                    if (null != t.label && (n.text = t.label), t.hasOwnProperty("value")) {
19484                        var o = n.value = t.value;
19485                        n.interval = [o, o], n.close = [1, 1]
19486                    } else {
19487                        for (var a = n.interval = [], r = n.close = [0, 0], s = [1, 0, 1], l = [-1 / 0, 1 / 0], u = [], h = 0; h < 2; h++) {
19488                            for (var c = [
19489                                    ["gte", "gt", "min"],
19490                                    ["lte", "lt", "max"]
19491                                ][h], d = 0; d < 3 && null == a[h]; d++) a[h] = t[c[d]], r[h] = s[d], u[h] = 2 === d;
19492                            null == a[h] && (a[h] = l[h])
19493                        }
19494                        u[0] && a[1] === 1 / 0 && (r[0] = 0), u[1] && a[0] === -1 / 0 && (r[1] = 0), a[0] === a[1] && r[0] && r[1] && (n.value = a[0])
19495                    }
19496                    n.visual = ZA.retrieveVisuals(t), e.push(n)
19497                }, this), by(t, e), Go(e), d(e, function(t) {
19498                    var e = t.close,
19499                        i = [
19500                            ["<", "≤"][e[1]],
19501                            [">", "≥"][e[0]]
19502                        ];
19503                    t.text = t.text || this.formatValueText(null != t.value ? t.value : t.interval, !1, i)
19504                }, this)
19505            }
19506        };
19507    uN.extend({
19508        type: "visualMap.piecewise",
19509        doRender: function() {
19510            var t = this.group;
19511            t.removeAll();
19512            var e = this.visualMapModel,
19513                i = e.get("textGap"),
19514                n = e.textStyleModel,
19515                o = n.getFont(),
19516                a = n.getTextColor(),
19517                r = this._getItemAlign(),
19518                s = e.itemSize,
19519                l = this._getViewData(),
19520                u = l.endsText,
19521                h = T(e.get("showLabel", !0), !u);
19522            u && this._renderEndsText(t, u[0], s, h, r), d(l.viewPieceList, function(n) {
19523                var l = n.piece,
19524                    u = new sw;
19525                u.onclick = m(this._onItemClick, this, l), this._enableHoverLink(u, n.indexInModelPieceList);
19526                var c = e.getRepresentValue(l);
19527                if (this._createItemSymbol(u, c, [0, 0, s[0], s[1]]), h) {
19528                    var d = this.visualMapModel.getValueState(c);
19529                    u.add(new fS({ style: { x: "right" === r ? -i : s[0] + i, y: s[1] / 2, text: l.text, textVerticalAlign: "middle", textAlign: r, textFont: o, textFill: a, opacity: "outOfRange" === d ? .5 : 1 } }))
19530                }
19531                t.add(u)
19532            }, this), u && this._renderEndsText(t, u[1], s, h, r), sM(e.get("orient"), t, e.get("itemGap")), this.renderBackgroun
19532d(t), this.positionGroup(t)
19533        },
19534        _enableHoverLink: function(t, e) {
19535            function i(t) {
19536                var i = this.visualMapModel;
19537                i.option.hoverLink && this.api.dispatchAction({ type: t, batch: gy(i.findTargetDataIndices(e)) })
19538            }
19539            t.on("mouseover", m(i, this, "highlight")).on("mouseout", m(i, this, "downplay"))
19540        },
19541        _getItemAlign: function() {
19542            var t = this.visualMapModel,
19543                e = t.option;
19544            if ("vertical" === e.orient) return py(t, this.api, t.itemSize);
19545            var i = e.align;
19546            return i && "auto" !== i || (i = "left"), i
19547        },
19548        _renderEndsText: function(t, e, i, n, o) {
19549            if (e) {
19550                var a = new sw,
19551                    r = this.visualMapModel.textStyleModel;
19552                a.add(new fS({ style: { x: n ? "right" === o ? i[0] : 0 : i[0] / 2, y: i[1] / 2, textVerticalAlign: "middle", textAlign: n ? o : "center", text: e, textFont: r.getFont(), textFill: r.getTextColor() } })), t.add(a)
19553            }
19554        },
19555        _getViewData: function() {
19556            var t = this.visualMapModel,
19557                e = f(t.getPieceList(), function(t, e) { return { piece: t, indexInModelPieceList: e } }),
19558                i = t.get("text"),
19559                n = t.get("orient"),
19560                o = t.get("inverse");
19561            return ("horizontal" === n ? o : !o) ? e.reverse() : i && (i = i.slice().reverse()), { viewPieceList: e, endsText: i }
19562        },
19563        _createItemSymbol: function(t, e, i) { t.add(Tl(this.getControllerVisual(e, "symbol"), i[0], i[1], i[2], i[3], this.getControllerVisual(e, "color"))) },
19564        _onItemClick: function(t) {
19565            var e = this.visualMapModel,
19566                n = e.option,
19567                o = i(n.selected),
19568                a = e.getSelectedMapKey(t);
19569            "single" === n.selectedMode ? (o[a] = !0, d(o, function(t, e) { o[e] = e === a })) : o[a] = !o[a], this.api.dispatchAction({ type: "selectDataRange", from: this.uid, visualMapId: this.visualMapModel.id, selected: o })
19570        }
19571    });
19572    us(qP);
19573    var xN = Fo,
19574        _N = Zo,
19575        wN = vs({
19576            type: "marker",
19577            dependencies: ["series", "grid", "polar", "geo"],
19578            init: function(t, e, i, n) { this.mergeDefaultAndTheme(t, i), this.mergeOption(t, i, n.createdBySelf, !0) },
19579            isAnimationEnabled: function() { if (a_.node) return !1; var t = this.__hostSeries; return this.getShallow("animation") && t && t.isAnimationEnabled() },
19580            mergeOption: function(t, e, i, n) {
19581                var o = this.constructor,
19582                    r = this.mainType + "Model";
19583                i || e.eachSeries(function(t) {
19584                    var i = t.get(this.mainType, !0),
19585                        s = t[r];
19586                    i && i.data ? (s ? s.mergeOption(i, e, !0) : (n && Sy(i), d(i.data, function(t) { t instanceof Array ? (Sy(t[0]), Sy(t[1])) : Sy(t) }), a(s = new o(i, this, e), { mainType: this.mainType, seriesIndex: t.seriesIndex, name: t.name, createdBySelf: !0 }), s.__hostSeries = t), t[r] = s) : t[r] = null
19587                }, this)
19588            },
19589            formatTooltip: function(t) {
19590                var e = this.getData(),
19591                    i = this.getRawValue(t),
19592                    n = y(i) ? f(i, xN).join(", ") : xN(i),
19593                    o = e.getName(t),
19594                    a = _N(this.name);
19595                return (null != i || o) && (a += "<br />"), o && (a += _N(o), null != i && (a += " : ")), null != i && (a += _N(n)), a
19596            },
19597            getData: function() { return this._data },
19598            setData: function(t) { this._data = t }
19599        });
19600    h(wN, XM), wN.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 } } } });
19601    var bN = l,
19602        SN = v,
19603        MN = { min: SN(Ty, "min"), max: SN(Ty, "max"), average: SN(Ty, "average") },
19604        IN = ys({
19605            type: "marker",
19606            init: function() { this.markerGroupMap = R() },
19607            render: function(t, e, i) {
19608                var n = this.markerGroupMap;
19609                n.each(function(t) { t.__keep = !1 });
19610                var o = this.type + "Model";
19611                e.eachSeries(function(t) {
19612                    var n = t[o];
19613                    n && this.renderSeries(t, n, e, i)
19614                }, this), n.each(function(t) {!t.__keep && this.group.remove(t.group) }, this)
19615            },
19616            renderSeries: function() {}
19617        });
19618    IN.extend({
19619        type: "markPoint",
19620        updateTransform: function(t, e, i) {
19621            e.eachSeries(function(t) {
19622                var e = t.markPointModel;
19623                e && (Ny(e.getData(), t, i), this.markerGroupMap.get(t.id).updateLayout(e))
19624            }, this)
19625        },
19626        renderSeries: function(t, e, i, n) {
19627            var o = t.coordinateSystem,
19628                a = t.id,
19629                r = t.getData(),
19630                s = this.markerGroupMap,
19631                l = s.get(a) || s.set(a, new Ql),
19632                u = Oy(o, t, e);
19633            e.setData(u), Ny(e.getData(), t, n), u.each(function(t) {
19634                var i = u.getItemModel(t),
19635                    n = i.getShallow("symbolSize");
19636                "function" == typeof n && (n = n(e.getRawValue(t), e.getDataParams(t))), u.setItemVisual(t, { symbolSize: n, color: i.get("itemStyle.color") || r.getVisual("color"), symbol: i.getShallow("symbol") })
19637            }), l.updateData(u), this.group.add(l.group), u.eachItemGraphicEl(function(t) { t.traverse(function(t) { t.dataModel = e }) }), l.__keep = !0, l.group.silent = e.get("silent") || t.get("silent")
19638        }
19639    }), us(function(t) { t.markPoint = t.markPoint || {} }), wN.extend({ type: "markLine", defaultOption: { zlevel: 0, z: 5, symbol: ["circle", "arrow"], symbolSize: [8, 16], precision: 2, tooltip: { trigger: "item" }, label: { show: !0, position: "end" }, lineStyle: { type: "dashed" }, emphasis: { label: { show: !0 }, lineStyle: { width: 3 } }, animationEasing: "linear" } });
19640    var TN = function(t, e, o, r) {
19641        var s = t.getData(),
19642            l = r.type;
19643        if (!y(r) && ("min" === l || "max" === l || "average" === l || "median" === l || null != r.xAxis || null != r.yAxis)) {
19644            var u, h;
19645            if (null != r.yAxis || null != r.xAxis) u = null != r.yAxis ? "y" : "x", e.getAxis(u), h = T(r.yAxis, r.xAxis);
19646            else {
19647                var c = Ay(r, s, e, t);
19648                u = c.valueDataDim, c.valueAxis, h = Py(s, u, l)
19649            }
19650            var d = "x" === u ? 0 : 1,
19651                f = 1 - d,
19652                p = i(r),
19653                g = {};
19654            p.type = null, p.coord = [], g.coord = [], p.coord[f] = -1 / 0, g.co
19654ord[f] = 1 / 0;
19655            var m = o.get("precision");
19656            m >= 0 && "number" == typeof h && (h = +h.toFixed(Math.min(m, 20))), p.coord[d] = g.coord[d] = h, r = [p, g, { type: l, valueIndex: r.valueIndex, value: h }]
19657        }
19658        return r = [Dy(t, r[0]), Dy(t, r[1]), a({}, r[2])], r[2].type = r[2].type || "", n(r[2], r[0]), n(r[2], r[1]), r
19659    };
19660    IN.extend({
19661        type: "markLine",
19662        updateTransform: function(t, e, i) {
19663            e.eachSeries(function(t) {
19664                var e = t.markLineModel;
19665                if (e) {
19666                    var n = e.getData(),
19667                        o = e.__from,
19668                        a = e.__to;
19669                    o.each(function(e) { By(o, e, !0, t, i), By(a, e, !1, t, i) }), n.each(function(t) { n.setItemLayout(t, [o.getItemLayout(t), a.getItemLayout(t)]) }), this.markerGroupMap.get(t.id).updateLayout()
19670                }
19671            }, this)
19672        },
19673        renderSeries: function(t, e, i, n) {
19674            function o(e, i, o) {
19675                var a = e.getItemModel(i);
19676                By(e, i, o, t, n), e.setItemVisual(i, { symbolSize: a.get("symbolSize") || g[o ? 0 : 1], symbol: a.get("symbol", !0) || p[o ? 0 : 1], color: a.get("itemStyle.color") || s.getVisual("color") })
19677            }
19678            var a = t.coordinateSystem,
19679                r = t.id,
19680                s = t.getData(),
19681                l = this.markerGroupMap,
19682                u = l.get(r) || l.set(r, new Sd);
19683            this.group.add(u.group);
19684            var h = Vy(a, t, e),
19685                c = h.from,
19686                d = h.to,
19687                f = h.line;
19688            e.__from = c, e.__to = d, e.setData(f);
19689            var p = e.get("symbol"),
19690                g = e.get("symbolSize");
19691            y(p) || (p = [p, p]), "number" == typeof g && (g = [g, g]), h.from.each(function(t) { o(c, t, !0), o(d, t, !1) }), f.each(function(t) {
19692                var e = f.getItemModel(t).get("lineStyle.color");
19693                f.setItemVisual(t, { color: e || c.getItemVisual(t, "color") }), f.setItemLayout(t, [c.getItemLayout(t), d.getItemLayout(t)]), f.setItemVisual(t, { fromSymbolSize: c.getItemVisual(t, "symbolSize"), fromSymbol: c.getItemVisual(t, "symbol"), toSymbolSize: d.getItemVisual(t, "symbolSize"), toSymbol: d.getItemVisual(t, "symbol") })
19694            }), u.updateData(f), h.line.eachItemGraphicEl(function(t, i) { t.traverse(function(t) { t.dataModel = e }) }), u.__keep = !0, u.group.silent = e.get("silent") || t.get("silent")
19695        }
19696    }), us(function(t) { t.markLine = t.markLine || {} }), wN.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" } } } });
19697    var DN = function(t, e, i, n) {
19698            var a = Dy(t, n[0]),
19699                r = Dy(t, n[1]),
19700                s = T,
19701                l = a.coord,
19702                u = r.coord;
19703            l[0] = s(l[0], -1 / 0), l[1] = s(l[1], -1 / 0), u[0] = s(u[0], 1 / 0), u[1] = s(u[1], 1 / 0);
19704            var h = o([{}, a, r]);
19705            return h.coord = [a.coord, r.coord], h.x0 = a.x, h.y0 = a.y, h.x1 = r.x, h.y1 = r.y, h
19706        },
19707        AN = [
19708            ["x0", "y0"],
19709            ["x1", "y0"],
19710            ["x1", "y1"],
19711            ["x0", "y1"]
19712        ];
19713    IN.extend({
19714        type: "markArea",
19715        updateTransform: function(t, e, i) {
19716            e.eachSeries(function(t) {
19717                var e = t.markAreaModel;
19718                if (e) {
19719                    var n = e.getData();
19720                    n.each(function(e) {
19721                        var o = f(AN, function(o) { return Hy(n, e, o, t, i) });
19722                        n.setItemLayout(e, o), n.getItemGraphicEl(e).setShape("points", o)
19723                    })
19724                }
19725            }, this)
19726        },
19727        renderSeries: function(t, e, i, n) {
19728            var o = t.coordinateSystem,
19729                a = t.id,
19730                s = t.getData(),
19731                l = this.markerGroupMap,
19732                u = l.get(a) || l.set(a, { group: new sw });
19733            this.group.add(u.group), u.__keep = !0;
19734            var h = Zy(o, t, e);
19735            e.setData(h), h.each(function(e) { h.setItemLayout(e, f(AN, function(i) { return Hy(h, e, i, t, n) }
19735)), h.setItemVisual(e, { color: s.getVisual("color") }) }), h.diff(u.__data).add(function(t) {
19736                var e = new wS({ shape: { points: h.getItemLayout(t) } });
19737                h.setItemGraphicEl(t, e), u.group.add(e)
19738            }).update(function(t, i) {
19739                var n = u.__data.getItemGraphicEl(i);
19740                fo(n, { shape: { points: h.getItemLayout(t) } }, e, t), u.group.add(n), h.setItemGraphicEl(t, n)
19741            }).remove(function(t) {
19742                var e = u.__data.getItemGraphicEl(t);
19743                u.group.remove(e)
19744            }).execute(), h.eachItemGraphicEl(function(t, i) {
19745                var n = h.getItemModel(i),
19746                    o = n.getModel("label"),
19747                    a = n.getModel("emphasis.label"),
19748                    s = h.getItemVisual(i, "color");
19749                t.useStyle(r(n.getModel("itemStyle").getItemStyle(), { fill: Rt(s, .4), stroke: s })), t.hoverStyle = n.getModel("emphasis.itemStyle").getItemStyle(), io(t.style, t.hoverStyle, o, a, { labelFetcher: e, labelDataIndex: i, defaultText: h.getName(i) || "", isRectText: !0, autoColor: s }), eo(t, {}), t.dataModel = e
19750            }), u.__data = h, u.group.silent = e.get("silent") || t.get("silent")
19751        }
19752    }), us(function(t) { t.markArea = t.markArea || {} });
19753    hM.registerSubTypeDefaulter("timeline", function() { return "slider" }), cs({ type: "timelineChange", event: "timelineChanged", update: "prepareAndUpdate" }, function(t, e) { var i = e.getComponent("timeline"); return i && null != t.currentIndex && (i.setCurrentIndex(t.currentIndex), !i.get("loop", !0) && i.isIndexMax() && i.setPlayState(!1)), e.resetOption("timeline"), r({ currentIndex: i.option.currentIndex }, t) }), cs({ type: "timelinePlayChange", event: "timelinePlayChanged", update: "update" }, function(t, e) {
19754        var i = e.getComponent("timeline");
19755        i && null != t.playState && i.setPlayState(t.playState)
19756    });
19757    var CN = hM.extend({
19758        type: "timeline",
19759        layoutMode: "box",
19760        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: [] },
19761        init: function(t, e, i) { this._data, this._names, this.mergeDefaultAndTheme(t, i), this._initData() },
19762        mergeOption: function(t) { CN.superApply(this, "mergeOption", arguments), this._initData() },
19763        setCurrentIndex: function(t) {
19764            null == t && (t = this.option.currentIndex);
19765            var e = this._data.count();
19766            this.option.loop ? t = (t % e + e) % e : (t >
19766= e && (t = e - 1), t < 0 && (t = 0)), this.option.currentIndex = t
19767        },
19768        getCurrentIndex: function() { return this.option.currentIndex },
19769        isIndexMax: function() { return this.getCurrentIndex() >= this._data.count() - 1 },
19770        setPlayState: function(t) { this.option.autoPlay = !!t },
19771        getPlayState: function() { return !!this.option.autoPlay },
19772        _initData: function() {
19773            var t = this.option,
19774                e = t.data || [],
19775                n = t.axisType,
19776                o = this._names = [];
19777            if ("category" === n) {
19778                var a = [];
19779                d(e, function(t, e) {
19780                    var n, r = Ii(t);
19781                    w(t) ? (n = i(t)).value = e : n = e, a.push(n), _(r) || null != r && !isNaN(r) || (r = ""), o.push(r + "")
19782                }), e = a
19783            }
19784            var r = { category: "ordinal", time: "time" }[n] || "number";
19785            (this._data = new sT([{ name: "value", type: r }], this)).initData(e, o)
19786        },
19787        getData: function() { return this._data },
19788        getCategories: function() { if ("category" === this.get("axisType")) return this._names.slice() }
19789    });
19790    h(CN.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: [] } }), XM);
19791    var LN = $M.extend({ type: "timeline" }),
19792        kN = function(t, e, i, n) { qT.call(this, t, e, i), this.type = n || "value", this.model = null };
19793    kN.prototype = { constructor: kN, getLabelModel: function() { return this.model.getModel("label") }, isHorizontal: function() { return "horizontal" === this.model.get("orient") } }, u(kN, qT);
19794    var PN = m,
19795        NN = d,
19796        ON = Math.PI;
19797    LN.extend({
19798        type: "timeline.slider",
19799        init: function(t, e) { this.api = e, this._axis, this._viewRect, this._timer, this._currentPointer, this._mainGroup, this._labelGroup },
19800        render: function(t, e, i, n) {
19801            if (this.model = t, this.api = i, this.ecModel = e, this.group.removeAll(), t.get("show", !0)) {
19802                var o = this._layout(t, i),
19803                    a = this._createGroup("mainGroup"),
19804                    r = this._createGroup("labelGroup"),
19805                    s = this._axis = this._createAxis(o, t);
19806                t.formatTooltip = function(t) { return Zo(s.scale.getLabel(t)) }, NN(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(e) { this["_render" + e](o, a, s, t) }, this), this._renderAxisLabel(o, r, s, t), this._position(o, t)
19807            }
19808            this._doPlayStop()
19809        },
19810        remove: function() { this._clearTimer(), this.group.removeAll() },
19811        dispose: function() { this._clearTimer() },
19812        _layout: function(t, e) {
19813            var i = t.get("label.position"),
19814                n = t.get("orient"),
19815                o = Yy(t, e);
19816            null == i || "auto" === i ? i = "horizontal" === n ? o.y + o.height / 2 < e.getHeight() / 2 ? "-" : "+" : o.x + o.width / 2 < e.getW
19816idth() / 2 ? "+" : "-" : isNaN(i) && (i = { horizontal: { top: "-", bottom: "+" }, vertical: { left: "-", right: "+" } }[n][i]);
19817            var a = { horizontal: "center", vertical: i >= 0 || "+" === i ? "left" : "right" },
19818                r = { horizontal: i >= 0 || "+" === i ? "top" : "bottom", vertical: "middle" },
19819                s = { horizontal: 0, vertical: ON / 2 },
19820                l = "vertical" === n ? o.height : o.width,
19821                u = t.getModel("controlStyle"),
19822                h = u.get("show", !0),
19823                c = h ? u.get("itemSize") : 0,
19824                d = h ? u.get("itemGap") : 0,
19825                f = c + d,
19826                p = t.get("label.rotate") || 0;
19827            p = p * ON / 180;
19828            var g, m, v, y, x = u.get("position", !0),
19829                _ = h && u.get("showPlayBtn", !0),
19830                w = h && u.get("showPrevBtn", !0),
19831                b = h && u.get("showNextBtn", !0),
19832                S = 0,
19833                M = l;
19834            return "left" === x || "bottom" === x ? (_ && (g = [0, 0], S += f), w && (m = [S, 0], S += f), b && (v = [M - c, 0], M -= f)) : (_ && (g = [M - c, 0], M -= f), w && (m = [0, 0], S += f), b && (v = [M - c, 0], M -= f)), y = [S, M], t.get("inverse") && y.reverse(), { viewRect: o, mainLength: l, orient: n, rotation: s[n], labelRotation: p, labelPosOpt: i, labelAlign: t.get("label.align") || a[n], labelBaseline: t.get("label.verticalAlign") || t.get("label.baseline") || r[n], playPosition: g, prevBtnPosition: m, nextBtnPosition: v, axisExtent: y, controlSize: c, controlGap: d }
19835        },
19836        _position: function(t, e) {
19837            function i(t) {
19838                var e = t.position;
19839                t.origin = [c[0][0] - e[0], c[1][0] - e[1]]
19840            }
19841
19842            function n(t) {
19843                return [
19844                    [t.x, t.x + t.width],
19845                    [t.y, t.y + t.height]
19846                ]
19847            }
19848
19849            function o(t, e, i, n, o) { t[n] += i[n][o] - e[n][o] }
19850            var a = this._mainGroup,
19851                r = this._labelGroup,
19852                s = t.viewRect;
19853            if ("vertical" === t.orient) {
19854                var l = st(),
19855                    u = s.x,
19856                    h = s.y + s.height;
19857                ct(l, l, [-u, -h]), dt(l, l, -ON / 2), ct(l, l, [u, h]), (s = s.clone()).applyTransform(l)
19858            }
19859            var c = n(s),
19860                d = n(a.getBoundingRect()),
19861                f = n(r.getBoundingRect()),
19862                p = a.position,
19863                g = r.position;
19864            g[0] = p[0] = c[0][0];
19865            var m = t.labelPosOpt;
19866            if (isNaN(m)) o(p, d, c, 1, v = "+" === m ? 0 : 1), o(g, f, c, 1, 1 - v);
19867            else {
19868                var v = m >= 0 ? 0 : 1;
19869                o(p, d, c, 1, v), g[1] = p[1] + m
19870            }
19871            a.attr("position", p), r.attr("position", g), a.rotation = r.rotation = t.rotation, i(a), i(r)
19872        },
19873        _createAxis: function(t, e) {
19874            var i = e.getData(),
19875                n = e.get("axisType"),
19876                o = xl(e, n);
19877            o.getTicks = function() { return i.mapArray(["value"], function(t) { return t }) };
19878            var a = i.getDataExtent("value");
19879            o.setExtent(a[0], a[1]), o.niceTicks();
19880            var r = new kN("value", o, t.axisExtent, n);
19881            return r.model = e, r
19882        },
19883        _createGroup: function(t) { var e = this["_" + t] = new sw; return this.group.add(e), e },
19884        _renderAxisLine: function(t, e, i, n) {
19885            var o = i.getExtent();
19886            n.get("lineStyle.show") && e.add(new MS({ shape: { x1: o[0], y1: 0, x2: o[1], y2: 0 }, style: a({ lineCap: "round" }, n.getModel("lineStyle").getLineStyle()), silent: !0, z2: 1 }))
19887        },
19888        _renderAxisTick: function(t, e, i, n) {
19889            var o = n.getData(),
19890                a = i.scale.getTicks();
19891            NN(a, function(t) {
19892                var a = i.dataToCoord(t),
19893                    r = o.getItemModel(t),
19894                    s = r.getModel("itemStyle"),
19895                    l = r.getModel("emphasis.itemStyle"),
19896                    u = { position: [a, 0], onclick: PN(this._changeTimeline, this, t) },
19897                    h = Ky(r, s, e, u);
19898                eo(h, l.getItemStyle()), r.get("tooltip") ? (h.dataIndex = t, h.dataModel = n) : h.dataIndex = h.dataModel = null
19899            }, this)
19900        },
19901        _renderAxisLabel: function(t, e, i, n) {
19902            if (i.getLabelModel().get("show")) {
19903                var o = n.getData(),
19904                    a = i.getViewLabels();
19905                NN(a, function(n) {
19906                    var a = n.tickValue,
19907                        r = o.getItemModel(a),
19908                        s = r.getModel("label"),
19909                        l = r.getModel("emphasis.label"),
19910                        u = i.dataToCoord(n.tickValue),
19911                        h = new fS({ position: [u, 0], rotation: t.labelRotation - t.rotation, onclick: PN(this._changeTimeline, this, a), silent: !1 });
19912                    no(h.style, s, { text: n.formattedLabel, textAlign: t.labelAlign, textVerticalAlign: t.labelBaseline }), e.add(h), eo(h, no({}, l))
19913                }, this)
19914            }
19915        },
19916        _renderControl: function(t, e, i, n) {
19917            function o(t, i, o, h) {
19918                if (t) {
19919                    var c = qy(n, i, u, { position: t, origin: [a / 2, 0], rotation: h ? -r : 0, rectHover: !0, style: s, onclick: o });
19920                    e.add(c), eo(c, l)
19921                }
19922            }
19923            var a = t.controlSize,
19924                r = t.rotation,
19925                s = n.getModel("controlStyle").getItemStyle(),
19926                l = n.getModel("emphasis.controlStyle").getItemStyle(),
19927                u = [0, -a / 2, a, a],
19928                h = n.getPlayState(),
19929                c = n.get("inverse", !0);
19930            o(t.nextBtnPosition, "controlStyle.nextIcon", PN(this._changeTimeline, this, c ? "-" : "+")), o(t.prevBtnPosition, "controlStyle.prevIcon", PN(this._changeTimeline, this, c ? "+" : "-")), o(t.playPosition, "controlStyle." + (h ? "stopIcon" : "playIcon"), PN(this._handlePlayClick, this, !h), !0)
19931        },
19932        _renderCurrentPointer: function(t, e, i, n) {
19933            var o = n.getData(),
19934                a = n.getCurrentIndex(),
19935                r = o.getItemModel(a).getModel("checkpointStyle"),
19936                s = this,
19937                l = { onCreate: function(t) { t.draggable = !0, t.drift = PN(s._handlePointerDrag, s), t.ondragend = PN(s._handlePointerDragend, s), $y(t, a, i, n, !0) }, onUpdate: function(t) { $y(t, a, i, n) } };
19938            this._currentPointer = Ky(r, r, this._mainGroup, {}, this._currentPointer, l)
19939        },
19940        _handlePlayClick: function(t) { this._clearTimer(), this.api.dispatchAction({ type: "timelinePlayChange", playState: t, from: this.uid }) },
19941        _handlePointerDrag: function(t, e, i) { this._clearTimer(), this._pointerChangeTimeline([i.offsetX, i.offsetY]) },
19942        _handlePointerDragend: function(t) { this._pointerChangeTimeline([t.offsetX, t.offsetY], !0) },
19943        _pointerChangeTimeline: function(t, e) {
19944            var i = this._toAxisCoord(t)[0],
19945                n = Co(this._axis.getExtent().slice());
19946            i > n[1] && (i = n[1]), i < n[0] && (i = n[0]), this._currentPointer.position[0] = i, this._currentPointer.dirty();
19947            var o = this._findNearestTick(i),
19948                a = this.model;
19949            (e || o !== a.getCurrentIndex() && a.get("realtime")) && this._changeTimeline(o)
19950        },
19951        _doPlayStop: function() {
19952            this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(PN(function() {
19953                var t = this.model;
19954                this._changeTimeline(t.getCurrentIndex() + (t.get("rewind", !0) ? -1 : 1))
19955            }, this), this.model.get("playInterval")))
19956        },
19957        _toAxisCoord: function(t) { return mo(t, this._mainGroup.getL
19957ocalTransform(), !0) },
19958        _findNearestTick: function(t) {
19959            var e, i = this.model.getData(),
19960                n = 1 / 0,
19961                o = this._axis;
19962            return i.each(["value"], function(i, a) {
19963                var r = o.dataToCoord(i),
19964                    s = Math.abs(r - t);
19965                s < n && (n = s, e = a)
19966            }), e
19967        },
19968        _clearTimer: function() { this._timer && (clearTimeout(this._timer), this._timer = null) },
19969        _changeTimeline: function(t) { var e = this.model.getCurrentIndex(); "+" === t ? t = e + 1 : "-" === t && (t = e - 1), this.api.dispatchAction({ type: "timelineChange", currentIndex: t, from: this.uid }) }
19970    }), us(function(t) {
19971        var e = t && t.timeline;
19972        y(e) || (e = e ? [e] : []), d(e, function(t) { t && Uy(t) })
19973    });
19974    var EN = vs({
19975        type: "toolbox",
19976        layoutMode: { type: "box", ignoreSize: !0 },
19977        optionUpdated: function() {
19978            EN.superApply(this, "optionUpdated", arguments), d(this.option.feature, function(t, e) {
19979                var i = Vv(e);
19980                i && n(t, i.defaultOption)
19981            })
19982        },
19983        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" } } }
19984    });
19985    ys({
19986        type: "toolbox",
19987        render: function(t, e, i, n) {
19988            function o(o, r) {
19989                var s, c = h[o],
19990                    d = h[r],
19991                    f = new wo(l[c], t, t.ecModel);
19992                if (c && !d) {
19993                    if (Jy(c)) s = { model: f, onclick: f.option.onclick, featureName: c };
19994                    else {
19995                        var p = Vv(c);
19996                        if (!p) return;
19997                        s = new p(f, e, i)
19998                    }
19999                    u[c] = s
20000                } else {
20001                    if (!(s = u[d])) return;
20002                    s.model = f, s.ecModel = e, s.api = i
20003                }
20004                c || !d ? f.get("show") && !s.unusable ? (a(f, s, c), f.setIconStatus = function(t, e) {
20005                    var i = this.option,
20006                        n = this.iconPaths;
20007                    i.iconStatus = i.iconStatus || {}, i.iconStatus[t] = e, n[t] && n[t].trigger(e)
20008                }, s.render && s.render(f, e, i, n)) : s.remove && s.remove(e, i) : s.dispose && s.dispose(e, i)
20009            }
20010
20011            function a(n, o, a) {
20012                var l = n.getModel("iconStyle"),
20013                    u = n.getModel("emphasis.iconStyle"),
20014                    h = o.getIcons ? o.getIcons() : n.get("icon"),
20015                    c = n.get("title") || {};
20016                if ("string" == typeof h) {
20017                    var f = h,
20018                        p = c;
20019                    c = {}, (h = {})[a] = f, c[a] = p
20020                }
20021                var g = n.iconPaths = {};
20022                d(h, function(a, h) {
20023                    var d = _o(a, {}, { x: -s / 2, y: -s / 2, width: s, height: s });
20024                    d.setStyle(l.getItemStyle()), d.hoverStyle = u.getItemStyle(), eo(d), t.get("showTitle") && (d.__title = c[h], d.on("mouseover", function() {
20025                        var t = u.getItemStyle();
20026                        d.setStyle({ text: c[h], textPosition: t.textPosition || "bottom", textFill: t.fill || t.stroke || "#000", textAlign: t.textAlign || "center" })
20027                    }).on("mouseout", function() { d.setStyle({ textFill: null }) })), d.trigger(n.get("iconStatus." + h) || "normal"), r.add(d), d.on("click", m(o.onclick, o, e, i, h)), g[h] = d
20028                })
20029            }
20030            var r = this.group;
20031            if (r.removeAll(), t.get("show")) {
20032                var s = +t.get("itemSize"),
20033                    l = t.get("feature") || {},
20034                    u = this._features || (this._features = {}),
20035                    h = [];
20036                d(l, function(t, e) { h.push(e) }), new Ss(this._featureNames || [], h).add(o).update(o).remove(v(o, null)).execute(), this._featureNames = h, Pm(r, t, i), r.add(Nm(r.getBoundingRect
20036(), t)), r.eachChild(function(t) {
20037                    var e = t.__title,
20038                        n = t.hoverStyle;
20039                    if (n && e) {
20040                        var o = me(e, ke(n)),
20041                            a = t.position[0] + r.position[0],
20042                            l = !1;
20043                        t.position[1] + r.position[1] + s + o.height > i.getHeight() && (n.textPosition = "top", l = !0);
20044                        var u = l ? -5 - o.height : s + 8;
20045                        a + o.width / 2 > i.getWidth() ? (n.textPosition = ["100%", u], n.textAlign = "right") : a - o.width / 2 < 0 && (n.textPosition = [0, u], n.textAlign = "left")
20046                    }
20047                })
20048            }
20049        },
20050        updateView: function(t, e, i, n) { d(this._features, function(t) { t.updateView && t.updateView(t.model, e, i, n) }) },
20051        remove: function(t, e) { d(this._features, function(i) { i.remove && i.remove(t, e) }), this.group.removeAll() },
20052        dispose: function(t, e) { d(this._features, function(i) { i.dispose && i.dispose(t, e) }) }
20053    });
20054    var RN = lI.toolbox.saveAsImage;
20055    Qy.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: RN.title, type: "png", name: "", excludeComponents: ["toolbox"], pixelRatio: 1, lang: RN.lang.slice() }, Qy.prototype.unusable = !a_.canvasSupported, Qy.prototype.onclick = function(t, e) {
20056        var i = this.model,
20057            n = i.get("name") || t.get("title.0.text") || "echarts",
20058            o = document.createElement("a"),
20059            a = i.get("type", !0) || "png";
20060        o.download = n + "." + a, o.target = "_blank";
20061        var r = e.getConnectedDataURL({ type: a, backgroundColor: i.get("backgroundColor", !0) || t.get("backgroundColor") || "#fff", excludeComponents: i.get("excludeComponents"), pixelRatio: i.get("pixelRatio") });
20062        if (o.href = r, "function" != typeof MouseEvent || a_.browser.ie || a_.browser.edge)
20063            if (window.navigator.msSaveOrOpenBlob) {
20064                for (var s = atob(r.split(",")[1]), l = s.length, u = new Uint8Array(l); l--;) u[l] = s.charCodeAt(l);
20065                var h = new Blob([u]);
20066                window.navigator.msSaveOrOpenBlob(h, n + "." + a)
20067            } else {
20068                var c = i.get("lang"),
20069                    d = '<body style="margin:0;"><img src="' + r + '" style="max-width:100%;" title="' + (c && c[0] || "") + '" /></body>';
20070                window.open().document.write(d)
20071            }
20072        else {
20073            var f = new MouseEvent("click", { view: window, bubbles: !0, cancelable: !1 });
20074            o.dispatchEvent(f)
20075        }
20076    }, Bv("saveAsImage", Qy);
20077    var zN = lI.toolbox.magicType;
20078    tx.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", tiled: "M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z" }, title: i(zN.title), option: {}, seriesIndex: {} };
20079    var BN = tx.prototype;
20080    BN.getIcons = function() {
20081        var t = this.model,
20082            e = t.get("icon"),
20083            i = {};
20084        return d(t.get("type"), function(t) { e[t] && (i[t] = e[t]) }), i
20085    };
20086    var VN = { line: function(t, e, i, o) { if ("bar" === t) return n({ id: e, type: "line", data: i.get("data"), stack: i.get("stack"), markPoint: i.get("markPoint"), markLine: i.get("markLine") }, o.get("option.line") || {}, !0) }, bar: function(t, e, i, o) { if ("line" === t) return n({ id: e, type: "bar", data: i.get("data"), stack: i.get("stack"), markPoint: i.get("markPoint"), markLine: i.get("markLine") }, o.get("option.bar") || {}, !0) }, stack: function(t, e, i, o) { if ("line" === t || "bar" === t) return n({ id: e, stack: "__ec_magicType_stack__" }, o.get("option.stack") || {}, !0) }, tiled: function(t, e, i, o) { if ("line" === t || "bar" === t) return n({ id: e, stack: "" }, o.get("option.tiled") || {}, !0) } },
20087        GN = [
20088            ["line", "bar"],
20089            ["stack", "tiled"]
20090        ];
20091    BN.onclick = function(t, e, i) {
20092        var n = this.model,
20093            o = n.get("seriesIndex." + i);
20094        if (VN[i]) {
20095            var a = { series: [] };
20096            d(GN, function(t) { l(t, i) >= 0 && d(t, function(t) { n.setIconStatus(t, "normal") }) }), n.setIconStatus(i, "emphasis"), t.eachComponent({ mainType: "series", query: null == o ? null : { seriesIndex: o } }, function(e) {
20097                var o = e.subType,
20098                    s = e.id,
20099                    l = VN[i](o, s, e, n);
20100                l && (r(l, e.option), a.series.push(l));
20101                var u = e.coordinateSystem;
20102                if (u && "cartesian2d" === u.type && ("line" === i || "bar" === i)) {
20103                    var h = u.getAxesByScale("ordinal")[0];
20104                    if (h) {
20105                        var c = h.dim + "Axis",
20106                            d = t.queryComponents({ mainType: c, index: e.get(name + "Index"), id: e.get(name + "Id") })[0].componentIndex;
20107                        a[c] = a[c] || [];
20108                        for (var f = 0; f <= d; f++) a[c][d] = a[c][d] || {};
20109                        a[c][d].boundaryGap = "bar" === i
20110                    }
20111                }
20112            }), e.dispatchAction({ type: "changeMagicType", currentType: i, newOption: a })
20113        }
20114    }, cs({ type: "changeMagicType", event: "magicTypeChanged", update: "prepareAndUpdate" }, function(t, e) { e.mergeOption(t.newOption) }), Bv("magicType", tx);
20115    var WN = lI.toolbox.dataView,
20116        FN = new Array(60).join("-"),
20117        HN = "\t",
20118        ZN = new RegExp("[" + HN + "]+", "g");
20119    hx.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: i(WN.title), lang: i(WN.lang), backgroundColor: "#fff", textColor: "#000", textareaColor: "#fff", textareaBorderColor: "#333", buttonColor: "#c23531", buttonTextColor: "#fff" }, hx.prototype.onclick = function(t, e) {
20120        function i() { n.removeChild(a), x._dom = null }
20121        var n = e.getDom(),
20122            o = this.model;
20123        this._dom && n.removeChild(this._dom);
20124        var a = document.createElement("div");
20125        a.style.cssText = "position:absolute;
20125left:5px;top:5px;bottom:5px;right:5px;", a.style.backgroundColor = o.get("backgroundColor") || "#fff";
20126        var r = document.createElement("h4"),
20127            s = o.get("lang") || [];
20128        r.innerHTML = s[0] || o.get("title"), r.style.cssText = "margin: 10px 20px;", r.style.color = o.get("textColor");
20129        var l = document.createElement("div"),
20130            u = document.createElement("textarea");
20131        l.style.cssText = "display:block;width:100%;overflow:auto;";
20132        var h = o.get("optionToContent"),
20133            c = o.get("contentToOption"),
20134            d = ox(t);
20135        if ("function" == typeof h) { var f = h(e.getOption()); "string" == typeof f ? l.innerHTML = f : M(f) && l.appendChild(f) } else l.appendChild(u), u.readOnly = o.get("readOnly"), u.style.cssText = "width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;", u.style.color = o.get("textColor"), u.style.borderColor = o.get("textareaBorderColor"), u.style.backgroundColor = o.get("textareaColor"), u.value = d.value;
20136        var p = d.meta,
20137            g = document.createElement("div");
20138        g.style.cssText = "position:absolute;bottom:0;left:0;right:0;";
20139        var m = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",
20140            v = document.createElement("div"),
20141            y = document.createElement("div");
20142        m += ";background-color:" + o.get("buttonColor"), m += ";color:" + o.get("buttonTextColor");
20143        var x = this;
20144        ui(v, "click", i), ui(y, "click", function() {
20145            var t;
20146            try { t = "function" == typeof c ? c(l, e.getOption()) : ux(u.value, p) } catch (t) { throw i(), new Error("Data view format error " + t) }
20147            t && e.dispatchAction({ type: "changeDataView", newOption: t }), i()
20148        }), v.innerHTML = s[1], y.innerHTML = s[2], y.style.cssText = m, v.style.cssText = m, !o.get("readOnly") && g.appendChild(y), g.appendChild(v), ui(u, "keydown", function(t) {
20149            if (9 === (t.keyCode || t.which)) {
20150                var e = this.value,
20151                    i = this.selectionStart,
20152                    n = this.selectionEnd;
20153                this.value = e.substring(0, i) + HN + e.substring(n), this.selectionStart = this.selectionEnd = i + 1, zw(t)
20154            }
20155        }), a.appendChild(r), a.appendChild(l), a.appendChild(g), l.style.height = n.clientHeight - 80 + "px", n.appendChild(a), this._dom = a
20156    }, hx.prototype.remove = function(t, e) { this._dom && e.getDom().removeChild(this._dom) }, hx.prototype.dispose = function(t, e) { this.remove(t, e) }, Bv("dataView", hx), cs({ type: "changeDataView", event: "dataViewChanged", update: "prepareAndUpdate" }, function(t, e) {
20157        var i = [];
20158        d(t.newOption.series, function(t) {
20159            var n = e.getSeriesByName(t.name)[0];
20160            if (n) {
20161                var o = n.get("data");
20162                i.push({ name: t.name, data: cx(t.data, o) })
20163            } else i.push(a({ type: "scatter" }, t))
20164        }), e.mergeOption(r({ series: i }, t.newOption))
20165    });
20166    var UN = d,
20167        XN = "\0_ec_hist_store";
20168    PP.extend({ type: "dataZoom.select" }), NP.extend({ type: "dataZoom.select" });
20169    var jN = lI.toolbox.dataZoom,
20170        YN = d,
20171        qN = "\0_ec_\0toolbox-dataZoom_";
20172    vx.defaultOption = { show: !0, 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: i(jN.title) };
20173    var KN = vx.prototype;
20174    KN.render = function(t, e, i, n) { this.model = t, this.ecModel = e, this.api = i, _x(t, e, this, n, i), xx(t, e) }, KN.onclick = function(t, e, i) { $N[i].call(this) }, KN.remove = function(t, e) { this._brushController.unmount() }, KN.dispose = function(t, e) { this._brushController.dispose() };
20175    var $N = {
20176        zoom: function() {
20177            var t = !this._isZoomActive;
20178            this.api.dispatchAction({ type: "takeGlobalCursor", key: "dataZoomSelect", dataZoomSelectActive: t })
20179        },
20180        back: function() { this._dispatchZoomAction(fx(this.ecModel)) }
20181    };
20182    KN._onBrush = function(t, e) {
20183        function i(t, e, i) {
20184            var r = e.getAxis(t),
20185                s = r.model,
20186                l = n(t, s, a),
20187                u = l.findRepresentativeAxisProxy(s).getMinMaxSpan();
20188            null == u.minValueSpan && null == u.maxValueSpan || (i = PC(0, i.slice(), r.scale.getExtent(), 0, u.minValueSpan, u.maxValueSpan)), l && (o[l.id] = { dataZoomId: l.id, startValue: i[0], endValue: i[1] })
20189        }
20190
20191        function n(t, e, i) { var n; return i.eachComponent({ mainType: "dataZoom", subType: "select" }, function(i) { i.getAxisModel(t, e.componentIndex) && (n = i) }), n }
20192        if (e.isEnd && t.length) {
20193            var o = {},
20194                a = this.ecModel;
20195            this._brushController.updateCovers([]), new bv(yx(this.model.option), a, { include: ["grid"] }).matchOutputRanges(t, a, function(t, e, n) { if ("cartesian2d" === n.type) { var o = t.brushType; "rect" === o ? (i("x", n, e[0]), i("y", n, e[1])) : i({ lineX: "x", lineY: "y" }[o], n, e) } }), dx(a, o), this._dispatchZoomAction(o)
20196        }
20197    }, KN._dispatchZoomAction = function(t) {
20198        var e = [];
20199        YN(t, function(t, n) { e.push(i(t)) }), e.length && this.api.dispatchAction({ type: "dataZoom", from: this.uid, batch: e })
20200    }, Bv("dataZoom", vx), us(function(t) {
20201        function e(t, e) {
20202            if (e) {
20203                var o = t + "Index",
20204                    a = e[o];
20205                null == a || "all" == a || y(a) || (a = !1 === a || "none" === a ? [] : [a]), i(t, function(e, i) {
20206                    if (null == a || "all" == a || -1 !== l(a, i)) {
20207                        var r = { type: "select", $fromToolbox: !0, id: qN + t + i };
20208                        r[o] = i, n.push(r)
20209                    }
20210                })
20211            }
20212        }
20213
20214        function i(e, i) {
20215            var n = t[e];
20216            y(n) || (n = n ? [n] : []), YN(n, i)
20217        }
20218        if (t) {
20219            var n = t.dataZoom || (t.dataZoom = []);
20220            y(n) || (t.dataZoom = n = [n]);
20221            var o = t.toolbox;
20222            if (o && (y(o) && (o = o[0]), o && o.feature)) {
20223                var a = o.feature.dataZoom;
20224                e("xAxis", a), e("yAxis", a)
20225            }
20226        }
20227    });
20228    var JN = lI.toolbox.restore;
20229    bx.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: JN.title }, bx.prototype.onclick = function(t, e, i) { px(t), e.dispatchAction({ type: "restore", from: this.uid }) }, Bv("restore", bx), cs({ type: "restore", event: "restore", update: "prepareAndUpdate" }, function(t, e) { e.resetOption("recreate") });
20230    var QN, tO = "urn:schemas-microsoft-com:vml",
20231        eO = "undefined" == typeof window ? null : window,
20232        iO = !1,
20233        nO = eO && eO.document;
20234    if (nO && !a_.canvasSupported) try {!nO.namespaces.zrvml && nO.namespaces.add("zrvml", tO), QN = function(t) { return nO.createElement("<zrvml:" + t + ' class="zrvml">') } } catch (t) { QN = function(t) { return nO.createElement("<" + t + ' xmlns="' + tO + '" class="zrvml">') } }
20235    var oO = Hb.CMD,
20236        aO = Math.round,
20237        rO = Math.sqrt,
20238        sO = Math.abs,
20239        lO = Math.cos,
20240        uO = Math.sin,
20241        hO = Math.max;
20242    if (!a_.canvasSupported) {
20243        var cO = 21600,
20244            dO = cO / 2,
20245            fO = function(t) { t.style.cssText = "position:absolute;left:0;top:0;width:1px;height:1px;", t.coordsize = cO + "," + cO, t.coordorigin = "0,0" },
20246            pO = function(t) { return String(t).replace(/&/g, "&amp;").replace(/"/g, "&quot;") },
20247            gO = function(t, e, i) { return "rgb(" + [t, e, i].join(",") + ")" },
20248            mO = function(t, e) { e && t && e.parentNode !== t && t.appendChild(e) },
20249            vO = function(t, e) { e && t && e.parentNode === t && t.removeChild(e) },
20250            yO = function(t, e, i) { return 1e5 * (parseFloat(t) || 0) + 1e3 * (parseFloat(e) || 0) + i },
20251            xO = function(t, e) { return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t },
20252            _O = function(t, e, i) {
20253                var n = At(e);
20254                i = +i, isNaN(i) && (i = 1), n && (t.color = gO(n[0], n[1], n[2]), t.opacity = i * n[3])
20255            },
20256            wO = function(t) { var e = At(t); return [gO(e[0], e[1], e[2]), e[3]] },
20257            bO = function(t, e, i) {
20258                var n = e.fill;
20259                if (null != n)
20260                    if (n instanceof CS) {
20261                        var o, a = 0,
20262                            r = [0, 0],
20263                            s = 0,
20264                            l = 1,
20265                            u = i.getBoundingRect(),
20266                            h = u.width,
20267                            c = u.height;
20268                        if ("linear" === n.type) {
20269                            o = "gradient";
20270                            var d = i.transform,
20271                                f = [n.x * h, n.y * c],
20272                                p = [n.x2 * h, n.y2 * c];
20273                            d && (Q(f, f, d), Q(p, p, d));
20274                            var g = p[0] - f[0],
20275                                m = p[1] - f[1];
20276                            (a = 180 * Math.atan2(g, m) / Math.PI) < 0 && (a += 360), a < 1e-6 && (a = 0)
20277                        } else {
20278                            o = "gradientradial";
20279                            var f = [n.x * h, n.y * c],
20280                                d = i.transform,
20281                                v = i.scale,
20282                                y = h,
20283                                x = c;
20284                            r = [(f[0] - u.x) / y, (f[1] - u.y) / x], d && Q(f, f, d), y /= v[0] * cO, x /= v[1] * cO;
20285                            var _ = hO(y, x);
20286                            s = 0 / _, l = 2 * n.r / _ - s
20287                        }
20288                        var w = n.colorStops.slice();
20289                        w.sort(function(t, e) { return t.offset - e.offset });
20290                        for (var b = w.length, S = [], M = [], I = 0; I < b; I++) {
20291                            var T = w[I],
20292                                D = wO(T.color);
20293                            M.push(T.offset * l + s + " " + D[0]), 0 !== I && I !== b - 1 || S.push(D)
20294                        }
20295                        if (b >= 2) {
20296                            var A = S[0][0],
20297                                C = S[1][0],
20298                                L = S[0][1] * e.opacity,
20299                                k = S[1][1] * e.opacity;
20300                            t.type = o, t.method = "none", t.focus = "100%", t.angle = a, t.color = A, t.color2 = C, t.colors = M.join(","), t.opacity = k, t.opacity2 = L
20301                        }
20302                        "radial" === o && (t.focusposition = r.join(","))
20303                    } else _O(t, n, e.opacity)
20304            },
20305            SO = function(t, e) { null != e.lineDash && (t.dashstyle = e.lineDash.join(" ")), null == e.stroke || e.stroke instanceof CS || _O(t, e.stroke, e.opacity) },
20306            MO = function(t, e, i, n) {
20307                var o = "fill" == e,
20308                    a = t.getElementsByTagName(e)[0];
20309                null != i[e] && "none" !== i[e] && (o || !o && i.lineWidth) ? (t[o ? "filled" : "stroked"] = "true", i[e] instanceof CS && vO(t, a), a || (a = Sx(e)), o ? bO(a, i, n) : SO(a, i), mO(t, a)) : (t[o ? "filled" : "stroked"] = "false", vO(t, a))
20310            },
20311            IO = [
20312                [],
20313                [],
20314                []
20315            ],
20316            TO = function(t, e) {
20317                var i, n, o, a, r, s, l = oO.M,
20318                    u = oO.C,
20319                    h = oO.L,
20320                    c = oO.A,
20321                    d = oO.Q,
20322                    f = [],
20323                    p = t.data,
20324                    g = t.len();
20325                for (a = 0; a < g;) {
20326                    switch (o = p[a++], n = "", i = 0, o) {
20327                        case l:
20328                            n = " m ", i = 1, r = p[a++], s = p[a++], IO[0][0] = r, IO[0][1] = s;
20329                            break;
20330                        case h:
20331                            n = " l ", i = 1, r = p[a++], s = p[a++], IO[0][0] = r, IO[0][1] = s;
20332                            break;
20333                        case d:
20334                        case u:
20335                            n = " c ", i = 3;
20336                            var m, v, y = p[a++],
20337                                x = p[a++],
20338                                _ = p[a++],
20339                                w = p[a++];
20340                            o === d ? (m = _, v = w, _ = (_ + 2 * y) / 3, w = (w + 2 * x) / 3, y = (r + 2 * y) / 3, x = (s + 2 * x) / 3) : (m = p[a++], v = p[a++]), IO[0][0] = y, IO[0][1] = x, IO[1][0] = _, IO[1][1] = w, IO[2][0] = m, IO[2][1] = v, r = m, s = v;
20341                            break;
20342                        case c:
20343                            var b = 0,
20344                                S = 0,
20345                                M = 1,
20346                                I = 1,
20347                                T = 0;
20348                            e && (b = e[4], S = e[5], M = rO(e[0] * e[0] + e[1] * e[1]), I = rO(e[2] * e[2] + e[3] * e[3]), T = Math.atan2(-e[1] / I, e[0] / M));
20349                            var D = p[a++],
20350                                A = p[a++],
20351                                C = p[a++],
20352                                L = p[a++],
20353                                k = p[a++] + T,
20354                                P = p[a++] + k + T;
20355                            a++;
20356                            var N = p[a++],
20357                                O = D + lO(k) * C,
20358                                E = A + uO(k) * L,
20359                                y = D + lO(P) * C,
20360                                x = A + uO(P) * L,
20361                                R = N ? " wa " : " at ";
20362                            Math.abs(O - y) < 1e-4 && (Math.abs(P - k) > .01 ? N && (O += .0125) : Math.abs(E - A) < 1e-4 ? N && O < D || !N && O > D ? x -= .0125 : x += .0125 : N && E < A || !N && E > A ? y += .0125 : y -= .0125), f.push(R, aO(((D - C) * M + b) * cO - dO), ",", aO(((A - L) * I + S) * cO - dO), ",", aO(((D + C) * M + b) * cO - dO), ",", aO(((A + L) * I + S) * cO - dO), ",", aO((O * M + b) * cO - dO), ",", aO((E * I + S) * cO - dO), ",", aO((y * M + b) * cO - dO), ",", aO((x * I + S) * cO - dO)), r = y, s = x;
20363                            break;
20364                        case oO.R:
20365                            var z = IO[0],
20366                                B = IO[1];
20367                            z[0] = p[a++], z[1] = p[a++], B[0] = z[0] + p[a++], B[1] = z[1] + p[a++], e && (Q(z, z, e), Q(B, B, e)), z[0] = aO(z[0] * cO - dO), B[0] = aO(B[0] * cO - dO), z[1] = aO(z[1] * cO - dO), B[1] = aO(B[
203671] * cO - dO), f.push(" m ", z[0], ",", z[1], " l ", B[0], ",", z[1], " l ", B[0], ",", B[1], " l ", z[0], ",", B[1]);
20368                            break;
20369                        case oO.Z:
20370                            f.push(" x ")
20371                    }
20372                    if (i > 0) {
20373                        f.push(n);
20374                        for (var V = 0; V < i; V++) {
20375                            var G = IO[V];
20376                            e && Q(G, G, e), f.push(aO(G[0] * cO - dO), ",", aO(G[1] * cO - dO), V < i - 1 ? "," : "")
20377                        }
20378                    }
20379                }
20380                return f.join("")
20381            };
20382        In.prototype.brushVML = function(t) {
20383            var e = this.style,
20384                i = this._vmlEl;
20385            i || (i = Sx("shape"), fO(i), this._vmlEl = i), MO(i, "fill", e, this), MO(i, "stroke", e, this);
20386            var n = this.transform,
20387                o = null != n,
20388                a = i.getElementsByTagName("stroke")[0];
20389            if (a) {
20390                var r = e.lineWidth;
20391                if (o && !e.strokeNoScale) {
20392                    var s = n[0] * n[3] - n[1] * n[2];
20393                    r *= rO(sO(s))
20394                }
20395                a.weight = r + "px"
20396            }
20397            var l = this.path || (this.path = new Hb);
20398            this.__dirtyPath && (l.beginPath(), this.buildPath(l, this.shape), l.toStatic(), this.__dirtyPath = !1), i.path = TO(l, this.transform), i.style.zIndex = yO(this.zlevel, this.z, this.z2), mO(t, i), null != e.text ? this.drawRectText(t, this.getBoundingRect()) : this.removeRectText(t)
20399        }, In.prototype.onRemove = function(t) { vO(t, this._vmlEl), this.removeRectText(t) }, In.prototype.onAdd = function(t) { mO(t, this._vmlEl), this.appendRectText(t) };
20400        var DO = function(t) { return "object" == typeof t && t.tagName && "IMG" === t.tagName.toUpperCase() };
20401        Je.prototype.brushVML = function(t) {
20402            var e, i, n = this.style,
20403                o = n.image;
20404            if (DO(o)) {
20405                var a = o.src;
20406                if (a === this._imageSrc) e = this._imageWidth, i = this._imageHeight;
20407                else {
20408                    var r = o.runtimeStyle,
20409                        s = r.width,
20410                        l = r.height;
20411                    r.width = "auto", r.height = "auto", e = o.width, i = o.height, r.width = s, r.height = l, this._imageSrc = a, this._imageWidth = e, this._imageHeight = i
20412                }
20413                o = a
20414            } else o === this._imageSrc && (e = this._imageWidth, i = this._imageHeight);
20415            if (o) {
20416                var u = n.x || 0,
20417                    h = n.y || 0,
20418                    c = n.width,
20419                    d = n.height,
20420                    f = n.sWidth,
20421                    p = n.sHeight,
20422                    g = n.sx || 0,
20423                    m = n.sy || 0,
20424                    v = f && p,
20425                    y = this._vmlEl;
20426                y || (y = nO.createElement("div"), fO(y), this._vmlEl = y);
20427                var x, _ = y.style,
20428                    w = !1,
20429                    b = 1,
20430                    S = 1;
20431                if (this.transform && (x = this.transform, b = rO(x[0] * x[0] + x[1] * x[1]), S = rO(x[2] * x[2] + x[3] * x[3]), w = x[1] || x[2]), w) {
20432                    var M = [u, h],
20433                        I = [u + c, h],
20434                        T = [u, h + d],
20435                        D = [u + c, h + d];
20436                    Q(M, M, x), Q(I, I, x), Q(T, T, x), Q(D, D, x);
20437                    var A = hO(M[0], I[0], T[0], D[0]),
20438                        C = hO(M[1], I[1], T[1], D[1]),
20439                        L = [];
20440                    L.push("M11=", x[0] / b, ",", "M12=", x[2] / S, ",", "M21=", x[1] / b, ",", "M22=", x[3] / S, ",", "Dx=", aO(u * b + x[4]), ",", "Dy=", aO(h * S + x[5])), _.padding = "0 " + aO(A) + "px " + aO(C) + "px 0", _.filter = "progid:DXImageTransform.Microsoft.Matrix(" + L.join("") + ", SizingMethod=clip)"
20441                } else x && (u = u * b + x[4], h = h * S + x[5]), _.filter = "", _.left = aO(u) + "px", _.top = aO(h) + "px";
20442                var k = this._imageEl,
20443                    P = this._cropEl;
20444                k || (k = nO.createElement("div"), this._imageEl = k);
20445                var N = k.style;
20446                if (v) {
20447                    if (e && i) N.width = aO(b * e * c / f) + "px", N.height = aO(S * i * d / p) + "px";
20448                    else {
20449                        var O = new Image,
20450                            E = this;
20451                        O.onload = function() { O.onload = null, e = O.width, i = O.height, N.width = aO(b * e * c / f) + "px", N.height = aO(S * i * d / p) + "px", E._imageWidth = e, E._imageHeight = i, E._imageSrc = o }, O.src = o
20452                    }
20453                    P || ((P = nO.createElement("div")).style.overflow = "hidden", this._cropEl = P);
20454                    var R = P.style;
20455                    R.width = aO((c + g * c / f) * b), R.height = aO((d + m * d / p) * S), R.filter = "progid:DXImageTransform.Microsoft.Matrix(Dx=" + -g * c / f * b + ",Dy=" + -m * d / p * S + ")", P.parentNode || y.appendChild(P), k.parentNode != P && P.appendChild(k)
20456                } else N.width = aO(b * c) + "px", N.height = aO(S * d) + "px", y.appendChild(k), P && P.parentNode && (y.removeChild(P), this._cropEl = null);
20457                var z = "",
20458                    B = n.opacity;
20459                B < 1 && (z += ".Alpha(opacity=" + aO(100 * B) + ") "), z += "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + o + ", SizingMethod=scale)", N.filter = z, y.style.zIndex = yO(this.zlevel, this.z, this.z2), mO(t, y), null != n.text && this.drawRectText(t, this.getBoundingRect
20459())
20460            }
20461        }, Je.prototype.onRemove = function(t) { vO(t, this._vmlEl), this._vmlEl = null, this._cropEl = null, this._imageEl = null, this.removeRectText(t) }, Je.prototype.onAdd = function(t) { mO(t, this._vmlEl), this.appendRectText(t) };
20462        var AO, CO = {},
20463            LO = 0,
20464            kO = document.createElement("div"),
20465            PO = function(t) {
20466                var e = CO[t];
20467                if (!e) {
20468                    LO > 100 && (LO = 0, CO = {});
20469                    var i, n = kO.style;
20470                    try { n.font = t, i = n.fontFamily.split(",")[0] } catch (t) {}
20471                    e = { style: n.fontStyle || "normal", variant: n.fontVariant || "normal", weight: n.fontWeight || "normal", size: 0 | parseFloat(n.fontSize || 12), family: i || "Microsoft YaHei" }, CO[t] = e, LO++
20472                }
20473                return e
20474            };
20475        ! function(t, e) { Dw[t] = e }("measureText", function(t, e) {
20476            var i = nO;
20477            AO || ((AO = i.createElement("div")).style.cssText = "position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;", nO.body.appendChild(AO));
20478            try { AO.style.font = e } catch (t) {}
20479            return AO.innerHTML = "", AO.appendChild(i.createTextNode(t)), { width: AO.offsetWidth }
20480        });
20481        for (var NO = new $t, OO = [kw, $e, Je, In, fS], EO = 0; EO < OO.length; EO++) {
20482            var RO = OO[EO].prototype;
20483            RO.drawRectText = function(t, e, i, n) {
20484                var o = this.style;
20485                this.__dirty && Ne(o);
20486                var a = o.text;
20487                if (null != a && (a += ""), a) {
20488                    if (o.rich) {
20489                        var r = Ce(a, o);
20490                        a = [];
20491                        for (var s = 0; s < r.lines.length; s++) {
20492                            for (var l = r.lines[s].tokens, u = [], h = 0; h < l.length; h++) u.push(l[h].text);
20493                            a.push(u.join(""))
20494                        }
20495                        a = a.join("\n")
20496                    }
20497                    var c, d, f = o.textAlign,
20498                        p = o.textVerticalAlign,
20499                        g = PO(o.font),
20500                        m = g.style + " " + g.variant + " " + g.weight + " " + g.size + 'px "' + g.family + '"';
20501                    i = i || me(a, m, f, p);
20502                    var v = this.transform;
20503                    if (v && !n && (NO.copy(e), NO.applyTransform(v), e = NO), n) c = e.x, d = e.y;
20504                    else {
20505                        var y = o.textPosition,
20506                            x = o.textDistance;
20507                        if (y instanceof Array) c = e.x + xO(y[0], e.width), d = e.y + xO(y[1], e.height), f = f || "left";
20508                        else {
20509                            var _ = we(y, e, x);
20510                            c = _.x, d = _.y, f = f || _.textAlign, p = p || _.textVerticalAlign
20511                        }
20512                    }
20513                    c = xe(c, i.width, f), d = _e(d, i.height, p), d += i.height / 2;
20514                    var w, b, S, M = Sx,
20515                        I = this._textVmlEl;
20516                    I ? b = (w = (S = I.firstChild).nextSibling).nextSibling : (I = M("line"), w = M("path"), b = M("textpath"), S = M("skew"), b.style["v-text-align"] = "left", fO(I), w.textpathok = !0, b.on = !0, I.from = "0 0", I.to = "1000 0.05", mO(I, S), mO(I, w), mO(I, b), this._textVmlEl = I);
20517                    var T = [c, d],
20518                        D = I.style;
20519                    v && n ? (Q(T, T, v), S.on = !0, S.matrix = v[0].toFixed(3) + "," + v[2].toFixed(3) + "," + v[1].toFixed(3) + "," + v[3].toFixed(3) + ",0,0", S.offset = (aO(T[0]) || 0) + "," + (aO(T[1]) || 0), S.origin = "0 0", D.left = "0px", D.top = "0px") : (S.on = !1, D.left = aO(c) + "px", D.top = aO(d) + "px"), b.string = pO(a);
20520                    try { b.style.font = m } catch (t) {}
20521                    MO(I, "fill", { fill: o.textFill, opacity: o.opacity }, this), MO(I, "stroke", { stroke: o.textStroke, opacity: o.opacity, lineDash: o.lineDash }, this), I.style.zIndex = yO(this.zlevel, this.z, this.z2), mO(t, I)
20522                }
20523            }, RO.removeRectText = function(t) { vO(t, this._textVmlEl), this._textVmlEl = null }
20523, RO.appendRectText = function(t) { mO(t, this._textVmlEl) }
20524        }
20525        fS.prototype.brushVML = function(t) {
20526            var e = this.style;
20527            null != e.text ? this.drawRectText(t, { x: e.x || 0, y: e.y || 0, width: 0, height: 0 }, this.getBoundingRect(), !0) : this.removeRectText(t)
20528        }, fS.prototype.onRemove = function(t) { this.removeRectText(t) }, fS.prototype.onAdd = function(t) { this.appendRectText(t) }
20529    }
20530    Tx.prototype = {
20531        constructor: Tx,
20532        getType: function() { return "vml" },
20533        getViewportRoot: function() { return this._vmlViewport },
20534        getViewportRootOffset: function() { var t = this.getViewportRoot(); if (t) return { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } },
20535        refresh: function() {
20536            var t = this.storage.getDisplayList(!0, !0);
20537            this._paintList(t)
20538        },
20539        _paintList: function(t) {
20540            for (var e = this._vmlRoot, i = 0; i < t.length; i++) {
20541                var n = t[i];
20542                n.invisible || n.ignore ? (n.__alreadyNotVisible || n.onRemove(e), n.__alreadyNotVisible = !0) : (n.__alreadyNotVisible && n.onAdd(e), n.__alreadyNotVisible = !1, n.__dirty && (n.beforeBrush && n.beforeBrush(), (n.brushVML || n.brush).call(n, e), n.afterBrush && n.afterBrush())), n.__dirty = !1
20543            }
20544            this._firstPaint && (this._vmlViewport.appendChild(e), this._firstPaint = !1)
20545        },
20546        resize: function(t, e) {
20547            var t = null == t ? this._getWidth() : t,
20548                e = null == e ? this._getHeight() : e;
20549            if (this._width != t || this._height != e) {
20550                this._width = t, this._height = e;
20551                var i = this._vmlViewport.style;
20552                i.width = t + "px", i.height = e + "px"
20553            }
20554        },
20555        dispose: function() { this.root.innerHTML = "", this._vmlRoot = this._vmlViewport = this.storage = null },
20556        getWidth: function() { return this._width },
20557        getHeight: function() { return this._height },
20558        clear: function() { this._vmlViewport && this.root.removeChild(this._vmlViewport) },
20559        _getWidth: function() {
20560            var t = this.root,
20561                e = t.currentStyle;
20562            return (t.clientWidth || Ix(e.width)) - Ix(e.paddingLeft) - Ix(e.paddingRight) | 0
20563        },
20564        _getHeight: function() {
20565            var t = this.root,
20566                e = t.currentStyle;
20567            return (t.clientHeight || Ix(e.height)) - Ix(e.paddingTop) - Ix(e.paddingBottom) | 0
20568        }
20569    }, d(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "toDataURL", "pathToImage"], function(t) { Tx.prototype[t] = Dx(t) }), wi("vml", Tx);
20570    var zO = "http://www.w3.org/2000/svg",
20571        BO = Hb.CMD,
20572        VO = Array.prototype.join,
20573        GO = "none",
20574        WO = Math.round,
20575        FO = Math.sin,
20576        HO = Math.cos,
20577        ZO = Math.PI,
20578        UO = 2 * Math.PI,
20579        XO = 180 / ZO,
20580        jO = 1e-4,
20581        YO = {};
20582    YO.brush = function(t) {
20583        var e = t.style,
20584            i = t.__svgEl;
20585        i || (i = Ax("path"), t.__svgEl = i), t.path || t.createPathProxy();
20586        var n = t.path;
20587        if (t.__dirtyPath) {
20588            n.beginPath(), t.buildPath(n, t.shape), t.__dirtyPath = !1;
20589            var o = zx(n);
20590            o.indexOf("NaN") < 0 && Ox(i, "d", o)
20591        }
20592        Rx(i, e), Nx(i, t.transform), null != e.text && JO(t, t.getBoundingRect())
20593    };
20594    var qO = {};
20595    qO.brush = function(t) {
20596        var e = t.style,
20597            i = e.image;
20598        if (i instanceof HTMLImageElement && (i = i.src), i) {
20599            var n = e.x || 0,
20600                o = e.y || 0,
20601                a = e.width,
20602                r = e.height,
20603                s = t.__svgEl;
20604            s || (s = Ax("image"), t.__svgEl = s), i !== t.__imageSrc && (Ex(s, "href", i), t.__imageSrc = i), Ox(s, "width", a), Ox(s, "height", r), Ox(s, "x", n), Ox(s, "y", o), Nx(s, t.transform), null != e.text && JO(t, t.getBoundingRect())
20605        }
20606    };
20607    var KO = {},
20608        $O = new $t,
20609        JO = function(t, e, i) {
20610            var n = t.style;
20611            t.__dirty && Ne(n);
20612            var o = n.text;
20613            if (null != o) {
20614                o += "";
20615                var a = t.__textSvgEl;
20616                a || (a = Ax("text"), t.__textSvgEl = a);
20617                var r, s, l = n.textPosition,
20618                    u = n.textDistance,
20619                    h = n.textAlign || "left";
20620                "number" == typeof n.fontSize && (n.fontSize += "px");
20621                var c = n.font || [n.fontStyle || "", n.fontWeight || "", n.fontSize || "", n.fontFamily || ""].join(" ") || Tw,
20622                    d = Bx(n.textVerticalAlign),
20623                    f = (i = me(o, c, h, d)).lineHeight;
20624                if (l instanceof Array) r = e.x + l[0], s = e.y + l[1];
20625                else {
20626                    var p = we(l, e, u);
20627                    r = p.x, s = p.y, d = Bx(p.textVerticalAlign), h = p.textAlign
20628                }
20629                Ox(a, "alignment-baseline", d), c && (a.style.font = c);
20630                var g = n.textPadding;
20631                if (Ox(a, "x", r), Ox(a, "y", s), Rx(a, n, !0), t instanceof fS || t.style.transformText) Nx(a, t.transform);
20632                else {
20633                    if (t.transform) $O.copy(e), $O.applyTransform(t.transform), e = $O;
20634                    else {
20635                        var m = t.transformCoordToGlobal(e.x, e.y);
20636                        e.x = m[0], e.y = m[1]
20637                    }
20638                    var v = n.textOrigin;
20639                    "center" === v ? (r = i.width / 2 + r, s = i.height / 2 + s) : v && (r = v[0] + r, s = v[1] + s);
20640                    var y = -n.textRotation || 0,
20641                        x = st();
20642                    dt(x, t.transform, y), Nx(a, x)
20643                }
20644                var _ = o.split("\n"),
20645                    w = _.length,
20646                    b = h;
20647                "left" === b ? (b = "start", g && (r += g[3])) : "right" === b ? (b = "end", g && (r -= g[1])) : "center" === b && (b = "middle", g && (r += (g[3] - g[1]) / 2));
20648                var S = 0;
20649                if ("baseline" === d ? (S = -i.height + f, g && (S -= g[2])) : "middle" === d ? (S = (-i.height + f) / 2, g && (s += (g[0] - g[2]) / 2)) : g && (S += g[0]), t.__text !== o || t.__textFont !== c) {
20650                    var M = t.__tspanList || [];
20651                    t.__tspanList = M;
20652                    for (T = 0; T < w; T++)(D = M[T]) ? D.innerHTML = "" : (D = M[T] = Ax("tspan"), a.appendChild(D), Ox(D, "alignment-baseline", d), Ox(D, "text-anchor", b)), Ox(D, "x", r), Ox(D, "y", s + T * f + S), D.appendChild(document.createTextNode(_[T]));
20653                    for (; T < M.length; T++) a.removeChild(M[T]);
20654                    M.length = w, t.__text = o, t.__textFont = c
20655                } else if (t.__tspanList.length)
20656                    for (var I = t.__tspanList.length, T = 0; T < I; ++T) {
20657                        var D = t.__tspanList[T];
20658                        D && (Ox(D, "x", r), Ox(D, "y", s + T * f + S))
20659                    }
20660            }
20661        };
20662    KO.drawRectText = JO, KO.brush = function(t) {
20663        var e = t.style;
20664        null != e.text && (e.textPosition = [0, 0], JO(t, { x: e.x || 0, y: e.y || 0, width: 0, height: 0 }, t.getBoundingRect()))
20665    }, Vx.prototype = {
20666        diff: function(t, e, i) {
20667            i || (i = function(t, e) { return t === e }), this.equals = i;
20668            var n = this;
20669            t = t.slice();
20670            var o = (e = e.slice()).length,
20671                a = t.length,
20672                r = 1,
20673                s = o + a,
20674                l = [{ newPos: -1, components: [] }],
20675                u = this.extractCommon(l[0], e, t, 0);
20676            if (l[0].newPos + 1 >= o && u + 1 >= a) { for (var h = [], c = 0; c < e.length; c++) h.push(c); return [{ indices: h, count: e.length }] }
20677            for (; r <= s;) {
20678                var d = function() {
20679                    for (var i = -1 * r; i <= r; i += 2) {
20680                        var s, u = l[i - 1],
20681                            h = l[i + 1],
20682                            c = (h ? h.newPos : 0) - i;
20683                        u && (l[i - 1] = void 0);
20684                        var d = u && u.newPos + 1 < o,
20685                            f = h && 0 <= c && c < a;
20686                        if (d || f) {
20687                            if (!d || f && u.newPos < h.newPos ? (s = Wx(h), n.pushComponent(s.components, void 0, !0)) : ((s = u).newPos++, n.pushComponent(s.components, !0, void 0)), c = n.extractCommon(s, e, t, i), s.newPos + 1 >= o && c + 1 >= a) return Gx(0, s.components);
20688                            l[i] = s
20689                        } else l[i] = void 0
20690                    }
20691                    r++
20692                }();
20693                if (d) return d
20694            }
20695        },
20696        pushComponent: function(t, e, i) {
20697            var n = t[t.length - 1];
20698            n && n.added === e && n.removed === i ? t[t.length - 1] = { count: n.count + 1, added: e, removed: i } : t.push({ count: 1, added: e, removed: i })
20699        },
20700        extractCommon: function(t, e, i, n) { for (var o = e.length, a = i.length, r = t.newPos, s = r - n, l = 0; r + 1 < o && s + 1 < a && this.equals(e[r + 1], i[s + 1]);) r++, s++, l++; return l && t.components.push({ count: l }), t.newPos = r, s },
20701        tokenize: function(t) { return t.slice() },
20702        join: function(t) { return t.slice() }
20703    };
20704    var QO = new Vx,
20705        tE = function(t, e, i) { return QO.diff(t, e, i) };
20706    Fx.prototype.createElement = Ax, Fx.prototype.getDefs = function(t) {
20707        var e = this._svgRoot,
20708            i = this._svgRoot.getElementsByTagName("defs");
20709        return 0 === i.length ? t ? ((i = e.insertBefore(this.createElement("defs"), e.firstChild)).contains || (i.contains = function(t) {
20710            var e = i.children;
20711            if (!e) return !1;
20712            for (var n = e.length - 1; n >= 0; --n)
20713                if (e[n] === t) return !0;
20714            return !1
20715        }), i) : null : i[0]
20716    }, Fx.prototype.update = function(t, e) {
20717        if (t) {
20718            var i = this.getDefs(!1);
20719            if (t[this._domName] && i.contains(t[this._domName])) "function" == typeof e && e(t);
20720            else {
20721                var n = this.add(t);
20722                n && (t[this._domName] = n)
20723            }
20724        }
20725    }, Fx.prototype.addDom = function(t) { this.getDefs(!0).appendChild(t) }, Fx.prototype.removeDom = function(t) {
20726        var e = this.getDefs(!1);
20727        e && t[this._domName] && (e.removeChild(t[this._domName]), t[this._domName] = null)
20728    }, Fx.prototype.getDoms = function() {
20729        var t = this.getDefs(!1);
20730        if (!t) return [];
20731        var e = [];
20732        return d(this._tagNames, function(i) {
20733            var n = t.getElementsByTagName(i);
20734            e = e.concat([].slice.call(n))
20735        }), e
20736    }, Fx.prototype.markAllUnused = function() {
20737        var t = this;
20738        d(this.getDoms(), function(e) { e[t._markLabel] = "0" })
20739    }, Fx.prototype.markUsed = function(t) { t && (t[this._markLabel] = "1") }, Fx.prototype.removeUnused = function() {
20740        var t = this.getDefs(!1);
20741        if (t) {
20742            var e = this;
20743            d(this.getDoms(), function(i) { "1" !== i[e._markLabel] && t.removeChild(i) })
20744        }
20745    }, Fx.prototype.getSvgProxy = function(t) { return t instanceof In ? YO : t instanceof Je ? qO : t instanceof fS ? KO : YO }, Fx.prototype.getTextSvgElement = function(t) { return t.__textSvgEl }, Fx.prototype.getSvgElement = function(t) { return t.__svgEl }, u(Hx, Fx), Hx.prototype.addWithoutUpdate = function(t, e) {
20746        if (e && e.style) {
20747            var i = this;
20748            d(["fill", "stroke"], function(n) {
20749                if (e.style[n] && ("linear" === e.style[n].type || "radial" === e.style[n].type)) {
20750                    var o, a = e.style[n],
20751                        r = i.getDefs(!0);
20752                    a._dom ? (o = a._dom, r.contains(a._dom) || i.addDom(o)) : o = i.add(a), i.markUsed(e);
20753                    var s = o.getAttribute("id");
20754                    t.setAttribute(n, "url(#" + s + ")")
20755                }
20756            })
20757        }
20758    }, Hx.prototype.add = function(t) {
20759        var e;
20760        if ("linear" === t.type) e = this.createElement("linearGradient");
20761        else {
20762            if ("radial" !== t.type) return ew("Illegal gradient type."), null;
20763            e = this.createElement("radialGradient")
20764        }
20765        return t.id = t.id || this.nextId++, e.setAttribute("id", "zr" + this._zrId + "-gradient-" + t.id), this.updateDom(t, e), this.addDom(e), e
20766    }, Hx.prototype.update = function(t) {
20767        var e = this;
20768        Fx.prototype.update.call(this, t, function() {
20769            var i = t.type,
20770                n = t._dom.tagName;
20771            "linear" === i && "linearGradient" === n || "radial" === i && "radialGradient" === n ? e.updateDom(t, t._dom) : (e.removeDom(t), e.add(t))
20772        })
20773    }, Hx.prototype.updateDom = function(t, e) {
20774        if ("linear" === t.type) e.setAttribute("x1", t.x), e.setAttribute("y1", t.y), e.setAttribute("x2", t.x2), e.setAttribute("y2", t.y2);
20775        else {
20776            if ("radial" !== t.type) return void ew("Illegal gradient type.");
20777            e.setAttribute("cx", t.x), e.setAttribute("cy", t.y), e.setAttribute("r", t.r)
20778        }
20779        t.global ? e.setAttribute("gradientUnits", "userSpaceOnUse") : e.setAttribute("gradientUnits", "objectBoundingBox"), e.innerHTML = "";
20780        for (var i = t.colorStops, n = 0, o = i.length; n < o; ++n) {
20781            var a = this.createElement("stop");
20782            a.setAttribute("offset", 100 * i[n].offset + "%"), a.setAttribute("stop-color", i[n].color), e.appendChild(a)
20783        }
20784        t._dom = e
20785    }, Hx.prototype.markUsed = function(t) {
20786        if (t.style) {
20787            var e = t.style.fill;
20788            e && e._dom && Fx.prototype.markUsed.call(this, e._dom), (e = t.style.stroke) && e._dom && Fx.prototype.markUsed.call(this, e._dom)
20789        }
20790    }, u(Zx, Fx), Zx.prototype.update = function(t) {
20791        var e = this.getSvgElement(t);
20792        e && this.updateDom(e, t.__clipPaths, !1);
20793        var i = this.getTextSvgElement(t);
20794        i && this.updateDom(i, t.__clipPaths, !0), this.markUsed(t)
20795    }, Zx.prototype.updateDom = function(t, e, i) {
20796        if (e && e.length > 0) {
20797            var n, o, a = this.getDefs(!0),
20798                r = e[0],
20799                s = i ? "_textDom" : "_dom";
20800            r[s] ? (o = r[s].getAttribute("id"), n = r[s], a.contains(n) || a.appendChild(n)) : (o = "zr" + this._zrId + "-clip-" + this.nextId, ++this.nextId, (n = this.createElement("clipPath")).setAttribute("id", o), a.appendChild(n), r[s] = n);
20801            var l = this.getSvgProxy(r);
20802            if (r.transform && r.parent.invTransform && !i) {
20803                var u = Array.prototype.slice.call(r.transform);
20804                ht(r.transform, r.parent.invTransform, r.transform), l.brush(r), r.transform = u
20805            } else l.brush(r);
20806            var h = this.getSvgElement(r);
20807            n.innerHTML = "", n.appendChild(h.cloneNode()), t.setAttribute("clip-path", "url(#" + o + ")"), e.length > 1 && this.updateDom(n, e.slice(1), i)
20808        } else t && t.setAttribute("clip-path", "none")
20809    }, Zx.prototype.markUsed = function(t) {
20810        var e = this;
20811        t.__clipPaths && t.__clipPaths.length > 0 && d(t.__clipPaths, function(t) { t._dom && Fx.prototype.markUsed.call(e, t._dom), t._textDom && Fx.prototype.markUsed.call(e, t._textDom) })
20812    }, u(Ux, Fx), Ux.prototype.addWithoutUpdate = function(t, e) {
20813        if (e && Xx(e.style)) {
20814            var i, n = e.style;
20815            n._shadowDom ? (i = n._shadowDom, this.getDefs(!0).contains(n._shadowDom) || this.addDom(i)) : i = this.add(e), this.markUsed(e);
20816            var o = i.getAttribute("id");
20817            t.style.filter = "url(#" + o + ")"
20818        }
20819    }, Ux.prototype.add = function(t) {
20820        var e = this.createElement("filter"),
20821            i = t.style;
20822        return i._shadowDomId = i._shadowDomId || this.nextId++, e.setAttribute("id", "zr" + this._zrId + "-shadow-" + i._shadowDomId), this.updateDom(t, e), this.addDom(e), e
20823    }, Ux.prototype.update = function(t, e) {
20824        var i = e.style;
20825        if (Xx(i)) {
20826            var n = this;
20827            Fx.prototype.update.call(this, e, function(t) { n.updateDom(e, t._shadowDom) })
20828        } else this.remove(t, i)
20829    }, Ux.prototype.remove = function(t, e) { null != e._shadowDomId && (this.removeDom(e), t.style.filter = "") }, Ux.prototype.updateDom = function(t, e) {
20830        var i = e.getElementsByTagName("feDropShadow");
20831        i = 0 === i.length ? this.createElement("feDropShadow") : i[0];
20832        var n, o, a, r, s = t.style,
20833            l = t.scale ? t.scale[0] || 1 : 1,
20834            u = t.scale ? t.scale[1] || 1 : 1;
20835        if (s.shadowBlur || s.shadowOffsetX || s.shadowOffsetY) n = s.shadowOffsetX || 0, o = s.shadowOffsetY || 0, a = s.shadowBlur, r = s.shadowColor;
20836        else {
20837            if (!s.textShadowBlur) return void this.removeDom(e, s);
20838            n = s.textShadowOffsetX || 0, o = s.textShadowOffsetY || 0, a = s.textShadowBlur, r = s.textShadowColor
20839        }
20840        i.setAttribute("dx", n / l), i.setAttribute("dy", o / u), i.setAttribute("flood-color", r);
20841        var h = a / 2 / l + " " + a / 2 / u;
20842        i.setAttribute("stdDeviation", h), e.setAttribute("x", "-100%"), e.setAttribute("y", "-100%"), e.setAttribute("width", Math.ceil(a / 2 * 200) + "%"), e.setAttribute("height", Math.ceil(a / 2 * 200) + "%"), e.appendChild(i), s._shadowDom = e
20843    }, Ux.prototype.markUsed = function(t) {
20844        var e = t.style;
20845        e && e._shadowDom && Fx.prototype.markUsed.call(this, e._shadowDom)
20846    };
20847    var eE = function(t, e, i, n) {
20848        this.root = t, this.storage = e, this._opts = i = a({}, i || {});
20849        var o = Ax("svg");
20850        o.setAttribute("xmlns", "http://www.w3.org/2000/svg"), o.setAttribute("version", "1.1"), o.setAttribute("baseProfile", "full"), o.style.cssText = "user-select:none;position:absolute;left:0;top:0;", this.gradientManager = new Hx(n, o), this.clipPathManager = new Zx(n, o), this.shadowManager = new Ux(n, o);
20851        var r = document.createElement("div");
20852        r.style.cssText = "overflow:hidden;position:relative", this._svgRoot = o, this._viewport = r, t.appendChild(r), r.appendChild(o), this.resize(i.width, i.height), this._visibleList = []
20853    };
20854    eE.prototype = {
20855        constructor: eE,
20856        getType: function() { return "svg" },
20857        getViewportRoot: function() { return this._viewport },
20858        getViewportRootOffset: function() { var t = this.getViewportRoot(); if (t) return { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } },
20859        refresh: function() {
20860            var t = this.storage.getDisplayList(!0);
20861            this._paintList(t)
20862        },
20863        setBackgroundColor: function(t) { this._viewport.style.background = t },
20864        _paintList: function(t) {
20865            this.gradientManager.markAllUnused(), this.clipPathManager.markAllUnused(), this.shadowManager.markAllUnused();
20866            var e, i = this._svgRoot,
20867                n = this._visibleList,
20868                o = t.length,
20869                a = [];
20870            for (e = 0; e < o; e++) {
20871                var r = Yx(f = t[e]),
20872                    s = t_(f) || Qx(f);
20873                f.invisible || (f.__dirty && (r && r.brush(f), this.clipPathManager.update(f), f.style && (this.gradientManager.update(f.
20873style.fill), this.gradientManager.update(f.style.stroke), this.shadowManager.update(s, f)), f.__dirty = !1), a.push(f))
20874            }
20875            var l, u = tE(n, a);
20876            for (e = 0; e < u.length; e++)
20877                if ((c = u[e]).removed)
20878                    for (d = 0; d < c.count; d++) {
20879                        var s = t_(f = n[c.indices[d]]),
20880                            h = Qx(f);
20881                        Jx(i, s), Jx(i, h)
20882                    }
20883            for (e = 0; e < u.length; e++) {
20884                var c = u[e];
20885                if (c.added)
20886                    for (d = 0; d < c.count; d++) {
20887                        var s = t_(f = a[c.indices[d]]),
20888                            h = Qx(f);
20889                        l ? Kx(i, s, l) : $x(i, s), s ? Kx(i, h, s) : l ? Kx(i, h, l) : $x(i, h), Kx(i, h, s), l = h || s || l, this.gradientManager.addWithoutUpdate(s, f), this.shadowManager.addWithoutUpdate(l, f), this.clipPathManager.markUsed(f)
20890                    } else if (!c.removed)
20891                        for (var d = 0; d < c.count; d++) {
20892                            var f = a[c.indices[d]];
20893                            l = s = Qx(f) || t_(f) || l, this.gradientManager.markUsed(f), this.gradientManager.addWithoutUpdate(s, f), this.shadowManager.markUsed(f), this.shadowManager.addWithoutUpdate(s, f), this.clipPathManager.markUsed(f)
20894                        }
20895            }
20896            this.gradientManager.removeUnused(), this.clipPathManager.removeUnused(), this.shadowManager.removeUnused(), this._visibleList = a
20897        },
20898        _getDefs: function(t) {
20899            var e = this._svgRoot,
20900                i = this._svgRoot.getElementsByTagName("defs");
20901            return 0 === i.length ? t ? ((i = e.insertBefore(Ax("defs"), e.firstChild)).contains || (i.contains = function(t) {
20902                var e = i.children;
20903                if (!e) return !1;
20904                for (var n = e.length - 1; n >= 0; --n)
20905                    if (e[n] === t) return !0;
20906                return !1
20907            }), i) : null : i[0]
20908        },
20909        resize: function(t, e) {
20910            var i = this._viewport;
20911            i.style.display = "none";
20912            var n = this._opts;
20913            if (null != t && (n.width = t), null != e && (n.height = e), t = this._getSize(0), e = this._getSize(1), i.style.display = "", this._width !== t || this._height !== e) {
20914                this._width = t, this._height = e;
20915                var o = i.style;
20916                o.width = t + "px", o.height = e + "px";
20917                var a = this._svgRoot;
20918                a.setAttribute("width", t), a.setAttribute("height", e)
20919            }
20920        },
20921        getWidth: function() { return this._width },
20922        getHeight: function() { return this._height },
20923        _getSize: function(t) {
20924            var e = this._opts,
20925                i = ["width", "height"][t],
20926                n = ["clientWidth", "clientHeight"][t],
20927                o = ["paddingLeft", "paddingTop"][t],
20928                a = ["paddingRight", "paddingBottom"][t];
20929            if (null != e[i] && "auto" !== e[i]) return parseFloat(e[i]);
20930            var r = this.root,
20931                s = document.defaultView.getComputedStyle(r);
20932            return (r[n] || jx(s[i]) || jx(r.style[i])) - (jx(s[o]) || 0) - (jx(s[a]) || 0) | 0
20933        },
20934        dispose: function() { this.root.innerHTML = "", this._svgRoot = this._viewport = this.storage = null },
20935        clear: function() { this._viewport && this.root.removeChild(this._viewport) },
20936        pathToDataUrl: function() { return this.refresh(), "data:image/svg+xml;charset=UTF-8," + this._svgRoot.outerHTML }
20937    }, d(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "toDataURL", "pathToImage"], function(t) { eE.prototype[t] = e_(t) }), wi("svg", eE), t.version = "4.1.0", t.dependencies = TI, t.PRIORITY = LI, t.init = function(t, e, i) { var n = ss(t); if (n) return n; var o = new Gr(t, e, i); return o.id = "ec_" + jI++, UI[o.id] = o, Ri(t, qI, o.id), as(o), o }, t.connect = function(t) {
20938        if (y(t)) {
20939            var e = t;
20940            t = null, bI(e, function(e) { null != e.group && (t = e.group) }), t = t || "g_" + YI++, bI(e, function(e) { e.group = t })
20941        }
20942        return XI[t] = !0, t
20943    }
20943, t.disConnect = rs, t.disconnect = $I, t.dispose = function(t) { "string" == typeof t ? t = UI[t] : t instanceof Gr || (t = ss(t)), t instanceof Gr && !t.isDisposed() && t.dispose() }, t.getInstanceByDom = ss, t.getInstanceById = function(t) { return UI[t] }, t.registerTheme = ls, t.registerPreprocessor = us, t.registerProcessor = hs, t.registerPostUpdate = function(t) { WI.push(t) }, t.registerAction = cs, t.registerCoordinateSystem = ds, t.getCoordinateSystemDimensions = function(t) { var e = Ca.get(t); if (e) return e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() }, t.registerLayout = fs, t.registerVisual = ps, t.registerLoading = ms, t.extendComponentModel = vs, t.extendComponentView = ys, t.extendSeriesModel = xs, t.extendChartView = _s, t.setCanvasCreator = function(t) { e("createCanvas", t) }, t.registerMap = function(t, e, i) { e.geoJson && !e.features && (i = e.specialAreas, e = e.geoJson), "string" == typeof e && (e = "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")()), KI[t] = { geoJson: e, specialAreas: i } }, t.getMap = ws, t.dataTool = JI, t.zrender = $w, t.graphic = BS, t.number = qS, t.format = nM, t.throttle = _r, t.helper = ZT, t.matrix = P_, t.vector = I_, t.color = q_, t.parseGeoJSON = XT, t.parseGeoJson = KT, t.util = $T, t.List = sT, t.Model = wo, t.Axis = qT, t.env = a_
20944});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.