text: ﻿// https://d3js.org/d3-shape/ Version 1.0.3. Copyright 2016 Mike Bostock.
  !function (t, i) { "object" == typeof exports && "undefined" != typeof module ? i(exports, require("d3-path")) : "function" == typeof define && define.amd ? define(["exports", "d3-path"], i) : i(t.d3 = t.d3 || {}, t.d3) }(this, function (t, i) { "use strict"; function n(t) { return function () { return t } } function e(t) { return t.innerRadius } function s(t) { return t.outerRadius } function h(t) { return t.startAngle } function o(t) { return t.endAngle } function _(t) { return t && t.padAngle } function a(t) { return t >= 1 ? bt : t <= -1 ? -bt : Math.asin(t) } function r(t, i, n, e, s, h, o, _) { var a = n - t, r = e - i, c = o - s, l = _ - h, u = (c * (i - h) - l * (t - s)) / (l * a - c * r); return [t + u * a, i + u * r] } function c(t, i, n, e, s, h, o) { var _ = t - n, a = i - e, r = (o ? h : -h) / Math.sqrt(_ * _ + a * a), c = r * a, l = -r * _, u = t + c, f = i + l, x = n + c, y = e + l, p = (u + x) / 2, v = (f + y) / 2, d = x - u, T = y - f, M = d * d + T * T, g = s - h, b = u * y - x * f, w = (T < 0 ? -1 : 1) * Math.sqrt(Math.max(0, g * g * M - b * b)), m = (b * T - d * w) / M, k = (-b * d - T * w) / M, N = (b * T + d * w) / M, S = (-b * d + T * w) / M, E = m - p, A = k - v, P = N - p, q = S - v; return E * E + A * A > P * P + q * q && (m = N, k = S), { cx: m, cy: k, x01: -c, y01: -l, x11: m * (s / g - 1), y11: k * (s / g - 1) } } function l() { function t() { var t, n, e = +l.apply(this, arguments), s = +u.apply(this, arguments), h = y.apply(this, arguments) - bt, o = p.apply(this, arguments) - bt, _ = Math.abs(o - h), T = o > h; if (d || (d = t = i.path()), s < e && (n = s, s = e, e = n), s > Mt) if (_ > wt - Mt) d.moveTo(s * Math.cos(h), s * Math.sin(h)), d.arc(0, 0, s, h, o, !T), e > Mt && (d.moveTo(e * Math.cos(o), e * Math.sin(o)), d.arc(0, 0, e, o, h, T)); else { var M, g, b = h, w = o, m = h, k = o, N = _, S = _, E = v.apply(this, arguments) / 2, A = E > Mt && (x ? +x.apply(this, arguments) : Math.sqrt(e * e + s * s)), P = Math.min(Math.abs(s - e) / 2, +f.apply(this, arguments)), q = P, C = P; if (A > Mt) { var O = a(A / e * Math.sin(E)), R = a(A / s * Math.sin(E)); (N -= 2 * O) > Mt ? (O *= T ? 1 : -1, m += O, k -= O) : (N = 0, m = k = (h + o) / 2), (S -= 2 * R) > Mt ? (R *= T ? 1 : -1, b += R, w -= R) : (S = 0, b = w = (h + o) / 2) } var z = s * Math.cos(b), X = s * Math.sin(b), Y = e * Math.cos(k), B = e * Math.sin(k); if (P > Mt) { var j = s * Math.cos(w), I = s * Math.sin(w), L = e * Math.cos(m), D = e * Math.sin(m); if (_ < gt) { var W = N > Mt ? r(z, X, L, D, j, I, Y, B) : [Y, B], V = z - W[0], F = X - W[1], G = j - W[0], H = I - W[1], J = 1 / Math.sin(Math.acos((V * G + F * H) / (Math.sqrt(V * V + F * F) * Math.sqrt(G * G + H * H))) / 2), K = Math.sqrt(W[0] * W[0] + W[1] * W[1]); q = Math.min(P, (e - K) / (J - 1)), C = Math.min(P, (s - K) / (J + 1)) } } S > Mt ? C > Mt ? (M = c(L, D, z, X, s, C, T), g = c(j, I, Y, B, s, C, T), d.moveTo(M.cx + M.x01, M.cy + M.y01), C < P ? d.arc(M.cx, M.cy, C, Math.atan2(M.y01, M.x01), Math.atan2(g.y01, g.x01), !T) : (d.arc(M.cx, M.cy, C, Math.atan2(M.y01, M.x01), Math.atan2(M.y11, M.x11), !T), d.arc(0, 0, s, Math.atan2(M.cy + M.y11, M.cx + M.x11), Math.atan2(g.cy + g.y11, g.cx + g.x11), !T), d.arc(g.cx, g.cy, C, Math.atan2(g.y11, g.x11), Math.atan2(g.y01, g.x01), !T))) : (d.moveTo(z, X), d.arc(0, 0, s, b, w, !T)) : d.moveTo(z, X), e > Mt && N > Mt ? q > Mt ? (M = c(Y, B, j, I, e, -q, T), g = c(z, X, L, D, e, -q, T), d.lineTo(M.cx + M.x01, M.cy + M.y01), q < P ? d.arc(M.cx, M.cy, q, Math.atan2(M.y01, M.x01), Math.atan2(g.y01, g.x01), !T) : (d.arc(M.cx, M.cy, q, Math.atan2(M.y01, M.x01), Math.atan2(M.y11, M.x11), !T), d.arc(0, 0, e, Math.atan2(M.cy + M.y11, M.cx + M.x11), Math.atan2(g.cy + g.y11, g.cx + g.x11), T), d.arc(g.cx, g.cy, q, Math.atan2(g.y11, g.x11), Math.atan2(g.y01, g.x01), !T))) : d.arc(0, 0, e, k, m, T) : d.lineTo(Y, B) } else d.moveTo(0, 0); if (d.closePath(), t) return d = null, t + "" || null } var l = e, u = s, f = n(0), x = null, y = h, p = o, v = _, d = null; return t.centroid = function () { var t = (+l.apply(this, arguments) + +u.apply(this, arguments)) / 2, i = (+y.apply(this, arguments) + +p.apply(this, arguments)) / 2 - gt / 2; return [Math.cos(i) * t, Math.sin(i) * t] }, t.innerRadius = function (i) { return arguments.length ? (l = "function" == typeof i ? i : n(+i), t) : l }, t.outerRadius = function (i) { return arguments.length ? (u = "function" == typeof i ? i : n(+i), t) : u }, t.cornerRadius = function (i) { return arguments.length ? (f = "function" == typeof i ? i : n(+i), t) : f }, t.padRadius = function (i) { return arguments.length ? (x = null == i ? null : "function" == typeof i ? i : n(+i), t) : x }, t.startAngle = function (i) { return arguments.length ? (y = "function" == typeof i ? i : n(+i), t) : y }, t.endAngle = function (i) { return arguments.length ? (p = "function" == typeof i ? i : n(+i), t) : p }, t.padAngle = function (i) { return arguments.length ? (v = "function" == typeof i ? i : n(+i), t) : v }, t.context = function (i) { return arguments.length ? (d = null == i ? null : i, t) : d }, t } function u(t) { this._context = t } function f(t) { return new u(t) } function x(t) { return t[0] } function y(t) { return t[1] } function p() { function t(t) { var n, r, c, l = t.length, u = !1; for (null == o && (a = _(c = i.path())), n = 0; n <= l; ++n) !(n < l && h(r = t[n], n, t)) === u && ((u = !u) ? a.lineStart() : a.lineEnd()), u && a.point(+e(r, n, t), +s(r, n, t)); if (c) return a = null, c + "" || null } var e = x, s = y, h = n(!0), o = null, _ = f, a = null; return t.x = function (i) { return arguments.length ? (e = "function" == typeof i ? i : n(+i), t) : e }, t.y = function (i) { return arguments.length ? (s = "function" == typeof i ? i : n(+i), t) : s }, t.defined = function (i) { return arguments.length ? (h = "function" == typeof i ? i : n(!!i), t) : h }, t.curve = function (i) { return arguments.length ? (_ = i, null != o && (a = _(o)), t) : _ }, t.context = function (i) { return arguments.length ? (null == i ? o = a = null : a = _(o = i), t) : o }, t } function v() { function t(t) { var n, e, u, f, x, y = t.length, p = !1, v = new Array(y), d = new Array(y); for (null == r && (l = c(x = i.path())), n = 0; n <= y; ++n) { if (!(n < y && a(f = t[n], n, t)) === p) if (p = !p) e = n, l.areaStart(), l.lineStart(); else { for (l.lineEnd(), l.lineStart(), u = n - 1; u >= e; --u) l.point(v[u], d[u]); l.lineEnd(), l.areaEnd() } p && (v[n] = +s(f, n, t), d[n] = +o(f, n, t), l.point(h ? +h(f, n, t) : v[n], _ ? +_(f, n, t) : d[n])) } if (x) return l = null, x + "" || null } function e() { return p().defined(a).curve(c).context(r) } var s = x, h = null, o = n(0), _ = y, a = n(!0), r = null, c = f, l = null; return t.x = function (i) { return arguments.length ? (s = "function" == typeof i ? i : n(+i), h = null, t) : s }, t.x0 = function (i) { return arguments.length ? (s = "function" == typeof i ? i : n(+i), t) : s }, t.x1 = function (i) { return arguments.length ? (h = null == i ? null : "function" == typeof i ? i : n(+i), t) : h }, t.y = function (i) { return arguments.length ? (o = "function" == typeof i ? i : n(+i), _ = null, t) : o }, t.y0 = function (i) { return arguments.length ? (o = "function" == typeof i ? i : n(+i), t) : o }, t.y1 = function (i) { return arguments.length ? (_ = null == i ? null : "function" == typeof i ? i : n(+i), t) : _ }, t.lineX0 = t.lineY0 = function () { return e().x(s).y(o) }, t.lineY1 = function () { return e().x(s).y(_) }, t.lineX1 = function () { return e().x(h).y(o) }, t.defined = function (i) { return arguments.length ? (a = "function" == typeof i ? i : n(!!i), t) : a }, t.curve = function (i) { return arguments.length ? (c = i, null != r && (l = c(r)), t) : c }, t.context = function (i) { return arguments.length ? (null == i ? r = l = null : l = c(r = i), t) : r }, t } function d(t, i) { return i < t ? -1 : i > t ? 1 : i >= t ? 0 : NaN } function T(t) { return t } function M() { function t(t) { var n, a, r, c, l, u = t.length, f = 0, x = new Array(u), y = new Array(u), p = +h.apply(this, arguments), v = Math.min(wt, Math.max(-wt, o.apply(this, arguments) - p)), d = Math.min(Math.abs(v) / u, _.apply(this, arguments)), T = d * (v < 0 ? -1 : 1); for (n = 0; n < u; ++n) (l = y[x[n] = n] = +i(t[n], n, t)) > 0 && (f += l); for (null != e ? x.sort(function (t, i) { return e(y[t], y[i]) }) : null != s && x.sort(function (i, n) { return s(t[i], t[n]) }), n = 0, r = f ? (v - u * T) / f : 0; n < u; ++n, p = c) a = x[n], l = y[a], c = p + (l > 0 ? l * r : 0) + T, y[a] = { data: t[a], index: n, value: l, startAngle: p, endAngle: c, padAngle: d }; return y } var i = T, e = d, s = null, h = n(0), o = n(wt), _ = n(0); return t.value = function (e) { return arguments.length ? (i = "function" == typeof e ? e : n(+e), t) : i }, t.sortValues = function (i) { return arguments.length ? (e = i, s = null, t) : e }, t.sort = function (i) { return arguments.length ? (s = i, e = null, t) : s }, t.startAngle = function (i) { return arguments.length ? (h = "function" == typeof i ? i : n(+i), t) : h }, t.endAngle = function (i) { return arguments.length ? (o = "function" == typeof i ? i : n(+i), t) : o }, t.padAngle = function (i) { return arguments.length ? (_ = "function" == typeof i ? i : n(+i), t) : _ }, t } function g(t) { this._curve = t } function b(t) { function i(i) { return new g(t(i)) } return i._curve = t, i } function w(t) { var i = t.curve; return t.angle = t.x, delete t.x, t.radius = t.y, delete t.y, t.curve = function (t) { return arguments.length ? i(b(t)) : i()._curve }, t } function m() { return w(p().curve(mt)) } function k() { var t = v().curve(mt), i = t.curve, n = t.lineX0, e = t.lineX1, s = t.lineY0, h = t.lineY1; return t.angle = t.x, delete t.x, t.startAngle = t.x0, delete t.x0, t.endAngle = t.x1, delete t.x1, t.radius = t.y, delete t.y, t.innerRadius = t.y0, delete t.y0, t.outerRadius = t.y1, delete t.y1, t.lineStartAngle = function () { return w(n()) }, delete t.lineX0, t.lineEndAngle = function () { return w(e()) }, delete t.lineX1, t.lineInnerRadius = function () { return w(s()) }, delete t.lineY0, t.lineOuterRadius = function () { return w(h()) }, delete t.lineY1, t.curve = function (t) { return arguments.length ? i(b(t)) : i()._curve }, t } function N() { function t() { var t; if (h || (h = t = i.path()), e.apply(this, arguments).draw(h, +s.apply(this, arguments)), t) return h = null, t + "" || null } var e = n(kt), s = n(64), h = null; return t.type = function (i) { return arguments.length ? (e = "function" == typeof i ? i : n(i), t) : e }, t.size = function (i) { return arguments.length ? (s = "function" == typeof i ? i : n(+i), t) : s }, t.context = function (i) { return arguments.length ? (h = null == i ? null : i, t) : h }, t } function S() { } function E(t, i, n) { t._context.bezierCurveTo((2 * t._x0 + t._x1) / 3, (2 * t._y0 + t._y1) / 3, (t._x0 + 2 * t._x1) / 3, (t._y0 + 2 * t._y1) / 3, (t._x0 + 4 * t._x1 + i) / 6, (t._y0 + 4 * t._y1 + n) / 6) } function A(t) { this._context = t } function P(t) { return new A(t) } function q(t) { this._context = t } function C(t) { return new q(t) } function O(t) { this._context = t } function R(t) { return new O(t) } function z(t, i) { this._basis = new A(t), this._beta = i } function X(t, i, n) { t._context.bezierCurveTo(t._x1 + t._k * (t._x2 - t._x0), t._y1 + t._k * (t._y2 - t._y0), t._x2 + t._k * (t._x1 - i), t._y2 + t._k * (t._y1 - n), t._x2, t._y2) } function Y(t, i) { this._context = t, this._k = (1 - i) / 6 } function B(t, i) { this._context = t, this._k = (1 - i) / 6 } function j(t, i) { this._context = t, this._k = (1 - i) / 6 } function I(t, i, n) { var e = t._x1, s = t._y1, h = t._x2, o = t._y2; if (t._l01_a > Mt) { var _ = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a, a = 3 * t._l01_a * (t._l01_a + t._l12_a); e = (e * _ - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / a, s = (s * _ - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / a } if (t._l23_a > Mt) { var r = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a, c = 3 * t._l23_a * (t._l23_a + t._l12_a); h = (h * r + t._x1 * t._l23_2a - i * t._l12_2a) / c, o = (o * r + t._y1 * t._l23_2a - n * t._l12_2a) / c } t._context.bezierCurveTo(e, s, h, o, t._x2, t._y2) } function L(t, i) { this._context = t, this._alpha = i } function D(t, i) { this._context = t, this._alpha = i } function W(t, i) { this._context = t, this._alpha = i } function V(t) { this._context = t } function F(t) { return new V(t) } function G(t) { return t < 0 ? -1 : 1 } function H(t, i, n) { var e = t._x1 - t._x0, s = i - t._x1, h = (t._y1 - t._y0) / (e || s < 0 && -0), o = (n - t._y1) / (s || e < 0 && -0), _ = (h * s + o * e) / (e + s); return (G(h) + G(o)) * Math.min(Math.abs(h), Math.abs(o), .5 * Math.abs(_)) || 0 } function J(t, i) { var n = t._x1 - t._x0; return n ? (3 * (t._y1 - t._y0) / n - i) / 2 : i } function K(t, i, n) { var e = t._x0, s = t._y0, h = t._x1, o = t._y1, _ = (h - e) / 3; t._context.bezierCurveTo(e + _, s + _ * i, h - _, o - _ * n, h, o) } function Q(t) { this._context = t } function U(t) { this._context = new Z(t) } function Z(t) { this._context = t } function $(t) { return new Q(t) } function tt(t) { return new U(t) } function it(t) { this._context = t } function nt(t) { var i, n, e = t.length - 1, s = new Array(e), h = new Array(e), o = new Array(e); for (s[0] = 0, h[0] = 2, o[0] = t[0] + 2 * t[1], i = 1; i < e - 1; ++i) s[i] = 1, h[i] = 4, o[i] = 4 * t[i] + 2 * t[i + 1]; for (s[e - 1] = 2, h[e - 1] = 7, o[e - 1] = 8 * t[e - 1] + t[e], i = 1; i < e; ++i) n = s[i] / h[i - 1], h[i] -= n, o[i] -= n * o[i - 1]; for (s[e - 1] = o[e - 1] / h[e - 1], i = e - 2; i >= 0; --i) s[i] = (o[i] - s[i + 1]) / h[i]; for (h[e - 1] = (t[e] + s[e - 1]) / 2, i = 0; i < e - 1; ++i) h[i] = 2 * t[i + 1] - s[i + 1]; return [s, h] } function et(t) { return new it(t) } function st(t, i) { this._context = t, this._t = i } function ht(t) { return new st(t, .5) } function ot(t) { return new st(t, 0) } function _t(t) { return new st(t, 1) } function at(t, i) { if ((e = t.length) > 1) for (var n, e, s = 1, h = t[i[0]], o = h.length; s < e; ++s) { n = h, h = t[i[s]]; for (var _ = 0; _ < o; ++_) h[_][1] += h[_][0] = isNaN(n[_][1]) ? n[_][0] : n[_][1] } } function rt(t) { for (var i = t.length, n = new Array(i) ; --i >= 0;) n[i] = i; return n } function ct(t, i) { return t[i] } function lt() { function t(t) { var n, o, _ = i.apply(this, arguments), a = t.length, r = _.length, c = new Array(r); for (n = 0; n < r; ++n) { for (var l, u = _[n], f = c[n] = new Array(a), x = 0; x < a; ++x) f[x] = l = [0, +h(t[x], u, x, t)], l.data = t[x]; f.key = u } for (n = 0, o = e(c) ; n < r; ++n) c[o[n]].index = n; return s(c, o), c } var i = n([]), e = rt, s = at, h = ct; return t.keys = function (e) { return arguments.length ? (i = "function" == typeof e ? e : n(Ut.call(e)), t) : i }, t.value = function (i) { return arguments.length ? (h = "function" == typeof i ? i : n(+i), t) : h }, t.order = function (i) { return arguments.length ? (e = null == i ? rt : "function" == typeof i ? i : n(Ut.call(i)), t) : e }, t.offset = function (i) { return arguments.length ? (s = null == i ? at : i, t) : s }, t } function ut(t, i) { if ((e = t.length) > 0) { for (var n, e, s, h = 0, o = t[0].length; h < o; ++h) { for (s = n = 0; n < e; ++n) s += t[n][h][1] || 0; if (s) for (n = 0; n < e; ++n) t[n][h][1] /= s } at(t, i) } } function ft(t, i) { if ((n = t.length) > 0) { for (var n, e = 0, s = t[i[0]], h = s.length; e < h; ++e) { for (var o = 0, _ = 0; o < n; ++o) _ += t[o][e][1] || 0; s[e][1] += s[e][0] = -_ / 2 } at(t, i) } } function xt(t, i) { if ((s = t.length) > 0 && (e = (n = t[i[0]]).length) > 0) { for (var n, e, s, h = 0, o = 1; o < e; ++o) { for (var _ = 0, a = 0, r = 0; _ < s; ++_) { for (var c = t[i[_]], l = c[o][1] || 0, u = c[o - 1][1] || 0, f = (l - u) / 2, x = 0; x < _; ++x) { var y = t[i[x]], p = y[o][1] || 0, v = y[o - 1][1] || 0; f += p - v } a += l, r += f * l } n[o - 1][1] += n[o - 1][0] = h, a && (h -= r / a) } n[o - 1][1] += n[o - 1][0] = h, at(t, i) } } function yt(t) { var i = t.map(pt); return rt(t).sort(function (t, n) { return i[t] - i[n] }) } function pt(t) { for (var i, n = 0, e = -1, s = t.length; ++e < s;) (i = +t[e][1]) && (n += i); return n } function vt(t) { return yt(t).reverse() } function dt(t) { var i, n, e = t.length, s = t.map(pt), h = rt(t).sort(function (t, i) { return s[i] - s[t] }), o = 0, _ = 0, a = [], r = []; for (i = 0; i < e; ++i) n = h[i], o < _ ? (o += s[n], a.push(n)) : (_ += s[n], r.push(n)); return r.reverse().concat(a) } function Tt(t) { return rt(t).reverse() } var Mt = 1e-12, gt = Math.PI, bt = gt / 2, wt = 2 * gt; u.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, i) : this._context.moveTo(t, i); break; case 1: this._point = 2; default: this._context.lineTo(t, i) } } }; var mt = b(f); g.prototype = { areaStart: function () { this._curve.areaStart() }, areaEnd: function () { this._curve.areaEnd() }, lineStart: function () { this._curve.lineStart() }, lineEnd: function () { this._curve.lineEnd() }, point: function (t, i) { this._curve.point(i * Math.sin(t), i * -Math.cos(t)) } }; var kt = { draw: function (t, i) { var n = Math.sqrt(i / gt); t.moveTo(n, 0), t.arc(0, 0, n, 0, wt) } }, Nt = { draw: function (t, i) { var n = Math.sqrt(i / 5) / 2; t.moveTo(-3 * n, -n), t.lineTo(-n, -n), t.lineTo(-n, -3 * n), t.lineTo(n, -3 * n), t.lineTo(n, -n), t.lineTo(3 * n, -n), t.lineTo(3 * n, n), t.lineTo(n, n), t.lineTo(n, 3 * n), t.lineTo(-n, 3 * n), t.lineTo(-n, n), t.lineTo(-3 * n, n), t.closePath() } }, St = Math.sqrt(1 / 3), Et = 2 * St, At = { draw: function (t, i) { var n = Math.sqrt(i / Et), e = n * St; t.moveTo(0, -n), t.lineTo(e, 0), t.lineTo(0, n), t.lineTo(-e, 0), t.closePath() } }, Pt = .8908130915292852, qt = Math.sin(gt / 10) / Math.sin(7 * gt / 10), Ct = Math.sin(wt / 10) * qt, Ot = -Math.cos(wt / 10) * qt, Rt = { draw: function (t, i) { var n = Math.sqrt(i * Pt), e = Ct * n, s = Ot * n; t.moveTo(0, -n), t.lineTo(e, s); for (var h = 1; h < 5; ++h) { var o = wt * h / 5, _ = Math.cos(o), a = Math.sin(o); t.lineTo(a * n, -_ * n), t.lineTo(_ * e - a * s, a * e + _ * s) } t.closePath() } }, zt = { draw: function (t, i) { var n = Math.sqrt(i), e = -n / 2; t.rect(e, e, n, n) } }, Xt = Math.sqrt(3), Yt = { draw: function (t, i) { var n = -Math.sqrt(i / (3 * Xt)); t.moveTo(0, 2 * n), t.lineTo(-Xt * n, -n), t.lineTo(Xt * n, -n), t.closePath() } }, Bt = -.5, jt = Math.sqrt(3) / 2, It = 1 / Math.sqrt(12), Lt = 3 * (It / 2 + 1), Dt = { draw: function (t, i) { var n = Math.sqrt(i / Lt), e = n / 2, s = n * It, h = e, o = n * It + n, _ = -h, a = o; t.moveTo(e, s), t.lineTo(h, o), t.lineTo(_, a), t.lineTo(Bt * e - jt * s, jt * e + Bt * s), t.lineTo(Bt * h - jt * o, jt * h + Bt * o), t.lineTo(Bt * _ - jt * a, jt * _ + Bt * a), t.lineTo(Bt * e + jt * s, Bt * s - jt * e), t.lineTo(Bt * h + jt * o, Bt * o - jt * h), t.lineTo(Bt * _ + jt * a, Bt * a - jt * _), t.closePath() } }, Wt = [kt, Nt, At, zt, Rt, Yt, Dt]; A.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 3: E(this, this._x1, this._y1); case 2: this._context.lineTo(this._x1, this._y1) } (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, i) : this._context.moveTo(t, i); break; case 1: this._point = 2; break; case 2: this._point = 3, this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); default: E(this, t, i) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = i } }, q.prototype = { areaStart: S, areaEnd: S, lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this._context.moveTo(this._x2, this._y2), this._context.closePath(); break; case 2: this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3), this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3), this._context.closePath(); break; case 3: this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4) } }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1, this._x2 = t, this._y2 = i; break; case 1: this._point = 2, this._x3 = t, this._y3 = i; break; case 2: this._point = 3, this._x4 = t, this._y4 = i, this._context.moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + i) / 6); break; default: E(this, t, i) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = i } }, O.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = NaN, this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3; var n = (this._x0 + 4 * this._x1 + t) / 6, e = (this._y0 + 4 * this._y1 + i) / 6; this._line ? this._context.lineTo(n, e) : this._context.moveTo(n, e); break; case 3: this._point = 4; default: E(this, t, i) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = i } }, z.prototype = { lineStart: function () { this._x = [], this._y = [], this._basis.lineStart() }, lineEnd: function () { var t = this._x, i = this._y, n = t.length - 1; if (n > 0) for (var e, s = t[0], h = i[0], o = t[n] - s, _ = i[n] - h, a = -1; ++a <= n;) e = a / n, this._basis.point(this._beta * t[a] + (1 - this._beta) * (s + e * o), this._beta * i[a] + (1 - this._beta) * (h + e * _)); this._x = this._y = null, this._basis.lineEnd() }, point: function (t, i) { this._x.push(+t), this._y.push(+i) } }; var Vt = function t(i) { function n(t) { return 1 === i ? new A(t) : new z(t, i) } return n.beta = function (i) { return t(+i) }, n }(.85); Y.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: X(this, this._x1, this._y1) } (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, i) : this._context.moveTo(t, i); break; case 1: this._point = 2, this._x1 = t, this._y1 = i; break; case 2: this._point = 3; default: X(this, t, i) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = i } }; var Ft = function t(i) { function n(t) { return new Y(t, i) } return n.tension = function (i) { return t(+i) }, n }(0); B.prototype = { areaStart: S, areaEnd: S, lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this._context.moveTo(this._x3, this._y3), this._context.closePath(); break; case 2: this._context.lineTo(this._x3, this._y3), this._context.closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5) } }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1, this._x3 = t, this._y3 = i; break; case 1: this._point = 2, this._context.moveTo(this._x4 = t, this._y4 = i); break; case 2: this._point = 3, this._x5 = t, this._y5 = i; break; default: X(this, t, i) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = i } }; var Gt = function t(i) { function n(t) { return new B(t, i) } return n.tension = function (i) { return t(+i) }, n }(0); j.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: X(this, t, i) } this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = i } }; var Ht = function t(i) { function n(t) { return new j(t, i) } return n.tension = function (i) { return t(+i) }, n }(0); L.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this._context.lineTo(this._x2, this._y2); break; case 3: this.point(this._x2, this._y2) } (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { if (t = +t, i = +i, this._point) { var n = this._x2 - t, e = this._y2 - i; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + e * e, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, i) : this._context.moveTo(t, i); break; case 1: this._point = 2; break; case 2: this._point = 3; default: I(this, t, i) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = i } }; var Jt = function t(i) { function n(t) { return i ? new L(t, i) : new Y(t, 0) } return n.alpha = function (i) { return t(+i) }, n }(.5); D.prototype = { areaStart: S, areaEnd: S, lineStart: function () { this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { switch (this._point) { case 1: this._context.moveTo(this._x3, this._y3), this._context.closePath(); break; case 2: this._context.lineTo(this._x3, this._y3), this._context.closePath(); break; case 3: this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5) } }, point: function (t, i) { if (t = +t, i = +i, this._point) { var n = this._x2 - t, e = this._y2 - i; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + e * e, this._alpha)) } switch (this._point) { case 0: this._point = 1, this._x3 = t, this._y3 = i; break; case 1: this._point = 2, this._context.moveTo(this._x4 = t, this._y4 = i); break; case 2: this._point = 3, this._x5 = t, this._y5 = i; break; default: I(this, t, i) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = i } }; var Kt = function t(i) { function n(t) { return i ? new D(t, i) : new B(t, 0) } return n.alpha = function (i) { return t(+i) }, n }(.5); W.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN, this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0 }, lineEnd: function () { (this._line || 0 !== this._line && 3 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { if (t = +t, i = +i, this._point) { var n = this._x2 - t, e = this._y2 - i; this._l23_a = Math.sqrt(this._l23_2a = Math.pow(n * n + e * e, this._alpha)) } switch (this._point) { case 0: this._point = 1; break; case 1: this._point = 2; break; case 2: this._point = 3, this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; case 3: this._point = 4; default: I(this, t, i) } this._l01_a = this._l12_a, this._l12_a = this._l23_a, this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a, this._x0 = this._x1, this._x1 = this._x2, this._x2 = t, this._y0 = this._y1, this._y1 = this._y2, this._y2 = i } }; var Qt = function t(i) { function n(t) { return i ? new W(t, i) : new j(t, 0) } return n.alpha = function (i) { return t(+i) }, n }(.5); V.prototype = { areaStart: S, areaEnd: S, lineStart: function () { this._point = 0 }, lineEnd: function () { this._point && this._context.closePath() }, point: function (t, i) { t = +t, i = +i, this._point ? this._context.lineTo(t, i) : (this._point = 1, this._context.moveTo(t, i)) } }, Q.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN, this._point = 0 }, lineEnd: function () { switch (this._point) { case 2: this._context.lineTo(this._x1, this._y1); break; case 3: K(this, this._t0, J(this, this._t0)) } (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line = 1 - this._line }, point: function (t, i) { var n = NaN; if (t = +t, i = +i, t !== this._x1 || i !== this._y1) { switch (this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, i) : this._context.moveTo(t, i); break; case 1: this._point = 2; break; case 2: this._point = 3, K(this, J(this, n = H(this, t, i)), n); break; default: K(this, this._t0, n = H(this, t, i)) } this._x0 = this._x1, this._x1 = t, this._y0 = this._y1, this._y1 = i, this._t0 = n } } }, (U.prototype = Object.create(Q.prototype)).point = function (t, i) { Q.prototype.point.call(this, i, t) }, Z.prototype = { moveTo: function (t, i) { this._context.moveTo(i, t) }, closePath: function () { this._context.closePath() }, lineTo: function (t, i) { this._context.lineTo(i, t) }, bezierCurveTo: function (t, i, n, e, s, h) { this._context.bezierCurveTo(i, t, e, n, h, s) } }, it.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x = [], this._y = [] }, lineEnd: function () { var t = this._x, i = this._y, n = t.length; if (n) if (this._line ? this._context.lineTo(t[0], i[0]) : this._context.moveTo(t[0], i[0]), 2 === n) this._context.lineTo(t[1], i[1]); else for (var e = nt(t), s = nt(i), h = 0, o = 1; o < n; ++h, ++o) this._context.bezierCurveTo(e[0][h], s[0][h], e[1][h], s[1][h], t[o], i[o]); (this._line || 0 !== this._line && 1 === n) && this._context.closePath(), this._line = 1 - this._line, this._x = this._y = null }, point: function (t, i) { this._x.push(+t), this._y.push(+i) } }, st.prototype = { areaStart: function () { this._line = 0 }, areaEnd: function () { this._line = NaN }, lineStart: function () { this._x = this._y = NaN, this._point = 0 }, lineEnd: function () { 0 < this._t && this._t < 1 && 2 === this._point && this._context.lineTo(this._x, this._y), (this._line || 0 !== this._line && 1 === this._point) && this._context.closePath(), this._line >= 0 && (this._t = 1 - this._t, this._line = 1 - this._line) }, point: function (t, i) { switch (t = +t, i = +i, this._point) { case 0: this._point = 1, this._line ? this._context.lineTo(t, i) : this._context.moveTo(t, i); break; case 1: this._point = 2; default: if (this._t <= 0) this._context.lineTo(this._x, i), this._context.lineTo(t, i); else { var n = this._x * (1 - this._t) + t * this._t; this._context.lineTo(n, this._y), this._context.lineTo(n, i) } } this._x = t, this._y = i } }; var Ut = Array.prototype.slice; t.arc = l, t.area = v, t.line = p, t.pie = M, t.radialArea = k, t.radialLine = m, t.symbol = N, t.symbols = Wt, t.symbolCircle = kt, t.symbolCross = Nt, t.symbolDiamond = At, t.symbolSquare = zt, t.symbolStar = Rt, t.symbolTriangle = Yt, t.symbolWye = Dt, t.curveBasisClosed = C, t.curveBasisOpen = R, t.curveBasis = P, t.curveBundle = Vt, t.curveCardinalClosed = Gt, t.curveCardinalOpen = Ht, t.curveCardinal = Ft, t.curveCatmullRomClosed = Kt, t.curveCatmullRomOpen = Qt, t.curveCatmullRom = Jt, t.curveLinearClosed = F, t.curveLinear = f, t.curveMonotoneX = $, t.curveMonotoneY = tt, t.curveNatural = et, t.curveStep = ht, t.curveStepAfter = _t, t.curveStepBefore = ot, t.stack = lt, t.stackOffsetExpand = ut, t.stackOffsetNone = at, t.stackOffsetSilhouette = ft, t.stackOffsetWiggle = xt, t.stackOrderAscending = yt, t.stackOrderDescending = vt, t.stackOrderInsideOut = dt, t.stackOrderNone = rt, t.stackOrderReverse = Tt, Object.defineProperty(t, "__esModule", { value: !0 }) });