E31221315_AnalisisSentimen/public/assets/js/plugins/amcharts/maps.js

6133 lines
214 KiB
JavaScript

am4internal_webpackJsonp(["cc1e"], {
QJ7E: function(t, e, n) {
"use strict";
Object.defineProperty(e, "__esModule", {
value: !0
});
var i = {};
n.d(i, "geoArea", function() {
return Et
}), n.d(i, "geoBounds", function() {
return he
}), n.d(i, "geoCentroid", function() {
return Me
}), n.d(i, "geoCircle", function() {
return Ge
}), n.d(i, "geoClipAntimeridian", function() {
return Ze
}), n.d(i, "geoClipCircle", function() {
return qe
}), n.d(i, "geoClipExtent", function() {
return en
}), n.d(i, "geoClipRectangle", function() {
return Je
}), n.d(i, "geoContains", function() {
return bn
}), n.d(i, "geoDistance", function() {
return ln
}), n.d(i, "geoGraticule", function() {
return _n
}), n.d(i, "geoGraticule10", function() {
return Mn
}), n.d(i, "geoInterpolate", function() {
return Ln
}), n.d(i, "geoLength", function() {
return un
}), n.d(i, "geoPath", function() {
return wi
}), n.d(i, "geoAlbers", function() {
return Zi
}), n.d(i, "geoAlbersUsa", function() {
return qi
}), n.d(i, "geoAzimuthalEqualArea", function() {
return Ji
}), n.d(i, "geoAzimuthalEqualAreaRaw", function() {
return Ui
}), n.d(i, "geoAzimuthalEquidistant", function() {
return Qi
}), n.d(i, "geoAzimuthalEquidistantRaw", function() {
return Ki
}), n.d(i, "geoConicConformal", function() {
return rr
}), n.d(i, "geoConicConformalRaw", function() {
return ir
}), n.d(i, "geoConicEqualArea", function() {
return Wi
}), n.d(i, "geoConicEqualAreaRaw", function() {
return Hi
}), n.d(i, "geoConicEquidistant", function() {
return sr
}), n.d(i, "geoConicEquidistantRaw", function() {
return ur
}), n.d(i, "geoEqualEarth", function() {
return gr
}), n.d(i, "geoEqualEarthRaw", function() {
return dr
}), n.d(i, "geoEquirectangular", function() {
return ar
}), n.d(i, "geoEquirectangularRaw", function() {
return or
}), n.d(i, "geoGnomonic", function() {
return mr
}), n.d(i, "geoGnomonicRaw", function() {
return vr
}), n.d(i, "geoIdentity", function() {
return yr
}), n.d(i, "geoProjection", function() {
return Ri
}), n.d(i, "geoProjectionMutator", function() {
return Fi
}), n.d(i, "geoMercator", function() {
return tr
}), n.d(i, "geoMercatorRaw", function() {
return $i
}), n.d(i, "geoNaturalEarth1", function() {
return Pr
}), n.d(i, "geoNaturalEarth1Raw", function() {
return br
}), n.d(i, "geoOrthographic", function() {
return _r
}), n.d(i, "geoOrthographicRaw", function() {
return Sr
}), n.d(i, "geoStereographic", function() {
return xr
}), n.d(i, "geoStereographicRaw", function() {
return Mr
}), n.d(i, "geoTransverseMercator", function() {
return wr
}), n.d(i, "geoTransverseMercatorRaw", function() {
return jr
}), n.d(i, "geoRotation", function() {
return Ie
}), n.d(i, "geoStream", function() {
return ht
}), n.d(i, "geoTransform", function() {
return Oi
});
var r = {};
n.d(r, "normalizePoint", function() {
return oo
}), n.d(r, "normalizeMultiline", function() {
return ao
}), n.d(r, "wrapAngleTo180", function() {
return uo
}), n.d(r, "geoToPoint", function() {
return so
});
var o = {};
n.d(o, "Mercator", function() {
return zo
}), n.d(o, "Miller", function() {
return Au
}), n.d(o, "Eckert6", function() {
return ku
}), n.d(o, "Orthographic", function() {
return Ru
}), n.d(o, "Stereographic", function() {
return Fu
}), n.d(o, "Albers", function() {
return Bu
}), n.d(o, "AlbersUsa", function() {
return Hu
}), n.d(o, "NaturalEarth1", function() {
return Wu
}), n.d(o, "AzimuthalEqualArea", function() {
return Zu
}), n.d(o, "EqualEarth", function() {
return qu
}), n.d(o, "Projection", function() {
return Qr
});
var a = {};
n.d(a, "LegendDataItem", function() {
return u.b
}), n.d(a, "Legend", function() {
return u.a
}), n.d(a, "LegendSettings", function() {
return u.c
}), n.d(a, "HeatLegend", function() {
return s.a
}), n.d(a, "MapChartDataItem", function() {
return Mo
}), n.d(a, "MapChart", function() {
return xo
}), n.d(a, "MapSeriesDataItem", function() {
return Or
}), n.d(a, "MapSeries", function() {
return Lr
}), n.d(a, "MapObject", function() {
return Er
}), n.d(a, "MapPolygon", function() {
return qr
}), n.d(a, "MapImage", function() {
return Ir
}), n.d(a, "MapLine", function() {
return vo
}), n.d(a, "MapLineObject", function() {
return co
}), n.d(a, "MapSpline", function() {
return wo
}), n.d(a, "MapArc", function() {
return Lo
}), n.d(a, "Graticule", function() {
return bo
}), n.d(a, "MapPolygonSeriesDataItem", function() {
return Jr
}), n.d(a, "MapPolygonSeries", function() {
return Kr
}), n.d(a, "MapLineSeriesDataItem", function() {
return mo
}), n.d(a, "MapLineSeries", function() {
return yo
}), n.d(a, "MapSplineSeriesDataItem", function() {
return Co
}), n.d(a, "MapSplineSeries", function() {
return Eo
}), n.d(a, "MapImageSeriesDataItem", function() {
return lo
}), n.d(a, "MapImageSeries", function() {
return ho
}), n.d(a, "MapArcSeriesDataItem", function() {
return Io
}), n.d(a, "MapArcSeries", function() {
return To
}), n.d(a, "GraticuleSeriesDataItem", function() {
return Po
}), n.d(a, "GraticuleSeries", function() {
return So
}), n.d(a, "multiPolygonToGeo", function() {
return zr
}), n.d(a, "multiLineToGeo", function() {
return Vr
}), n.d(a, "multiPointToGeo", function() {
return Ar
}), n.d(a, "pointToGeo", function() {
return Rr
}), n.d(a, "multiGeoPolygonToMultipolygon", function() {
return Hr
}), n.d(a, "getBackground", function() {
return Zr
}), n.d(a, "multiGeoLineToMultiLine", function() {
return Br
}), n.d(a, "multiGeoToPoint", function() {
return kr
}), n.d(a, "getCircle", function() {
return Wr
}), n.d(a, "ZoomControl", function() {
return No
}), n.d(a, "SmallMap", function() {
return no
}), n.d(a, "Projection", function() {
return Qr
}), n.d(a, "projections", function() {
return o
}), n.d(a, "geo", function() {
return r
}), n.d(a, "d3geo", function() {
return i
});
var u = n("uWmK"),
s = n("2OXf"),
c = n("m4/l"),
l = n("2I/e"),
h = n("hD5A"),
p = n("MIZb"),
f = n("aM7D"),
d = n("aCit"),
g = n("Mtpk"),
v = n("Gg2j"),
m = function(t, e) {
return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
},
y = function(t) {
var e = t,
n = t;
function i(t, e, i, r) {
for (null == i && (i = 0), null == r && (r = t.length); i < r;) {
var o = i + r >>> 1;
n(t[o], e) < 0 ? i = o + 1 : r = o
}
return i
}
return 1 === t.length && (e = function(e, n) {
return t(e) - n
}, n = function(t) {
return function(e, n) {
return m(t(e), n)
}
}(t)), {
left: i,
center: function(t, n, r, o) {
null == r && (r = 0), null == o && (o = t.length);
var a = i(t, n, r, o - 1);
return a > r && e(t[a - 1], n) > -e(t[a], n) ? a - 1 : a
},
right: function(t, e, i, r) {
for (null == i && (i = 0), null == r && (r = t.length); i < r;) {
var o = i + r >>> 1;
n(t[o], e) > 0 ? r = o : i = o + 1
}
return i
}
}
};
var b = function(t) {
return null === t ? NaN : +t
};
var P = y(m);
P.right, P.left, y(b).center;
function S(t, e) {
for (var n = 0; n < e.length; n++) {
var i = e[n];
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
}
}
var _ = function() {
function t() {
! function(t, e) {
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
}(this, t), this._partials = new Float64Array(32), this._n = 0
}
return function(t, e, n) {
e && S(t.prototype, e), n && S(t, n)
}(t, [{
key: "add",
value: function(t) {
for (var e = this._partials, n = 0, i = 0; i < this._n && i < 32; i++) {
var r = e[i],
o = t + r,
a = Math.abs(t) < Math.abs(r) ? t - (o - r) : r - (o - t);
a && (e[n++] = a), t = o
}
return e[n] = t, this._n = n + 1, this
}
}, {
key: "valueOf",
value: function() {
var t, e, n, i = this._partials,
r = this._n,
o = 0;
if (r > 0) {
for (o = i[--r]; r > 0 && (t = o, !(n = (e = i[--r]) - ((o = t + e) - t))););
r > 0 && (n < 0 && i[r - 1] < 0 || n > 0 && i[r - 1] > 0) && (e = 2 * n) == (t = o + e) - o && (o = t)
}
return o
}
}]), t
}();
var M = Array.prototype;
M.slice, M.map, Math.sqrt(50), Math.sqrt(10), Math.sqrt(2);
var x = regeneratorRuntime.mark(O);
function j(t, e) {
var n;
if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
if (Array.isArray(t) || (n = function(t, e) {
if (!t) return;
if ("string" == typeof t) return w(t, e);
var n = Object.prototype.toString.call(t).slice(8, -1);
"Object" === n && t.constructor && (n = t.constructor.name);
if ("Map" === n || "Set" === n) return Array.from(t);
if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return w(t, e)
}(t)) || e && t && "number" == typeof t.length) {
n && (t = n);
var i = 0,
r = function() {};
return {
s: r,
n: function() {
return i >= t.length ? {
done: !0
} : {
done: !1,
value: t[i++]
}
},
e: function(t) {
throw t
},
f: r
}
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
}
var o, a = !0,
u = !1;
return {
s: function() {
n = t[Symbol.iterator]()
},
n: function() {
var t = n.next();
return a = t.done, t
},
e: function(t) {
u = !0, o = t
},
f: function() {
try {
a || null == n.return || n.return()
} finally {
if (u) throw o
}
}
}
}
function w(t, e) {
(null == e || e > t.length) && (e = t.length);
for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
return i
}
function O(t) {
var e, n, i;
return regeneratorRuntime.wrap(function(r) {
for (;;) switch (r.prev = r.next) {
case 0:
e = j(t), r.prev = 1, e.s();
case 3:
if ((n = e.n()).done) {
r.next = 8;
break
}
return i = n.value, r.delegateYield(i, "t0", 6);
case 6:
r.next = 3;
break;
case 8:
r.next = 13;
break;
case 10:
r.prev = 10, r.t1 = r.catch(1), e.e(r.t1);
case 13:
return r.prev = 13, e.f(), r.finish(13);
case 16:
case "end":
return r.stop()
}
}, x, null, [
[1, 10, 13, 16]
])
}
function L(t) {
return Array.from(O(t))
}
var C = function(t, e, n) {
t = +t, e = +e, n = (r = arguments.length) < 2 ? (e = t, t = 0, 1) : r < 3 ? 1 : +n;
for (var i = -1, r = 0 | Math.max(0, Math.ceil((e - t) / n)), o = new Array(r); ++i < r;) o[i] = t + i * n;
return o
};
Math.random;
var E = 1e-6,
I = 1e-12,
T = Math.PI,
D = T / 2,
G = T / 4,
N = 2 * T,
z = 180 / T,
V = T / 180,
A = Math.abs,
k = Math.atan,
R = Math.atan2,
F = Math.cos,
B = Math.ceil,
H = Math.exp,
W = (Math.floor, Math.hypot),
Z = Math.log,
q = Math.pow,
X = Math.sin,
Y = Math.sign || function(t) {
return t > 0 ? 1 : t < 0 ? -1 : 0
},
U = Math.sqrt,
J = Math.tan;
function K(t) {
return t > 1 ? 0 : t < -1 ? T : Math.acos(t)
}
function Q(t) {
return t > 1 ? D : t < -1 ? -D : Math.asin(t)
}
function $(t) {
return (t = X(t / 2)) * t
}
function tt() {}
function et(t, e) {
t && it.hasOwnProperty(t.type) && it[t.type](t, e)
}
var nt = {
Feature: function(t, e) {
et(t.geometry, e)
},
FeatureCollection: function(t, e) {
for (var n = t.features, i = -1, r = n.length; ++i < r;) et(n[i].geometry, e)
}
},
it = {
Sphere: function(t, e) {
e.sphere()
},
Point: function(t, e) {
t = t.coordinates, e.point(t[0], t[1], t[2])
},
MultiPoint: function(t, e) {
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;) t = n[i], e.point(t[0], t[1], t[2])
},
LineString: function(t, e) {
rt(t.coordinates, e, 0)
},
MultiLineString: function(t, e) {
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;) rt(n[i], e, 0)
},
Polygon: function(t, e) {
ot(t.coordinates, e)
},
MultiPolygon: function(t, e) {
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;) ot(n[i], e)
},
GeometryCollection: function(t, e) {
for (var n = t.geometries, i = -1, r = n.length; ++i < r;) et(n[i], e)
}
};
function rt(t, e, n) {
var i, r = -1,
o = t.length - n;
for (e.lineStart(); ++r < o;) i = t[r], e.point(i[0], i[1], i[2]);
e.lineEnd()
}
function ot(t, e) {
var n = -1,
i = t.length;
for (e.polygonStart(); ++n < i;) rt(t[n], e, 1);
e.polygonEnd()
}
var at, ut, st, ct, lt, ht = function(t, e) {
t && nt.hasOwnProperty(t.type) ? nt[t.type](t, e) : et(t, e)
},
pt = new _,
ft = new _,
dt = {
point: tt,
lineStart: tt,
lineEnd: tt,
polygonStart: function() {
pt = new _, dt.lineStart = gt, dt.lineEnd = vt
},
polygonEnd: function() {
var t = +pt;
ft.add(t < 0 ? N + t : t), this.lineStart = this.lineEnd = this.point = tt
},
sphere: function() {
ft.add(N)
}
};
function gt() {
dt.point = mt
}
function vt() {
yt(at, ut)
}
function mt(t, e) {
dt.point = yt, at = t, ut = e, st = t *= V, ct = F(e = (e *= V) / 2 + G), lt = X(e)
}
function yt(t, e) {
e = (e *= V) / 2 + G;
var n = (t *= V) - st,
i = n >= 0 ? 1 : -1,
r = i * n,
o = F(e),
a = X(e),
u = lt * a,
s = ct * o + u * F(r),
c = u * i * X(r);
pt.add(R(c, s)), st = t, ct = o, lt = a
}
var bt, Pt, St, _t, Mt, xt, jt, wt, Ot, Lt, Ct, Et = function(t) {
return ft = new _, ht(t, dt), 2 * ft
};
function It(t) {
return [R(t[1], t[0]), Q(t[2])]
}
function Tt(t) {
var e = t[0],
n = t[1],
i = F(n);
return [i * F(e), i * X(e), X(n)]
}
function Dt(t, e) {
return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]
}
function Gt(t, e) {
return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
}
function Nt(t, e) {
t[0] += e[0], t[1] += e[1], t[2] += e[2]
}
function zt(t, e) {
return [t[0] * e, t[1] * e, t[2] * e]
}
function Vt(t) {
var e = U(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
t[0] /= e, t[1] /= e, t[2] /= e
}
var At = {
point: kt,
lineStart: Ft,
lineEnd: Bt,
polygonStart: function() {
At.point = Ht, At.lineStart = Wt, At.lineEnd = Zt, Ot = new _, dt.polygonStart()
},
polygonEnd: function() {
dt.polygonEnd(), At.point = kt, At.lineStart = Ft, At.lineEnd = Bt, pt < 0 ? (bt = -(St = 180), Pt = -(_t = 90)) : Ot > E ? _t = 90 : Ot < -E && (Pt = -90), Ct[0] = bt, Ct[1] = St
},
sphere: function() {
bt = -(St = 180), Pt = -(_t = 90)
}
};
function kt(t, e) {
Lt.push(Ct = [bt = t, St = t]), e < Pt && (Pt = e), e > _t && (_t = e)
}
function Rt(t, e) {
var n = Tt([t * V, e * V]);
if (wt) {
var i = Gt(wt, n),
r = Gt([i[1], -i[0], 0], i);
Vt(r), r = It(r);
var o, a = t - Mt,
u = a > 0 ? 1 : -1,
s = r[0] * z * u,
c = A(a) > 180;
c ^ (u * Mt < s && s < u * t) ? (o = r[1] * z) > _t && (_t = o) : c ^ (u * Mt < (s = (s + 360) % 360 - 180) && s < u * t) ? (o = -r[1] * z) < Pt && (Pt = o) : (e < Pt && (Pt = e), e > _t && (_t = e)), c ? t < Mt ? qt(bt, t) > qt(bt, St) && (St = t) : qt(t, St) > qt(bt, St) && (bt = t) : St >= bt ? (t < bt && (bt = t), t > St && (St = t)) : t > Mt ? qt(bt, t) > qt(bt, St) && (St = t) : qt(t, St) > qt(bt, St) && (bt = t)
} else Lt.push(Ct = [bt = t, St = t]);
e < Pt && (Pt = e), e > _t && (_t = e), wt = n, Mt = t
}
function Ft() {
At.point = Rt
}
function Bt() {
Ct[0] = bt, Ct[1] = St, At.point = kt, wt = null
}
function Ht(t, e) {
if (wt) {
var n = t - Mt;
Ot.add(A(n) > 180 ? n + (n > 0 ? 360 : -360) : n)
} else xt = t, jt = e;
dt.point(t, e), Rt(t, e)
}
function Wt() {
dt.lineStart()
}
function Zt() {
Ht(xt, jt), dt.lineEnd(), A(Ot) > E && (bt = -(St = 180)), Ct[0] = bt, Ct[1] = St, wt = null
}
function qt(t, e) {
return (e -= t) < 0 ? e + 360 : e
}
function Xt(t, e) {
return t[0] - e[0]
}
function Yt(t, e) {
return t[0] <= t[1] ? t[0] <= e && e <= t[1] : e < t[0] || t[1] < e
}
var Ut, Jt, Kt, Qt, $t, te, ee, ne, ie, re, oe, ae, ue, se, ce, le, he = function(t) {
var e, n, i, r, o, a, u;
if (_t = St = -(bt = Pt = 1 / 0), Lt = [], ht(t, At), n = Lt.length) {
for (Lt.sort(Xt), e = 1, o = [i = Lt[0]]; e < n; ++e) Yt(i, (r = Lt[e])[0]) || Yt(i, r[1]) ? (qt(i[0], r[1]) > qt(i[0], i[1]) && (i[1] = r[1]), qt(r[0], i[1]) > qt(i[0], i[1]) && (i[0] = r[0])) : o.push(i = r);
for (a = -1 / 0, e = 0, i = o[n = o.length - 1]; e <= n; i = r, ++e) r = o[e], (u = qt(i[1], r[0])) > a && (a = u, bt = r[0], St = i[1])
}
return Lt = Ct = null, bt === 1 / 0 || Pt === 1 / 0 ? [
[NaN, NaN],
[NaN, NaN]
] : [
[bt, Pt],
[St, _t]
]
},
pe = {
sphere: tt,
point: fe,
lineStart: ge,
lineEnd: ye,
polygonStart: function() {
pe.lineStart = be, pe.lineEnd = Pe
},
polygonEnd: function() {
pe.lineStart = ge, pe.lineEnd = ye
}
};
function fe(t, e) {
t *= V;
var n = F(e *= V);
de(n * F(t), n * X(t), X(e))
}
function de(t, e, n) {
Kt += (t - Kt) / ++Ut, Qt += (e - Qt) / Ut, $t += (n - $t) / Ut
}
function ge() {
pe.point = ve
}
function ve(t, e) {
t *= V;
var n = F(e *= V);
se = n * F(t), ce = n * X(t), le = X(e), pe.point = me, de(se, ce, le)
}
function me(t, e) {
t *= V;
var n = F(e *= V),
i = n * F(t),
r = n * X(t),
o = X(e),
a = R(U((a = ce * o - le * r) * a + (a = le * i - se * o) * a + (a = se * r - ce * i) * a), se * i + ce * r + le * o);
Jt += a, te += a * (se + (se = i)), ee += a * (ce + (ce = r)), ne += a * (le + (le = o)), de(se, ce, le)
}
function ye() {
pe.point = fe
}
function be() {
pe.point = Se
}
function Pe() {
_e(ae, ue), pe.point = fe
}
function Se(t, e) {
ae = t, ue = e, t *= V, e *= V, pe.point = _e;
var n = F(e);
se = n * F(t), ce = n * X(t), le = X(e), de(se, ce, le)
}
function _e(t, e) {
t *= V;
var n = F(e *= V),
i = n * F(t),
r = n * X(t),
o = X(e),
a = ce * o - le * r,
u = le * i - se * o,
s = se * r - ce * i,
c = W(a, u, s),
l = Q(c),
h = c && -l / c;
ie.add(h * a), re.add(h * u), oe.add(h * s), Jt += l, te += l * (se + (se = i)), ee += l * (ce + (ce = r)), ne += l * (le + (le = o)), de(se, ce, le)
}
var Me = function(t) {
Ut = Jt = Kt = Qt = $t = te = ee = ne = 0, ie = new _, re = new _, oe = new _, ht(t, pe);
var e = +ie,
n = +re,
i = +oe,
r = W(e, n, i);
return r < I && (e = te, n = ee, i = ne, Jt < E && (e = Kt, n = Qt, i = $t), (r = W(e, n, i)) < I) ? [NaN, NaN] : [R(n, e) * z, Q(i / r) * z]
},
xe = function(t) {
return function() {
return t
}
},
je = function(t, e) {
function n(n, i) {
return n = t(n, i), e(n[0], n[1])
}
return t.invert && e.invert && (n.invert = function(n, i) {
return (n = e.invert(n, i)) && t.invert(n[0], n[1])
}), n
};
function we(t, e) {
return [A(t) > T ? t + Math.round(-t / N) * N : t, e]
}
function Oe(t, e, n) {
return (t %= N) ? e || n ? je(Ce(t), Ee(e, n)) : Ce(t) : e || n ? Ee(e, n) : we
}
function Le(t) {
return function(e, n) {
return [(e += t) > T ? e - N : e < -T ? e + N : e, n]
}
}
function Ce(t) {
var e = Le(t);
return e.invert = Le(-t), e
}
function Ee(t, e) {
var n = F(t),
i = X(t),
r = F(e),
o = X(e);
function a(t, e) {
var a = F(e),
u = F(t) * a,
s = X(t) * a,
c = X(e),
l = c * n + u * i;
return [R(s * r - l * o, u * n - c * i), Q(l * r + s * o)]
}
return a.invert = function(t, e) {
var a = F(e),
u = F(t) * a,
s = X(t) * a,
c = X(e),
l = c * r - s * o;
return [R(s * r + c * o, u * n + l * i), Q(l * n - u * i)]
}, a
}
we.invert = we;
var Ie = function(t) {
function e(e) {
return (e = t(e[0] * V, e[1] * V))[0] *= z, e[1] *= z, e
}
return t = Oe(t[0] * V, t[1] * V, t.length > 2 ? t[2] * V : 0), e.invert = function(e) {
return (e = t.invert(e[0] * V, e[1] * V))[0] *= z, e[1] *= z, e
}, e
};
function Te(t, e, n, i, r, o) {
if (n) {
var a = F(e),
u = X(e),
s = i * n;
null == r ? (r = e + i * N, o = e - s / 2) : (r = De(a, r), o = De(a, o), (i > 0 ? r < o : r > o) && (r += i * N));
for (var c, l = r; i > 0 ? l > o : l < o; l -= s) c = It([a, -u * F(l), -u * X(l)]), t.point(c[0], c[1])
}
}
function De(t, e) {
(e = Tt(e))[0] -= t, Vt(e);
var n = K(-e[1]);
return ((-e[2] < 0 ? -n : n) + N - E) % N
}
var Ge = function() {
var t, e, n = xe([0, 0]),
i = xe(90),
r = xe(6),
o = {
point: function(n, i) {
t.push(n = e(n, i)), n[0] *= z, n[1] *= z
}
};
function a() {
var a = n.apply(this, arguments),
u = i.apply(this, arguments) * V,
s = r.apply(this, arguments) * V;
return t = [], e = Oe(-a[0] * V, -a[1] * V, 0).invert, Te(o, u, s, 1), a = {
type: "Polygon",
coordinates: [t]
}, t = e = null, a
}
return a.center = function(t) {
return arguments.length ? (n = "function" == typeof t ? t : xe([+t[0], +t[1]]), a) : n
}, a.radius = function(t) {
return arguments.length ? (i = "function" == typeof t ? t : xe(+t), a) : i
}, a.precision = function(t) {
return arguments.length ? (r = "function" == typeof t ? t : xe(+t), a) : r
}, a
},
Ne = function() {
var t, e = [];
return {
point: function(e, n, i) {
t.push([e, n, i])
},
lineStart: function() {
e.push(t = [])
},
lineEnd: tt,
rejoin: function() {
e.length > 1 && e.push(e.pop().concat(e.shift()))
},
result: function() {
var n = e;
return e = [], t = null, n
}
}
},
ze = function(t, e) {
return A(t[0] - e[0]) < E && A(t[1] - e[1]) < E
};
function Ve(t, e, n, i) {
this.x = t, this.z = e, this.o = n, this.e = i, this.v = !1, this.n = this.p = null
}
var Ae = function(t, e, n, i, r) {
var o, a, u = [],
s = [];
if (t.forEach(function(t) {
if (!((e = t.length - 1) <= 0)) {
var e, n, i = t[0],
a = t[e];
if (ze(i, a)) {
if (!i[2] && !a[2]) {
for (r.lineStart(), o = 0; o < e; ++o) r.point((i = t[o])[0], i[1]);
return void r.lineEnd()
}
a[0] += 2 * E
}
u.push(n = new Ve(i, t, null, !0)), s.push(n.o = new Ve(i, null, n, !1)), u.push(n = new Ve(a, t, null, !1)), s.push(n.o = new Ve(a, null, n, !0))
}
}), u.length) {
for (s.sort(e), ke(u), ke(s), o = 0, a = s.length; o < a; ++o) s[o].e = n = !n;
for (var c, l, h = u[0];;) {
for (var p = h, f = !0; p.v;)
if ((p = p.n) === h) return;
c = p.z, r.lineStart();
do {
if (p.v = p.o.v = !0, p.e) {
if (f)
for (o = 0, a = c.length; o < a; ++o) r.point((l = c[o])[0], l[1]);
else i(p.x, p.n.x, 1, r);
p = p.n
} else {
if (f)
for (c = p.p.z, o = c.length - 1; o >= 0; --o) r.point((l = c[o])[0], l[1]);
else i(p.x, p.p.x, -1, r);
p = p.p
}
c = (p = p.o).z, f = !f
} while (!p.v);
r.lineEnd()
}
}
};
function ke(t) {
if (e = t.length) {
for (var e, n, i = 0, r = t[0]; ++i < e;) r.n = n = t[i], n.p = r, r = n;
r.n = n = t[0], n.p = r
}
}
function Re(t) {
return A(t[0]) <= T ? t[0] : Y(t[0]) * ((A(t[0]) + T) % N - T)
}
var Fe = function(t, e) {
var n = Re(e),
i = e[1],
r = X(i),
o = [X(n), -F(n), 0],
a = 0,
u = 0,
s = new _;
1 === r ? i = D + E : -1 === r && (i = -D - E);
for (var c = 0, l = t.length; c < l; ++c)
if (p = (h = t[c]).length)
for (var h, p, f = h[p - 1], d = Re(f), g = f[1] / 2 + G, v = X(g), m = F(g), y = 0; y < p; ++y, d = P, v = M, m = x, f = b) {
var b = h[y],
P = Re(b),
S = b[1] / 2 + G,
M = X(S),
x = F(S),
j = P - d,
w = j >= 0 ? 1 : -1,
O = w * j,
L = O > T,
C = v * M;
if (s.add(R(C * w * X(O), m * x + C * F(O))), a += L ? j + w * N : j, L ^ d >= n ^ P >= n) {
var z = Gt(Tt(f), Tt(b));
Vt(z);
var V = Gt(o, z);
Vt(V);
var A = (L ^ j >= 0 ? -1 : 1) * Q(V[2]);
(i > A || i === A && (z[0] || z[1])) && (u += L ^ j >= 0 ? 1 : -1)
}
}
return (a < -E || a < E && s < -I) ^ 1 & u
},
Be = function(t, e, n, i) {
return function(r) {
var o, a, u, s = e(r),
c = Ne(),
l = e(c),
h = !1,
p = {
point: f,
lineStart: g,
lineEnd: v,
polygonStart: function() {
p.point = m, p.lineStart = y, p.lineEnd = b, a = [], o = []
},
polygonEnd: function() {
p.point = f, p.lineStart = g, p.lineEnd = v, a = L(a);
var t = Fe(o, i);
a.length ? (h || (r.polygonStart(), h = !0), Ae(a, We, t, n, r)) : t && (h || (r.polygonStart(), h = !0), r.lineStart(), n(null, null, 1, r), r.lineEnd()), h && (r.polygonEnd(), h = !1), a = o = null
},
sphere: function() {
r.polygonStart(), r.lineStart(), n(null, null, 1, r), r.lineEnd(), r.polygonEnd()
}
};
function f(e, n) {
t(e, n) && r.point(e, n)
}
function d(t, e) {
s.point(t, e)
}
function g() {
p.point = d, s.lineStart()
}
function v() {
p.point = f, s.lineEnd()
}
function m(t, e) {
u.push([t, e]), l.point(t, e)
}
function y() {
l.lineStart(), u = []
}
function b() {
m(u[0][0], u[0][1]), l.lineEnd();
var t, e, n, i, s = l.clean(),
p = c.result(),
f = p.length;
if (u.pop(), o.push(u), u = null, f)
if (1 & s) {
if ((e = (n = p[0]).length - 1) > 0) {
for (h || (r.polygonStart(), h = !0), r.lineStart(), t = 0; t < e; ++t) r.point((i = n[t])[0], i[1]);
r.lineEnd()
}
} else f > 1 && 2 & s && p.push(p.pop().concat(p.shift())), a.push(p.filter(He))
}
return p
}
};
function He(t) {
return t.length > 1
}
function We(t, e) {
return ((t = t.x)[0] < 0 ? t[1] - D - E : D - t[1]) - ((e = e.x)[0] < 0 ? e[1] - D - E : D - e[1])
}
var Ze = Be(function() {
return !0
}, function(t) {
var e, n = NaN,
i = NaN,
r = NaN;
return {
lineStart: function() {
t.lineStart(), e = 1
},
point: function(o, a) {
var u = o > 0 ? T : -T,
s = A(o - n);
A(s - T) < E ? (t.point(n, i = (i + a) / 2 > 0 ? D : -D), t.point(r, i), t.lineEnd(), t.lineStart(), t.point(u, i), t.point(o, i), e = 0) : r !== u && s >= T && (A(n - r) < E && (n -= r * E), A(o - u) < E && (o -= u * E), i = function(t, e, n, i) {
var r, o, a = X(t - n);
return A(a) > E ? k((X(e) * (o = F(i)) * X(n) - X(i) * (r = F(e)) * X(t)) / (r * o * a)) : (e + i) / 2
}(n, i, o, a), t.point(r, i), t.lineEnd(), t.lineStart(), t.point(u, i), e = 0), t.point(n = o, i = a), r = u
},
lineEnd: function() {
t.lineEnd(), n = i = NaN
},
clean: function() {
return 2 - e
}
}
}, function(t, e, n, i) {
var r;
if (null == t) r = n * D, i.point(-T, r), i.point(0, r), i.point(T, r), i.point(T, 0), i.point(T, -r), i.point(0, -r), i.point(-T, -r), i.point(-T, 0), i.point(-T, r);
else if (A(t[0] - e[0]) > E) {
var o = t[0] < e[0] ? T : -T;
r = n * o / 2, i.point(-o, r), i.point(0, r), i.point(o, r)
} else i.point(e[0], e[1])
}, [-T, -D]);
var qe = function(t) {
var e = F(t),
n = 6 * V,
i = e > 0,
r = A(e) > E;
function o(t, n) {
return F(t) * F(n) > e
}
function a(t, n, i) {
var r = [1, 0, 0],
o = Gt(Tt(t), Tt(n)),
a = Dt(o, o),
u = o[0],
s = a - u * u;
if (!s) return !i && t;
var c = e * a / s,
l = -e * u / s,
h = Gt(r, o),
p = zt(r, c);
Nt(p, zt(o, l));
var f = h,
d = Dt(p, f),
g = Dt(f, f),
v = d * d - g * (Dt(p, p) - 1);
if (!(v < 0)) {
var m = U(v),
y = zt(f, (-d - m) / g);
if (Nt(y, p), y = It(y), !i) return y;
var b, P = t[0],
S = n[0],
_ = t[1],
M = n[1];
S < P && (b = P, P = S, S = b);
var x = S - P,
j = A(x - T) < E;
if (!j && M < _ && (b = _, _ = M, M = b), j || x < E ? j ? _ + M > 0 ^ y[1] < (A(y[0] - P) < E ? _ : M) : _ <= y[1] && y[1] <= M : x > T ^ (P <= y[0] && y[0] <= S)) {
var w = zt(f, (-d + m) / g);
return Nt(w, p), [y, It(w)]
}
}
}
function u(e, n) {
var r = i ? t : T - t,
o = 0;
return e < -r ? o |= 1 : e > r && (o |= 2), n < -r ? o |= 4 : n > r && (o |= 8), o
}
return Be(o, function(t) {
var e, n, s, c, l;
return {
lineStart: function() {
c = s = !1, l = 1
},
point: function(h, p) {
var f, d = [h, p],
g = o(h, p),
v = i ? g ? 0 : u(h, p) : g ? u(h + (h < 0 ? T : -T), p) : 0;
if (!e && (c = s = g) && t.lineStart(), g !== s && (!(f = a(e, d)) || ze(e, f) || ze(d, f)) && (d[2] = 1), g !== s) l = 0, g ? (t.lineStart(), f = a(d, e), t.point(f[0], f[1])) : (f = a(e, d), t.point(f[0], f[1], 2), t.lineEnd()), e = f;
else if (r && e && i ^ g) {
var m;
v & n || !(m = a(d, e, !0)) || (l = 0, i ? (t.lineStart(), t.point(m[0][0], m[0][1]), t.point(m[1][0], m[1][1]), t.lineEnd()) : (t.point(m[1][0], m[1][1]), t.lineEnd(), t.lineStart(), t.point(m[0][0], m[0][1], 3)))
}!g || e && ze(e, d) || t.point(d[0], d[1]), e = d, s = g, n = v
},
lineEnd: function() {
s && t.lineEnd(), e = null
},
clean: function() {
return l | (c && s) << 1
}
}
}, function(e, i, r, o) {
Te(o, t, n, r, e, i)
}, i ? [0, -t] : [-T, t - T])
},
Xe = function(t, e, n, i, r, o) {
var a, u = t[0],
s = t[1],
c = 0,
l = 1,
h = e[0] - u,
p = e[1] - s;
if (a = n - u, h || !(a > 0)) {
if (a /= h, h < 0) {
if (a < c) return;
a < l && (l = a)
} else if (h > 0) {
if (a > l) return;
a > c && (c = a)
}
if (a = r - u, h || !(a < 0)) {
if (a /= h, h < 0) {
if (a > l) return;
a > c && (c = a)
} else if (h > 0) {
if (a < c) return;
a < l && (l = a)
}
if (a = i - s, p || !(a > 0)) {
if (a /= p, p < 0) {
if (a < c) return;
a < l && (l = a)
} else if (p > 0) {
if (a > l) return;
a > c && (c = a)
}
if (a = o - s, p || !(a < 0)) {
if (a /= p, p < 0) {
if (a > l) return;
a > c && (c = a)
} else if (p > 0) {
if (a < c) return;
a < l && (l = a)
}
return c > 0 && (t[0] = u + c * h, t[1] = s + c * p), l < 1 && (e[0] = u + l * h, e[1] = s + l * p), !0
}
}
}
}
},
Ye = 1e9,
Ue = -Ye;
function Je(t, e, n, i) {
function r(r, o) {
return t <= r && r <= n && e <= o && o <= i
}
function o(r, o, u, c) {
var l = 0,
h = 0;
if (null == r || (l = a(r, u)) !== (h = a(o, u)) || s(r, o) < 0 ^ u > 0)
do {
c.point(0 === l || 3 === l ? t : n, l > 1 ? i : e)
} while ((l = (l + u + 4) % 4) !== h);
else c.point(o[0], o[1])
}
function a(i, r) {
return A(i[0] - t) < E ? r > 0 ? 0 : 3 : A(i[0] - n) < E ? r > 0 ? 2 : 1 : A(i[1] - e) < E ? r > 0 ? 1 : 0 : r > 0 ? 3 : 2
}
function u(t, e) {
return s(t.x, e.x)
}
function s(t, e) {
var n = a(t, 1),
i = a(e, 1);
return n !== i ? n - i : 0 === n ? e[1] - t[1] : 1 === n ? t[0] - e[0] : 2 === n ? t[1] - e[1] : e[0] - t[0]
}
return function(a) {
var s, c, l, h, p, f, d, g, v, m, y, b = a,
P = Ne(),
S = {
point: _,
lineStart: function() {
S.point = M, c && c.push(l = []);
m = !0, v = !1, d = g = NaN
},
lineEnd: function() {
s && (M(h, p), f && v && P.rejoin(), s.push(P.result()));
S.point = _, v && b.lineEnd()
},
polygonStart: function() {
b = P, s = [], c = [], y = !0
},
polygonEnd: function() {
var e = function() {
for (var e = 0, n = 0, r = c.length; n < r; ++n)
for (var o, a, u = c[n], s = 1, l = u.length, h = u[0], p = h[0], f = h[1]; s < l; ++s) o = p, a = f, h = u[s], p = h[0], f = h[1], a <= i ? f > i && (p - o) * (i - a) > (f - a) * (t - o) && ++e : f <= i && (p - o) * (i - a) < (f - a) * (t - o) && --e;
return e
}(),
n = y && e,
r = (s = L(s)).length;
(n || r) && (a.polygonStart(), n && (a.lineStart(), o(null, null, 1, a), a.lineEnd()), r && Ae(s, u, e, o, a), a.polygonEnd());
b = a, s = c = l = null
}
};
function _(t, e) {
r(t, e) && b.point(t, e)
}
function M(o, a) {
var u = r(o, a);
if (c && l.push([o, a]), m) h = o, p = a, f = u, m = !1, u && (b.lineStart(), b.point(o, a));
else if (u && v) b.point(o, a);
else {
var s = [d = Math.max(Ue, Math.min(Ye, d)), g = Math.max(Ue, Math.min(Ye, g))],
P = [o = Math.max(Ue, Math.min(Ye, o)), a = Math.max(Ue, Math.min(Ye, a))];
Xe(s, P, t, e, n, i) ? (v || (b.lineStart(), b.point(s[0], s[1])), b.point(P[0], P[1]), u || b.lineEnd(), y = !1) : u && (b.lineStart(), b.point(o, a), y = !1)
}
d = o, g = a, v = u
}
return S
}
}
var Ke, Qe, $e, tn, en = function() {
var t, e, n, i = 0,
r = 0,
o = 960,
a = 500;
return n = {
stream: function(n) {
return t && e === n ? t : t = Je(i, r, o, a)(e = n)
},
extent: function(u) {
return arguments.length ? (i = +u[0][0], r = +u[0][1], o = +u[1][0], a = +u[1][1], t = e = null, n) : [
[i, r],
[o, a]
]
}
}
},
nn = {
sphere: tt,
point: tt,
lineStart: function() {
nn.point = on, nn.lineEnd = rn
},
lineEnd: tt,
polygonStart: tt,
polygonEnd: tt
};
function rn() {
nn.point = nn.lineEnd = tt
}
function on(t, e) {
Qe = t *= V, $e = X(e *= V), tn = F(e), nn.point = an
}
function an(t, e) {
t *= V;
var n = X(e *= V),
i = F(e),
r = A(t - Qe),
o = F(r),
a = i * X(r),
u = tn * n - $e * i * o,
s = $e * n + tn * i * o;
Ke.add(R(U(a * a + u * u), s)), Qe = t, $e = n, tn = i
}
var un = function(t) {
return Ke = new _, ht(t, nn), +Ke
},
sn = [null, null],
cn = {
type: "LineString",
coordinates: sn
},
ln = function(t, e) {
return sn[0] = t, sn[1] = e, un(cn)
},
hn = {
Feature: function(t, e) {
return fn(t.geometry, e)
},
FeatureCollection: function(t, e) {
for (var n = t.features, i = -1, r = n.length; ++i < r;)
if (fn(n[i].geometry, e)) return !0;
return !1
}
},
pn = {
Sphere: function() {
return !0
},
Point: function(t, e) {
return dn(t.coordinates, e)
},
MultiPoint: function(t, e) {
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;)
if (dn(n[i], e)) return !0;
return !1
},
LineString: function(t, e) {
return gn(t.coordinates, e)
},
MultiLineString: function(t, e) {
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;)
if (gn(n[i], e)) return !0;
return !1
},
Polygon: function(t, e) {
return vn(t.coordinates, e)
},
MultiPolygon: function(t, e) {
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;)
if (vn(n[i], e)) return !0;
return !1
},
GeometryCollection: function(t, e) {
for (var n = t.geometries, i = -1, r = n.length; ++i < r;)
if (fn(n[i], e)) return !0;
return !1
}
};
function fn(t, e) {
return !(!t || !pn.hasOwnProperty(t.type)) && pn[t.type](t, e)
}
function dn(t, e) {
return 0 === ln(t, e)
}
function gn(t, e) {
for (var n, i, r, o = 0, a = t.length; o < a; o++) {
if (0 === (i = ln(t[o], e))) return !0;
if (o > 0 && (r = ln(t[o], t[o - 1])) > 0 && n <= r && i <= r && (n + i - r) * (1 - Math.pow((n - i) / r, 2)) < I * r) return !0;
n = i
}
return !1
}
function vn(t, e) {
return !!Fe(t.map(mn), yn(e))
}
function mn(t) {
return (t = t.map(yn)).pop(), t
}
function yn(t) {
return [t[0] * V, t[1] * V]
}
var bn = function(t, e) {
return (t && hn.hasOwnProperty(t.type) ? hn[t.type] : fn)(t, e)
};
function Pn(t, e, n) {
var i = C(t, e - E, n).concat(e);
return function(t) {
return i.map(function(e) {
return [t, e]
})
}
}
function Sn(t, e, n) {
var i = C(t, e - E, n).concat(e);
return function(t) {
return i.map(function(e) {
return [e, t]
})
}
}
function _n() {
var t, e, n, i, r, o, a, u, s, c, l, h, p = 10,
f = p,
d = 90,
g = 360,
v = 2.5;
function m() {
return {
type: "MultiLineString",
coordinates: y()
}
}
function y() {
return C(B(i / d) * d, n, d).map(l).concat(C(B(u / g) * g, a, g).map(h)).concat(C(B(e / p) * p, t, p).filter(function(t) {
return A(t % d) > E
}).map(s)).concat(C(B(o / f) * f, r, f).filter(function(t) {
return A(t % g) > E
}).map(c))
}
return m.lines = function() {
return y().map(function(t) {
return {
type: "LineString",
coordinates: t
}
})
}, m.outline = function() {
return {
type: "Polygon",
coordinates: [l(i).concat(h(a).slice(1), l(n).reverse().slice(1), h(u).reverse().slice(1))]
}
}, m.extent = function(t) {
return arguments.length ? m.extentMajor(t).extentMinor(t) : m.extentMinor()
}, m.extentMajor = function(t) {
return arguments.length ? (i = +t[0][0], n = +t[1][0], u = +t[0][1], a = +t[1][1], i > n && (t = i, i = n, n = t), u > a && (t = u, u = a, a = t), m.precision(v)) : [
[i, u],
[n, a]
]
}, m.extentMinor = function(n) {
return arguments.length ? (e = +n[0][0], t = +n[1][0], o = +n[0][1], r = +n[1][1], e > t && (n = e, e = t, t = n), o > r && (n = o, o = r, r = n), m.precision(v)) : [
[e, o],
[t, r]
]
}, m.step = function(t) {
return arguments.length ? m.stepMajor(t).stepMinor(t) : m.stepMinor()
}, m.stepMajor = function(t) {
return arguments.length ? (d = +t[0], g = +t[1], m) : [d, g]
}, m.stepMinor = function(t) {
return arguments.length ? (p = +t[0], f = +t[1], m) : [p, f]
}, m.precision = function(p) {
return arguments.length ? (v = +p, s = Pn(o, r, 90), c = Sn(e, t, v), l = Pn(u, a, 90), h = Sn(i, n, v), m) : v
}, m.extentMajor([
[-180, -90 + E],
[180, 90 - E]
]).extentMinor([
[-180, -80 - E],
[180, 80 + E]
])
}
function Mn() {
return _n()()
}
var xn, jn, wn, On, Ln = function(t, e) {
var n = t[0] * V,
i = t[1] * V,
r = e[0] * V,
o = e[1] * V,
a = F(i),
u = X(i),
s = F(o),
c = X(o),
l = a * F(n),
h = a * X(n),
p = s * F(r),
f = s * X(r),
d = 2 * Q(U($(o - i) + a * s * $(r - n))),
g = X(d),
v = d ? function(t) {
var e = X(t *= d) / g,
n = X(d - t) / g,
i = n * l + e * p,
r = n * h + e * f,
o = n * u + e * c;
return [R(r, i) * z, R(o, U(i * i + r * r)) * z]
} : function() {
return [n * z, i * z]
};
return v.distance = d, v
},
Cn = function(t) {
return t
},
En = new _,
In = new _,
Tn = {
point: tt,
lineStart: tt,
lineEnd: tt,
polygonStart: function() {
Tn.lineStart = Dn, Tn.lineEnd = zn
},
polygonEnd: function() {
Tn.lineStart = Tn.lineEnd = Tn.point = tt, En.add(A(In)), In = new _
},
result: function() {
var t = En / 2;
return En = new _, t
}
};
function Dn() {
Tn.point = Gn
}
function Gn(t, e) {
Tn.point = Nn, xn = wn = t, jn = On = e
}
function Nn(t, e) {
In.add(On * t - wn * e), wn = t, On = e
}
function zn() {
Nn(xn, jn)
}
var Vn = Tn,
An = 1 / 0,
kn = An,
Rn = -An,
Fn = Rn;
var Bn, Hn, Wn, Zn, qn = {
point: function(t, e) {
t < An && (An = t);
t > Rn && (Rn = t);
e < kn && (kn = e);
e > Fn && (Fn = e)
},
lineStart: tt,
lineEnd: tt,
polygonStart: tt,
polygonEnd: tt,
result: function() {
var t = [
[An, kn],
[Rn, Fn]
];
return Rn = Fn = -(kn = An = 1 / 0), t
}
},
Xn = 0,
Yn = 0,
Un = 0,
Jn = 0,
Kn = 0,
Qn = 0,
$n = 0,
ti = 0,
ei = 0,
ni = {
point: ii,
lineStart: ri,
lineEnd: ui,
polygonStart: function() {
ni.lineStart = si, ni.lineEnd = ci
},
polygonEnd: function() {
ni.point = ii, ni.lineStart = ri, ni.lineEnd = ui
},
result: function() {
var t = ei ? [$n / ei, ti / ei] : Qn ? [Jn / Qn, Kn / Qn] : Un ? [Xn / Un, Yn / Un] : [NaN, NaN];
return Xn = Yn = Un = Jn = Kn = Qn = $n = ti = ei = 0, t
}
};
function ii(t, e) {
Xn += t, Yn += e, ++Un
}
function ri() {
ni.point = oi
}
function oi(t, e) {
ni.point = ai, ii(Wn = t, Zn = e)
}
function ai(t, e) {
var n = t - Wn,
i = e - Zn,
r = U(n * n + i * i);
Jn += r * (Wn + t) / 2, Kn += r * (Zn + e) / 2, Qn += r, ii(Wn = t, Zn = e)
}
function ui() {
ni.point = ii
}
function si() {
ni.point = li
}
function ci() {
hi(Bn, Hn)
}
function li(t, e) {
ni.point = hi, ii(Bn = Wn = t, Hn = Zn = e)
}
function hi(t, e) {
var n = t - Wn,
i = e - Zn,
r = U(n * n + i * i);
Jn += r * (Wn + t) / 2, Kn += r * (Zn + e) / 2, Qn += r, $n += (r = Zn * t - Wn * e) * (Wn + t), ti += r * (Zn + e), ei += 3 * r, ii(Wn = t, Zn = e)
}
var pi = ni;
function fi(t) {
this._context = t
}
fi.prototype = {
_radius: 4.5,
pointRadius: function(t) {
return this._radius = t, this
},
polygonStart: function() {
this._line = 0
},
polygonEnd: function() {
this._line = NaN
},
lineStart: function() {
this._point = 0
},
lineEnd: function() {
0 === this._line && this._context.closePath(), this._point = NaN
},
point: function(t, e) {
switch (this._point) {
case 0:
this._context.moveTo(t, e), this._point = 1;
break;
case 1:
this._context.lineTo(t, e);
break;
default:
this._context.moveTo(t + this._radius, e), this._context.arc(t, e, this._radius, 0, N)
}
},
result: tt
};
var di, gi, vi, mi, yi, bi = new _,
Pi = {
point: tt,
lineStart: function() {
Pi.point = Si
},
lineEnd: function() {
di && _i(gi, vi), Pi.point = tt
},
polygonStart: function() {
di = !0
},
polygonEnd: function() {
di = null
},
result: function() {
var t = +bi;
return bi = new _, t
}
};
function Si(t, e) {
Pi.point = _i, gi = mi = t, vi = yi = e
}
function _i(t, e) {
mi -= t, yi -= e, bi.add(U(mi * mi + yi * yi)), mi = t, yi = e
}
var Mi = Pi;
function xi() {
this._string = []
}
function ji(t) {
return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z"
}
xi.prototype = {
_radius: 4.5,
_circle: ji(4.5),
pointRadius: function(t) {
return (t = +t) !== this._radius && (this._radius = t, this._circle = null), this
},
polygonStart: function() {
this._line = 0
},
polygonEnd: function() {
this._line = NaN
},
lineStart: function() {
this._point = 0
},
lineEnd: function() {
0 === this._line && this._string.push("Z"), this._point = NaN
},
point: function(t, e) {
switch (this._point) {
case 0:
this._string.push("M", t, ",", e), this._point = 1;
break;
case 1:
this._string.push("L", t, ",", e);
break;
default:
null == this._circle && (this._circle = ji(this._radius)), this._string.push("M", t, ",", e, this._circle)
}
},
result: function() {
if (this._string.length) {
var t = this._string.join("");
return this._string = [], t
}
return null
}
};
var wi = function(t, e) {
var n, i, r = 4.5;
function o(t) {
return t && ("function" == typeof r && i.pointRadius(+r.apply(this, arguments)), ht(t, n(i))), i.result()
}
return o.area = function(t) {
return ht(t, n(Vn)), Vn.result()
}, o.measure = function(t) {
return ht(t, n(Mi)), Mi.result()
}, o.bounds = function(t) {
return ht(t, n(qn)), qn.result()
}, o.centroid = function(t) {
return ht(t, n(pi)), pi.result()
}, o.projection = function(e) {
return arguments.length ? (n = null == e ? (t = null, Cn) : (t = e).stream, o) : t
}, o.context = function(t) {
return arguments.length ? (i = null == t ? (e = null, new xi) : new fi(e = t), "function" != typeof r && i.pointRadius(r), o) : e
}, o.pointRadius = function(t) {
return arguments.length ? (r = "function" == typeof t ? t : (i.pointRadius(+t), +t), o) : r
}, o.projection(t).context(e)
},
Oi = function(t) {
return {
stream: Li(t)
}
};
function Li(t) {
return function(e) {
var n = new Ci;
for (var i in t) n[i] = t[i];
return n.stream = e, n
}
}
function Ci() {}
function Ei(t, e, n) {
var i = t.clipExtent && t.clipExtent();
return t.scale(150).translate([0, 0]), null != i && t.clipExtent(null), ht(n, t.stream(qn)), e(qn.result()), null != i && t.clipExtent(i), t
}
function Ii(t, e, n) {
return Ei(t, function(n) {
var i = e[1][0] - e[0][0],
r = e[1][1] - e[0][1],
o = Math.min(i / (n[1][0] - n[0][0]), r / (n[1][1] - n[0][1])),
a = +e[0][0] + (i - o * (n[1][0] + n[0][0])) / 2,
u = +e[0][1] + (r - o * (n[1][1] + n[0][1])) / 2;
t.scale(150 * o).translate([a, u])
}, n)
}
function Ti(t, e, n) {
return Ii(t, [
[0, 0], e
], n)
}
function Di(t, e, n) {
return Ei(t, function(n) {
var i = +e,
r = i / (n[1][0] - n[0][0]),
o = (i - r * (n[1][0] + n[0][0])) / 2,
a = -r * n[0][1];
t.scale(150 * r).translate([o, a])
}, n)
}
function Gi(t, e, n) {
return Ei(t, function(n) {
var i = +e,
r = i / (n[1][1] - n[0][1]),
o = -r * n[0][0],
a = (i - r * (n[1][1] + n[0][1])) / 2;
t.scale(150 * r).translate([o, a])
}, n)
}
Ci.prototype = {
constructor: Ci,
point: function(t, e) {
this.stream.point(t, e)
},
sphere: function() {
this.stream.sphere()
},
lineStart: function() {
this.stream.lineStart()
},
lineEnd: function() {
this.stream.lineEnd()
},
polygonStart: function() {
this.stream.polygonStart()
},
polygonEnd: function() {
this.stream.polygonEnd()
}
};
var Ni = 16,
zi = F(30 * V),
Vi = function(t, e) {
return +e ? function(t, e) {
function n(i, r, o, a, u, s, c, l, h, p, f, d, g, v) {
var m = c - i,
y = l - r,
b = m * m + y * y;
if (b > 4 * e && g--) {
var P = a + p,
S = u + f,
_ = s + d,
M = U(P * P + S * S + _ * _),
x = Q(_ /= M),
j = A(A(_) - 1) < E || A(o - h) < E ? (o + h) / 2 : R(S, P),
w = t(j, x),
O = w[0],
L = w[1],
C = O - i,
I = L - r,
T = y * C - m * I;
(T * T / b > e || A((m * C + y * I) / b - .5) > .3 || a * p + u * f + s * d < zi) && (n(i, r, o, a, u, s, O, L, j, P /= M, S /= M, _, g, v), v.point(O, L), n(O, L, j, P, S, _, c, l, h, p, f, d, g, v))
}
}
return function(e) {
var i, r, o, a, u, s, c, l, h, p, f, d, g = {
point: v,
lineStart: m,
lineEnd: b,
polygonStart: function() {
e.polygonStart(), g.lineStart = P
},
polygonEnd: function() {
e.polygonEnd(), g.lineStart = m
}
};
function v(n, i) {
n = t(n, i), e.point(n[0], n[1])
}
function m() {
l = NaN, g.point = y, e.lineStart()
}
function y(i, r) {
var o = Tt([i, r]),
a = t(i, r);
n(l, h, c, p, f, d, l = a[0], h = a[1], c = i, p = o[0], f = o[1], d = o[2], Ni, e), e.point(l, h)
}
function b() {
g.point = v, e.lineEnd()
}
function P() {
m(), g.point = S, g.lineEnd = _
}
function S(t, e) {
y(i = t, e), r = l, o = h, a = p, u = f, s = d, g.point = y
}
function _() {
n(l, h, c, p, f, d, r, o, i, a, u, s, Ni, e), g.lineEnd = b, b()
}
return g
}
}(t, e) : function(t) {
return Li({
point: function(e, n) {
e = t(e, n), this.stream.point(e[0], e[1])
}
})
}(t)
};
var Ai = Li({
point: function(t, e) {
this.stream.point(t * V, e * V)
}
});
function ki(t, e, n, i, r, o) {
if (!o) return function(t, e, n, i, r) {
function o(o, a) {
return [e + t * (o *= i), n - t * (a *= r)]
}
return o.invert = function(o, a) {
return [(o - e) / t * i, (n - a) / t * r]
}, o
}(t, e, n, i, r);
var a = F(o),
u = X(o),
s = a * t,
c = u * t,
l = a / t,
h = u / t,
p = (u * n - a * e) / t,
f = (u * e + a * n) / t;
function d(t, o) {
return [s * (t *= i) - c * (o *= r) + e, n - c * t - s * o]
}
return d.invert = function(t, e) {
return [i * (l * t - h * e + p), r * (f - h * t - l * e)]
}, d
}
function Ri(t) {
return Fi(function() {
return t
})()
}
function Fi(t) {
var e, n, i, r, o, a, u, s, c, l, h = 150,
p = 480,
f = 250,
d = 0,
g = 0,
v = 0,
m = 0,
y = 0,
b = 0,
P = 1,
S = 1,
_ = null,
M = Ze,
x = null,
j = Cn,
w = .5;
function O(t) {
return s(t[0] * V, t[1] * V)
}
function L(t) {
return (t = s.invert(t[0], t[1])) && [t[0] * z, t[1] * z]
}
function C() {
var t = ki(h, 0, 0, P, S, b).apply(null, e(d, g)),
i = ki(h, p - t[0], f - t[1], P, S, b);
return n = Oe(v, m, y), u = je(e, i), s = je(n, u), a = Vi(u, w), E()
}
function E() {
return c = l = null, O
}
return O.stream = function(t) {
return c && l === t ? c : c = Ai(function(t) {
return Li({
point: function(e, n) {
var i = t(e, n);
return this.stream.point(i[0], i[1])
}
})
}(n)(M(a(j(l = t)))))
}, O.preclip = function(t) {
return arguments.length ? (M = t, _ = void 0, E()) : M
}, O.postclip = function(t) {
return arguments.length ? (j = t, x = i = r = o = null, E()) : j
}, O.clipAngle = function(t) {
return arguments.length ? (M = +t ? qe(_ = t * V) : (_ = null, Ze), E()) : _ * z
}, O.clipExtent = function(t) {
return arguments.length ? (j = null == t ? (x = i = r = o = null, Cn) : Je(x = +t[0][0], i = +t[0][1], r = +t[1][0], o = +t[1][1]), E()) : null == x ? null : [
[x, i],
[r, o]
]
}, O.scale = function(t) {
return arguments.length ? (h = +t, C()) : h
}, O.translate = function(t) {
return arguments.length ? (p = +t[0], f = +t[1], C()) : [p, f]
}, O.center = function(t) {
return arguments.length ? (d = t[0] % 360 * V, g = t[1] % 360 * V, C()) : [d * z, g * z]
}, O.rotate = function(t) {
return arguments.length ? (v = t[0] % 360 * V, m = t[1] % 360 * V, y = t.length > 2 ? t[2] % 360 * V : 0, C()) : [v * z, m * z, y * z]
}, O.angle = function(t) {
return arguments.length ? (b = t % 360 * V, C()) : b * z
}, O.reflectX = function(t) {
return arguments.length ? (P = t ? -1 : 1, C()) : P < 0
}, O.reflectY = function(t) {
return arguments.length ? (S = t ? -1 : 1, C()) : S < 0
}, O.precision = function(t) {
return arguments.length ? (a = Vi(u, w = t * t), E()) : U(w)
}, O.fitExtent = function(t, e) {
return Ii(O, t, e)
}, O.fitSize = function(t, e) {
return Ti(O, t, e)
}, O.fitWidth = function(t, e) {
return Di(O, t, e)
}, O.fitHeight = function(t, e) {
return Gi(O, t, e)
},
function() {
return e = t.apply(this, arguments), O.invert = e.invert && L, C()
}
}
function Bi(t) {
var e = 0,
n = T / 3,
i = Fi(t),
r = i(e, n);
return r.parallels = function(t) {
return arguments.length ? i(e = t[0] * V, n = t[1] * V) : [e * z, n * z]
}, r
}
function Hi(t, e) {
var n = X(t),
i = (n + X(e)) / 2;
if (A(i) < E) return function(t) {
var e = F(t);
function n(t, n) {
return [t * e, X(n) / e]
}
return n.invert = function(t, n) {
return [t / e, Q(n * e)]
}, n
}(t);
var r = 1 + n * (2 * i - n),
o = U(r) / i;
function a(t, e) {
var n = U(r - 2 * i * X(e)) / i;
return [n * X(t *= i), o - n * F(t)]
}
return a.invert = function(t, e) {
var n = o - e,
a = R(t, A(n)) * Y(n);
return n * i < 0 && (a -= T * Y(t) * Y(n)), [a / i, Q((r - (t * t + n * n) * i * i) / (2 * i))]
}, a
}
var Wi = function() {
return Bi(Hi).scale(155.424).center([0, 33.6442])
},
Zi = function() {
return Wi().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-.6, 38.7])
};
var qi = function() {
var t, e, n, i, r, o, a = Zi(),
u = Wi().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),
s = Wi().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),
c = {
point: function(t, e) {
o = [t, e]
}
};
function l(t) {
var e = t[0],
a = t[1];
return o = null, n.point(e, a), o || (i.point(e, a), o) || (r.point(e, a), o)
}
function h() {
return t = e = null, l
}
return l.invert = function(t) {
var e = a.scale(),
n = a.translate(),
i = (t[0] - n[0]) / e,
r = (t[1] - n[1]) / e;
return (r >= .12 && r < .234 && i >= -.425 && i < -.214 ? u : r >= .166 && r < .234 && i >= -.214 && i < -.115 ? s : a).invert(t)
}, l.stream = function(n) {
return t && e === n ? t : t = function(t) {
var e = t.length;
return {
point: function(n, i) {
for (var r = -1; ++r < e;) t[r].point(n, i)
},
sphere: function() {
for (var n = -1; ++n < e;) t[n].sphere()
},
lineStart: function() {
for (var n = -1; ++n < e;) t[n].lineStart()
},
lineEnd: function() {
for (var n = -1; ++n < e;) t[n].lineEnd()
},
polygonStart: function() {
for (var n = -1; ++n < e;) t[n].polygonStart()
},
polygonEnd: function() {
for (var n = -1; ++n < e;) t[n].polygonEnd()
}
}
}([a.stream(e = n), u.stream(n), s.stream(n)])
}, l.precision = function(t) {
return arguments.length ? (a.precision(t), u.precision(t), s.precision(t), h()) : a.precision()
}, l.scale = function(t) {
return arguments.length ? (a.scale(t), u.scale(.35 * t), s.scale(t), l.translate(a.translate())) : a.scale()
}, l.translate = function(t) {
if (!arguments.length) return a.translate();
var e = a.scale(),
o = +t[0],
l = +t[1];
return n = a.translate(t).clipExtent([
[o - .455 * e, l - .238 * e],
[o + .455 * e, l + .238 * e]
]).stream(c), i = u.translate([o - .307 * e, l + .201 * e]).clipExtent([
[o - .425 * e + E, l + .12 * e + E],
[o - .214 * e - E, l + .234 * e - E]
]).stream(c), r = s.translate([o - .205 * e, l + .212 * e]).clipExtent([
[o - .214 * e + E, l + .166 * e + E],
[o - .115 * e - E, l + .234 * e - E]
]).stream(c), h()
}, l.fitExtent = function(t, e) {
return Ii(l, t, e)
}, l.fitSize = function(t, e) {
return Ti(l, t, e)
}, l.fitWidth = function(t, e) {
return Di(l, t, e)
}, l.fitHeight = function(t, e) {
return Gi(l, t, e)
}, l.scale(1070)
};
function Xi(t) {
return function(e, n) {
var i = F(e),
r = F(n),
o = t(i * r);
return o === 1 / 0 ? [2, 0] : [o * r * X(e), o * X(n)]
}
}
function Yi(t) {
return function(e, n) {
var i = U(e * e + n * n),
r = t(i),
o = X(r),
a = F(r);
return [R(e * o, i * a), Q(i && n * o / i)]
}
}
var Ui = Xi(function(t) {
return U(2 / (1 + t))
});
Ui.invert = Yi(function(t) {
return 2 * Q(t / 2)
});
var Ji = function() {
return Ri(Ui).scale(124.75).clipAngle(179.999)
},
Ki = Xi(function(t) {
return (t = K(t)) && t / X(t)
});
Ki.invert = Yi(function(t) {
return t
});
var Qi = function() {
return Ri(Ki).scale(79.4188).clipAngle(179.999)
};
function $i(t, e) {
return [t, Z(J((D + e) / 2))]
}
$i.invert = function(t, e) {
return [t, 2 * k(H(e)) - D]
};
var tr = function() {
return er($i).scale(961 / N)
};
function er(t) {
var e, n, i, r = Ri(t),
o = r.center,
a = r.scale,
u = r.translate,
s = r.clipExtent,
c = null;
function l() {
var o = T * a(),
u = r(Ie(r.rotate()).invert([0, 0]));
return s(null == c ? [
[u[0] - o, u[1] - o],
[u[0] + o, u[1] + o]
] : t === $i ? [
[Math.max(u[0] - o, c), e],
[Math.min(u[0] + o, n), i]
] : [
[c, Math.max(u[1] - o, e)],
[n, Math.min(u[1] + o, i)]
])
}
return r.scale = function(t) {
return arguments.length ? (a(t), l()) : a()
}, r.translate = function(t) {
return arguments.length ? (u(t), l()) : u()
}, r.center = function(t) {
return arguments.length ? (o(t), l()) : o()
}, r.clipExtent = function(t) {
return arguments.length ? (null == t ? c = e = n = i = null : (c = +t[0][0], e = +t[0][1], n = +t[1][0], i = +t[1][1]), l()) : null == c ? null : [
[c, e],
[n, i]
]
}, l()
}
function nr(t) {
return J((D + t) / 2)
}
function ir(t, e) {
var n = F(t),
i = t === e ? X(t) : Z(n / F(e)) / Z(nr(e) / nr(t)),
r = n * q(nr(t), i) / i;
if (!i) return $i;
function o(t, e) {
r > 0 ? e < -D + E && (e = -D + E) : e > D - E && (e = D - E);
var n = r / q(nr(e), i);
return [n * X(i * t), r - n * F(i * t)]
}
return o.invert = function(t, e) {
var n = r - e,
o = Y(i) * U(t * t + n * n),
a = R(t, A(n)) * Y(n);
return n * i < 0 && (a -= T * Y(t) * Y(n)), [a / i, 2 * k(q(r / o, 1 / i)) - D]
}, o
}
var rr = function() {
return Bi(ir).scale(109.5).parallels([30, 30])
};
function or(t, e) {
return [t, e]
}
or.invert = or;
var ar = function() {
return Ri(or).scale(152.63)
};
function ur(t, e) {
var n = F(t),
i = t === e ? X(t) : (n - F(e)) / (e - t),
r = n / i + t;
if (A(i) < E) return or;
function o(t, e) {
var n = r - e,
o = i * t;
return [n * X(o), r - n * F(o)]
}
return o.invert = function(t, e) {
var n = r - e,
o = R(t, A(n)) * Y(n);
return n * i < 0 && (o -= T * Y(t) * Y(n)), [o / i, r - Y(i) * U(t * t + n * n)]
}, o
}
var sr = function() {
return Bi(ur).scale(131.154).center([0, 13.9389])
},
cr = 1.340264,
lr = -.081106,
hr = 893e-6,
pr = .003796,
fr = U(3) / 2;
function dr(t, e) {
var n = Q(fr * X(e)),
i = n * n,
r = i * i * i;
return [t * F(n) / (fr * (cr + 3 * lr * i + r * (7 * hr + 9 * pr * i))), n * (cr + lr * i + r * (hr + pr * i))]
}
dr.invert = function(t, e) {
for (var n, i = e, r = i * i, o = r * r * r, a = 0; a < 12 && (o = (r = (i -= n = (i * (cr + lr * r + o * (hr + pr * r)) - e) / (cr + 3 * lr * r + o * (7 * hr + 9 * pr * r))) * i) * r * r, !(A(n) < I)); ++a);
return [fr * t * (cr + 3 * lr * r + o * (7 * hr + 9 * pr * r)) / F(i), Q(X(i) / fr)]
};
var gr = function() {
return Ri(dr).scale(177.158)
};
function vr(t, e) {
var n = F(e),
i = F(t) * n;
return [n * X(t) / i, X(e) / i]
}
vr.invert = Yi(k);
var mr = function() {
return Ri(vr).scale(144.049).clipAngle(60)
},
yr = function() {
var t, e, n, i, r, o, a, u = 1,
s = 0,
c = 0,
l = 1,
h = 1,
p = 0,
f = null,
d = 1,
g = 1,
v = Li({
point: function(t, e) {
var n = b([t, e]);
this.stream.point(n[0], n[1])
}
}),
m = Cn;
function y() {
return d = u * l, g = u * h, o = a = null, b
}
function b(n) {
var i = n[0] * d,
r = n[1] * g;
if (p) {
var o = r * t - i * e;
i = i * t + r * e, r = o
}
return [i + s, r + c]
}
return b.invert = function(n) {
var i = n[0] - s,
r = n[1] - c;
if (p) {
var o = r * t + i * e;
i = i * t - r * e, r = o
}
return [i / d, r / g]
}, b.stream = function(t) {
return o && a === t ? o : o = v(m(a = t))
}, b.postclip = function(t) {
return arguments.length ? (m = t, f = n = i = r = null, y()) : m
}, b.clipExtent = function(t) {
return arguments.length ? (m = null == t ? (f = n = i = r = null, Cn) : Je(f = +t[0][0], n = +t[0][1], i = +t[1][0], r = +t[1][1]), y()) : null == f ? null : [
[f, n],
[i, r]
]
}, b.scale = function(t) {
return arguments.length ? (u = +t, y()) : u
}, b.translate = function(t) {
return arguments.length ? (s = +t[0], c = +t[1], y()) : [s, c]
}, b.angle = function(n) {
return arguments.length ? (e = X(p = n % 360 * V), t = F(p), y()) : p * z
}, b.reflectX = function(t) {
return arguments.length ? (l = t ? -1 : 1, y()) : l < 0
}, b.reflectY = function(t) {
return arguments.length ? (h = t ? -1 : 1, y()) : h < 0
}, b.fitExtent = function(t, e) {
return Ii(b, t, e)
}, b.fitSize = function(t, e) {
return Ti(b, t, e)
}, b.fitWidth = function(t, e) {
return Di(b, t, e)
}, b.fitHeight = function(t, e) {
return Gi(b, t, e)
}, b
};
function br(t, e) {
var n = e * e,
i = n * n;
return [t * (.8707 - .131979 * n + i * (i * (.003971 * n - .001529 * i) - .013791)), e * (1.007226 + n * (.015085 + i * (.028874 * n - .044475 - .005916 * i)))]
}
br.invert = function(t, e) {
var n, i = e,
r = 25;
do {
var o = i * i,
a = o * o;
i -= n = (i * (1.007226 + o * (.015085 + a * (.028874 * o - .044475 - .005916 * a))) - e) / (1.007226 + o * (.045255 + a * (.259866 * o - .311325 - .005916 * 11 * a)))
} while (A(n) > E && --r > 0);
return [t / (.8707 + (o = i * i) * (o * (o * o * o * (.003971 - .001529 * o) - .013791) - .131979)), i]
};
var Pr = function() {
return Ri(br).scale(175.295)
};
function Sr(t, e) {
return [F(e) * X(t), X(e)]
}
Sr.invert = Yi(Q);
var _r = function() {
return Ri(Sr).scale(249.5).clipAngle(90 + E)
};
function Mr(t, e) {
var n = F(e),
i = 1 + F(t) * n;
return [n * X(t) / i, X(e) / i]
}
Mr.invert = Yi(function(t) {
return 2 * k(t)
});
var xr = function() {
return Ri(Mr).scale(250).clipAngle(142)
};
function jr(t, e) {
return [Z(J((D + e) / 2)), -t]
}
jr.invert = function(t, e) {
return [-e, 2 * k(H(t)) - D]
};
var wr = function() {
var t = er(jr),
e = t.center,
n = t.rotate;
return t.center = function(t) {
return arguments.length ? e([-t[1], t[0]]) : [(t = e())[1], -t[0]]
}, t.rotate = function(t) {
return arguments.length ? n([t[0], t[1], t.length > 2 ? t[2] + 90 : 90]) : [(t = n())[0], t[1], t[2] - 90]
}, n([0, 0, 90]).scale(159.155)
},
Or = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapSeriesDataItem", e.values.value = {}, e.applyTheme(), e
}
return Object(c.c)(e, t), Object.defineProperty(e.prototype, "value", {
get: function() {
return this.values.value.value
},
set: function(t) {
this.setValue("value", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "zoomLevel", {
get: function() {
return this.properties.zoomLevel
},
set: function(t) {
this.setProperty("zoomLevel", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "zoomGeoPoint", {
get: function() {
return this.properties.zoomGeoPoint
},
set: function(t) {
this.setProperty("zoomGeoPoint", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "east", {
get: function() {
return this._east
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "west", {
get: function() {
return this._west
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "south", {
get: function() {
return this._south
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "north", {
get: function() {
return this._north
},
enumerable: !0,
configurable: !0
}), e.prototype.updateExtremes = function() {
var t = this.getFeature().geometry;
if (t) {
var e = he(t),
n = e[0][0],
i = e[0][1],
r = e[1][1],
o = e[1][0],
a = !1;
r != this.north && (this._north = v.round(r, 6), a = !0), i != this.south && (this._south = v.round(i, 6), a = !0), o != this.east && (this._east = v.round(o, 6), a = !0), n != this.west && (this._west = v.round(n, 6), a = !0), this._east < this._west && (this._east = 180, this._west = -180), a && this.component.invalidateDataItems()
}
}, e.prototype.getFeature = function() {
return {}
}, e
}(f.b),
Lr = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapSeries", e.isMeasured = !1, e.nonScalingStroke = !0, e.dataFields.value = "value", e.ignoreBounds = !1, e.tooltip && (e.tooltip.showInViewport = !0), e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new Or
}, e.prototype.checkInclude = function(t, e, n) {
if (t) {
if (0 == t.length) return !1;
if (-1 == t.indexOf(n)) return !1
}
return !(e && e.length > 0 && -1 != e.indexOf(n))
}, Object.defineProperty(e.prototype, "useGeodata", {
get: function() {
return this.getPropertyValue("useGeodata")
},
set: function(t) {
this.setPropertyValue("useGeodata", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "include", {
get: function() {
return this.getPropertyValue("include")
},
set: function(t) {
this.setPropertyValue("include", t) && this.processIncExc()
},
enumerable: !0,
configurable: !0
}), e.prototype.processIncExc = function() {
this.invalidateData()
}, Object.defineProperty(e.prototype, "ignoreBounds", {
get: function() {
return this.getPropertyValue("ignoreBounds")
},
set: function(t) {
this.setPropertyValue("ignoreBounds", t) && this.chart && this.chart.updateExtremes()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "exclude", {
get: function() {
return this.getPropertyValue("exclude")
},
set: function(t) {
this.setPropertyValue("exclude", t) && this.processIncExc()
},
enumerable: !0,
configurable: !0
}), e.prototype.handleObjectAdded = function(t) {
var e = t.newValue;
e.parent = this, e.series = this, e.strokeWidth = e.strokeWidth
}, Object.defineProperty(e.prototype, "geodata", {
get: function() {
return this._geodata
},
set: function(t) {
if (t != this._geodata) {
this._geodata = t;
for (var e = this.data.length - 1; e >= 0; e--) 1 == this.data[e].madeFromGeoData && this.data.splice(e, 1);
this.disposeData(), this.invalidateData()
}
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "geodataSource", {
get: function() {
return this._dataSources.geodata || this.getDataSource("geodata"), this._dataSources.geodata
},
set: function(t) {
var e = this;
this._dataSources.geodata && this.removeDispose(this._dataSources.geodata), this._dataSources.geodata = t, this._dataSources.geodata.component = this, this.events.on("inited", function() {
e.loadData("geodata")
}, void 0, !1), this.setDataSourceEvents(t, "geodata")
},
enumerable: !0,
configurable: !0
}), e.prototype.getFeatures = function() {}, e.prototype.validateDataItems = function() {
t.prototype.validateDataItems.call(this), this.updateExtremes()
}, e.prototype.updateExtremes = function() {
var t, e, n, i;
this.dataItems.each(function(r) {
(r.north > t || !g.isNumber(t)) && (t = r.north), (r.south < e || !g.isNumber(e)) && (e = r.south), (r.west < i || !g.isNumber(i)) && (i = r.west), (r.east > n || !g.isNumber(n)) && (n = r.east)
}), this._mapObjects && this._mapObjects.each(function(r) {
(r.north > t || !g.isNumber(t)) && (t = r.north), (r.south < e || !g.isNumber(e)) && (e = r.south), (r.west < i || !g.isNumber(i)) && (i = r.west), (r.east > n || !g.isNumber(n)) && (n = r.east)
}), this.north == t && this.east == n && this.south == e && this.west == i || (this._north = t, this._east = n, this._west = i, this._south = e, this.dispatch("geoBoundsChanged"), this.ignoreBounds || this.chart.updateExtremes())
}, Object.defineProperty(e.prototype, "north", {
get: function() {
return g.isNumber(this._northDefined) ? this._northDefined : this._north
},
set: function(t) {
this._northDefined = t
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "south", {
get: function() {
return g.isNumber(this._southDefined) ? this._southDefined : this._south
},
set: function(t) {
this._southDefined = t
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "west", {
get: function() {
return g.isNumber(this._westDefined) ? this._westDefined : this._west
},
set: function(t) {
this._westDefined = t
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "east", {
get: function() {
return g.isNumber(this._eastDefined) ? this._eastDefined : this._east
},
set: function(t) {
this._eastDefined = t
},
enumerable: !0,
configurable: !0
}), e.prototype.processConfig = function(e) {
if (g.hasValue(e.geodata) && g.isString(e.geodata)) {
var n = e.geodata;
if (g.hasValue(window["am4geodata_" + e.geodata])) e.geodata = window["am4geodata_" + e.geodata];
else try {
e.geodata = JSON.parse(e.geodata)
} catch (t) {
throw Error("MapChart error: Geodata `" + n + "` is not loaded or is incorrect.")
}
}
t.prototype.processConfig.call(this, e)
}, e.prototype.asIs = function(e) {
return "geodata" == e || t.prototype.asIs.call(this, e)
}, e.prototype.updateTooltipBounds = function() {
this.tooltip && this.topParent && this.tooltip.setBounds({
x: 10,
y: 10,
width: this.topParent.maxWidth - 20,
height: this.topParent.maxHeight - 20
})
}, e
}(f.a);
d.c.registeredClasses.MapSeries = Lr, d.c.registeredClasses.MapSeriesDataItem = Or;
var Cr = n("C6dT"),
Er = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapObject", e.isMeasured = !1, e.layout = "none", e.clickable = !0, e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.validate = function() {
this.series && this.series.itemReaderText && (this.readerTitle = this.series.itemReaderText), t.prototype.validate.call(this)
}, e.prototype.updateExtremes = function() {
var t = this.getFeature();
if (t) {
var e = t.geometry;
if (e) {
var n = he(e),
i = n[0][0],
r = n[0][1],
o = n[1][1],
a = n[1][0],
u = !1;
o != this.north && (this._north = v.round(o, 8), u = !0), r != this.south && (this._south = v.round(r), u = !0), a != this.east && (this._east = v.round(a), u = !0), i != this.west && (this._west = v.round(i), u = !0), u && (this.dispatch("geoBoundsChanged"), this.series && this.series.invalidateDataItems())
}
}
}, e.prototype.getFeature = function() {
return {}
}, Object.defineProperty(e.prototype, "east", {
get: function() {
return g.isNumber(this._east) ? this._east : this.dataItem ? this.dataItem.east : void 0
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "west", {
get: function() {
return g.isNumber(this._west) ? this._west : this.dataItem ? this.dataItem.west : void 0
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "south", {
get: function() {
return g.isNumber(this._south) ? this._south : this.dataItem ? this.dataItem.south : void 0
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "north", {
get: function() {
return g.isNumber(this._north) ? this._north : this.dataItem ? this.dataItem.north : void 0
},
enumerable: !0,
configurable: !0
}), e.prototype.showTooltip = function(e) {
var n = t.prototype.showTooltip.call(this, e);
return n && "always" == this.showTooltipOn && !this.series.chart.events.has("mappositionchanged", this.handleTooltipMove, this) && this.addDisposer(this.series.chart.events.on("mappositionchanged", this.handleTooltipMove, this)), n
}, e.prototype.handleTooltipMove = function(t) {
this.tooltip.isHidden || this.showTooltip()
}, e.prototype.setDataItem = function(e) {
t.prototype.setDataItem.call(this, e), this.applyAccessibility()
}, e
}(Cr.a);
d.c.registeredClasses.MapObject = Er;
var Ir = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapImage", e.applyTheme(), e
}
return Object(c.c)(e, t), Object.defineProperty(e.prototype, "latitude", {
get: function() {
var t = this.getPropertyValue("latitude");
return !g.isNumber(t) && this.dataItem && this.dataItem.geoPoint && (t = this.dataItem.geoPoint.latitude), t
},
set: function(t) {
this.setPropertyValue("latitude", t, !1, !0), this.updateExtremes()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "longitude", {
get: function() {
var t = this.getPropertyValue("longitude");
return !g.isNumber(t) && this.dataItem && this.dataItem.geoPoint && (t = this.dataItem.geoPoint.longitude), t
},
set: function(t) {
this.setPropertyValue("longitude", t, !1, !0), this.updateExtremes()
},
enumerable: !0,
configurable: !0
}), e.prototype.validatePosition = function() {
if (g.isNumber(this.latitude) && g.isNumber(this.longitude)) {
var e = this.series.chart.projection.d3Projection([this.longitude, this.latitude]),
n = this.series.chart.projection.d3Path({
type: "Point",
coordinates: [this.longitude, this.latitude]
});
this.__disabled = !n, this.moveTo({
x: e[0],
y: e[1]
})
}
t.prototype.validatePosition.call(this)
}, e.prototype.getFeature = function() {
return {
type: "Feature",
geometry: {
type: "Point",
coordinates: [this.longitude, this.latitude]
}
}
}, e
}(Er);
d.c.registeredClasses.MapImage = Ir;
var Tr = n("R6wv"),
Dr = n("o+vr"),
Gr = n.n(Dr),
Nr = n("hJ5i");
function zr(t) {
return Nr.map(t, function(t) {
var e = t[0],
n = t[1],
i = [];
return e && i.push(Ar(e)), n && i.push(Ar(n)), i
})
}
function Vr(t) {
return Nr.map(t, function(t) {
return Ar(t)
})
}
function Ar(t) {
return Nr.map(t, function(t) {
return Rr(t)
})
}
function kr(t) {
return Nr.map(t, Fr)
}
function Rr(t) {
return {
longitude: t[0],
latitude: t[1]
}
}
function Fr(t) {
return [t.longitude, t.latitude]
}
function Br(t) {
return Nr.map(t, function(t) {
return Nr.map(t, Fr)
})
}
function Hr(t) {
return Nr.map(t, function(t) {
var e = t[0],
n = t[1],
i = [];
return e && i.push(kr(e)), n && i.push(kr(n)), i
})
}
function Wr(t, e, n) {
return [Ge().center([t, e]).radius(n)().coordinates]
}
function Zr(t, e, n, i) {
var r = []; - 180 == i && (i = -179.9999), -90 == n && (n = -89.9999), 90 == t && (t = 89.9999), 180 == e && (e = 179.9999);
for (var o = Math.min(90, (e - i) / Math.ceil((e - i) / 90)), a = (t - n) / Math.ceil((t - n) / 90), u = i; u < e; u += o) {
var s = [];
r.push([s]), u + o > e && (o = e - u);
for (var c = u; c <= u + o; c += 5) s.push([c, t]);
for (var l = t; l >= n; l -= a) s.push([u + o, l]);
for (c = u + o; c >= u; c -= 5) s.push([c, n]);
for (l = n; l <= t; l += a) s.push([u, l])
}
return r
}
var qr = function(t) {
function e() {
var e = t.call(this) || this;
e.className = "MapPolygon", e.polygon = e.createChild(Tr.a), e.polygon.shouldClone = !1, e.polygon.applyOnClones = !0, e.setPropertyValue("precision", .5);
var n = new p.a;
return e.fill = n.getFor("secondaryButton"), e.stroke = n.getFor("secondaryButtonStroke"), e.strokeOpacity = 1, e.tooltipPosition = "pointer", e.nonScalingStroke = !0, e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.getFeature = function() {
if (this.multiPolygon && this.multiPolygon.length > 0) return {
type: "Feature",
geometry: {
type: "MultiPolygon",
coordinates: this.multiPolygon
}
}
}, Object.defineProperty(e.prototype, "multiGeoPolygon", {
get: function() {
var t = this.getPropertyValue("multiGeoPolygon");
return !t && this.dataItem && (t = this.dataItem.multiGeoPolygon), t
},
set: function(t) {
this.setPropertyValue("multiGeoPolygon", t, !0), this.multiPolygon = Hr(t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiPolygon", {
get: function() {
var t = this.getPropertyValue("multiPolygon");
return !t && this.dataItem && (t = this.dataItem.multiPolygon), t
},
set: function(t) {
this.setPropertyValue("multiPolygon", t) && (this.updateExtremes(), this.invalidate())
},
enumerable: !0,
configurable: !0
}), e.prototype.validate = function() {
if (this.series) {
var e = this.series.chart.projection,
n = e.d3Path;
if (this.multiPolygon) {
if (this.series) {
var i = {
type: "MultiPolygon",
coordinates: this.multiPolygon
};
e.d3Projection.precision(this.precision), this.polygon.path = n(i)
}
if (this.series.calculateVisualCenter) {
var r = 0,
o = this.multiPolygon[0];
if (this.multiPolygon.length > 1)
for (var a = 0; a < this.multiPolygon.length; a++) {
var u = this.multiPolygon[a],
s = Et({
type: "Polygon",
coordinates: u
});
s > r && (o = u, r = s)
}
var c = Gr()(o);
this._visualLongitude = c[0], this._visualLatitude = c[1]
} else this._visualLongitude = this.longitude, this._visualLatitude = this.latitude
}
}
t.prototype.validate.call(this)
}, e.prototype.measureElement = function() {}, Object.defineProperty(e.prototype, "latitude", {
get: function() {
return this.north + (this.south - this.north) / 2
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "longitude", {
get: function() {
return this.east + (this.west - this.east) / 2
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "visualLatitude", {
get: function() {
var t = this.getPropertyValue("visualLatitude");
return g.isNumber(t) ? t : this._adapterO ? this._adapterO.apply("visualLatitude", this._visualLatitude) : this._visualLatitude
},
set: function(t) {
this.setPropertyValue("visualLatitude", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "visualLongitude", {
get: function() {
var t = this.getPropertyValue("visualLongitude");
return g.isNumber(t) ? t : this._adapterO ? this._adapterO.apply("visualLongitude", this._visualLongitude) : this._visualLongitude
},
set: function(t) {
this.setPropertyValue("visualLongitude", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "pixelWidth", {
get: function() {
return this.polygon.pixelWidth
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "pixelHeight", {
get: function() {
return this.polygon.pixelHeight
},
enumerable: !0,
configurable: !0
}), e.prototype.copyFrom = function(e) {
t.prototype.copyFrom.call(this, e), this.polygon.copyFrom(e.polygon)
}, e.prototype.updateExtremes = function() {
t.prototype.updateExtremes.call(this)
}, Object.defineProperty(e.prototype, "boxArea", {
get: function() {
return (this.north - this.south) * (this.east - this.west)
},
enumerable: !0,
configurable: !0
}), e.prototype.getTooltipX = function() {
return this.series.chart.projection.convert({
longitude: this.visualLongitude,
latitude: this.visualLatitude
}).x
}, e.prototype.getTooltipY = function() {
return this.series.chart.projection.convert({
longitude: this.visualLongitude,
latitude: this.visualLatitude
}).y
}, Object.defineProperty(e.prototype, "precision", {
get: function() {
return this.getPropertyValue("precision")
},
set: function(t) {
this.setPropertyValue("precision", t, !0)
},
enumerable: !0,
configurable: !0
}), e
}(Er);
d.c.registeredClasses.MapPolygon = qr;
var Xr = n("vMqJ"),
Yr = n("v9UT"),
Ur = n("Wglt"),
Jr = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapPolygonSeriesDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.getFeature = function() {
if (this.multiPolygon && this.multiPolygon.length > 0) return {
type: "Feature",
geometry: {
type: "MultiPolygon",
coordinates: this.multiPolygon
}
}
}, Object.defineProperty(e.prototype, "mapPolygon", {
get: function() {
var t = this;
if (!this._mapPolygon) {
var e = this.component.mapPolygons.create();
this._mapPolygon = e, this.addSprite(e), this._disposers.push(new h.b(function() {
t.component && t.component.mapPolygons.removeValue(e)
})), this.mapObject = e
}
return this._mapPolygon
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "polygon", {
get: function() {
return this._polygon
},
set: function(t) {
this._polygon = t, this.multiPolygon = [t]
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiPolygon", {
get: function() {
return this._multiPolygon
},
set: function(t) {
this._multiPolygon = t, this.updateExtremes()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "geoPolygon", {
get: function() {
return this._geoPolygon
},
set: function(t) {
this._geoPolygon = t, this.multiGeoPolygon = [t]
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiGeoPolygon", {
get: function() {
return this._multiGeoPolygon
},
set: function(t) {
this._multiGeoPolygon = t, this.multiPolygon = Hr(t)
},
enumerable: !0,
configurable: !0
}), e
}(Or),
Kr = function(t) {
function e() {
var e = t.call(this) || this;
return e.calculateVisualCenter = !1, e.className = "MapPolygonSeries", e.dataFields.multiPolygon = "multiPolygon", e.dataFields.polygon = "polygon", e.dataFields.geoPolygon = "geoPolygon", e.dataFields.multiGeoPolygon = "multiGeoPolygon", e.setPropertyValue("sortPolygonsBy", "area"), e.setPropertyValue("sortPolygonsReversed", !1), e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new Jr
}, e.prototype.processIncExc = function() {
this.mapPolygons.clear(), t.prototype.processIncExc.call(this)
}, e.prototype.validateData = function() {
if (this.useGeodata || this.geodata) {
var e = this._dataSources.geodata ? void 0 : this.chart.geodata;
if (this.geodata && (e = this.geodata), e) {
var n = void 0;
if ("FeatureCollection" == e.type ? n = e.features : "Feature" == e.type ? n = [e] : -1 != ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon"].indexOf(e.type) ? n = [{
geometry: e
}] : console.log("nothing found in geoJSON"), n)
for (var i = function(t, e) {
var i = n[t],
o = i.geometry;
if (o) {
var a = o.type,
u = i.id;
if (r.chart.geodataNames && r.chart.geodataNames[u] && (i.properties.name = r.chart.geodataNames[u]), "Polygon" == a || "MultiPolygon" == a) {
if (!r.checkInclude(r.include, r.exclude, u)) return "continue";
var s = o.coordinates;
s && "Polygon" == a && (s = [s]);
var c = Nr.find(r.data, function(t, e) {
return t.id == u
});
c ? c.multiPolygon || (c.multiPolygon = s) : (c = {
multiPolygon: s,
id: u,
madeFromGeoData: !0
}, r.data.push(c)), Yr.softCopyProperties(i.properties, c)
}
}
}, r = this, o = 0, a = n.length; o < a; o++) i(o)
}
}
t.prototype.validateData.call(this)
}, e.prototype.validate = function() {
if (t.prototype.validate.call(this), this.dataItems.each(function(t) {
Yr.used(t.mapPolygon)
}), "none" != this.sortPolygonsBy) {
var e = this.sortPolygonsBy,
n = this.sortPolygonsReversed;
this.mapPolygons.sort(function(t, i) {
var r = "",
o = "",
a = -1,
u = 1;
switch (e) {
case "area":
r = t.boxArea, o = i.boxArea, a = -1, u = 1;
break;
case "name":
r = t.dataItem.dataContext.name || "", o = i.dataItem.dataContext.name || "", a = 1, u = -1;
break;
case "id":
r = t.dataItem.dataContext.id || "", o = i.dataItem.dataContext.id || "", a = 1, u = -1;
break;
case "latitude":
r = n ? t.south : t.north, o = n ? i.south : i.north, a = -1, u = 1;
break;
case "longitude":
r = n ? t.east : t.west, o = n ? i.east : i.west, a = 1, u = -1
}
return r < o ? n ? u : a : r > o ? n ? a : u : 0
}), this.mapPolygons.each(function(t, e) {
t.validate(), t.zIndex || t.propertyFields.zIndex || (t.zIndex = 1e6 - e)
})
}
}, Object.defineProperty(e.prototype, "mapPolygons", {
get: function() {
if (!this._mapPolygons) {
var t = new qr,
e = new Xr.e(t);
this._disposers.push(new Xr.c(e)), this._disposers.push(e.template), e.template.focusable = !0, e.events.on("inserted", this.handleObjectAdded, this, !1), this._mapPolygons = e, this._mapObjects = e
}
return this._mapPolygons
},
enumerable: !0,
configurable: !0
}), e.prototype.getPolygonById = function(t) {
return Ur.find(this.mapPolygons.iterator(), function(e) {
return e.dataItem.dataContext.id == t
})
}, e.prototype.copyFrom = function(e) {
this.mapPolygons.template.copyFrom(e.mapPolygons.template), t.prototype.copyFrom.call(this, e)
}, e.prototype.getFeatures = function() {
var t = this,
e = [];
return this.dataItems.each(function(t) {
var n = t.getFeature();
n && e.push(n)
}), this.mapPolygons.each(function(n) {
if (-1 == t.dataItems.indexOf(n._dataItem)) {
var i = n.getFeature();
i && e.push(i)
}
}), e
}, Object.defineProperty(e.prototype, "sortPolygonsBy", {
get: function() {
return this.getPropertyValue("sortPolygonsBy")
},
set: function(t) {
this.setPropertyValue("sortPolygonsBy", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "sortPolygonsReversed", {
get: function() {
return this.getPropertyValue("sortPolygonsReversed")
},
set: function(t) {
this.setPropertyValue("sortPolygonsReversed", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), e
}(Lr);
d.c.registeredClasses.MapPolygonSeries = Kr, d.c.registeredClasses.MapPolygonSeriesDataItem = Jr;
var Qr = function() {
function t() {
this.d3Projection = ar()
}
return Object.defineProperty(t.prototype, "d3Projection", {
get: function() {
return this._d3Projection
},
set: function(t) {
this._d3Projection = t, t.precision(.1), this._d3Path = wi().projection(t), this.chart && this.chart.invalidateProjection()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(t.prototype, "d3Path", {
get: function() {
return this._d3Path
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(t.prototype, "scale", {
get: function() {
return this.d3Projection.scale() / 100
},
enumerable: !0,
configurable: !0
}), t.prototype.convert = function(t) {
var e = this.d3Projection([t.longitude, t.latitude]);
if (e) return {
x: e[0],
y: e[1]
}
}, t.prototype.invert = function(t) {
var e = this.d3Projection.invert([t.x, t.y]);
if (e) return {
longitude: e[0],
latitude: e[1]
}
}, t.prototype.project = function(t, e) {
return this.convert({
longitude: t * v.DEGREES,
latitude: e * v.DEGREES
})
}, t.prototype.unproject = function(t, e) {
return this.invert({
x: t,
y: e
})
}, t.prototype.rotate = function(t, e, n, i) {
var r = e * v.RADIANS,
o = n * v.RADIANS;
i *= v.RADIANS;
var a = t.longitude * v.RADIANS + r,
u = t.latitude * v.RADIANS,
s = Math.cos(o),
c = Math.sin(o),
l = Math.cos(i),
h = Math.sin(i),
p = Math.cos(u),
f = Math.cos(a) * p,
d = Math.sin(a) * p,
g = Math.sin(u),
m = g * s + f * c;
return {
longitude: v.DEGREES * Math.atan2(d * l - m * h, f * s - g * c),
latitude: v.DEGREES * Math.asin(m * l + d * h)
}
}, t.prototype.unrotate = function(t, e, n, i) {
var r = e * v.RADIANS,
o = n * v.RADIANS;
i *= v.RADIANS;
var a = t.longitude * v.RADIANS - r,
u = t.latitude * v.RADIANS,
s = Math.cos(o),
c = Math.sin(o),
l = Math.cos(i),
h = Math.sin(i),
p = Math.cos(u),
f = Math.cos(a) * p,
d = Math.sin(a) * p,
g = Math.sin(u),
m = g * l - d * h;
return {
longitude: v.DEGREES * Math.atan2(d * l + g * h, f * s + m * c),
latitude: v.DEGREES * Math.asin(m * s - f * c)
}
}, t.prototype.intermediatePoint = function(t, e, n) {
var i = Ln([t.longitude, t.latitude], [e.longitude, e.latitude])(n);
return {
longitude: i[0],
latitude: i[1]
}
}, t.prototype.multiDistance = function(t) {
for (var e = 0, n = 0; n < t.length; n++) {
var i = t[n];
if (i.length > 1)
for (var r = 1; r < i.length; r++) {
var o = i[r - 1],
a = i[r];
e += this.distance(o, a)
}
}
return e
}, t.prototype.distance = function(t, e) {
return ln([t.longitude, t.latitude], [e.longitude, e.latitude])
}, t.prototype.positionToPoint = function(t, e) {
if (t) {
var n = this.positionToGeoPoint(t, e),
i = this.positionToGeoPoint(t, e - .01),
r = this.positionToGeoPoint(t, e + .01);
if (i && r) {
var o = this.convert(n),
a = this.convert(i),
u = this.convert(r);
return {
x: o.x,
y: o.y,
angle: v.getAngle(a, u)
}
}
}
return {
x: 0,
y: 0,
angle: 0
}
}, t.prototype.positionToGeoPoint = function(t, e) {
if (t) {
for (var n = this.multiDistance(t), i = 0, r = 0, o = 0, a = void 0, u = void 0, s = 0; s < t.length; s++) {
var c = t[s];
if (c.length > 1) {
for (var l = 1; l < c.length; l++)
if (a = c[l - 1], u = c[l], r = i / n, o = (i += this.distance(a, u)) / n, r <= e && o > e) {
s = t.length;
break
}
} else 1 == c.length && (a = c[0], u = c[0], r = 0, o = 1)
}
if (a && u) {
var h = (e - r) / (o - r);
return this.intermediatePoint(a, u, h)
}
}
return {
longitude: 0,
latitude: 0
}
}, t
}();
d.c.registeredClasses.Projection = Qr;
var $r = n("FzPm"),
to = n("GtDR"),
eo = n("8ZqG"),
no = function(t) {
function e() {
var e = t.call(this) || this;
e._chart = new h.d, e.className = "SmallMap", e.align = "left", e.valign = "bottom", e.percentHeight = 20, e.percentWidth = 20, e.margin(5, 5, 5, 5);
var n = new p.a;
e.background.fillOpacity = .9, e.background.fill = n.getFor("background"), e.events.on("hit", e.moveToPosition, e, !1), e.events.on("maxsizechanged", e.updateMapSize, e, !1), e.seriesContainer = e.createChild(Cr.a), e.seriesContainer.shouldClone = !1;
var i = e.createChild(to.a);
return i.shouldClone = !1, i.stroke = n.getFor("alternativeBackground"), i.strokeWidth = 1, i.strokeOpacity = .5, i.fill = Object(eo.c)(), i.verticalCenter = "middle", i.horizontalCenter = "middle", i.isMeasured = !1, i.visible = !1, e.rectangle = i, e._disposers.push(e._chart), e.applyTheme(), e
}
return Object(c.c)(e, t), Object.defineProperty(e.prototype, "series", {
get: function() {
return this._series || (this._series = new Xr.b, this._series.events.on("inserted", this.handleSeriesAdded, this, !1), this._series.events.on("removed", this.handleSeriesRemoved, this, !1)), this._series
},
enumerable: !0,
configurable: !0
}), e.prototype.handleSeriesAdded = function(t) {
var e = t.newValue;
if (this.chart.series.contains(e)) {
var n = e.clone();
this._series.removeValue(e), this._series.push(n), e = n, this.chart.dataUsers.push(n)
}
e.chart = this.chart, e.parent = this.seriesContainer, e.interactionsEnabled = !1, e.events.on("inited", this.updateMapSize, this, !1), e.hidden = !1
}, e.prototype.handleSeriesRemoved = function(t) {
this.invalidate()
}, e.prototype.moveToPosition = function(t) {
var e = Yr.spritePointToSprite(t.spritePoint, this, this.seriesContainer),
n = this.chart.seriesPointToGeo(e);
this.chart.zoomToGeoPoint(n, this.chart.zoomLevel, !0)
}, Object.defineProperty(e.prototype, "chart", {
get: function() {
return this._chart.get()
},
set: function(t) {
this.chart != t && this._chart.set(t, new h.c([t.events.on("mappositionchanged", this.updateRectangle, this, !1), t.events.on("scaleratiochanged", this.updateMapSize, this, !1)]))
},
enumerable: !0,
configurable: !0
}), e.prototype.updateRectangle = function() {
var t = this.chart,
e = t.zoomLevel,
n = this.rectangle;
n.width = this.pixelWidth / e, n.height = this.pixelHeight / e;
var i = Math.min(this.percentWidth, this.percentHeight) / 100,
r = t.seriesContainer;
n.x = Math.ceil(-r.pixelX * i / e) + this.seriesContainer.pixelX, n.y = Math.ceil(-r.pixelY * i / e) + this.seriesContainer.pixelY, n.validate()
}, e.prototype.updateMapSize = function() {
if (this.chart) {
var t = this.chart.scaleRatio * Math.min(this.percentWidth, this.percentHeight) / 100;
this.seriesContainer.scale = t;
var e = {
width: 0,
height: 0,
x: 0,
y: 0
};
try {
e = this.seriesContainer.group.node.getBBox()
} catch (t) {}
e.width > 0 && (this.rectangle.visible = !0), this.seriesContainer.x = this.pixelWidth / 2 - e.x * t - e.width / 2 * t, this.seriesContainer.y = this.pixelHeight / 2 - e.y * t - e.height / 2 * t, this.updateRectangle(), this.afterDraw()
}
}, e.prototype.afterDraw = function() {
t.prototype.afterDraw.call(this), this.rectangle.maskRectangle = {
x: -1,
y: -1,
width: Math.ceil(this.pixelWidth + 2),
height: Math.ceil(this.pixelHeight + 2)
}
}, e.prototype.processConfig = function(e) {
if (e && g.hasValue(e.series) && g.isArray(e.series))
for (var n = 0, i = e.series.length; n < i; n++) {
var r = e.series[n];
g.hasValue(r) && g.isString(r) && this.map.hasKey(r) && (e.series[n] = this.map.getKey(r))
}
t.prototype.processConfig.call(this, e)
}, e
}(Cr.a);
d.c.registeredClasses.SmallMap = no;
var io = n("WYhe"),
ro = n("0FpR");
function oo(t) {
var e = uo(t.longitude),
n = Math.asin(Math.sin(t.latitude * v.RADIANS)) * v.DEGREES,
i = uo(t.latitude);
return Math.abs(i) > 90 && (e = uo(e + 180)), t.longitude = e, t.latitude = n, t
}
function ao(t) {
return Nr.each(t, function(t) {
Nr.each(t, function(t) {
oo(t)
})
}), t
}
function uo(t) {
return (t %= 360) > 180 && (t -= 360), t < -180 && (t += 360), t
}
function so(t) {
return {
x: t.longitude,
y: t.latitude
}
}
var co = function(t) {
function e() {
var e = t.call(this) || this;
return e.adjustRotation = !0, e.className = "MapLineObject", e.isMeasured = !1, e.layout = "none", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.validatePosition = function() {
var e = this.mapLine;
if (e) {
var n = e.positionToPoint(this.position);
if (this.x = n.x, this.y = n.y, this.adjustRotation && (this.rotation = n.angle), this.mapLine.dataItem) {
var i = this.mapLine.dataItem.component;
this.scale = 1 / i.scale
}
if (e.shortestDistance) {
var r = this.mapLine.series.chart.projection,
o = r.positionToGeoPoint(e.multiGeoLine, this.position),
a = r.d3Path({
type: "Point",
coordinates: [o.longitude, o.latitude]
});
this.__disabled = !a
}
}
t.prototype.validatePosition.call(this)
}, Object.defineProperty(e.prototype, "position", {
get: function() {
return this.getPropertyValue("position")
},
set: function(t) {
this.setPropertyValue("position", t, !1, !0)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "adjustRotation", {
get: function() {
return this.getPropertyValue("adjustRotation")
},
set: function(t) {
this.setPropertyValue("adjustRotation", t, !1, !0)
},
enumerable: !0,
configurable: !0
}), e
}(Cr.a);
d.c.registeredClasses.MapLineObject = co;
var lo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapImageSeriesDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.getFeature = function() {
return {
type: "Feature",
geometry: {
type: "Point",
coordinates: this.point
}
}
}, Object.defineProperty(e.prototype, "mapImage", {
get: function() {
var t = this;
if (!this._mapImage) {
var e = this.component.mapImages.create();
this.addSprite(e), this._mapImage = e, this._disposers.push(e), this._disposers.push(new h.b(function() {
t.component && t.component.mapImages.removeValue(e)
})), this.mapObject = e
}
return this._mapImage
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "point", {
get: function() {
return this._point
},
set: function(t) {
this._point = t, this._geoPoint = Rr(t), this.updateExtremes()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiPoint", {
get: function() {
return [this._point]
},
set: function(t) {
this._point = t[0], this._geoPoint = Rr(this._point), this.updateExtremes()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "geoPoint", {
get: function() {
return this._geoPoint
},
set: function(t) {
this._geoPoint = t, this.point = [t.longitude, t.latitude]
},
enumerable: !0,
configurable: !0
}), e
}(Or),
ho = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapImageSeries", e.dataFields.multiPoint = "multiPoint", e.dataFields.point = "point", e.dataFields.geoPoint = "geoPoint", e.dataFields.multiGeoPoint = "multiGeoPoint", e.ignoreBounds = !0, e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new lo
}, e.prototype.validateData = function() {
var e = this;
if (this.data.length > 0 && 0 == this._parseDataFrom && this.mapImages.clear(), this.useGeodata && (this.useGeodata || this.geodata)) {
var n = this.chart.geodata,
i = void 0;
if ("FeatureCollection" == n.type ? i = n.features : "Feature" == n.type ? i = [n] : -1 != ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon"].indexOf(n.type) ? i = [{
geometry: n
}] : console.log("nothing found in geoJSON"), i)
for (var r = function(t, e) {
var n = i[t],
r = n.geometry;
if (r) {
var a = r.type,
u = n.id;
if ("Point" == a || "MultiPoint" == a) {
if (!o.checkInclude(o.include, o.exclude, u)) return "continue";
var s = r.coordinates;
"Point" == a && (s = [s]);
var c = Nr.find(o.data, function(t, e) {
return t.id == u
});
c ? c.multiPoint || (c.multiPoint = s) : (c = {
multiPoint: s,
id: u,
madeFromGeoData: !0
}, o.data.push(c)), Yr.softCopyProperties(n.properties, c)
}
}
}, o = this, a = 0, u = i.length; a < u; a++) r(a)
}
t.prototype.validateData.call(this), Ur.each(this.dataItems.iterator(), function(t) {
var n = t.mapImage;
n.isDisposed() || (e.mapImages.moveValue(n), g.isNumber(n.latitude) && g.isNumber(n.latitude) && (t.geoPoint = {
latitude: n.latitude,
longitude: n.longitude
}))
})
}, Object.defineProperty(e.prototype, "mapImages", {
get: function() {
if (!this._mapImages) {
var t = new Ir,
e = new Xr.e(t);
this._disposers.push(new Xr.c(e)), this._disposers.push(e.template), e.template.focusable = !0, e.events.on("inserted", this.handleObjectAdded, this, !1), this._mapImages = e, this._mapObjects = e
}
return this._mapImages
},
enumerable: !0,
configurable: !0
}), e.prototype.validateDataElement = function(e) {
t.prototype.validateDataElement.call(this, e), e.mapImage.invalidate()
}, e.prototype.validate = function() {
t.prototype.validate.call(this), Ur.each(this.mapImages.iterator(), function(t) {
t.validatePosition()
})
}, e.prototype.copyFrom = function(e) {
this.mapImages.template.copyFrom(e.mapImages.template), t.prototype.copyFrom.call(this, e)
}, e.prototype.getFeatures = function() {
var t = this,
e = [];
return this.dataItems.each(function(t) {
var n = t.getFeature();
n && e.push(n)
}), this.mapImages.each(function(n) {
if (-1 == t.dataItems.indexOf(n._dataItem)) {
var i = n.getFeature();
i && e.push(i)
}
}), e
}, e.prototype.getImageById = function(t) {
return Ur.find(this.mapImages.iterator(), function(e) {
var n = e.dataItem.dataContext;
if (e.id == t || n && n.id == t) return !0
})
}, e
}(Lr);
d.c.registeredClasses.MapImageSeries = ho, d.c.registeredClasses.MapImageSeriesDataItem = lo;
var po = n("Rnbi"),
fo = n("jfaP"),
go = n("tjMS"),
vo = function(t) {
function e() {
var e = t.call(this) || this;
e._imageListeners = {}, e.className = "MapLine", e.createLine(), e.line.stroke = Object(eo.c)(), e.line.parent = e, e.strokeOpacity = 1, e.setPropertyValue("precision", .1);
var n = new p.a;
return e.stroke = n.getFor("grid"), e.shortestDistance = !0, e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createLine = function() {
this.line = new fo.a
}, e.prototype.positionToPoint = function(t) {
return this.shortestDistance ? this.series.chart.projection.positionToPoint(this.multiGeoLine, t) : this.line ? this.line.positionToPoint(t) : {
x: 0,
y: 0,
angle: 0
}
}, Object.defineProperty(e.prototype, "multiGeoLine", {
get: function() {
var t = this.getPropertyValue("multiGeoLine");
return !t && this.dataItem && this.dataItem.multiGeoLine && (t = this.dataItem.multiGeoLine), t
},
set: function(t) {
if (t && t.length > 0) {
this.setPropertyValue("multiGeoLine", ao(t), !0);
var e = Br(t);
this.setPropertyValue("multiLine", e), this.updateExtremes()
}
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiLine", {
get: function() {
var t = this.getPropertyValue("multiLine");
return !t && this.dataItem && this.dataItem.multiLine && (t = this.dataItem.multiLine), t
},
set: function(t) {
this.setPropertyValue("multiLine", t), this.multiGeoLine = Vr(t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "imagesToConnect", {
get: function() {
return this.getPropertyValue("imagesToConnect")
},
set: function(t) {
var e = this;
if (this.setPropertyValue("imagesToConnect", t, !0), this.handleImagesToConnect(), this.series) {
var n = this.series.chart;
n && n.series.each(function(t) {
t instanceof ho && (t.isReady() || e._disposers.push(t.events.on("ready", e.handleImagesToConnect, e, !1)))
})
}
},
enumerable: !0,
configurable: !0
}), e.prototype.handleImagesToConnect = function() {
var t, e, n = this;
if (this.imagesToConnect) {
var i = [],
r = [i],
o = function(t) {
if (g.isString(t)) {
var e = a.series.chart;
e && e.series.each(function(e) {
if (e instanceof ho) {
var n = e.getImageById(t);
n && (t = n)
}
})
}
if (t instanceof Ir && (i.push({
longitude: t.longitude,
latitude: t.latitude
}), !a._imageListeners[t.uid])) {
var r = t.events.on("propertychanged", function(t) {
"longitude" != t.property && "latitude" != t.property || (n.handleImagesToConnect(), n.invalidate())
}, a, !1);
a._imageListeners[t.uid] = r, a._disposers.push(r)
}
},
a = this;
try {
for (var u = Object(c.g)(this.imagesToConnect), s = u.next(); !s.done; s = u.next()) {
o(s.value)
}
} catch (e) {
t = {
error: e
}
} finally {
try {
s && !s.done && (e = u.return) && e.call(u)
} finally {
if (t) throw t.error
}
}
this.multiGeoLine = r
}
}, e.prototype.validate = function() {
var e = this.series.chart;
if (this.multiLine) {
if (this.shortestDistance) e.projection.d3Projection.precision(this.precision), this.line.path = e.projection.d3Path(this.getFeature());
else {
for (var n = [], i = 0, r = this.multiLine.length; i < r; i++) {
for (var o = this.multiLine[i], a = [], u = 0, s = o.length; u < s; u++) {
var c = o[u],
l = this.series.chart.projection.convert({
longitude: c[0],
latitude: c[1]
});
a.push(l)
}
n.push(a)
}
this.line.segments = n
}
this._arrow && this._arrow.validatePosition(), Ur.each(this.lineObjects.iterator(), function(t) {
t.validatePosition()
}), this.handleGlobalScale()
} else this.imagesToConnect && this.handleImagesToConnect();
t.prototype.validate.call(this)
}, e.prototype.getFeature = function() {
if (this.multiLine && this.multiLine.length > 0 && this.multiLine[0] && this.multiLine[0].length > 0) return {
type: "Feature",
geometry: {
type: "MultiLineString",
coordinates: this.multiLine
}
}
}, e.prototype.measureElement = function() {}, Object.defineProperty(e.prototype, "shortestDistance", {
get: function() {
return this.getPropertyValue("shortestDistance")
},
set: function(t) {
this.setPropertyValue("shortestDistance", t, !0)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "lineObjects", {
get: function() {
return this._lineObjects || (this._lineObjects = new Xr.e(new co), this._lineObjects.events.on("inserted", this.handleLineObjectAdded, this, !1), this._disposers.push(new Xr.c(this._lineObjects)), this._disposers.push(this._lineObjects.template)), this._lineObjects
},
enumerable: !0,
configurable: !0
}), e.prototype.handleLineObjectAdded = function(t) {
var e = t.newValue;
e.mapLine = this, e.shouldClone = !1, e.parent = this
}, Object.defineProperty(e.prototype, "arrow", {
get: function() {
if (!this._arrow) {
var t = this.createChild(co);
t.shouldClone = !1, t.width = 8, t.height = 10, t.mapLine = this, t.position = .5;
var e = t.createChild(po.a);
e.fillOpacity = 1, e.width = Object(go.c)(100), e.height = Object(go.c)(100), e.rotation = 90, e.horizontalCenter = "middle", e.verticalCenter = "middle", this._arrow = t
}
return this._arrow
},
set: function(t) {
this._arrow = t, t.mapLine = this, t.parent = this
},
enumerable: !0,
configurable: !0
}), e.prototype.copyFrom = function(e) {
t.prototype.copyFrom.call(this, e), this.line.copyFrom(e.line), this.lineObjects.copyFrom(e.lineObjects), e._arrow && (this.arrow = e.arrow.clone())
}, Object.defineProperty(e.prototype, "latitude", {
get: function() {
return this.north + (this.south - this.north) / 2
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "longitude", {
get: function() {
return this.east + (this.west - this.east) / 2
},
enumerable: !0,
configurable: !0
}), e.prototype.getTooltipX = function() {
var t = this.getPropertyValue("tooltipX");
return t instanceof go.a || (t = Object(go.c)(50)), t instanceof go.a ? this.positionToPoint(t.value).x : 0
}, e.prototype.getTooltipY = function() {
var t = this.getPropertyValue("tooltipY");
return t instanceof go.a || (t = Object(go.c)(50)), t instanceof go.a ? this.positionToPoint(t.value).y : 0
}, Object.defineProperty(e.prototype, "precision", {
get: function() {
return this.getPropertyValue("precision")
},
set: function(t) {
this.setPropertyValue("precision", t, !0)
},
enumerable: !0,
configurable: !0
}), e
}(Er);
d.c.registeredClasses.MapLine = vo;
var mo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapLineSeriesDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.getFeature = function() {
if (this.multiLine && this.multiLine.length > 0) return {
type: "Feature",
geometry: {
type: "MultiLineString",
coordinates: this.multiLine
}
}
}, Object.defineProperty(e.prototype, "mapLine", {
get: function() {
var t = this;
if (!this._mapLine) {
var e = this.component.mapLines.create();
this._mapLine = e, this.addSprite(e), this._disposers.push(e), this._disposers.push(new h.b(function() {
t.component && t.component.mapLines.removeValue(e)
})), this.mapObject = e
}
return this._mapLine
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "line", {
get: function() {
return this._line
},
set: function(t) {
this._line = t, this.multiLine = [t]
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiLine", {
get: function() {
return this._multiLine
},
set: function(t) {
this._multiLine = t, this._multiGeoLine = Vr(t), this.updateExtremes()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "geoLine", {
get: function() {
return this._geoLine
},
set: function(t) {
this._geoLine = t, this.multiLine = Br([t])
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "multiGeoLine", {
get: function() {
return this._multiGeoLine
},
set: function(t) {
this._multiGeoLine = t, this.multiLine = Br(t)
},
enumerable: !0,
configurable: !0
}), e
}(Or),
yo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapLineSeries", e.dataFields.multiLine = "multiLine", e.dataFields.line = "line", e.dataFields.geoLine = "geoLine", e.dataFields.multiGeoLine = "multiGeoLine", e.ignoreBounds = !0, e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new mo
}, e.prototype.validateData = function() {
if (this.useGeodata || this.geodata) {
var e = this.chart.geodata;
if (e) {
var n = void 0;
if ("FeatureCollection" == e.type ? n = e.features : "Feature" == e.type ? n = [e] : -1 != ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon"].indexOf(e.type) ? n = [{
geometry: e
}] : console.log("nothing found in geoJSON"), n)
for (var i = function(t, e) {
var i = n[t],
o = i.geometry;
if (o) {
var a = o.type,
u = i.id;
if ("LineString" == a || "MultiLineString" == a) {
if (!r.checkInclude(r.include, r.exclude, u)) return "continue";
var s = o.coordinates,
c = Nr.find(r.data, function(t, e) {
return t.id == u
});
"LineString" == a && (s = [s]), c ? c.multiLine || (c.multiLine = s) : (c = {
multiLine: s,
id: u,
madeFromGeoData: !0
}, r.data.push(c)), Yr.softCopyProperties(i.properties, c)
}
}
}, r = this, o = 0, a = n.length; o < a; o++) i(o)
}
}
t.prototype.validateData.call(this)
}, Object.defineProperty(e.prototype, "mapLines", {
get: function() {
if (!this._mapLines) {
var t = this.createLine(),
e = new Xr.e(t);
this._disposers.push(new Xr.c(e)), this._disposers.push(e.template), e.events.on("inserted", this.handleObjectAdded, this, !1), this._mapLines = e, this._mapObjects = e
}
return this._mapLines
},
enumerable: !0,
configurable: !0
}), e.prototype.createLine = function() {
return new vo
}, e.prototype.validate = function() {
this.dataItems.each(function(t) {
Yr.used(t.mapLine)
}), t.prototype.validate.call(this), this.mapLines.each(function(t) {
t.validate()
})
}, e.prototype.copyFrom = function(e) {
this.mapLines.template.copyFrom(e.mapLines.template), t.prototype.copyFrom.call(this, e)
}, e.prototype.getFeatures = function() {
var t = this,
e = [];
return this.dataItems.each(function(t) {
var n = t.getFeature();
n && e.push(n)
}), this.mapLines.each(function(n) {
if (-1 == t.dataItems.indexOf(n._dataItem)) {
var i = n.getFeature();
i && e.push(i)
}
}), e
}, e.prototype.getLineById = function(t) {
return Ur.find(this.mapLines.iterator(), function(e) {
return e.dataItem.dataContext.id == t
})
}, e
}(Lr);
d.c.registeredClasses.MapLineSeries = yo, d.c.registeredClasses.MapLineSeriesDataItem = mo;
var bo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "Graticule", e.applyTheme(), e.shortestDistance = !0, e
}
return Object(c.c)(e, t), e
}(vo);
d.c.registeredClasses.Graticule = bo;
var Po = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "GraticuleSeriesDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e
}(mo),
So = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "GraticuleSeries", e.longitudeStep = 10, e.latitudeStep = 10, e.north = 90, e.south = -90, e.east = -180, e.west = 180, e.fitExtent = !0, e.singleSprite = !0, e.events.disableType("geoBoundsChanged"), e.mapLines.template.line.strokeOpacity = .08, e.ignoreBounds = !1, e.hiddenInLegend = !0, e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new Po
}, e.prototype.validateData = function() {
var e = this;
t.prototype.validateData.call(this), this.mapLines.clear();
var n = _n();
if (n) {
n.stepMinor([this.longitudeStep, this.latitudeStep]), n.stepMajor([360, 360]);
var i = this.chart;
if (this.fitExtent ? n.extent([
[i.east, i.north],
[i.west, i.south]
]) : n.extent([
[this.east, this.north],
[this.west, this.south]
]), this.singleSprite) {
this.mapLines.create().multiLine = n().coordinates
} else {
var r = n.lines();
Nr.each(r, function(t) {
e.mapLines.create().multiLine = [t.coordinates]
})
}
}
}, e.prototype.createLine = function() {
return new bo
}, Object.defineProperty(e.prototype, "latitudeStep", {
get: function() {
return this.getPropertyValue("latitudeStep")
},
set: function(t) {
this.setPropertyValue("latitudeStep", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "longitudeStep", {
get: function() {
return this.getPropertyValue("longitudeStep")
},
set: function(t) {
this.setPropertyValue("longitudeStep", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "fitExtent", {
get: function() {
return this.getPropertyValue("fitExtent")
},
set: function(t) {
this.setPropertyValue("fitExtent", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "singleSprite", {
get: function() {
return this.getPropertyValue("singleSprite")
},
set: function(t) {
this.setPropertyValue("singleSprite", t) && this.invalidateData()
},
enumerable: !0,
configurable: !0
}), e
}(yo);
d.c.registeredClasses.GraticuleSeries = So, d.c.registeredClasses.GraticuleSeriesDataItem = Po;
var _o = n("zhwk"),
Mo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapChartDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e
}(l.b),
xo = function(t) {
function e() {
var e = t.call(this) || this;
e.scaleRatio = 1, e.zoomDuration = 1e3, e.zoomEasing = ro.cubicOut, e.minZoomLevel = 1, e.maxZoomLevel = 32, e._prevZoomGeoPoint = {
latitude: 0,
longitude: 0
}, e.className = "MapChart", e.projection = new Qr, e.setPropertyValue("deltaLatitude", 0), e.setPropertyValue("deltaLongitude", 0), e.setPropertyValue("deltaGamma", 0), e.maxPanOut = .7, e.homeZoomLevel = 1, e.zoomStep = 2, e.layout = "absolute", e.centerMapOnZoomOut = !0, e.padding(0, 0, 0, 0), Yr.used(e.backgroundSeries), e.minWidth = 10, e.minHeight = 10, e.events.once("inited", e.handleAllInited, e, !1);
var n = e.seriesContainer;
n.visible = !1, n.inert = !0, n.resizable = !0, n.events.on("transformed", e.handleMapTransform, e, !1), n.events.on("doublehit", e.handleDoubleHit, e, !1), n.events.on("dragged", e.handleDrag, e, !1), n.zIndex = 0, n.dragWhileResize = !0, n.adapter.add("scale", function(t, n) {
return v.fitToRange(t, e.minZoomLevel, e.maxZoomLevel)
}), e.events.on("maxsizechanged", function(t) {
0 != t.previousWidth && 0 != t.previousHeight || (e.updateExtremes(), e.updateCenterGeoPoint())
}, void 0, !1);
var i = e.chartContainer;
i.parent = e, i.zIndex = -1, e._disposers.push(e.events.on("maxsizechanged", function() {
if (e.inited) {
e._mapAnimation && e._mapAnimation.stop();
var t = !0;
e.series.each(function(e) {
e.updateTooltipBounds(), e.inited && !e.dataInvalid || (t = !1)
}), t && e.updateScaleRatio(), e.zoomToGeoPoint(e._zoomGeoPointReal, e.zoomLevel, !0, 0)
}
}, void 0, !1));
var r = i.background;
r.fillOpacity = 0, r.events.on("down", function(t) {
e.seriesContainer.dragStart(t.target.interactions.downPointers.getIndex(0))
}, e), r.events.on("up", function(t) {
e.seriesContainer.dragStop()
}, e), r.events.on("doublehit", e.handleDoubleHit, e), r.focusable = !0, i.events.on("down", e.handleMapDown, e, !1), e.addDisposer(n.events.on("down", function() {
var t = e.seriesContainer.interactions.inertias.getKey("move");
t && t.done()
})), e.background.fillOpacity = 0, e._disposers.push(Object(_o.b)().body.events.on("keyup", function(t) {
if (e.topParent.hasFocused) {
var n = io.b.getEventKey(t.event);
if (!e._zoomControl || !e._zoomControl.thumb.isFocused) switch (n) {
case "up":
e.pan({
x: 0,
y: .1
});
break;
case "down":
e.pan({
x: 0,
y: -.1
});
break;
case "left":
e.pan({
x: .1,
y: 0
});
break;
case "right":
e.pan({
x: -.1,
y: 0
})
}
}
}, e)), e.mouseWheelBehavior = "zoom";
var o = Object(_o.b)();
e._disposers.push(o.body.events.on("down", e.handlePanDown, e)), e._disposers.push(o.body.events.on("up", e.handlePanUp, e));
var a = e.seriesContainer.createChild($r.a);
return a.radius = 10, a.inert = !0, a.isMeasured = !1, a.events.on("transformed", e.handlePanMove, e, !1), a.interactionsEnabled = !1, a.opacity = 0, a.x = 0, a.y = 0, e.panSprite = a, e.panBehavior = "move", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.handlePanDown = function(t) {
var e = Yr.documentPointToSvg(t.pointer.point, this.htmlContainer);
e.x > 0 && e.y > 0 && e.x < this.svgContainer.width && e.y < this.svgContainer.height && (this._downPointOrig = Yr.documentPointToSprite(t.pointer.point, this.seriesContainer), this.panSprite.moveTo(this._downPointOrig), this.panSprite.dragStart(t.pointer), this._downDeltaLongitude = this.deltaLongitude, this._downDeltaLatitude = this.deltaLatitude)
}, e.prototype.handlePanUp = function(t) {
this._downPointOrig && this.panSprite.dragStop(t.pointer, !0), this._downPointOrig = void 0
}, e.prototype.handlePanMove = function() {
if (!this.seriesContainer.isResized) {
if (Object(_o.b)().areTransformed([this.panSprite.interactions, this.seriesContainer.interactions])) return;
var t = this.projection.d3Projection,
e = this.panBehavior;
if ("move" != e && "none" != e && this._downPointOrig && t.rotate) {
var n = t.rotate(),
i = n[0],
r = n[1],
o = n[2];
t.rotate([0, 0, 0]);
var a = this.projection.invert(this._downPointOrig),
u = {
x: this.panSprite.pixelX,
y: this.panSprite.pixelY
},
s = void 0;
u && (s = this.projection.invert(u)), t.rotate([i, r, o]), s && ("rotateLat" != e && "rotateLongLat" != e || (this.deltaLatitude = this._downDeltaLatitude + s.latitude - a.latitude), "rotateLong" != e && "rotateLongLat" != e || (this.deltaLongitude = this._downDeltaLongitude + s.longitude - a.longitude))
}
}
}, e.prototype.handleAllInited = function() {
var t = this,
e = !0;
if (this.seriesContainer.visible = !0, this.series.each(function(t) {
t.inited && !t.dataInvalid || (e = !1)
}), e) this.updateCenterGeoPoint(), this.updateScaleRatio(), this.goHome(0);
else {
var n = d.c.events.once("exitframe", function() {
t.removeDispose(n), t.handleAllInited()
}, this, !1);
this.addDisposer(n)
}
}, e.prototype.updateZoomGeoPoint = function() {
var t = Yr.svgPointToSprite({
x: this.innerWidth / 2 + this.pixelPaddingLeft,
y: this.innerHeight / 2 + this.pixelPaddingTop
}, this.series.getIndex(0)),
e = this.projection.invert(t);
this._zoomGeoPointReal = e
}, e.prototype.updateCenterGeoPoint = function() {
var t, e, n, i;
if (this.backgroundSeries) {
var r = this.backgroundSeries.getFeatures();
if (r.length > 0) {
var o = this.projection.d3Path.bounds(r[0].geometry);
t = o[0][0], n = o[0][1], e = o[1][0], i = o[1][1]
}
} else this.series.each(function(r) {
var o = r.group.node.getBBox();
(t > o.x || !g.isNumber(t)) && (t = o.x), (e < o.x + o.width || !g.isNumber(e)) && (e = o.x + o.width), (n > o.y || !g.isNumber(n)) && (n = o.y), (i < o.y + o.height || !g.isNumber(i)) && (i = o.y + o.height)
});
this.seriesMaxLeft = t, this.seriesMaxRight = e, this.seriesMaxTop = n, this.seriesMaxBottom = i, this.seriesWidth = e - t, this.seriesHeight = i - n, this.seriesWidth > 0 && this.seriesHeight > 0 ? (this.chartContainer.visible = !0, this._centerGeoPoint = this.projection.invert({
x: t + (e - t) / 2,
y: n + (i - n) / 2
}), this._zoomGeoPointReal && g.isNumber(this._zoomGeoPointReal.latitude) || (this._zoomGeoPointReal = this._centerGeoPoint)) : this.chartContainer.visible = !1
}, e.prototype.handleDrag = function() {
var t = this.zoomLevel * this.scaleRatio,
e = this.seriesWidth * t,
n = this.seriesHeight * t,
i = this.seriesContainer,
r = this.seriesMaxLeft * t,
o = this.seriesMaxRight * t,
a = this.seriesMaxTop * t,
u = this.seriesMaxBottom * t,
s = i.pixelX,
c = i.pixelY,
l = this.maxPanOut,
h = Math.min(this.maxWidth * (1 - l) - e - r, -r);
s < h && (s = h);
var p = Math.max(this.maxWidth * l - r, this.maxWidth - o);
s > p && (s = p);
var f = Math.min(this.maxHeight * (1 - l) - n - a, -a);
c < f && (c = f);
var d = Math.max(this.maxHeight * l - a, this.maxHeight - u);
c > d && (c = d), i.moveTo({
x: s,
y: c
}, void 0, void 0, !0), this._zoomGeoPointReal = this.zoomGeoPoint
}, e.prototype.applyInternalDefaults = function() {
t.prototype.applyInternalDefaults.call(this), g.hasValue(this.readerTitle) || (this.readerTitle = this.language.translate("Map")), g.hasValue(this.background.readerTitle) || (this.background.readerTitle = this.language.translate("Use plus and minus keys on your keyboard to zoom in and out"))
}, e.prototype.handleMapDown = function() {
this._mapAnimation && this._mapAnimation.stop()
}, e.prototype.handleDoubleHit = function(t) {
var e = Yr.documentPointToSvg(t.point, this.htmlContainer, this.svgContainer.cssScale),
n = this.svgPointToGeo(e);
this.zoomIn(n)
}, e.prototype.handleWheel = function(t) {
var e = this.seriesContainer.interactions.inertias.getKey("move");
e && e.done();
var n = Yr.documentPointToSvg(t.point, this.htmlContainer, this.svgContainer.cssScale),
i = this.svgPointToGeo(n);
t.shift.y < 0 ? this.zoomIn(i, void 0, this.interactions.mouseOptions.sensitivity) : this.zoomOut(i, void 0, this.interactions.mouseOptions.sensitivity)
}, Object.defineProperty(e.prototype, "mouseWheelBehavior", {
get: function() {
return this.getPropertyValue("mouseWheelBehavior")
},
set: function(t) {
this.setPropertyValue("mouseWheelBehavior", t) && ("none" != t ? (this._mouseWheelDisposer = this.chartContainer.events.on("wheel", this.handleWheel, this, !1), this._disposers.push(this._mouseWheelDisposer)) : (this._mouseWheelDisposer && this._mouseWheelDisposer.dispose(), this.chartContainer.wheelable = !1))
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "panBehavior", {
get: function() {
return this.getPropertyValue("panBehavior")
},
set: function(t) {
if (this.setPropertyValue("panBehavior", t)) {
var e = this.seriesContainer;
switch (this.panSprite.draggable = !1, e.draggable = !1, t) {
case "move":
e.draggable = !0;
break;
default:
this.panSprite.draggable = !0
}
}
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "centerMapOnZoomOut", {
get: function() {
return this.getPropertyValue("centerMapOnZoomOut")
},
set: function(t) {
this.setPropertyValue("centerMapOnZoomOut", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "projection", {
get: function() {
return this.getPropertyValue("projection")
},
set: function(t) {
var e = this;
this.setPropertyValue("projection", t) && (this.invalidateProjection(), t.chart = this, this._backgroundSeries && this._backgroundSeries.invalidate(), this.inited && this.updateExtremes(), this.series.each(function(t) {
t.events.once("validated", function() {
e.updateCenterGeoPoint(), e.updateScaleRatio(), e.goHome(0)
})
}))
},
enumerable: !0,
configurable: !0
}), e.prototype.validateDataItems = function() {
t.prototype.validateDataItems.call(this), this.updateExtremes()
}, e.prototype.updateExtremes = function() {
var t, e, n, i;
this.series.each(function(r) {
r.ignoreBounds || r instanceof So && r.fitExtent || ((r.north > e || !g.isNumber(e)) && (e = r.north), (r.south < i || !g.isNumber(i)) && (i = r.south), (r.west < n || !g.isNumber(n)) && (n = r.west), (r.east > t || !g.isNumber(t)) && (t = r.east))
});
var r = [],
o = !1;
this.series.each(function(t) {
t instanceof So && !t.fitExtent && (r = t.getFeatures(), o = !0)
}), o || this.series.each(function(t) {
t.ignoreBounds || t instanceof So && t.fitExtent || (r = r.concat(t.getFeatures()))
});
var a = v.max(50, this.innerWidth),
u = v.max(50, this.innerHeight),
s = this.projection.d3Projection;
if (r.length > 0 && s && (this.east != t || this.west != n || this.north != e || this.south != i)) {
if (this.east = t, this.west = n, this.north = e, this.south = i, s.rotate) {
var c = s.rotate(),
l = c[0],
h = c[1],
p = c[2];
this.deltaLongitude = l, this.deltaLatitude = h, this.deltaGamma = p
}
var f = {
type: "FeatureCollection",
features: r
},
d = s.scale();
if (s.fitSize([a, u], f), s.scale() != d && this.invalidateDataUsers(), this.series.each(function(t) {
t instanceof So && t.invalidateData()
}), this._backgroundSeries) {
var m = this._backgroundSeries.mapPolygons.getIndex(0);
m && (m.multiPolygon = Zr(this.north, this.east, this.south, this.west))
}
this._fitWidth = a, this._fitHeight = u
}
this._zoomGeoPointReal && g.isNumber(this._zoomGeoPointReal.latitude) || this.goHome(0)
}, e.prototype.updateScaleRatio = function() {
var t;
this.updateCenterGeoPoint();
var e = this.innerWidth / this.seriesWidth,
n = this.innerHeight / this.seriesHeight;
t = v.min(e, n), (g.isNaN(t) || t == 1 / 0) && (t = 1), t != this.scaleRatio && (this.scaleRatio = t, Ur.each(this.series.iterator(), function(e) {
e.scale = t, e.updateTooltipBounds()
}), this.backgroundSeries.scale = t, this.dispatch("scaleratiochanged"))
}, e.prototype.svgPointToGeo = function(t) {
var e = this.series.getIndex(0);
if (e) {
var n = Yr.svgPointToSprite(t, e);
return this.seriesPointToGeo(n)
}
}, e.prototype.geoPointToSVG = function(t) {
var e = this.series.getIndex(0);
if (e) {
var n = this.geoPointToSeries(t);
return Yr.spritePointToSvg(n, e)
}
}, e.prototype.seriesPointToGeo = function(t) {
return this.projection.invert(t)
}, e.prototype.geoPointToSeries = function(t) {
return this.projection.convert(t)
}, Object.defineProperty(e.prototype, "geodata", {
get: function() {
return this._geodata
},
set: function(t) {
t != this._geodata && (this._geodata = t, this.invalidateData(), this.dataUsers.each(function(t) {
for (var e = t.data.length - 1; e >= 0; e--) 1 == t.data[e].madeFromGeoData && t.data.splice(e, 1);
t.disposeData(), t.invalidateData()
}))
},
enumerable: !0,
configurable: !0
}), e.prototype.zoomToGeoPoint = function(t, e, n, i, r) {
var o = this;
if (!t) {
var a = !1;
if (this.series.each(function(t) {
t.dataItems.length > 0 && (a = !0)
}), !a) return;
t = this.zoomGeoPoint
}
if (t && g.isNumber(t.longitude) && g.isNumber(t.latitude)) {
this._zoomGeoPointReal = t, e = v.fitToRange(e, this.minZoomLevel, this.maxZoomLevel);
var u = this.projection.convert(t);
if (u) {
var s = this.geoPointToSVG(t),
c = Yr.svgPointToSprite(s, this);
n && (c = {
x: this.innerWidth / 2,
y: this.innerHeight / 2
}), g.isNumber(i) || (i = this.zoomDuration);
var l = c.x - u.x * e * this.scaleRatio,
h = c.y - u.y * e * this.scaleRatio;
return !r && e < this.zoomLevel && this.centerMapOnZoomOut && e < 1.5 && (l = this.innerWidth / 2 - (this.seriesMaxLeft + (this.seriesMaxRight - this.seriesMaxLeft) / 2) * e * this.scaleRatio, h = this.innerHeight / 2 - (this.seriesMaxTop + (this.seriesMaxBottom - this.seriesMaxTop) / 2) * e * this.scaleRatio), this._mapAnimation = this.seriesContainer.animate([{
property: "scale",
to: e
}, {
property: "x",
from: this.seriesContainer.pixelX,
to: l
}, {
property: "y",
from: this.seriesContainer.pixelY,
to: h
}], i, this.zoomEasing), this._disposers.push(this._mapAnimation.events.on("animationended", function() {
o._zoomGeoPointReal = o.zoomGeoPoint
})), this.seriesContainer.validatePosition(), this._mapAnimation
}
}
}, e.prototype.zoomToMapObject = function(t, e, n, i) {
void 0 == n && (n = !0);
var r = this.seriesContainer.interactions.inertias.getKey("move");
if (r && r.done(), t instanceof Ir) return g.isNaN(e) && (e = 5), this.zoomToGeoPoint({
latitude: t.latitude,
longitude: t.longitude
}, e, n, i, !0);
var o = t.dataItem;
if (o && g.isNumber(o.zoomLevel) && (e = o.zoomLevel), t instanceof qr) {
var a = t.dataItem,
u = t.polygon.bbox;
0 != u.width && 0 != u.height || (u = t.polygon.group.getBBox()), g.isNumber(e) || (e = Math.min(this.seriesWidth / u.width, this.seriesHeight / u.height));
var s = void 0;
if (a && g.hasValue(a.zoomGeoPoint)) s = a.zoomGeoPoint;
else {
var c = {
x: u.x + u.width / 2,
y: u.y + u.height / 2
},
l = Yr.spritePointToSprite(c, t.polygon, t.series);
s = this.seriesPointToGeo(l)
}
return this.zoomToGeoPoint(s, e, !0, i, !0)
}
}, e.prototype.zoomToRectangle = function(t, e, n, i, r, o, a) {
g.isNaN(r) && (r = 1);
var u = v.min(i, e),
s = v.max(i, e);
i = u, e = s;
var c = v.normalizeAngle(180 - this.deltaLongitude);
c > 180 && (c -= 360);
var l = i + (e - i) / 2,
h = i - e;
i < c && e > c && (l += 180, h = v.normalizeAngle(e - i - 360));
var p = r * Math.min((this.south - this.north) / (n - t), Math.abs((this.west - this.east) / h));
return this.zoomToGeoPoint({
latitude: t + (n - t) / 2,
longitude: l
}, p, o, a, !0)
}, e.prototype.zoomIn = function(t, e, n) {
void 0 === n && (n = 1);
var i = 1 + (this.zoomStep - 1) * n;
return i < 1 && (i = 1), this.zoomToGeoPoint(t, this.zoomLevel * i, !1, e)
}, e.prototype.zoomOut = function(t, e, n) {
void 0 === n && (n = 1);
var i = 1 + (this.zoomStep - 1) * n;
return i < 1 && (i = 1), this.zoomToGeoPoint(t, this.zoomLevel / i, !1, e)
}, e.prototype.pan = function(t, e) {
var n = this.geoPointToSVG(this.zoomGeoPoint);
n.x += this.pixelWidth * t.x, n.y += this.pixelHeight * t.y, this.zoomToGeoPoint(this.svgPointToGeo(n), this.zoomLevel, !0, e, !0)
}, Object.defineProperty(e.prototype, "zoomGeoPoint", {
get: function() {
var t = Yr.spritePointToSvg({
x: this.pixelWidth / 2,
y: this.pixelHeight / 2
}, this);
return this.svgPointToGeo(t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "zoomLevel", {
get: function() {
return this.seriesContainer.scale
},
set: function(t) {
this.seriesContainer.scale = t
},
enumerable: !0,
configurable: !0
}), e.prototype.handleMapTransform = function() {
this.zoomLevel != this._prevZoomLevel && (this.dispatch("zoomlevelchanged"), this._prevZoomLevel = this.zoomLevel, this.svgContainer.readerAlert(this.language.translate("Zoom level changed to %1", this.language.locale, g.castString(this.zoomLevel)))), !this.zoomGeoPoint || this._prevZoomGeoPoint.latitude == this.zoomGeoPoint.latitude && this._prevZoomGeoPoint.longitude == this.zoomGeoPoint.longitude || this.dispatch("mappositionchanged")
}, Object.defineProperty(e.prototype, "smallMap", {
get: function() {
if (!this._smallMap) {
var t = new no;
this.smallMap = t
}
return this._smallMap
},
set: function(t) {
this._smallMap && this.removeDispose(this._smallMap), this._smallMap = t, this._smallMap.chart = this, t.parent = this.chartContainer
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "zoomControl", {
get: function() {
return this._zoomControl
},
set: function(t) {
this._zoomControl && this.removeDispose(this._zoomControl), this._zoomControl = t, t.chart = this, t.parent = this.chartContainer, t.plusButton.exportable = !1, t.minusButton.exportable = !1
},
enumerable: !0,
configurable: !0
}), e.prototype.createSeries = function() {
return new Lr
}, Object.defineProperty(e.prototype, "deltaLongitude", {
get: function() {
return this.getPropertyValue("deltaLongitude")
},
set: function(t) {
t = v.round(t, 3), this.setPropertyValue("deltaLongitude", uo(t)) && (this.rotateMap(), this.updateZoomGeoPoint())
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "deltaLatitude", {
get: function() {
return this.getPropertyValue("deltaLatitude")
},
set: function(t) {
t = v.round(t, 3), this.setPropertyValue("deltaLatitude", t) && (this.rotateMap(), this.updateZoomGeoPoint())
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "deltaGamma", {
get: function() {
return this.getPropertyValue("deltaGamma")
},
set: function(t) {
t = v.round(t, 3), this.setPropertyValue("deltaGamma", t) && (this.rotateMap(), this.updateZoomGeoPoint())
},
enumerable: !0,
configurable: !0
}), e.prototype.rotateMap = function() {
this.projection.d3Projection && this.projection.d3Projection.rotate && (this.projection.d3Projection.rotate([this.deltaLongitude, this.deltaLatitude, this.deltaGamma]), this.invalidateProjection(), this.updateExtremes())
}, Object.defineProperty(e.prototype, "maxPanOut", {
get: function() {
return this.getPropertyValue("maxPanOut")
},
set: function(t) {
this.setPropertyValue("maxPanOut", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "homeGeoPoint", {
get: function() {
return this.getPropertyValue("homeGeoPoint")
},
set: function(t) {
this.setPropertyValue("homeGeoPoint", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "homeZoomLevel", {
get: function() {
return this.getPropertyValue("homeZoomLevel")
},
set: function(t) {
this.setPropertyValue("homeZoomLevel", t)
},
enumerable: !0,
configurable: !0
}), Object.defineProperty(e.prototype, "zoomStep", {
get: function() {
return this.getPropertyValue("zoomStep")
},
set: function(t) {
this.setPropertyValue("zoomStep", t)
},
enumerable: !0,
configurable: !0
}), e.prototype.invalidateProjection = function() {
this.east = void 0, this.invalidateDataUsers(), this.updateCenterGeoPoint()
}, Object.defineProperty(e.prototype, "geodataSource", {
get: function() {
return this._dataSources.geodata || this.getDataSource("geodata"), this._dataSources.geodata
},
set: function(t) {
var e = this;
this._dataSources.geodata && this.removeDispose(this._dataSources.geodata), this._dataSources.geodata = t, this._dataSources.geodata.component = this, this.events.on("inited", function() {
e.loadData("geodata")
}, this, !1), this.setDataSourceEvents(t, "geodata")
},
enumerable: !0,
configurable: !0
}), e.prototype.processConfig = function(e) {
if (g.hasValue(e.geodata) && g.isString(e.geodata)) {
var n = e.geodata;
if (g.hasValue(window["am4geodata_" + e.geodata])) e.geodata = window["am4geodata_" + e.geodata];
else try {
e.geodata = JSON.parse(e.geodata)
} catch (t) {
this.raiseCriticalError(Error("MapChart error: Geodata `" + n + "` is not loaded or is incorrect."), !0)
}
}
g.hasValue(e.projection) && g.isString(e.projection) && (e.projection = this.createClassInstance(e.projection)), g.hasValue(e.smallMap) && !g.hasValue(e.smallMap.type) && (e.smallMap.type = "SmallMap"), g.hasValue(e.zoomControl) && !g.hasValue(e.zoomControl.type) && (e.zoomControl.type = "ZoomControl"), t.prototype.processConfig.call(this, e)
}, e.prototype.handleSeriesAdded = function(e) {
t.prototype.handleSeriesAdded.call(this, e);
var n = e.newValue;
n.scale = this.scaleRatio, n.events.on("validated", this.updateCenterGeoPoint, this, !1)
}, e.prototype.configOrder = function(e, n) {
return e == n ? 0 : "smallMap" == e ? 1 : "smallMap" == n ? -1 : "series" == e ? 1 : "series" == n ? -1 : t.prototype.configOrder.call(this, e, n)
}, e.prototype.asIs = function(e) {
return "projection" == e || "geodata" == e || t.prototype.asIs.call(this, e)
}, Object.defineProperty(e.prototype, "centerGeoPoint", {
get: function() {
return this._centerGeoPoint
},
enumerable: !0,
configurable: !0
}), e.prototype.goHome = function(t) {
var e = this.homeGeoPoint;
e || (e = this.centerGeoPoint), e && this.zoomToGeoPoint(e, this.homeZoomLevel, !0, t, !0)
}, e.prototype.setPaper = function(e) {
return this.svgContainer && (this.svgContainer.hideOverflow = !0), t.prototype.setPaper.call(this, e)
}, Object.defineProperty(e.prototype, "backgroundSeries", {
get: function() {
var t = this;
if (!this._backgroundSeries) {
var e = new Kr;
e.parent = this.seriesContainer, e.chart = this, e.hiddenInLegend = !0, e.mapPolygons.template.focusable = !1, e.addDisposer(new h.b(function() {
t._backgroundSeries = void 0
})), this._disposers.push(e);
var n = (new p.a).getFor("background"),
i = e.mapPolygons.template.polygon;
i.stroke = n, i.fill = n, i.fillOpacity = 0, i.strokeOpacity = 0, e.mapPolygons.create(), this._backgroundSeries = e
}
return this._backgroundSeries
},
enumerable: !0,
configurable: !0
}), e.prototype.setLegend = function(e) {
t.prototype.setLegend.call(this, e), e && (e.parent = this)
}, e.prototype.setTapToActivate = function(e) {
t.prototype.setTapToActivate.call(this, e), this.seriesContainer.interactions.isTouchProtected = !0, this.panSprite.interactions.isTouchProtected = !0
}, e.prototype.handleTapToActivate = function() {
t.prototype.handleTapToActivate.call(this), this.seriesContainer.interactions.isTouchProtected = !1, this.panSprite.interactions.isTouchProtected = !1
}, e.prototype.handleTapToActivateDeactivation = function() {
t.prototype.handleTapToActivateDeactivation.call(this), this.seriesContainer.interactions.isTouchProtected = !0, this.panSprite.interactions.isTouchProtected = !0
}, e.prototype.asFunction = function(e) {
return "zoomEasing" == e || t.prototype.asIs.call(this, e)
}, e
}(l.a);
d.c.registeredClasses.MapChart = xo;
var jo = n("xgTw"),
wo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapSpline", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createLine = function() {
this.line = new jo.a, this.line.tensionX = .8, this.line.tensionY = .8
}, Object.defineProperty(e.prototype, "shortestDistance", {
get: function() {
return !1
},
set: function(t) {},
enumerable: !0,
configurable: !0
}), e
}(vo);
d.c.registeredClasses.MapSpline = wo;
var Oo = n("MXvJ"),
Lo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapArc", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createLine = function() {
this.line = new Oo.a
}, Object.defineProperty(e.prototype, "shortestDistance", {
get: function() {
return !1
},
set: function(t) {},
enumerable: !0,
configurable: !0
}), e
}(vo);
d.c.registeredClasses.MapArc = Lo;
var Co = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapSplineSeriesDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e
}(mo),
Eo = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapSplineSeries", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new Co
}, e.prototype.createLine = function() {
return new wo
}, e
}(yo);
d.c.registeredClasses.MapSplineSeries = Eo, d.c.registeredClasses.MapSplineSeriesDataItem = Co;
var Io = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapArcSeriesDataItem", e.applyTheme(), e
}
return Object(c.c)(e, t), e
}(mo),
To = function(t) {
function e() {
var e = t.call(this) || this;
return e.className = "MapArcSeries", e.applyTheme(), e
}
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
return new Io
}, e.prototype.createLine = function() {
return new Lo
}, e
}(yo);
d.c.registeredClasses.MapArcSeries = To, d.c.registeredClasses.MapArcSeriesDataItem = Io;
var Do = n("aGXA"),
Go = n("CnhP"),
No = function(t) {
function e() {
var e = t.call(this) || this;
e._chart = new h.d, e.className = "ZoomControl", e.align = "right", e.valign = "bottom", e.layout = "vertical", e.padding(5, 5, 5, 5);
var n = new p.a,
i = e.createChild(Do.a);
i.shouldClone = !1, i.label.text = "+", e.plusButton = i;
var r = e.createChild(Cr.a);
r.shouldClone = !1, r.background.fill = n.getFor("alternativeBackground"), r.background.fillOpacity = .05, r.background.events.on("hit", e.handleBackgroundClick, e, !1), r.events.on("sizechanged", e.updateThumbSize, e, !1), e.slider = r;
var o = r.createChild(Do.a);
o.shouldClone = !1, o.padding(0, 0, 0, 0), o.draggable = !0, o.events.on("drag", e.handleThumbDrag, e, !1), e.thumb = o;
var a = e.createChild(Do.a);
return a.shouldClone = !1, a.label.text = "-", e.minusButton = a, e.thumb.role = "slider", e.thumb.readerLive = "polite", e.thumb.readerTitle = e.language.translate("Use arrow keys to zoom in and out"), e.minusButton.readerTitle = e.language.translate("Press ENTER to zoom in"), e.plusButton.readerTitle = e.language.translate("Press ENTER to zoom out"), e.applyTheme(), e.events.on("propertychanged", function(t) {
"layout" == t.property && e.fixLayout()
}, void 0, !1), e._disposers.push(e._chart), e.fixLayout(), e
}
return Object(c.c)(e, t), e.prototype.fixLayout = function() {
var t = this.plusButton,
e = this.minusButton,
n = this.thumb,
i = this.slider;
t.x = void 0, t.y = void 0, e.x = void 0, e.y = void 0, n.x = void 0, n.y = void 0, i.x = void 0, i.y = void 0, t.padding(6, 10, 6, 10), e.padding(6, 10, 6, 10), e.label.align = "center", e.label.valign = "middle", t.label.align = "center", t.label.valign = "middle", "vertical" == this.layout ? (this.width = 40, this.height = void 0, e.width = Object(go.c)(100), e.height = void 0, n.width = Object(go.c)(100), n.height = void 0, t.width = Object(go.c)(100), t.height = void 0, i.width = Object(go.c)(100), e.marginTop = 1, t.marginBottom = 2, i.height = 0, e.toFront(), t.toBack(), n.minX = 0, n.maxX = 0, n.minY = 0) : "horizontal" == this.layout && (this.height = 40, this.width = void 0, e.height = Object(go.c)(100), e.width = void 0, t.height = Object(go.c)(100), t.width = void 0, n.height = Object(go.c)(100), n.width = void 0, n.minX = 0, n.minY = 0, n.maxY = 0, i.height = Object(go.c)(100), i.width = 0, e.toBack(), t.toFront())
}, e.prototype.handleBackgroundClick = function(t) {
var e = t.target,
n = t.spritePoint.y,
i = this.chart,
r = Math.log(i.maxZoomLevel) / Math.LN2,
o = Math.log(i.minZoomLevel) / Math.LN2,
a = (e.pixelHeight - n) / e.pixelHeight * (o + (r - o)),
u = Math.pow(2, a);
i.zoomToGeoPoint(i.zoomGeoPoint, u)
}, Object.defineProperty(e.prototype, "chart", {
get: function() {
return this._chart.get()
},
set: function(t) {
var e = this;
this._chart.set(t, new h.c([t.events.on("maxsizechanged", this.updateThumbSize, this, !1), t.events.on("zoomlevelchanged", this.updateThumb, this, !1), this.minusButton.events.on("hit", function() {
t.zoomOut(t.zoomGeoPoint)
}, t, !1), Object(_o.b)().body.events.on("keyup", function(n) {
e.topParent.hasFocused && (io.b.isKey(n.event, "plus") ? t.zoomIn() : io.b.isKey(n.event, "minus") && t.zoomOut())
}, t), this.plusButton.events.on("hit", function() {
t.zoomIn(t.zoomGeoPoint)
}, t, !1)]))
},
enumerable: !0,
configurable: !0
}), e.prototype.updateThumbSize = function() {
if (this.chart) {
var t = this.slider,
e = this.thumb;
"vertical" == this.layout ? (e.minHeight = Math.min(this.slider.pixelHeight, 20), e.height = t.pixelHeight / this.stepCount, e.maxY = t.pixelHeight - e.pixelHeight, e.pixelHeight <= 1 ? e.visible = !1 : e.visible = !0) : (e.minWidth = Math.min(this.slider.pixelWidth, 20), e.width = t.pixelWidth / this.stepCount, e.maxX = t.pixelWidth - e.pixelWidth, e.pixelWidth <= 1 ? e.visible = !1 : e.visible = !0)
}
}, e.prototype.updateThumb = function() {
var t = this.slider,
e = this.chart,
n = this.thumb;
if (!n.isDown) {
var i = (Math.log(e.zoomLevel) - Math.log(this.chart.minZoomLevel)) / Math.LN2;
"vertical" == this.layout ? n.y = t.pixelHeight - (t.pixelHeight - n.pixelHeight) * i / this.stepCount - n.pixelHeight : n.x = t.pixelWidth * i / this.stepCount
}
}, e.prototype.handleThumbDrag = function() {
var t, e = this.slider,
n = this.chart,
i = this.thumb;
t = Math.log(this.chart.minZoomLevel) / Math.LN2 + (t = "vertical" == this.layout ? this.stepCount * (e.pixelHeight - i.pixelY - i.pixelHeight) / (e.pixelHeight - i.pixelHeight) : this.stepCount * i.pixelX / e.pixelWidth);
var r = Math.pow(2, t);
n.zoomToGeoPoint(void 0, r, !1, 0)
}, Object.defineProperty(e.prototype, "stepCount", {
get: function() {
return Math.log(this.chart.maxZoomLevel) / Math.LN2 - Math.log(this.chart.minZoomLevel) / Math.LN2
},
enumerable: !0,
configurable: !0
}), e.prototype.createBackground = function() {
return new Go.a
}, e
}(Cr.a);
d.c.registeredClasses.ZoomControl = No;
var zo = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = tr(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.Mercator = zo;
var Vo = Math.abs,
Ao = Math.atan,
ko = Math.atan2,
Ro = (Math.ceil, Math.cos),
Fo = Math.exp,
Bo = Math.floor,
Ho = Math.log,
Wo = Math.max,
Zo = Math.min,
qo = Math.pow,
Xo = (Math.round, Math.sign || function(t) {
return t > 0 ? 1 : t < 0 ? -1 : 0
}),
Yo = Math.sin,
Uo = Math.tan,
Jo = 1e-6,
Ko = 1e-12,
Qo = Math.PI,
$o = Qo / 2,
ta = Qo / 4,
ea = Math.SQRT1_2,
na = ca(2),
ia = ca(Qo),
ra = 2 * Qo,
oa = 180 / Qo,
aa = Qo / 180;
function ua(t) {
return t > 1 ? $o : t < -1 ? -$o : Math.asin(t)
}
function sa(t) {
return t > 1 ? 0 : t < -1 ? Qo : Math.acos(t)
}
function ca(t) {
return t > 0 ? Math.sqrt(t) : 0
}
function la(t) {
return (Fo(t) - Fo(-t)) / 2
}
function ha(t) {
return (Fo(t) + Fo(-t)) / 2
}
function pa(t, e) {
var n = Ro(e),
i = function(t) {
return t ? t / Math.sin(t) : 1
}(sa(n * Ro(t /= 2)));
return [2 * n * Yo(t) * i, Yo(e) * i]
}
pa.invert = function(t, e) {
if (!(t * t + 4 * e * e > Qo * Qo + Jo)) {
var n = t,
i = e,
r = 25;
do {
var o, a = Yo(n),
u = Yo(n / 2),
s = Ro(n / 2),
c = Yo(i),
l = Ro(i),
h = Yo(2 * i),
p = c * c,
f = l * l,
d = u * u,
g = 1 - f * s * s,
v = g ? sa(l * s) * ca(o = 1 / g) : o = 0,
m = 2 * v * l * u - t,
y = v * c - e,
b = o * (f * d + v * l * s * p),
P = o * (.5 * a * h - 2 * v * c * u),
S = .25 * o * (h * u - v * c * f * a),
_ = o * (p * s + v * d * l),
M = P * S - _ * b;
if (!M) break;
var x = (y * P - m * _) / M,
j = (m * S - y * b) / M;
n -= x, i -= j
} while ((Vo(x) > Jo || Vo(j) > Jo) && --r > 0);
return [n, i]
}
};
function fa(t, e) {
var n = Uo(e / 2),
i = ca(1 - n * n),
r = 1 + i * Ro(t /= 2),
o = Yo(t) * i / r,
a = n / r,
u = o * o,
s = a * a;
return [4 / 3 * o * (3 + u - 3 * s), 4 / 3 * a * (3 + 3 * u - s)]
}
fa.invert = function(t, e) {
if (e *= 3 / 8, !(t *= 3 / 8) && Vo(e) > 1) return null;
var n = 1 + t * t + e * e,
i = ca((n - ca(n * n - 4 * e * e)) / 2),
r = ua(i) / 3,
o = i ? function(t) {
return Ho(t + ca(t * t - 1))
}(Vo(e / i)) / 3 : function(t) {
return Ho(t + ca(t * t + 1))
}(Vo(t)) / 3,
a = Ro(r),
u = ha(o),
s = u * u - a * a;
return [2 * Xo(t) * ko(la(o) * a, .25 - s), 2 * Xo(e) * ko(u * Yo(r), .25 + s)]
};
var da = ca(8),
ga = Ho(1 + na);
function va(t, e) {
var n = Vo(e);
return n < ta ? [t, Ho(Uo(ta + e / 2))] : [t * Ro(n) * (2 * na - 1 / Yo(n)), Xo(e) * (2 * na * (n - ta) - Ho(Uo(n / 2)))]
}
va.invert = function(t, e) {
if ((i = Vo(e)) < ga) return [t, 2 * Ao(Fo(e)) - $o];
var n, i, r = ta,
o = 25;
do {
var a = Ro(r / 2),
u = Uo(r / 2);
r -= n = (da * (r - ta) - Ho(u) - i) / (da - a * a / (2 * u))
} while (Vo(n) > Ko && --o > 0);
return [t / (Ro(r) * (da - 1 / Yo(r))), Xo(e) * r]
};
function ma(t, e) {
return [t * Ro(e) / Ro(e /= 2), 2 * Yo(e)]
}
ma.invert = function(t, e) {
var n = 2 * ua(e / 2);
return [t * Ro(n / 2) / Ro(n), n]
};
function ya(t, e, n) {
var i, r, o, a = 100;
n = void 0 === n ? 0 : +n, e = +e;
do {
(r = t(n)) === (o = t(n + Jo)) && (o = r + Jo), n -= i = -1 * Jo * (r - e) / (r - o)
} while (a-- > 0 && Vo(i) > Jo);
return a < 0 ? NaN : n
}
function ba(t, e) {
var n, i = t * Yo(e),
r = 30;
do {
e -= n = (e + Yo(e) - i) / (1 + Ro(e))
} while (Vo(n) > Jo && --r > 0);
return e / 2
}
function Pa(t, e, n) {
function i(i, r) {
return [t * i * Ro(r = ba(n, r)), e * Yo(r)]
}
return i.invert = function(i, r) {
return r = ua(r / e), [i / (t * Ro(r)), ua((2 * r + Yo(2 * r)) / n)]
}, i
}
var Sa = Pa(na / $o, na, Qo),
_a = 2.00276,
Ma = 1.11072;
function xa(t, e) {
var n = ba(Qo, e);
return [_a * t / (1 / Ro(e) + Ma / Ro(n)), (e + na * Yo(n)) / _a]
}
xa.invert = function(t, e) {
var n, i, r = _a * e,
o = e < 0 ? -ta : ta,
a = 25;
do {
i = r - na * Yo(o), o -= n = (Yo(2 * o) + 2 * o - Qo * Yo(i)) / (2 * Ro(2 * o) + 2 + Qo * Ro(i) * na * Ro(o))
} while (Vo(n) > Jo && --a > 0);
return i = r - na * Yo(o), [t * (1 / Ro(i) + Ma / Ro(o)) / _a, i]
};
function ja(t, e) {
return [t * Ro(e), e]
}
ja.invert = function(t, e) {
return [t / Ro(e), e]
};
Pa(1, 4 / Qo, Qo);
function wa(t, e) {
var n = ca(1 - Yo(e));
return [2 / ia * t * n, ia * (1 - n)]
}
wa.invert = function(t, e) {
var n = (n = e / ia - 1) * n;
return [n > 0 ? t * ca(Qo / n) / 2 : 0, ua(1 - n)]
};
var Oa = ca(3);
function La(t, e) {
return [Oa * t * (2 * Ro(2 * e / 3) - 1) / ia, Oa * ia * Yo(e / 3)]
}
La.invert = function(t, e) {
var n = 3 * ua(e / (Oa * ia));
return [ia * t / (Oa * (2 * Ro(2 * n / 3) - 1)), n]
};
function Ca(t) {
var e = Ro(t);
function n(t, n) {
return [t * e, Yo(n) / e]
}
return n.invert = function(t, n) {
return [t / e, ua(n * e)]
}, n
}
function Ea(t, e) {
var n = ca(8 / (3 * Qo));
return [n * t * (1 - Vo(e) / Qo), n * e]
}
Ea.invert = function(t, e) {
var n = ca(8 / (3 * Qo)),
i = e / n;
return [t / (n * (1 - Vo(i) / Qo)), i]
};
function Ia(t, e) {
var n = ca(4 - 3 * Yo(Vo(e)));
return [2 / ca(6 * Qo) * t * n, Xo(e) * ca(2 * Qo / 3) * (2 - n)]
}
Ia.invert = function(t, e) {
var n = 2 - Vo(e) / ca(2 * Qo / 3);
return [t * ca(6 * Qo) / (2 * n), Xo(e) * ua((4 - n * n) / 3)]
};
function Ta(t, e) {
var n = ca(Qo * (4 + Qo));
return [2 / n * t * (1 + ca(1 - 4 * e * e / (Qo * Qo))), 4 / n * e]
}
Ta.invert = function(t, e) {
var n = ca(Qo * (4 + Qo)) / 2;
return [t * n / (1 + ca(1 - e * e * (4 + Qo) / (4 * Qo))), e * n / 2]
};
function Da(t, e) {
var n = (2 + $o) * Yo(e);
e /= 2;
for (var i = 0, r = 1 / 0; i < 10 && Vo(r) > Jo; i++) {
var o = Ro(e);
e -= r = (e + Yo(e) * (o + 2) - n) / (2 * o * (1 + o))
}
return [2 / ca(Qo * (4 + Qo)) * t * (1 + Ro(e)), 2 * ca(Qo / (4 + Qo)) * Yo(e)]
}
Da.invert = function(t, e) {
var n = e * ca((4 + Qo) / Qo) / 2,
i = ua(n),
r = Ro(i);
return [t / (2 / ca(Qo * (4 + Qo)) * (1 + r)), ua((i + n * (r + 2)) / (2 + $o))]
};
function Ga(t, e) {
return [t * (1 + Ro(e)) / ca(2 + Qo), 2 * e / ca(2 + Qo)]
}
Ga.invert = function(t, e) {
var n = ca(2 + Qo),
i = e * n / 2;
return [n * t / (1 + Ro(i)), i]
};
function Na(t, e) {
for (var n = (1 + $o) * Yo(e), i = 0, r = 1 / 0; i < 10 && Vo(r) > Jo; i++) e -= r = (e + Yo(e) - n) / (1 + Ro(e));
return n = ca(2 + Qo), [t * (1 + Ro(e)) / n, 2 * e / n]
}
Na.invert = function(t, e) {
var n = 1 + $o,
i = ca(n / 2);
return [2 * t * i / (1 + Ro(e *= i)), ua((e + Yo(e)) / n)]
};
var za = function() {
return Ri(Na).scale(173.044)
},
Va = 3 + 2 * na;
function Aa(t, e) {
var n = Yo(t /= 2),
i = Ro(t),
r = ca(Ro(e)),
o = Ro(e /= 2),
a = Yo(e) / (o + na * i * r),
u = ca(2 / (1 + a * a)),
s = ca((na * o + (i + n) * r) / (na * o + (i - n) * r));
return [Va * (u * (s - 1 / s) - 2 * Ho(s)), Va * (u * a * (s + 1 / s) - 2 * Ao(a))]
}
Aa.invert = function(t, e) {
if (!(n = fa.invert(t / 1.2, 1.065 * e))) return null;
var n, i = n[0],
r = n[1],
o = 20;
t /= Va, e /= Va;
do {
var a = i / 2,
u = r / 2,
s = Yo(a),
c = Ro(a),
l = Yo(u),
h = Ro(u),
p = Ro(r),
f = ca(p),
d = l / (h + na * c * f),
g = d * d,
v = ca(2 / (1 + g)),
m = (na * h + (c + s) * f) / (na * h + (c - s) * f),
y = ca(m),
b = y - 1 / y,
P = y + 1 / y,
S = v * b - 2 * Ho(y) - t,
_ = v * d * P - 2 * Ao(d) - e,
M = l && ea * f * s * g / l,
x = (na * c * h + f) / (2 * (h + na * c * f) * (h + na * c * f) * f),
j = -.5 * d * v * v * v,
w = j * M,
O = j * x,
L = (L = 2 * h + na * f * (c - s)) * L * y,
C = (na * c * h * f + p) / L,
E = -na * s * l / (f * L),
I = b * w - 2 * C / y + v * (C + C / m),
T = b * O - 2 * E / y + v * (E + E / m),
D = d * P * w - 2 * M / (1 + g) + v * P * M + v * d * (C - C / m),
G = d * P * O - 2 * x / (1 + g) + v * P * x + v * d * (E - E / m),
N = T * D - G * I;
if (!N) break;
var z = (_ * T - S * G) / N,
V = (S * D - _ * I) / N;
i -= z, r = Wo(-$o, Zo($o, r - V))
} while ((Vo(z) > Jo || Vo(V) > Jo) && --o > 0);
return Vo(Vo(r) - $o) < Jo ? [0, r] : o && [i, r]
};
var ka = Ro(35 * aa);
function Ra(t, e) {
var n = Uo(e / 2);
return [t * ka * ca(1 - n * n), (1 + ka) * n]
}
Ra.invert = function(t, e) {
var n = e / (1 + ka);
return [t && t / (ka * ca(1 - n * n)), 2 * Ao(n)]
};
function Fa(t, e) {
var n = e / 2,
i = Ro(n);
return [2 * t / ia * Ro(e) * i * i, ia * Uo(n)]
}
Fa.invert = function(t, e) {
var n = Ao(e / ia),
i = Ro(n),
r = 2 * n;
return [t * ia / 2 / (Ro(r) * i * i), r]
};
var Ba = function(t, e, n, i, r, o, a, u) {
function s(s, c) {
if (!c) return [t * s / Qo, 0];
var l = c * c,
h = t + l * (e + l * (n + l * i)),
p = c * (r - 1 + l * (o - u + l * a)),
f = (h * h + p * p) / (2 * p),
d = s * ua(h / f) / Qo;
return [f * Yo(d), c * (1 + l * u) + f * (1 - Ro(d))]
}
return arguments.length < 8 && (u = 0), s.invert = function(s, c) {
var l, h, p = Qo * s / t,
f = c,
d = 50;
do {
var g = f * f,
v = t + g * (e + g * (n + g * i)),
m = f * (r - 1 + g * (o - u + g * a)),
y = v * v + m * m,
b = 2 * m,
P = y / b,
S = P * P,
_ = ua(v / P) / Qo,
M = p * _,
x = v * v,
j = (2 * e + g * (4 * n + 6 * g * i)) * f,
w = r + g * (3 * o + 5 * g * a),
O = (2 * (v * j + m * (w - 1)) * b - y * (2 * (w - 1))) / (b * b),
L = Ro(M),
C = Yo(M),
E = P * L,
I = P * C,
T = p / Qo * (1 / ca(1 - x / S)) * (j * P - v * O) / S,
D = I - s,
G = f * (1 + g * u) + P - E - c,
N = O * C + E * T,
z = E * _,
V = 1 + O - (O * L - I * T),
A = I * _,
k = N * A - V * z;
if (!k) break;
p -= l = (G * N - D * V) / k, f -= h = (D * A - G * z) / k
} while ((Vo(l) > Jo || Vo(h) > Jo) && --d > 0);
return [p, f]
}, s
};
Ba(2.8284, -1.6988, .75432, -.18071, 1.76003, -.38914, .042555), Ba(2.583819, -.835827, .170354, -.038094, 1.543313, -.411435, .082742), Ba(5 / 6 * Qo, -.62636, -.0344, 0, 1.3493, -.05524, 0, .045);
function Ha(t, e) {
var n = t * t,
i = e * e;
return [t * (1 - .162388 * i) * (.87 - 952426e-9 * n * n), e * (1 + i / 12)]
}
Ha.invert = function(t, e) {
var n, i = t,
r = e,
o = 50;
do {
var a = r * r;
r -= n = (r * (1 + a / 12) - e) / (1 + a / 4)
} while (Vo(n) > Jo && --o > 0);
o = 50, t /= 1 - .162388 * a;
do {
var u = (u = i * i) * u;
i -= n = (i * (.87 - 952426e-9 * u) - t) / (.87 - .00476213 * u)
} while (Vo(n) > Jo && --o > 0);
return [i, r]
};
Ba(2.6516, -.76534, .19123, -.047094, 1.36289, -.13965, .031762);
function Wa(t, e) {
var n = Xo(t),
i = Xo(e),
r = Ro(e),
o = Ro(t) * r,
a = Yo(t) * r,
u = Yo(i * e);
t = Vo(ko(a, u)), e = ua(o), Vo(t - $o) > Jo && (t %= $o);
var s = function(t, e) {
if (e === $o) return [0, 0];
var n, i, r = Yo(e),
o = r * r,
a = o * o,
u = 1 + a,
s = 1 + 3 * a,
c = 1 - a,
l = ua(1 / ca(u)),
h = c + o * u * l,
p = (1 - r) / h,
f = ca(p),
d = p * u,
g = ca(d),
v = f * c;
if (0 === t) return [0, -(v + o * g)];
var m, y = Ro(e),
b = 1 / y,
P = 2 * r * y,
S = (-h * y - (-3 * o + l * s) * P * (1 - r)) / (h * h),
_ = -b * P,
M = -b * (o * u * S + p * s * P),
x = -2 * b * (c * (.5 * S / f) - 2 * o * f * P),
j = 4 * t / Qo;
if (t > .222 * Qo || e < Qo / 4 && t > .175 * Qo) {
if (n = (v + o * ca(d * (1 + a) - v * v)) / (1 + a), t > Qo / 4) return [n, n];
var w = n,
O = .5 * n;
n = .5 * (O + w), i = 50;
do {
var L = ca(d - n * n),
C = n * (x + _ * L) + M * ua(n / g) - j;
if (!C) break;
C < 0 ? O = n : w = n, n = .5 * (O + w)
} while (Vo(w - O) > Jo && --i > 0)
} else {
n = Jo, i = 25;
do {
var E = n * n,
I = ca(d - E),
T = x + _ * I,
D = n * T + M * ua(n / g) - j,
G = T + (M - _ * E) / I;
n -= m = I ? D / G : 0
} while (Vo(m) > Jo && --i > 0)
}
return [n, -v - o * ca(d - n * n)]
}(t > Qo / 4 ? $o - t : t, e);
return t > Qo / 4 && (u = s[0], s[0] = -s[1], s[1] = -u), s[0] *= n, s[1] *= -i, s
}
Wa.invert = function(t, e) {
Vo(t) > 1 && (t = 2 * Xo(t) - t), Vo(e) > 1 && (e = 2 * Xo(e) - e);
var n = Xo(t),
i = Xo(e),
r = -n * t,
o = -i * e,
a = o / r < 1,
u = function(t, e) {
var n = 0,
i = 1,
r = .5,
o = 50;
for (;;) {
var a = r * r,
u = ca(r),
s = ua(1 / ca(1 + a)),
c = 1 - a + r * (1 + a) * s,
l = (1 - u) / c,
h = ca(l),
p = l * (1 + a),
f = h * (1 - a),
d = p - t * t,
g = ca(d),
v = e + f + r * g;
if (Vo(i - n) < Ko || 0 == --o || 0 === v) break;
v > 0 ? n = r : i = r, r = .5 * (n + i)
}
if (!o) return null;
var m = ua(u),
y = Ro(m),
b = 1 / y,
P = 2 * u * y,
S = (-c * y - (-3 * r + s * (1 + 3 * a)) * P * (1 - u)) / (c * c);
return [Qo / 4 * (t * (-2 * b * (.5 * S / h * (1 - a) - 2 * r * h * P) + -b * P * g) + -b * (r * (1 + a) * S + l * (1 + 3 * a) * P) * ua(t / ca(p))), m]
}(a ? o : r, a ? r : o),
s = u[0],
c = u[1],
l = Ro(c);
return a && (s = -$o - s), [n * (ko(Yo(s) * l, -Yo(c)) + Qo), i * ua(Ro(s) * l)]
};
function Za(t, e) {
var n, i, r, o, a;
if (e < Jo) return [(o = Yo(t)) - (n = e * (t - o * (i = Ro(t))) / 4) * i, i + n * o, 1 - e * o * o / 2, t - n];
if (e >= 1 - Jo) return n = (1 - e) / 4, r = 1 / (i = ha(t)), [(o = function(t) {
return ((t = Fo(2 * t)) - 1) / (t + 1)
}(t)) + n * ((a = i * la(t)) - t) / (i * i), r - n * o * r * (a - t), r + n * o * r * (a + t), 2 * Ao(Fo(t)) - $o + n * (a - t) / i];
var u = [1, 0, 0, 0, 0, 0, 0, 0, 0],
s = [ca(e), 0, 0, 0, 0, 0, 0, 0, 0],
c = 0;
for (i = ca(1 - e), a = 1; Vo(s[c] / u[c]) > Jo && c < 8;) n = u[c++], s[c] = (n - i) / 2, u[c] = (n + i) / 2, i = ca(n * i), a *= 2;
r = a * u[c] * t;
do {
r = (ua(o = s[c] * Yo(i = r) / u[c]) + r) / 2
} while (--c);
return [Yo(r), o = Ro(r), o / Ro(r - i), r]
}
function qa(t, e) {
if (!e) return t;
if (1 === e) return Ho(Uo(t / 2 + ta));
for (var n = 1, i = ca(1 - e), r = ca(e), o = 0; Vo(r) > Jo; o++) {
if (t % Qo) {
var a = Ao(i * Uo(t) / n);
a < 0 && (a += Qo), t += a + ~~(t / Qo) * Qo
} else t += t;
r = (n + i) / 2, i = ca(n * i), r = ((n = r) - i) / 2
}
return t / (qo(2, o) * n)
}
function Xa(t, e) {
var n = (na - 1) / (na + 1),
i = ca(1 - n * n),
r = qa($o, i * i),
o = Ho(Uo(Qo / 4 + Vo(e) / 2)),
a = Fo(-1 * o) / ca(n),
u = function(t, e) {
var n = t * t,
i = e + 1,
r = 1 - n - e * e;
return [.5 * ((t >= 0 ? $o : -$o) - ko(r, 2 * t)), -.25 * Ho(r * r + 4 * n) + .5 * Ho(i * i + n)]
}(a * Ro(-1 * t), a * Yo(-1 * t)),
s = function(t, e, n) {
var i = Vo(t),
r = la(Vo(e));
if (i) {
var o = 1 / Yo(i),
a = 1 / (Uo(i) * Uo(i)),
u = -(a + n * (r * r * o * o) - 1 + n),
s = (-u + ca(u * u - (n - 1) * a * 4)) / 2;
return [qa(Ao(1 / ca(s)), n) * Xo(t), qa(Ao(ca((s / a - 1) / n)), 1 - n) * Xo(e)]
}
return [0, qa(Ao(r), 1 - n) * Xo(e)]
}(u[0], u[1], i * i);
return [-s[1], (e >= 0 ? 1 : -1) * (.5 * r - s[0])]
}
Xa.invert = function(t, e) {
var n = (na - 1) / (na + 1),
i = ca(1 - n * n),
r = function(t, e, n) {
var i, r, o;
return t ? (i = Za(t, n), e ? (o = (r = Za(e, 1 - n))[1] * r[1] + n * i[0] * i[0] * r[0] * r[0], [
[i[0] * r[2] / o, i[1] * i[2] * r[0] * r[1] / o],
[i[1] * r[1] / o, -i[0] * i[2] * r[0] * r[2] / o],
[i[2] * r[1] * r[2] / o, -n * i[0] * i[1] * r[0] / o]
]) : [
[i[0], 0],
[i[1], 0],
[i[2], 0]
]) : [
[0, (r = Za(e, 1 - n))[0] / r[1]],
[1 / r[1], 0],
[r[2] / r[1], 0]
]
}(.5 * qa($o, i * i) - e, -t, i * i),
o = function(t, e) {
var n = e[0] * e[0] + e[1] * e[1];
return [(t[0] * e[0] + t[1] * e[1]) / n, (t[1] * e[0] - t[0] * e[1]) / n]
}(r[0], r[1]);
return [ko(o[1], o[0]) / -1, 2 * Ao(Fo(-.5 * Ho(n * o[0] * o[0] + n * o[1] * o[1]))) - $o]
};
ua(1 - 1 / 3), Ca(0);
var Ya = .7109889596207567,
Ua = .0528035274542;
function Ja(t, e) {
return e > -Ya ? ((t = Sa(t, e))[1] += Ua, t) : ja(t, e)
}
Ja.invert = function(t, e) {
return e > -Ya ? Sa.invert(t, e - Ua) : ja.invert(t, e)
};
function Ka(t, e) {
return Vo(e) > Ya ? ((t = Sa(t, e))[1] -= e > 0 ? Ua : -Ua, t) : ja(t, e)
}
Ka.invert = function(t, e) {
return Vo(e) > Ya ? Sa.invert(t, e + (e > 0 ? Ua : -Ua)) : ja.invert(t, e)
};
function Qa(t, e) {
return [3 / ra * t * ca(Qo * Qo / 3 - e * e), e]
}
Qa.invert = function(t, e) {
return [ra / 3 * t / ca(Qo * Qo / 3 - e * e), e]
};
var $a = Qo / na;
function tu(t, e) {
return [t * (1 + ca(Ro(e))) / 2, e / (Ro(e / 2) * Ro(t / 6))]
}
tu.invert = function(t, e) {
var n = Vo(t),
i = Vo(e),
r = Jo,
o = $o;
i < $a ? o *= i / $a : r += 6 * sa($a / i);
for (var a = 0; a < 25; a++) {
var u = Yo(o),
s = ca(Ro(o)),
c = Yo(o / 2),
l = Ro(o / 2),
h = Yo(r / 6),
p = Ro(r / 6),
f = .5 * r * (1 + s) - n,
d = o / (l * p) - i,
g = s ? -.25 * r * u / s : 0,
v = .5 * (1 + s),
m = (1 + .5 * o * c / l) / (l * p),
y = o / l * (h / 6) / (p * p),
b = g * y - m * v,
P = (f * y - d * v) / b,
S = (d * g - f * m) / b;
if (o -= P, r -= S, Vo(P) < Jo && Vo(S) < Jo) break
}
return [t < 0 ? -r : r, e < 0 ? -o : o]
};
function eu(t, e) {
var n = t * t,
i = e * e;
return [t * (.975534 + i * (-.0143059 * n - .119161 + -.0547009 * i)), e * (1.00384 + n * (.0802894 + -.02855 * i + 199025e-9 * n) + i * (.0998909 + -.0491032 * i))]
}
eu.invert = function(t, e) {
var n = Xo(t) * Qo,
i = e / 2,
r = 50;
do {
var o = n * n,
a = i * i,
u = n * i,
s = n * (.975534 + a * (-.0143059 * o - .119161 + -.0547009 * a)) - t,
c = i * (1.00384 + o * (.0802894 + -.02855 * a + 199025e-9 * o) + a * (.0998909 + -.0491032 * a)) - e,
l = .975534 - a * (.119161 + 3 * o * .0143059 + .0547009 * a),
h = -u * (.238322 + .2188036 * a + .0286118 * o),
p = u * (.1605788 + 7961e-7 * o + -.0571 * a),
f = 1.00384 + o * (.0802894 + 199025e-9 * o) + a * (3 * (.0998909 - .02855 * o) - .245516 * a),
d = h * p - f * l,
g = (c * h - s * f) / d,
v = (s * p - c * l) / d;
n -= g, i -= v
} while ((Vo(g) > Jo || Vo(v) > Jo) && --r > 0);
return r && [n, i]
};
function nu(t, e) {
return [Yo(t) / Ro(e), Uo(e) * Ro(t)]
}
nu.invert = function(t, e) {
var n = t * t,
i = e * e + 1,
r = n + i,
o = t ? ea * ca((r - ca(r * r - 4 * n)) / n) : 1 / ca(i);
return [ua(t * o), Xo(e) * sa(o)]
};
function iu(t, e) {
return [t, 1.25 * Ho(Uo(ta + .4 * e))]
}
iu.invert = function(t, e) {
return [t, 2.5 * Ao(Fo(.8 * e)) - .625 * Qo]
};
var ru = function() {
return Ri(iu).scale(108.318)
};
var ou = ca(6),
au = ca(7);
function uu(t, e) {
var n = ua(7 * Yo(e) / (3 * ou));
return [ou * t * (2 * Ro(2 * n / 3) - 1) / au, 9 * Yo(n / 3) / au]
}
uu.invert = function(t, e) {
var n = 3 * ua(e * au / 9);
return [t * au / (ou * (2 * Ro(2 * n / 3) - 1)), ua(3 * Yo(n) * ou / 7)]
};
function su(t, e) {
for (var n, i = (1 + ea) * Yo(e), r = e, o = 0; o < 25 && (r -= n = (Yo(r / 2) + Yo(r) - i) / (.5 * Ro(r / 2) + Ro(r)), !(Vo(n) < Jo)); o++);
return [t * (1 + 2 * Ro(r) / Ro(r / 2)) / (3 * na), 2 * ca(3) * Yo(r / 2) / ca(2 + na)]
}
su.invert = function(t, e) {
var n = e * ca(2 + na) / (2 * ca(3)),
i = 2 * ua(n);
return [3 * na * t / (1 + 2 * Ro(i) / Ro(i / 2)), ua((n + Yo(i)) / (1 + ea))]
};
function cu(t, e) {
for (var n, i = ca(6 / (4 + Qo)), r = (1 + Qo / 4) * Yo(e), o = e / 2, a = 0; a < 25 && (o -= n = (o / 2 + Yo(o) - r) / (.5 + Ro(o)), !(Vo(n) < Jo)); a++);
return [i * (.5 + Ro(o)) * t / 1.5, i * o]
}
cu.invert = function(t, e) {
var n = ca(6 / (4 + Qo)),
i = e / n;
return Vo(Vo(i) - $o) < Jo && (i = i < 0 ? -$o : $o), [1.5 * t / (n * (.5 + Ro(i))), ua((i / 2 + Yo(i)) / (1 + Qo / 4))]
};
function lu(t, e) {
var n = e * e,
i = n * n,
r = n * i;
return [t * (.84719 - .13063 * n + r * r * (.05494 * n - .04515 - .02326 * i + .00331 * r)), e * (1.01183 + i * i * (.01926 * n - .02625 - .00396 * i))]
}
lu.invert = function(t, e) {
var n, i, r, o, a = e,
u = 25;
do {
a -= n = (a * (1.01183 + (r = (i = a * a) * i) * r * (.01926 * i - .02625 - .00396 * r)) - e) / (1.01183 + r * r * (.21186 * i - .23625 + -.05148 * r))
} while (Vo(n) > Ko && --u > 0);
return [t / (.84719 - .13063 * (i = a * a) + (o = i * (r = i * i)) * o * (.05494 * i - .04515 - .02326 * r + .00331 * o)), a]
};
function hu(t, e) {
return [t * (1 + Ro(e)) / 2, 2 * (e - Uo(e / 2))]
}
hu.invert = function(t, e) {
for (var n = e / 2, i = 0, r = 1 / 0; i < 10 && Vo(r) > Jo; ++i) {
var o = Ro(e / 2);
e -= r = (e - Uo(e / 2) - n) / (1 - .5 / (o * o))
}
return [2 * t / (1 + Ro(e)), e]
};
function pu(t, e) {
var n = Yo(e),
i = Ro(e),
r = Xo(t);
if (0 === t || Vo(e) === $o) return [0, e];
if (0 === e) return [t, 0];
if (Vo(t) === $o) return [t * i, $o * n];
var o = Qo / (2 * t) - 2 * t / Qo,
a = 2 * e / Qo,
u = (1 - a * a) / (n - a),
s = o * o,
c = u * u,
l = 1 + s / c,
h = 1 + c / s,
p = (o * n / u - o / 2) / l,
f = (c * n / s + u / 2) / h,
d = f * f - (c * n * n / s + u * n - 1) / h;
return [$o * (p + ca(p * p + i * i / l) * r), $o * (f + ca(d < 0 ? 0 : d) * Xo(-e * o) * r)]
}
pu.invert = function(t, e) {
var n = (t /= $o) * t,
i = n + (e /= $o) * e,
r = Qo * Qo;
return [t ? (i - 1 + ca((1 - i) * (1 - i) + 4 * n)) / (2 * t) * $o : 0, ya(function(t) {
return i * (Qo * Yo(t) - 2 * t) * Qo + 4 * t * t * (e - Yo(t)) + 2 * Qo * t - r * e
}, 0)]
};
var fu = 1.0148,
du = .23185,
gu = -.14499,
vu = .02406,
mu = fu,
yu = 5 * du,
bu = 7 * gu,
Pu = 9 * vu;
function Su(t, e) {
var n = e * e;
return [t, e * (fu + n * n * (du + n * (gu + vu * n)))]
}
Su.invert = function(t, e) {
e > 1.790857183 ? e = 1.790857183 : e < -1.790857183 && (e = -1.790857183);
var n, i = e;
do {
var r = i * i;
i -= n = (i * (fu + r * r * (du + r * (gu + vu * r))) - e) / (mu + r * r * (yu + r * (bu + Pu * r)))
} while (Vo(n) > Jo);
return [t, i]
};
function _u(t, e) {
if (Vo(e) < Jo) return [t, 0];
var n = Uo(e),
i = t * Yo(e);
return [Yo(i) / n, e + (1 - Ro(i)) / n]
}
_u.invert = function(t, e) {
if (Vo(e) < Jo) return [t, 0];
var n, i = t * t + e * e,
r = .5 * e,
o = 10;
do {
var a = Uo(r),
u = 1 / Ro(r),
s = i - 2 * e * r + r * r;
r -= n = (a * s + 2 * (r - e)) / (2 + s * u * u + 2 * (r - e) * a)
} while (Vo(n) > Jo && --o > 0);
return a = Uo(r), [(Vo(e) < Vo(r + 1 / a) ? ua(t * a) : Xo(e) * Xo(t) * (sa(Vo(t * a)) + $o)) / Yo(r), r]
};
var Mu = [
[0, 90],
[-90, 0],
[0, 0],
[90, 0],
[180, 0],
[0, -90]
],
xu = ([
[0, 2, 1],
[0, 3, 2],
[5, 1, 2],
[5, 2, 3],
[0, 1, 4],
[0, 4, 3],
[5, 4, 1],
[5, 3, 4]
].map(function(t) {
return t.map(function(t) {
return Mu[t]
})
}), 2 / ca(3));
function ju(t, e) {
var n = wa(t, e);
return [n[0] * xu, n[1]]
}
ju.invert = function(t, e) {
return wa.invert(t / xu, e)
};
var wu = [
[.9986, -.062],
[1, 0],
[.9986, .062],
[.9954, .124],
[.99, .186],
[.9822, .248],
[.973, .31],
[.96, .372],
[.9427, .434],
[.9216, .4958],
[.8962, .5571],
[.8679, .6176],
[.835, .6769],
[.7986, .7346],
[.7597, .7903],
[.7186, .8435],
[.6732, .8936],
[.6213, .9394],
[.5722, .9761],
[.5322, 1]
];
function Ou(t, e) {
var n, i = Zo(18, 36 * Vo(e) / Qo),
r = Bo(i),
o = i - r,
a = (n = wu[r])[0],
u = n[1],
s = (n = wu[++r])[0],
c = n[1],
l = (n = wu[Zo(19, ++r)])[0],
h = n[1];
return [t * (s + o * (l - a) / 2 + o * o * (l - 2 * s + a) / 2), (e > 0 ? $o : -$o) * (c + o * (h - u) / 2 + o * o * (h - 2 * c + u) / 2)]
}
wu.forEach(function(t) {
t[1] *= 1.0144
}), Ou.invert = function(t, e) {
var n = e / $o,
i = 90 * n,
r = Zo(18, Vo(i / 5)),
o = Wo(0, Bo(r));
do {
var a = wu[o][1],
u = wu[o + 1][1],
s = wu[Zo(19, o + 2)][1],
c = s - a,
l = s - 2 * u + a,
h = 2 * (Vo(n) - u) / c,
p = l / c,
f = h * (1 - p * h * (1 - 2 * p * h));
if (f >= 0 || 1 === o) {
i = (e >= 0 ? 5 : -5) * (f + r);
var d, g = 50;
do {
f = (r = Zo(18, Vo(i) / 5)) - (o = Bo(r)), a = wu[o][1], u = wu[o + 1][1], s = wu[Zo(19, o + 2)][1], i -= (d = (e >= 0 ? $o : -$o) * (u + f * (s - a) / 2 + f * f * (s - 2 * u + a) / 2) - e) * oa
} while (Vo(d) > Ko && --g > 0);
break
}
} while (--o >= 0);
var v = wu[o][0],
m = wu[o + 1][0],
y = wu[Zo(19, o + 2)][0];
return [t / (m + f * (y - v) / 2 + f * f * (y - 2 * m + v) / 2), i * aa]
};
function Lu(t, e) {
var n = Uo(e / 2),
i = Yo(ta * n);
return [t * (.74482 - .34588 * i * i), 1.70711 * n]
}
Lu.invert = function(t, e) {
var n = e / 1.70711,
i = Yo(ta * n);
return [t / (.74482 - .34588 * i * i), 2 * Ao(n)]
};
function Cu(t, e) {
if (Vo(e) < Jo) return [t, 0];
var n = Vo(e / $o),
i = ua(n);
if (Vo(t) < Jo || Vo(Vo(e) - $o) < Jo) return [0, Xo(e) * Qo * Uo(i / 2)];
var r = Ro(i),
o = Vo(Qo / t - t / Qo) / 2,
a = o * o,
u = r / (n + r - 1),
s = u * (2 / n - 1),
c = s * s,
l = c + a,
h = u - c,
p = a + u;
return [Xo(t) * Qo * (o * h + ca(a * h * h - l * (u * u - c))) / l, Xo(e) * Qo * (s * p - o * ca((a + 1) * l - p * p)) / l]
}
Cu.invert = function(t, e) {
if (Vo(e) < Jo) return [t, 0];
if (Vo(t) < Jo) return [0, $o * Yo(2 * Ao(e / Qo))];
var n = (t /= Qo) * t,
i = (e /= Qo) * e,
r = n + i,
o = r * r,
a = -Vo(e) * (1 + r),
u = a - 2 * i + n,
s = -2 * a + 1 + 2 * i + o,
c = i / s + (2 * u * u * u / (s * s * s) - 9 * a * u / (s * s)) / 27,
l = (a - u * u / (3 * s)) / s,
h = 2 * ca(-l / 3),
p = sa(3 * c / (l * h)) / 3;
return [Qo * (r - 1 + ca(1 + 2 * (n - i) + o)) / (2 * t), Xo(e) * Qo * (-h * Ro(p + Qo / 3) - u / (3 * s))]
};
function Eu(t, e) {
if (Vo(e) < Jo) return [t, 0];
var n = Vo(e / $o),
i = ua(n);
if (Vo(t) < Jo || Vo(Vo(e) - $o) < Jo) return [0, Xo(e) * Qo * Uo(i / 2)];
var r = Ro(i),
o = Vo(Qo / t - t / Qo) / 2,
a = o * o,
u = r * (ca(1 + a) - o * r) / (1 + a * n * n);
return [Xo(t) * Qo * u, Xo(e) * Qo * ca(1 - u * (2 * o + u))]
}
Eu.invert = function(t, e) {
if (!t) return [0, $o * Yo(2 * Ao(e / Qo))];
var n = Vo(t / Qo),
i = (1 - n * n - (e /= Qo) * e) / (2 * n),
r = ca(i * i + 1);
return [Xo(t) * Qo * (r - i), Xo(e) * $o * Yo(2 * ko(ca((1 - 2 * i * n) * (i + r) - n), ca(r + i + n)))]
};
function Iu(t, e) {
if (Vo(e) < Jo) return [t, 0];
var n = e / $o,
i = ua(n);
if (Vo(t) < Jo || Vo(Vo(e) - $o) < Jo) return [0, Qo * Uo(i / 2)];
var r = (Qo / t - t / Qo) / 2,
o = n / (1 + Ro(i));
return [Qo * (Xo(t) * ca(r * r + 1 - o * o) - r), Qo * o]
}
Iu.invert = function(t, e) {
if (!e) return [t, 0];
var n = e / Qo,
i = (Qo * Qo * (1 - n * n) - t * t) / (2 * Qo * t);
return [t ? Qo * (Xo(t) * ca(i * i + 1) - i) : 0, $o * Yo(2 * Ao(n))]
};
function Tu(t, e) {
if (!e) return [t, 0];
var n = Vo(e);
if (!t || n === $o) return [0, e];
var i = n / $o,
r = i * i,
o = (8 * i - r * (r + 2) - 5) / (2 * r * (i - 1)),
a = o * o,
u = i * o,
s = r + a + 2 * u,
c = i + 3 * o,
l = t / $o,
h = l + 1 / l,
p = Xo(Vo(t) - $o) * ca(h * h - 4),
f = p * p,
d = (p * (s + a - 1) + 2 * ca(s * (r + a * f - 1) + (1 - r) * (r * (c * c + 4 * a) + 12 * u * a + 4 * a * a))) / (4 * s + f);
return [Xo(t) * $o * d, Xo(e) * $o * ca(1 + p * Vo(d) - d * d)]
}
Tu.invert = function(t, e) {
var n;
if (!t || !e) return [t, e];
var i = Xo(e);
e = Vo(e) / Qo;
var r = Xo(t) * t / $o,
o = (r * r - 1 + 4 * e * e) / Vo(r),
a = o * o,
u = e * (2 - (e > .5 ? Zo(e, Vo(t)) : 0)),
s = t * t + e * e,
c = 50;
do {
var l = u * u,
h = (8 * u - l * (l + 2) - 5) / (2 * l * (u - 1)),
p = (3 * u - l * u - 10) / (2 * l * u),
f = h * h,
d = u * h,
g = u + h,
v = g * g,
m = u + 3 * h,
y = -2 * g * (4 * d * f + (1 - 4 * l + 3 * l * l) * (1 + p) + f * (14 * l - 6 - a + (8 * l - 8 - 2 * a) * p) + d * (12 * l - 8 + (10 * l - 10 - a) * p)),
b = ca(v * (l + f * a - 1) + (1 - l) * (l * (m * m + 4 * f) + f * (12 * d + 4 * f)));
u -= n = (o * (v + f - 1) + 2 * b - r * (4 * v + a)) / (o * (2 * h * p + 2 * g * (1 + p)) + y / b - 8 * g * (o * (-1 + f + v) + 2 * b) * (1 + p) / (a + 4 * v))
} while (n * s * s > Jo && --c > 0);
return [Xo(t) * (ca(o * o + 4) + o) * Qo / 4, i * $o * u]
};
var Du = 4 * Qo + 3 * ca(3),
Gu = 2 * ca(2 * Qo * ca(3) / Du);
Pa(Gu * ca(3) / Qo, Gu, Du / 6);
function Nu(t, e) {
return [t * ca(1 - 3 * e * e / (Qo * Qo)), e]
}
Nu.invert = function(t, e) {
return [t / ca(1 - 3 * e * e / (Qo * Qo)), e]
};
function zu(t, e) {
var n = Ro(e),
i = Ro(t) * n,
r = 1 - i,
o = Ro(t = ko(Yo(t) * n, -Yo(e))),
a = Yo(t);
return [a * (n = ca(1 - i * i)) - o * r, -o * n - a * r]
}
zu.invert = function(t, e) {
var n = (t * t + e * e) / -2,
i = ca(-n * (2 + n)),
r = e * n + t * i,
o = t * n - e * i,
a = ca(o * o + r * r);
return [ko(i * r, a * (1 + n)), a ? -ua(i * o / a) : 0]
};
function Vu(t, e) {
var n = pa(t, e);
return [(n[0] + t / $o) / 2, (n[1] + e) / 2]
}
Vu.invert = function(t, e) {
var n = t,
i = e,
r = 25;
do {
var o, a = Ro(i),
u = Yo(i),
s = Yo(2 * i),
c = u * u,
l = a * a,
h = Yo(n),
p = Ro(n / 2),
f = Yo(n / 2),
d = f * f,
g = 1 - l * p * p,
v = g ? sa(a * p) * ca(o = 1 / g) : o = 0,
m = .5 * (2 * v * a * f + n / $o) - t,
y = .5 * (v * u + i) - e,
b = .5 * o * (l * d + v * a * p * c) + .5 / $o,
P = o * (h * s / 4 - v * u * f),
S = .125 * o * (s * f - v * u * l * h),
_ = .5 * o * (c * p + v * d * a) + .5,
M = P * S - _ * b,
x = (y * P - m * _) / M,
j = (m * S - y * b) / M;
n -= x, i -= j
} while ((Vo(x) > Jo || Vo(j) > Jo) && --r > 0);
return [n, i]
};
var Au = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = ru(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.Miller = Au;
var ku = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = za(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.Eckert6 = ku;
var Ru = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = _r(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.Orthographic = Ru;
var Fu = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = xr(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.Stereographic = Fu;
var Bu = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = Zi(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.Albers = Bu;
var Hu = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = qi(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.AlbersUsa = Hu;
var Wu = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = Pr(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.NaturalEarth1 = Wu;
var Zu = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = Ji(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.AzimuthalEqualArea = Zu;
var qu = function(t) {
function e() {
var e = t.call(this) || this;
return e.d3Projection = gr(), e
}
return Object(c.c)(e, t), e
}(Qr);
d.c.registeredClasses.EqualEarth = qu, window.am4maps = a
},
QaCB: function(t, e, n) {
"use strict";
function i(t, e) {
for (var n = 0; n < e.length; n++) {
var i = e[n];
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
}
}
Object.defineProperty(e, "__esModule", {
value: !0
}), n.d(e, "default", function() {
return r
});
var r = function() {
function t() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : o;
if (function(t, e) {
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
}(this, t), this.data = e, this.length = this.data.length, this.compare = n, this.length > 0)
for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i)
}
return function(t, e, n) {
e && i(t.prototype, e), n && i(t, n)
}(t, [{
key: "push",
value: function(t) {
this.data.push(t), this.length++, this._up(this.length - 1)
}
}, {
key: "pop",
value: function() {
if (0 !== this.length) {
var t = this.data[0],
e = this.data.pop();
return this.length--, this.length > 0 && (this.data[0] = e, this._down(0)), t
}
}
}, {
key: "peek",
value: function() {
return this.data[0]
}
}, {
key: "_up",
value: function(t) {
for (var e = this.data, n = this.compare, i = e[t]; t > 0;) {
var r = t - 1 >> 1,
o = e[r];
if (n(i, o) >= 0) break;
e[t] = o, t = r
}
e[t] = i
}
}, {
key: "_down",
value: function(t) {
for (var e = this.data, n = this.compare, i = this.length >> 1, r = e[t]; t < i;) {
var o = 1 + (t << 1),
a = e[o],
u = o + 1;
if (u < this.length && n(e[u], a) < 0 && (o = u, a = e[u]), n(a, r) >= 0) break;
e[t] = a, t = o
}
e[t] = r
}
}]), t
}();
function o(t, e) {
return t < e ? -1 : t > e ? 1 : 0
}
},
"o+vr": function(t, e, n) {
"use strict";
var i = n("QaCB");
function r(t, e, n) {
var r, u, s, c;
e = e || 1;
for (var l = 0; l < t[0].length; l++) {
var h = t[0][l];
(!l || h[0] < r) && (r = h[0]), (!l || h[1] < u) && (u = h[1]), (!l || h[0] > s) && (s = h[0]), (!l || h[1] > c) && (c = h[1])
}
var p = s - r,
f = c - u,
d = Math.min(p, f),
g = d / 2;
if (0 === d) {
var v = [r, u];
return v.distance = 0, v
}
for (var m = new i(void 0, o), y = r; y < s; y += d)
for (var b = u; b < c; b += d) m.push(new a(y + g, b + g, g, t));
var P = function(t) {
for (var e = 0, n = 0, i = 0, r = t[0], o = 0, u = r.length, s = u - 1; o < u; s = o++) {
var c = r[o],
l = r[s],
h = c[0] * l[1] - l[0] * c[1];
n += (c[0] + l[0]) * h, i += (c[1] + l[1]) * h, e += 3 * h
}
return 0 === e ? new a(r[0][0], r[0][1], 0, t) : new a(n / e, i / e, 0, t)
}(t),
S = new a(r + p / 2, u + f / 2, 0, t);
S.d > P.d && (P = S);
for (var _ = m.length; m.length;) {
var M = m.pop();
M.d > P.d && (P = M, n && console.log("found best %d after %d probes", Math.round(1e4 * M.d) / 1e4, _)), M.max - P.d <= e || (g = M.h / 2, m.push(new a(M.x - g, M.y - g, g, t)), m.push(new a(M.x + g, M.y - g, g, t)), m.push(new a(M.x - g, M.y + g, g, t)), m.push(new a(M.x + g, M.y + g, g, t)), _ += 4)
}
n && (console.log("num probes: " + _), console.log("best distance: " + P.d));
var x = [P.x, P.y];
return x.distance = P.d, x
}
function o(t, e) {
return e.max - t.max
}
function a(t, e, n, i) {
this.x = t, this.y = e, this.h = n, this.d = function(t, e, n) {
for (var i = !1, r = 1 / 0, o = 0; o < n.length; o++)
for (var a = n[o], s = 0, c = a.length, l = c - 1; s < c; l = s++) {
var h = a[s],
p = a[l];
h[1] > e != p[1] > e && t < (p[0] - h[0]) * (e - h[1]) / (p[1] - h[1]) + h[0] && (i = !i), r = Math.min(r, u(t, e, h, p))
}
return 0 === r ? 0 : (i ? 1 : -1) * Math.sqrt(r)
}(t, e, i), this.max = this.d + this.h * Math.SQRT2
}
function u(t, e, n, i) {
var r = n[0],
o = n[1],
a = i[0] - r,
u = i[1] - o;
if (0 !== a || 0 !== u) {
var s = ((t - r) * a + (e - o) * u) / (a * a + u * u);
s > 1 ? (r = i[0], o = i[1]) : s > 0 && (r += a * s, o += u * s)
}
return (a = t - r) * a + (u = e - o) * u
}
i.default && (i = i.default), t.exports = r, t.exports.default = r
}
}, ["QJ7E"]);