UNPKG

offices-viewer

Version:

## Current Renderable File Types

7,434 lines 236 kB
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
!function () {
  function n(n) {
    return n && (n.ownerDocument || n.document || n).documentElement;
  }
  function t(n) {
    return n && (n.ownerDocument && n.ownerDocument.defaultView || n.document && n || n.defaultView);
  }
  function e(n, t) {
    return t > n ? -1 : n > t ? 1 : n >= t ? 0 : NaN;
  }
  function r(n) {
    return null === n ? NaN : +n;
  }
  function u(n) {
    return !isNaN(n);
  }
  function i(n) {
    return {
      left: function left(t, e, r, u) {
        for (arguments.length < 3 && (r = 0), arguments.length < 4 && (u = t.length); u > r;) {
          var i = r + u >>> 1;
          n(t[i], e) < 0 ? r = i + 1 : u = i;
        }
        return r;
      },
      right: function right(t, e, r, u) {
        for (arguments.length < 3 && (r = 0), arguments.length < 4 && (u = t.length); u > r;) {
          var i = r + u >>> 1;
          n(t[i], e) > 0 ? u = i : r = i + 1;
        }
        return r;
      }
    };
  }
  function a(n) {
    return n.length;
  }
  function o(n) {
    for (var t = 1; n * t % 1;) t *= 10;
    return t;
  }
  function l(n, t) {
    for (var e in t) Object.defineProperty(n.prototype, e, {
      value: t[e],
      enumerable: !1
    });
  }
  function c() {
    this._ = Object.create(null);
  }
  function s(n) {
    return (n += "") === xa || n[0] === ba ? ba + n : n;
  }
  function f(n) {
    return (n += "")[0] === ba ? n.slice(1) : n;
  }
  function h(n) {
    return s(n) in this._;
  }
  function g(n) {
    return (n = s(n)) in this._ && delete this._[n];
  }
  function p() {
    var n = [];
    for (var t in this._) n.push(f(t));
    return n;
  }
  function v() {
    var n = 0;
    for (var t in this._) ++n;
    return n;
  }
  function d() {
    for (var n in this._) return !1;
    return !0;
  }
  function m() {
    this._ = Object.create(null);
  }
  function y(n) {
    return n;
  }
  function M(n, t, e) {
    return function () {
      var r = e.apply(t, arguments);
      return r === t ? n : r;
    };
  }
  function x(n, t) {
    if (t in n) return t;
    t = t.charAt(0).toUpperCase() + t.slice(1);
    for (var e = 0, r = _a.length; r > e; ++e) {
      var u = _a[e] + t;
      if (u in n) return u;
    }
  }
  function b() {}
  function _() {}
  function w(n) {
    function t() {
      for (var t, r = e, u = -1, i = r.length; ++u < i;) (t = r[u].on) && t.apply(this, arguments);
      return n;
    }
    var e = [],
      r = new c();
    return t.on = function (t, u) {
      var i,
        a = r.get(t);
      return arguments.length < 2 ? a && a.on : (a && (a.on = null, e = e.slice(0, i = e.indexOf(a)).concat(e.slice(i + 1)), r.remove(t)), u && e.push(r.set(t, {
        on: u
      })), n);
    }, t;
  }
  function S() {
    oa.event.preventDefault();
  }
  function k() {
    for (var n, t = oa.event; n = t.sourceEvent;) t = n;
    return t;
  }
  function N(n) {
    for (var t = new _(), e = 0, r = arguments.length; ++e < r;) t[arguments[e]] = w(t);
    return t.of = function (e, r) {
      return function (u) {
        try {
          var i = u.sourceEvent = oa.event;
          u.target = n, oa.event = u, t[u.type].apply(e, r);
        } finally {
          oa.event = i;
        }
      };
    }, t;
  }
  function E(n) {
    return Sa(n, Aa), n;
  }
  function A(n) {
    return "function" == typeof n ? n : function () {
      return ka(n, this);
    };
  }
  function C(n) {
    return "function" == typeof n ? n : function () {
      return Na(n, this);
    };
  }
  function z(n, t) {
    function e() {
      this.removeAttribute(n);
    }
    function r() {
      this.removeAttributeNS(n.space, n.local);
    }
    function u() {
      this.setAttribute(n, t);
    }
    function i() {
      this.setAttributeNS(n.space, n.local, t);
    }
    function a() {
      var e = t.apply(this, arguments);
      null == e ? this.removeAttribute(n) : this.setAttribute(n, e);
    }
    function o() {
      var e = t.apply(this, arguments);
      null == e ? this.removeAttributeNS(n.space, n.local) : this.setAttributeNS(n.space, n.local, e);
    }
    return n = oa.ns.qualify(n), null == t ? n.local ? r : e : "function" == typeof t ? n.local ? o : a : n.local ? i : u;
  }
  function L(n) {
    return n.trim().replace(/\s+/g, " ");
  }
  function q(n) {
    return new RegExp("(?:^|\\s+)" + oa.requote(n) + "(?:\\s+|$)", "g");
  }
  function T(n) {
    return (n + "").trim().split(/^|\s+/);
  }
  function R(n, t) {
    function e() {
      for (var e = -1; ++e < u;) n[e](this, t);
    }
    function r() {
      for (var e = -1, r = t.apply(this, arguments); ++e < u;) n[e](this, r);
    }
    n = T(n).map(D);
    var u = n.length;
    return "function" == typeof t ? r : e;
  }
  function D(n) {
    var t = q(n);
    return function (e, r) {
      if (u = e.classList) return r ? u.add(n) : u.remove(n);
      var u = e.getAttribute("class") || "";
      r ? (t.lastIndex = 0, t.test(u) || e.setAttribute("class", L(u + " " + n))) : e.setAttribute("class", L(u.replace(t, " ")));
    };
  }
  function P(n, t, e) {
    function r() {
      this.style.removeProperty(n);
    }
    function u() {
      this.style.setProperty(n, t, e);
    }
    function i() {
      var r = t.apply(this, arguments);
      null == r ? this.style.removeProperty(n) : this.style.setProperty(n, r, e);
    }
    return null == t ? r : "function" == typeof t ? i : u;
  }
  function j(n, t) {
    function e() {
      delete this[n];
    }
    function r() {
      this[n] = t;
    }
    function u() {
      var e = t.apply(this, arguments);
      null == e ? delete this[n] : this[n] = e;
    }
    return null == t ? e : "function" == typeof t ? u : r;
  }
  function U(n) {
    function t() {
      var t = this.ownerDocument,
        e = this.namespaceURI;
      return e ? t.createElementNS(e, n) : t.createElement(n);
    }
    function e() {
      return this.ownerDocument.createElementNS(n.space, n.local);
    }
    return "function" == typeof n ? n : (n = oa.ns.qualify(n)).local ? e : t;
  }
  function F() {
    var n = this.parentNode;
    n && n.removeChild(this);
  }
  function H(n) {
    return {
      __data__: n
    };
  }
  function O(n) {
    return function () {
      return _Ea(this, n);
    };
  }
  function I(n) {
    return arguments.length || (n = e), function (t, e) {
      return t && e ? n(t.__data__, e.__data__) : !t - !e;
    };
  }
  function Y(n, t) {
    for (var e = 0, r = n.length; r > e; e++) for (var u, i = n[e], a = 0, o = i.length; o > a; a++) (u = i[a]) && t(u, a, e);
    return n;
  }
  function Z(n) {
    return Sa(n, za), n;
  }
  function V(n) {
    var t, e;
    return function (r, u, i) {
      var a,
        o = n[i].update,
        l = o.length;
      for (i != e && (e = i, t = 0), u >= t && (t = u + 1); !(a = o[t]) && ++t < l;);
      return a;
    };
  }
  function X(n, t, e) {
    function r() {
      var t = this[a];
      t && (this.removeEventListener(n, t, t.$), delete this[a]);
    }
    function u() {
      var u = l(t, ca(arguments));
      r.call(this), this.addEventListener(n, this[a] = u, u.$ = e), u._ = t;
    }
    function i() {
      var t,
        e = new RegExp("^__on([^.]+)" + oa.requote(n) + "$");
      for (var r in this) if (t = r.match(e)) {
        var u = this[r];
        this.removeEventListener(t[1], u, u.$), delete this[r];
      }
    }
    var a = "__on" + n,
      o = n.indexOf("."),
      l = $;
    o > 0 && (n = n.slice(0, o));
    var c = La.get(n);
    return c && (n = c, l = B), o ? t ? u : r : t ? b : i;
  }
  function $(n, t) {
    return function (e) {
      var r = oa.event;
      oa.event = e, t[0] = this.__data__;
      try {
        n.apply(this, t);
      } finally {
        oa.event = r;
      }
    };
  }
  function B(n, t) {
    var e = $(n, t);
    return function (n) {
      var t = this,
        r = n.relatedTarget;
      r && (r === t || 8 & r.compareDocumentPosition(t)) || e.call(t, n);
    };
  }
  function W(e) {
    var r = ".dragsuppress-" + ++Ta,
      u = "click" + r,
      i = oa.select(t(e)).on("touchmove" + r, S).on("dragstart" + r, S).on("selectstart" + r, S);
    if (null == qa && (qa = "onselectstart" in e ? !1 : x(e.style, "userSelect")), qa) {
      var a = n(e).style,
        o = a[qa];
      a[qa] = "none";
    }
    return function (n) {
      if (i.on(r, null), qa && (a[qa] = o), n) {
        var t = function t() {
          i.on(u, null);
        };
        i.on(u, function () {
          S(), t();
        }, !0), setTimeout(t, 0);
      }
    };
  }
  function J(n, e) {
    e.changedTouches && (e = e.changedTouches[0]);
    var r = n.ownerSVGElement || n;
    if (r.createSVGPoint) {
      var u = r.createSVGPoint();
      if (0 > Ra) {
        var i = t(n);
        if (i.scrollX || i.scrollY) {
          r = oa.select("body").append("svg").style({
            position: "absolute",
            top: 0,
            left: 0,
            margin: 0,
            padding: 0,
            border: "none"
          }, "important");
          var a = r[0][0].getScreenCTM();
          Ra = !(a.f || a.e), r.remove();
        }
      }
      return Ra ? (u.x = e.pageX, u.y = e.pageY) : (u.x = e.clientX, u.y = e.clientY), u = u.matrixTransform(n.getScreenCTM().inverse()), [u.x, u.y];
    }
    var o = n.getBoundingClientRect();
    return [e.clientX - o.left - n.clientLeft, e.clientY - o.top - n.clientTop];
  }
  function G() {
    return oa.event.changedTouches[0].identifier;
  }
  function K(n) {
    return n > 0 ? 1 : 0 > n ? -1 : 0;
  }
  function Q(n, t, e) {
    return (t[0] - n[0]) * (e[1] - n[1]) - (t[1] - n[1]) * (e[0] - n[0]);
  }
  function nn(n) {
    return n > 1 ? 0 : -1 > n ? ja : Math.acos(n);
  }
  function tn(n) {
    return n > 1 ? Ha : -1 > n ? -Ha : Math.asin(n);
  }
  function en(n) {
    return ((n = Math.exp(n)) - 1 / n) / 2;
  }
  function rn(n) {
    return ((n = Math.exp(n)) + 1 / n) / 2;
  }
  function un(n) {
    return ((n = Math.exp(2 * n)) - 1) / (n + 1);
  }
  function an(n) {
    return (n = Math.sin(n / 2)) * n;
  }
  function on() {}
  function ln(n, t, e) {
    return this instanceof ln ? (this.h = +n, this.s = +t, void (this.l = +e)) : arguments.length < 2 ? n instanceof ln ? new ln(n.h, n.s, n.l) : _n("" + n, wn, ln) : new ln(n, t, e);
  }
  function cn(n, t, e) {
    function r(n) {
      return n > 360 ? n -= 360 : 0 > n && (n += 360), 60 > n ? i + (a - i) * n / 60 : 180 > n ? a : 240 > n ? i + (a - i) * (240 - n) / 60 : i;
    }
    function u(n) {
      return Math.round(255 * r(n));
    }
    var i, a;
    return n = isNaN(n) ? 0 : (n %= 360) < 0 ? n + 360 : n, t = isNaN(t) ? 0 : 0 > t ? 0 : t > 1 ? 1 : t, e = 0 > e ? 0 : e > 1 ? 1 : e, a = .5 >= e ? e * (1 + t) : e + t - e * t, i = 2 * e - a, new yn(u(n + 120), u(n), u(n - 120));
  }
  function sn(n, t, e) {
    return this instanceof sn ? (this.h = +n, this.c = +t, void (this.l = +e)) : arguments.length < 2 ? n instanceof sn ? new sn(n.h, n.c, n.l) : n instanceof hn ? pn(n.l, n.a, n.b) : pn((n = Sn((n = oa.rgb(n)).r, n.g, n.b)).l, n.a, n.b) : new sn(n, t, e);
  }
  function fn(n, t, e) {
    return isNaN(n) && (n = 0), isNaN(t) && (t = 0), new hn(e, Math.cos(n *= Oa) * t, Math.sin(n) * t);
  }
  function hn(n, t, e) {
    return this instanceof hn ? (this.l = +n, this.a = +t, void (this.b = +e)) : arguments.length < 2 ? n instanceof hn ? new hn(n.l, n.a, n.b) : n instanceof sn ? fn(n.h, n.c, n.l) : Sn((n = yn(n)).r, n.g, n.b) : new hn(n, t, e);
  }
  function gn(n, t, e) {
    var r = (n + 16) / 116,
      u = r + t / 500,
      i = r - e / 200;
    return u = vn(u) * Ka, r = vn(r) * Qa, i = vn(i) * no, new yn(mn(3.2404542 * u - 1.5371385 * r - .4985314 * i), mn(-.969266 * u + 1.8760108 * r + .041556 * i), mn(.0556434 * u - .2040259 * r + 1.0572252 * i));
  }
  function pn(n, t, e) {
    return n > 0 ? new sn(Math.atan2(e, t) * Ia, Math.sqrt(t * t + e * e), n) : new sn(NaN, NaN, n);
  }
  function vn(n) {
    return n > .206893034 ? n * n * n : (n - 4 / 29) / 7.787037;
  }
  function dn(n) {
    return n > .008856 ? Math.pow(n, 1 / 3) : 7.787037 * n + 4 / 29;
  }
  function mn(n) {
    return Math.round(255 * (.00304 >= n ? 12.92 * n : 1.055 * Math.pow(n, 1 / 2.4) - .055));
  }
  function yn(n, t, e) {
    return this instanceof yn ? (this.r = ~~n, this.g = ~~t, void (this.b = ~~e)) : arguments.length < 2 ? n instanceof yn ? new yn(n.r, n.g, n.b) : _n("" + n, yn, cn) : new yn(n, t, e);
  }
  function Mn(n) {
    return new yn(n >> 16, n >> 8 & 255, 255 & n);
  }
  function xn(n) {
    return Mn(n) + "";
  }
  function bn(n) {
    return 16 > n ? "0" + Math.max(0, n).toString(16) : Math.min(255, n).toString(16);
  }
  function _n(n, t, e) {
    var r,
      u,
      i,
      a = 0,
      o = 0,
      l = 0;
    if (r = /([a-z]+)\((.*)\)/.exec(n = n.toLowerCase())) switch (u = r[2].split(","), r[1]) {
      case "hsl":
        return e(parseFloat(u[0]), parseFloat(u[1]) / 100, parseFloat(u[2]) / 100);
      case "rgb":
        return t(Nn(u[0]), Nn(u[1]), Nn(u[2]));
    }
    return (i = ro.get(n)) ? t(i.r, i.g, i.b) : (null == n || "#" !== n.charAt(0) || isNaN(i = parseInt(n.slice(1), 16)) || (4 === n.length ? (a = (3840 & i) >> 4, a = a >> 4 | a, o = 240 & i, o = o >> 4 | o, l = 15 & i, l = l << 4 | l) : 7 === n.length && (a = (16711680 & i) >> 16, o = (65280 & i) >> 8, l = 255 & i)), t(a, o, l));
  }
  function wn(n, t, e) {
    var r,
      u,
      i = Math.min(n /= 255, t /= 255, e /= 255),
      a = Math.max(n, t, e),
      o = a - i,
      l = (a + i) / 2;
    return o ? (u = .5 > l ? o / (a + i) : o / (2 - a - i), r = n == a ? (t - e) / o + (e > t ? 6 : 0) : t == a ? (e - n) / o + 2 : (n - t) / o + 4, r *= 60) : (r = NaN, u = l > 0 && 1 > l ? 0 : r), new ln(r, u, l);
  }
  function Sn(n, t, e) {
    n = kn(n), t = kn(t), e = kn(e);
    var r = dn((.4124564 * n + .3575761 * t + .1804375 * e) / Ka),
      u = dn((.2126729 * n + .7151522 * t + .072175 * e) / Qa),
      i = dn((.0193339 * n + .119192 * t + .9503041 * e) / no);
    return hn(116 * u - 16, 500 * (r - u), 200 * (u - i));
  }
  function kn(n) {
    return (n /= 255) <= .04045 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4);
  }
  function Nn(n) {
    var t = parseFloat(n);
    return "%" === n.charAt(n.length - 1) ? Math.round(2.55 * t) : t;
  }
  function En(n) {
    return "function" == typeof n ? n : function () {
      return n;
    };
  }
  function An(n) {
    return function (t, e, r) {
      return 2 === arguments.length && "function" == typeof e && (r = e, e = null), Cn(t, e, n, r);
    };
  }
  function Cn(n, t, e, r) {
    function u() {
      var n,
        t = l.status;
      if (!t && Ln(l) || t >= 200 && 300 > t || 304 === t) {
        try {
          n = e.call(i, l);
        } catch (r) {
          return void a.error.call(i, r);
        }
        a.load.call(i, n);
      } else a.error.call(i, l);
    }
    var i = {},
      a = oa.dispatch("beforesend", "progress", "load", "error"),
      o = {},
      l = new XMLHttpRequest(),
      c = null;
    return !this.XDomainRequest || "withCredentials" in l || !/^(http(s)?:)?\/\//.test(n) || (l = new XDomainRequest()), "onload" in l ? l.onload = l.onerror = u : l.onreadystatechange = function () {
      l.readyState > 3 && u();
    }, l.onprogress = function (n) {
      var t = oa.event;
      oa.event = n;
      try {
        a.progress.call(i, l);
      } finally {
        oa.event = t;
      }
    }, i.header = function (n, t) {
      return n = (n + "").toLowerCase(), arguments.length < 2 ? o[n] : (null == t ? delete o[n] : o[n] = t + "", i);
    }, i.mimeType = function (n) {
      return arguments.length ? (t = null == n ? null : n + "", i) : t;
    }, i.responseType = function (n) {
      return arguments.length ? (c = n, i) : c;
    }, i.response = function (n) {
      return e = n, i;
    }, ["get", "post"].forEach(function (n) {
      i[n] = function () {
        return i.send.apply(i, [n].concat(ca(arguments)));
      };
    }), i.send = function (e, r, u) {
      if (2 === arguments.length && "function" == typeof r && (u = r, r = null), l.open(e, n, !0), null == t || "accept" in o || (o.accept = t + ",*/*"), l.setRequestHeader) for (var s in o) l.setRequestHeader(s, o[s]);
      return null != t && l.overrideMimeType && l.overrideMimeType(t), null != c && (l.responseType = c), null != u && i.on("error", u).on("load", function (n) {
        u(null, n);
      }), a.beforesend.call(i, l), l.send(null == r ? null : r), i;
    }, i.abort = function () {
      return l.abort(), i;
    }, oa.rebind(i, a, "on"), null == r ? i : i.get(zn(r));
  }
  function zn(n) {
    return 1 === n.length ? function (t, e) {
      n(null == t ? e : null);
    } : n;
  }
  function Ln(n) {
    var t = n.responseType;
    return t && "text" !== t ? n.response : n.responseText;
  }
  function qn(n, t, e) {
    var r = arguments.length;
    2 > r && (t = 0), 3 > r && (e = Date.now());
    var u = e + t,
      i = {
        c: n,
        t: u,
        n: null
      };
    return io ? io.n = i : uo = i, io = i, ao || (oo = clearTimeout(oo), ao = 1, lo(Tn)), i;
  }
  function Tn() {
    var n = Rn(),
      t = Dn() - n;
    t > 24 ? (isFinite(t) && (clearTimeout(oo), oo = setTimeout(Tn, t)), ao = 0) : (ao = 1, lo(Tn));
  }
  function Rn() {
    for (var n = Date.now(), t = uo; t;) n >= t.t && t.c(n - t.t) && (t.c = null), t = t.n;
    return n;
  }
  function Dn() {
    for (var n, t = uo, e = 1 / 0; t;) t.c ? (t.t < e && (e = t.t), t = (n = t).n) : t = n ? n.n = t.n : uo = t.n;
    return io = n, e;
  }
  function Pn(n, t) {
    return t - (n ? Math.ceil(Math.log(n) / Math.LN10) : 1);
  }
  function jn(n, t) {
    var e = Math.pow(10, 3 * Ma(8 - t));
    return {
      scale: t > 8 ? function (n) {
        return n / e;
      } : function (n) {
        return n * e;
      },
      symbol: n
    };
  }
  function Un(n) {
    var t = n.decimal,
      e = n.thousands,
      r = n.grouping,
      u = n.currency,
      i = r && e ? function (n, t) {
        for (var u = n.length, i = [], a = 0, o = r[0], l = 0; u > 0 && o > 0 && (l + o + 1 > t && (o = Math.max(1, t - l)), i.push(n.substring(u -= o, u + o)), !((l += o + 1) > t));) o = r[a = (a + 1) % r.length];
        return i.reverse().join(e);
      } : y;
    return function (n) {
      var e = so.exec(n),
        r = e[1] || " ",
        a = e[2] || ">",
        o = e[3] || "-",
        l = e[4] || "",
        c = e[5],
        s = +e[6],
        f = e[7],
        h = e[8],
        g = e[9],
        p = 1,
        v = "",
        d = "",
        m = !1,
        y = !0;
      switch (h && (h = +h.substring(1)), (c || "0" === r && "=" === a) && (c = r = "0", a = "="), g) {
        case "n":
          f = !0, g = "g";
          break;
        case "%":
          p = 100, d = "%", g = "f";
          break;
        case "p":
          p = 100, d = "%", g = "r";
          break;
        case "b":
        case "o":
        case "x":
        case "X":
          "#" === l && (v = "0" + g.toLowerCase());
        case "c":
          y = !1;
        case "d":
          m = !0, h = 0;
          break;
        case "s":
          p = -1, g = "r";
      }
      "$" === l && (v = u[0], d = u[1]), "r" != g || h || (g = "g"), null != h && ("g" == g ? h = Math.max(1, Math.min(21, h)) : ("e" == g || "f" == g) && (h = Math.max(0, Math.min(20, h)))), g = fo.get(g) || Fn;
      var M = c && f;
      return function (n) {
        var e = d;
        if (m && n % 1) return "";
        var u = 0 > n || 0 === n && 0 > 1 / n ? (n = -n, "-") : "-" === o ? "" : o;
        if (0 > p) {
          var l = oa.formatPrefix(n, h);
          n = l.scale(n), e = l.symbol + d;
        } else n *= p;
        n = g(n, h);
        var x,
          b,
          _ = n.lastIndexOf(".");
        if (0 > _) {
          var w = y ? n.lastIndexOf("e") : -1;
          0 > w ? (x = n, b = "") : (x = n.substring(0, w), b = n.substring(w));
        } else x = n.substring(0, _), b = t + n.substring(_ + 1);
        !c && f && (x = i(x, 1 / 0));
        var S = v.length + x.length + b.length + (M ? 0 : u.length),
          k = s > S ? new Array(S = s - S + 1).join(r) : "";
        return M && (x = i(k + x, k.length ? s - b.length : 1 / 0)), u += v, n = x + b, ("<" === a ? u + n + k : ">" === a ? k + u + n : "^" === a ? k.substring(0, S >>= 1) + u + n + k.substring(S) : u + (M ? n : k + n)) + e;
      };
    };
  }
  function Fn(n) {
    return n + "";
  }
  function Hn() {
    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
  }
  function On(n, t, e) {
    function r(t) {
      var e = n(t),
        r = i(e, 1);
      return r - t > t - e ? e : r;
    }
    function u(e) {
      return t(e = n(new go(e - 1)), 1), e;
    }
    function i(n, e) {
      return t(n = new go(+n), e), n;
    }
    function a(n, r, i) {
      var a = u(n),
        o = [];
      if (i > 1) for (; r > a;) e(a) % i || o.push(new Date(+a)), t(a, 1);else for (; r > a;) o.push(new Date(+a)), t(a, 1);
      return o;
    }
    function o(n, t, e) {
      try {
        go = Hn;
        var r = new Hn();
        return r._ = n, a(r, t, e);
      } finally {
        go = Date;
      }
    }
    n.floor = n, n.round = r, n.ceil = u, n.offset = i, n.range = a;
    var l = n.utc = In(n);
    return l.floor = l, l.round = In(r), l.ceil = In(u), l.offset = In(i), l.range = o, n;
  }
  function In(n) {
    return function (t, e) {
      try {
        go = Hn;
        var r = new Hn();
        return r._ = t, n(r, e)._;
      } finally {
        go = Date;
      }
    };
  }
  function Yn(n) {
    function t(n) {
      function t(t) {
        for (var e, u, i, a = [], o = -1, l = 0; ++o < r;) 37 === n.charCodeAt(o) && (a.push(n.slice(l, o)), null != (u = vo[e = n.charAt(++o)]) && (e = n.charAt(++o)), (i = A[e]) && (e = i(t, null == u ? "e" === e ? " " : "0" : u)), a.push(e), l = o + 1);
        return a.push(n.slice(l, o)), a.join("");
      }
      var r = n.length;
      return t.parse = function (t) {
        var r = {
            y: 1900,
            m: 0,
            d: 1,
            H: 0,
            M: 0,
            S: 0,
            L: 0,
            Z: null
          },
          u = e(r, n, t, 0);
        if (u != t.length) return null;
        "p" in r && (r.H = r.H % 12 + 12 * r.p);
        var i = null != r.Z && go !== Hn,
          a = new (i ? Hn : go)();
        return "j" in r ? a.setFullYear(r.y, 0, r.j) : "W" in r || "U" in r ? ("w" in r || (r.w = "W" in r ? 1 : 0), a.setFullYear(r.y, 0, 1), a.setFullYear(r.y, 0, "W" in r ? (r.w + 6) % 7 + 7 * r.W - (a.getDay() + 5) % 7 : r.w + 7 * r.U - (a.getDay() + 6) % 7)) : a.setFullYear(r.y, r.m, r.d), a.setHours(r.H + (r.Z / 100 | 0), r.M + r.Z % 100, r.S, r.L), i ? a._ : a;
      }, t.toString = function () {
        return n;
      }, t;
    }
    function e(n, t, e, r) {
      for (var u, i, a, o = 0, l = t.length, c = e.length; l > o;) {
        if (r >= c) return -1;
        if (u = t.charCodeAt(o++), 37 === u) {
          if (a = t.charAt(o++), i = C[a in vo ? t.charAt(o++) : a], !i || (r = i(n, e, r)) < 0) return -1;
        } else if (u != e.charCodeAt(r++)) return -1;
      }
      return r;
    }
    function r(n, t, e) {
      _.lastIndex = 0;
      var r = _.exec(t.slice(e));
      return r ? (n.w = w.get(r[0].toLowerCase()), e + r[0].length) : -1;
    }
    function u(n, t, e) {
      x.lastIndex = 0;
      var r = x.exec(t.slice(e));
      return r ? (n.w = b.get(r[0].toLowerCase()), e + r[0].length) : -1;
    }
    function i(n, t, e) {
      N.lastIndex = 0;
      var r = N.exec(t.slice(e));
      return r ? (n.m = E.get(r[0].toLowerCase()), e + r[0].length) : -1;
    }
    function a(n, t, e) {
      S.lastIndex = 0;
      var r = S.exec(t.slice(e));
      return r ? (n.m = k.get(r[0].toLowerCase()), e + r[0].length) : -1;
    }
    function o(n, t, r) {
      return e(n, A.c.toString(), t, r);
    }
    function l(n, t, r) {
      return e(n, A.x.toString(), t, r);
    }
    function c(n, t, r) {
      return e(n, A.X.toString(), t, r);
    }
    function s(n, t, e) {
      var r = M.get(t.slice(e, e += 2).toLowerCase());
      return null == r ? -1 : (n.p = r, e);
    }
    var f = n.dateTime,
      h = n.date,
      g = n.time,
      _p = n.periods,
      v = n.days,
      d = n.shortDays,
      m = n.months,
      y = n.shortMonths;
    t.utc = function (n) {
      function e(n) {
        try {
          go = Hn;
          var t = new go();
          return t._ = n, r(t);
        } finally {
          go = Date;
        }
      }
      var r = t(n);
      return e.parse = function (n) {
        try {
          go = Hn;
          var t = r.parse(n);
          return t && t._;
        } finally {
          go = Date;
        }
      }, e.toString = r.toString, e;
    }, t.multi = t.utc.multi = ct;
    var M = oa.map(),
      x = Vn(v),
      b = Xn(v),
      _ = Vn(d),
      w = Xn(d),
      S = Vn(m),
      k = Xn(m),
      N = Vn(y),
      E = Xn(y);
    _p.forEach(function (n, t) {
      M.set(n.toLowerCase(), t);
    });
    var A = {
        a: function a(n) {
          return d[n.getDay()];
        },
        A: function A(n) {
          return v[n.getDay()];
        },
        b: function b(n) {
          return y[n.getMonth()];
        },
        B: function B(n) {
          return m[n.getMonth()];
        },
        c: t(f),
        d: function d(n, t) {
          return Zn(n.getDate(), t, 2);
        },
        e: function e(n, t) {
          return Zn(n.getDate(), t, 2);
        },
        H: function H(n, t) {
          return Zn(n.getHours(), t, 2);
        },
        I: function I(n, t) {
          return Zn(n.getHours() % 12 || 12, t, 2);
        },
        j: function j(n, t) {
          return Zn(1 + ho.dayOfYear(n), t, 3);
        },
        L: function L(n, t) {
          return Zn(n.getMilliseconds(), t, 3);
        },
        m: function m(n, t) {
          return Zn(n.getMonth() + 1, t, 2);
        },
        M: function M(n, t) {
          return Zn(n.getMinutes(), t, 2);
        },
        p: function p(n) {
          return _p[+(n.getHours() >= 12)];
        },
        S: function S(n, t) {
          return Zn(n.getSeconds(), t, 2);
        },
        U: function U(n, t) {
          return Zn(ho.sundayOfYear(n), t, 2);
        },
        w: function w(n) {
          return n.getDay();
        },
        W: function W(n, t) {
          return Zn(ho.mondayOfYear(n), t, 2);
        },
        x: t(h),
        X: t(g),
        y: function y(n, t) {
          return Zn(n.getFullYear() % 100, t, 2);
        },
        Y: function Y(n, t) {
          return Zn(n.getFullYear() % 1e4, t, 4);
        },
        Z: ot,
        "%": function _() {
          return "%";
        }
      },
      C = {
        a: r,
        A: u,
        b: i,
        B: a,
        c: o,
        d: tt,
        e: tt,
        H: rt,
        I: rt,
        j: et,
        L: at,
        m: nt,
        M: ut,
        p: s,
        S: it,
        U: Bn,
        w: $n,
        W: Wn,
        x: l,
        X: c,
        y: Gn,
        Y: Jn,
        Z: Kn,
        "%": lt
      };
    return t;
  }
  function Zn(n, t, e) {
    var r = 0 > n ? "-" : "",
      u = (r ? -n : n) + "",
      i = u.length;
    return r + (e > i ? new Array(e - i + 1).join(t) + u : u);
  }
  function Vn(n) {
    return new RegExp("^(?:" + n.map(oa.requote).join("|") + ")", "i");
  }
  function Xn(n) {
    for (var t = new c(), e = -1, r = n.length; ++e < r;) t.set(n[e].toLowerCase(), e);
    return t;
  }
  function $n(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 1));
    return r ? (n.w = +r[0], e + r[0].length) : -1;
  }
  function Bn(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e));
    return r ? (n.U = +r[0], e + r[0].length) : -1;
  }
  function Wn(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e));
    return r ? (n.W = +r[0], e + r[0].length) : -1;
  }
  function Jn(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 4));
    return r ? (n.y = +r[0], e + r[0].length) : -1;
  }
  function Gn(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 2));
    return r ? (n.y = Qn(+r[0]), e + r[0].length) : -1;
  }
  function Kn(n, t, e) {
    return /^[+-]\d{4}$/.test(t = t.slice(e, e + 5)) ? (n.Z = -t, e + 5) : -1;
  }
  function Qn(n) {
    return n + (n > 68 ? 1900 : 2e3);
  }
  function nt(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 2));
    return r ? (n.m = r[0] - 1, e + r[0].length) : -1;
  }
  function tt(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 2));
    return r ? (n.d = +r[0], e + r[0].length) : -1;
  }
  function et(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 3));
    return r ? (n.j = +r[0], e + r[0].length) : -1;
  }
  function rt(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 2));
    return r ? (n.H = +r[0], e + r[0].length) : -1;
  }
  function ut(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 2));
    return r ? (n.M = +r[0], e + r[0].length) : -1;
  }
  function it(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 2));
    return r ? (n.S = +r[0], e + r[0].length) : -1;
  }
  function at(n, t, e) {
    mo.lastIndex = 0;
    var r = mo.exec(t.slice(e, e + 3));
    return r ? (n.L = +r[0], e + r[0].length) : -1;
  }
  function ot(n) {
    var t = n.getTimezoneOffset(),
      e = t > 0 ? "-" : "+",
      r = Ma(t) / 60 | 0,
      u = Ma(t) % 60;
    return e + Zn(r, "0", 2) + Zn(u, "0", 2);
  }
  function lt(n, t, e) {
    yo.lastIndex = 0;
    var r = yo.exec(t.slice(e, e + 1));
    return r ? e + r[0].length : -1;
  }
  function ct(n) {
    for (var t = n.length, e = -1; ++e < t;) n[e][0] = this(n[e][0]);
    return function (t) {
      for (var e = 0, r = n[e]; !r[1](t);) r = n[++e];
      return r[0](t);
    };
  }
  function st() {}
  function ft(n, t, e) {
    var r = e.s = n + t,
      u = r - n,
      i = r - u;
    e.t = n - i + (t - u);
  }
  function ht(n, t) {
    n && _o.hasOwnProperty(n.type) && _o[n.type](n, t);
  }
  function gt(n, t, e) {
    var r,
      u = -1,
      i = n.length - e;
    for (t.lineStart(); ++u < i;) r = n[u], t.point(r[0], r[1], r[2]);
    t.lineEnd();
  }
  function pt(n, t) {
    var e = -1,
      r = n.length;
    for (t.polygonStart(); ++e < r;) gt(n[e], t, 1);
    t.polygonEnd();
  }
  function vt() {
    function n(n, t) {
      n *= Oa, t = t * Oa / 2 + ja / 4;
      var e = n - r,
        a = e >= 0 ? 1 : -1,
        o = a * e,
        l = Math.cos(t),
        c = Math.sin(t),
        s = i * c,
        f = u * l + s * Math.cos(o),
        h = s * a * Math.sin(o);
      So.add(Math.atan2(h, f)), r = n, u = l, i = c;
    }
    var t, e, r, u, i;
    ko.point = function (a, o) {
      ko.point = n, r = (t = a) * Oa, u = Math.cos(o = (e = o) * Oa / 2 + ja / 4), i = Math.sin(o);
    }, ko.lineEnd = function () {
      n(t, e);
    };
  }
  function dt(n) {
    var t = n[0],
      e = n[1],
      r = Math.cos(e);
    return [r * Math.cos(t), r * Math.sin(t), Math.sin(e)];
  }
  function mt(n, t) {
    return n[0] * t[0] + n[1] * t[1] + n[2] * t[2];
  }
  function yt(n, t) {
    return [n[1] * t[2] - n[2] * t[1], n[2] * t[0] - n[0] * t[2], n[0] * t[1] - n[1] * t[0]];
  }
  function Mt(n, t) {
    n[0] += t[0], n[1] += t[1], n[2] += t[2];
  }
  function xt(n, t) {
    return [n[0] * t, n[1] * t, n[2] * t];
  }
  function bt(n) {
    var t = Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]);
    n[0] /= t, n[1] /= t, n[2] /= t;
  }
  function _t(n) {
    return [Math.atan2(n[1], n[0]), tn(n[2])];
  }
  function wt(n, t) {
    return Ma(n[0] - t[0]) < Da && Ma(n[1] - t[1]) < Da;
  }
  function St(n, t) {
    n *= Oa;
    var e = Math.cos(t *= Oa);
    kt(e * Math.cos(n), e * Math.sin(n), Math.sin(t));
  }
  function kt(n, t, e) {
    ++No, Ao += (n - Ao) / No, Co += (t - Co) / No, zo += (e - zo) / No;
  }
  function Nt() {
    function n(n, u) {
      n *= Oa;
      var i = Math.cos(u *= Oa),
        a = i * Math.cos(n),
        o = i * Math.sin(n),
        l = Math.sin(u),
        c = Math.atan2(Math.sqrt((c = e * l - r * o) * c + (c = r * a - t * l) * c + (c = t * o - e * a) * c), t * a + e * o + r * l);
      Eo += c, Lo += c * (t + (t = a)), qo += c * (e + (e = o)), To += c * (r + (r = l)), kt(t, e, r);
    }
    var t, e, r;
    jo.point = function (u, i) {
      u *= Oa;
      var a = Math.cos(i *= Oa);
      t = a * Math.cos(u), e = a * Math.sin(u), r = Math.sin(i), jo.point = n, kt(t, e, r);
    };
  }
  function Et() {
    jo.point = St;
  }
  function At() {
    function n(n, t) {
      n *= Oa;
      var e = Math.cos(t *= Oa),
        a = e * Math.cos(n),
        o = e * Math.sin(n),
        l = Math.sin(t),
        c = u * l - i * o,
        s = i * a - r * l,
        f = r * o - u * a,
        h = Math.sqrt(c * c + s * s + f * f),
        g = r * a + u * o + i * l,
        p = h && -nn(g) / h,
        v = Math.atan2(h, g);
      Ro += p * c, Do += p * s, Po += p * f, Eo += v, Lo += v * (r + (r = a)), qo += v * (u + (u = o)), To += v * (i + (i = l)), kt(r, u, i);
    }
    var t, e, r, u, i;
    jo.point = function (a, o) {
      t = a, e = o, jo.point = n, a *= Oa;
      var l = Math.cos(o *= Oa);
      r = l * Math.cos(a), u = l * Math.sin(a), i = Math.sin(o), kt(r, u, i);
    }, jo.lineEnd = function () {
      n(t, e), jo.lineEnd = Et, jo.point = St;
    };
  }
  function Ct(n, t) {
    function e(e, r) {
      return e = n(e, r), t(e[0], e[1]);
    }
    return n.invert && t.invert && (e.invert = function (e, r) {
      return e = t.invert(e, r), e && n.invert(e[0], e[1]);
    }), e;
  }
  function zt() {
    return !0;
  }
  function Lt(n, t, e, r, u) {
    var i = [],
      a = [];
    if (n.forEach(function (n) {
      if (!((t = n.length - 1) <= 0)) {
        var t,
          e = n[0],
          r = n[t];
        if (wt(e, r)) {
          u.lineStart();
          for (var o = 0; t > o; ++o) u.point((e = n[o])[0], e[1]);
          return void u.lineEnd();
        }
        var l = new Tt(e, n, null, !0),
          c = new Tt(e, null, l, !1);
        l.o = c, i.push(l), a.push(c), l = new Tt(r, n, null, !1), c = new Tt(r, null, l, !0), l.o = c, i.push(l), a.push(c);
      }
    }), a.sort(t), qt(i), qt(a), i.length) {
      for (var o = 0, l = e, c = a.length; c > o; ++o) a[o].e = l = !l;
      for (var s, f, h = i[0];;) {
        for (var g = h, p = !0; g.v;) if ((g = g.n) === h) return;
        s = g.z, u.lineStart();
        do {
          if (g.v = g.o.v = !0, g.e) {
            if (p) for (var o = 0, c = s.length; c > o; ++o) u.point((f = s[o])[0], f[1]);else r(g.x, g.n.x, 1, u);
            g = g.n;
          } else {
            if (p) {
              s = g.p.z;
              for (var o = s.length - 1; o >= 0; --o) u.point((f = s[o])[0], f[1]);
            } else r(g.x, g.p.x, -1, u);
            g = g.p;
          }
          g = g.o, s = g.z, p = !p;
        } while (!g.v);
        u.lineEnd();
      }
    }
  }
  function qt(n) {
    if (t = n.length) {
      for (var t, e, r = 0, u = n[0]; ++r < t;) u.n = e = n[r], e.p = u, u = e;
      u.n = e = n[0], e.p = u;
    }
  }
  function Tt(n, t, e, r) {
    this.x = n, this.z = t, this.o = e, this.e = r, this.v = !1, this.n = this.p = null;
  }
  function Rt(n, t, e, r) {
    return function (u, i) {
      function a(t, e) {
        var r = u(t, e);
        n(t = r[0], e = r[1]) && i.point(t, e);
      }
      function o(n, t) {
        var e = u(n, t);
        d.point(e[0], e[1]);
      }
      function l() {
        y.point = o, d.lineStart();
      }
      function c() {
        y.point = a, d.lineEnd();
      }
      function s(n, t) {
        v.push([n, t]);
        var e = u(n, t);
        x.point(e[0], e[1]);
      }
      function f() {
        x.lineStart(), v = [];
      }
      function h() {
        s(v[0][0], v[0][1]), x.lineEnd();
        var n,
          t = x.clean(),
          e = M.buffer(),
          r = e.length;
        if (v.pop(), p.push(v), v = null, r) if (1 & t) {
          n = e[0];
          var u,
            r = n.length - 1,
            a = -1;
          if (r > 0) {
            for (b || (i.polygonStart(), b = !0), i.lineStart(); ++a < r;) i.point((u = n[a])[0], u[1]);
            i.lineEnd();
          }
        } else r > 1 && 2 & t && e.push(e.pop().concat(e.shift())), g.push(e.filter(Dt));
      }
      var g,
        p,
        v,
        d = t(i),
        m = u.invert(r[0], r[1]),
        y = {
          point: a,
          lineStart: l,
          lineEnd: c,
          polygonStart: function polygonStart() {
            y.point = s, y.lineStart = f, y.lineEnd = h, g = [], p = [];
          },
          polygonEnd: function polygonEnd() {
            y.point = a, y.lineStart = l, y.lineEnd = c, g = oa.merge(g);
            var n = Ot(m, p);
            g.length ? (b || (i.polygonStart(), b = !0), Lt(g, jt, n, e, i)) : n && (b || (i.polygonStart(), b = !0), i.lineStart(), e(null, null, 1, i), i.lineEnd()), b && (i.polygonEnd(), b = !1), g = p = null;
          },
          sphere: function sphere() {
            i.polygonStart(), i.lineStart(), e(null, null, 1, i), i.lineEnd(), i.polygonEnd();
          }
        },
        M = Pt(),
        x = t(M),
        b = !1;
      return y;
    };
  }
  function Dt(n) {
    return n.length > 1;
  }
  function Pt() {
    var n,
      t = [];
    return {
      lineStart: function lineStart() {
        t.push(n = []);
      },
      point: function point(t, e) {
        n.push([t, e]);
      },
      lineEnd: b,
      buffer: function buffer() {
        var e = t;
        return t = [], n = null, e;
      },
      rejoin: function rejoin() {
        t.length > 1 && t.push(t.pop().concat(t.shift()));
      }
    };
  }
  function jt(n, t) {
    return ((n = n.x)[0] < 0 ? n[1] - Ha - Da : Ha - n[1]) - ((t = t.x)[0] < 0 ? t[1] - Ha - Da : Ha - t[1]);
  }
  function Ut(n) {
    var t,
      e = NaN,
      r = NaN,
      u = NaN;
    return {
      lineStart: function lineStart() {
        n.lineStart(), t = 1;
      },
      point: function point(i, a) {
        var o = i > 0 ? ja : -ja,
          l = Ma(i - e);
        Ma(l - ja) < Da ? (n.point(e, r = (r + a) / 2 > 0 ? Ha : -Ha), n.point(u, r), n.lineEnd(), n.lineStart(), n.point(o, r), n.point(i, r), t = 0) : u !== o && l >= ja && (Ma(e - u) < Da && (e -= u * Da), Ma(i - o) < Da && (i -= o * Da), r = Ft(e, r, i, a), n.point(u, r), n.lineEnd(), n.lineStart(), n.point(o, r), t = 0), n.point(e = i, r = a), u = o;
      },
      lineEnd: function lineEnd() {
        n.lineEnd(), e = r = NaN;
      },
      clean: function clean() {
        return 2 - t;
      }
    };
  }
  function Ft(n, t, e, r) {
    var u,
      i,
      a = Math.sin(n - e);
    return Ma(a) > Da ? Math.atan((Math.sin(t) * (i = Math.cos(r)) * Math.sin(e) - Math.sin(r) * (u = Math.cos(t)) * Math.sin(n)) / (u * i * a)) : (t + r) / 2;
  }
  function Ht(n, t, e, r) {
    var u;
    if (null == n) u = e * Ha, r.point(-ja, u), r.point(0, u), r.point(ja, u), r.point(ja, 0), r.point(ja, -u), r.point(0, -u), r.point(-ja, -u), r.point(-ja, 0), r.point(-ja, u);else if (Ma(n[0] - t[0]) > Da) {
      var i = n[0] < t[0] ? ja : -ja;
      u = e * i / 2, r.point(-i, u), r.point(0, u), r.point(i, u);
    } else r.point(t[0], t[1]);
  }
  function Ot(n, t) {
    var e = n[0],
      r = n[1],
      u = [Math.sin(e), -Math.cos(e), 0],
      i = 0,
      a = 0;
    So.reset();
    for (var o = 0, l = t.length; l > o; ++o) {
      var c = t[o],
        s = c.length;
      if (s) for (var f = c[0], h = f[0], g = f[1] / 2 + ja / 4, p = Math.sin(g), v = Math.cos(g), d = 1;;) {
        d === s && (d = 0), n = c[d];
        var m = n[0],
          y = n[1] / 2 + ja / 4,
          M = Math.sin(y),
          x = Math.cos(y),
          b = m - h,
          _ = b >= 0 ? 1 : -1,
          w = _ * b,
          S = w > ja,
          k = p * M;
        if (So.add(Math.atan2(k * _ * Math.sin(w), v * x + k * Math.cos(w))), i += S ? b + _ * Ua : b, S ^ h >= e ^ m >= e) {
          var N = yt(dt(f), dt(n));
          bt(N);
          var E = yt(u, N);
          bt(E);
          var A = (S ^ b >= 0 ? -1 : 1) * tn(E[2]);
          (r > A || r === A && (N[0] || N[1])) && (a += S ^ b >= 0 ? 1 : -1);
        }
        if (!d++) break;
        h = m, p = M, v = x, f = n;
      }
    }
    return (-Da > i || Da > i && 0 > So) ^ 1 & a;
  }
  function It(n) {
    function t(n, t) {
      return Math.cos(n) * Math.cos(t) > i;
    }
    function e(n) {
      var e, i, l, c, s;
      return {
        lineStart: function lineStart() {
          c = l = !1, s = 1;
        },
        point: function point(f, h) {
          var g,
            p = [f, h],
            v = t(f, h),
            d = a ? v ? 0 : u(f, h) : v ? u(f + (0 > f ? ja : -ja), h) : 0;
          if (!e && (c = l = v) && n.lineStart(), v !== l && (g = r(e, p), (wt(e, g) || wt(p, g)) && (p[0] += Da, p[1] += Da, v = t(p[0], p[1]))), v !== l) s = 0, v ? (n.lineStart(), g = r(p, e), n.point(g[0], g[1])) : (g = r(e, p), n.point(g[0], g[1]), n.lineEnd()), e = g;else if (o && e && a ^ v) {
            var m;
            d & i || !(m = r(p, e, !0)) || (s = 0, a ? (n.lineStart(), n.point(m[0][0], m[0][1]), n.point(m[1][0], m[1][1]), n.lineEnd()) : (n.point(m[1][0], m[1][1]), n.lineEnd(), n.lineStart(), n.point(m[0][0], m[0][1])));
          }
          !v || e && wt(e, p) || n.point(p[0], p[1]), e = p, l = v, i = d;
        },
        lineEnd: function lineEnd() {
          l && n.lineEnd(), e = null;
        },
        clean: function clean() {
          return s | (c && l) << 1;
        }
      };
    }
    function r(n, t, e) {
      var r = dt(n),
        u = dt(t),
        a = [1, 0, 0],
        o = yt(r, u),
        l = mt(o, o),
        c = o[0],
        s = l - c * c;
      if (!s) return !e && n;
      var f = i * l / s,
        h = -i * c / s,
        g = yt(a, o),
        p = xt(a, f),
        v = xt(o, h);
      Mt(p, v);
      var d = g,
        m = mt(p, d),
        y = mt(d, d),
        M = m * m - y * (mt(p, p) - 1);
      if (!(0 > M)) {
        var x = Math.sqrt(M),
          b = xt(d, (-m - x) / y);
        if (Mt(b, p), b = _t(b), !e) return b;
        var _,
          w = n[0],
          S = t[0],
          k = n[1],
          N = t[1];
        w > S && (_ = w, w = S, S = _);
        var E = S - w,
          A = Ma(E - ja) < Da,
          C = A || Da > E;
        if (!A && k > N && (_ = k, k = N, N = _), C ? A ? k + N > 0 ^ b[1] < (Ma(b[0] - w) < Da ? k : N) : k <= b[1] && b[1] <= N : E > ja ^ (w <= b[0] && b[0] <= S)) {
          var z = xt(d, (-m + x) / y);
          return Mt(z, p), [b, _t(z)];
        }
      }
    }
    function u(t, e) {
      var r = a ? n : ja - n,
        u = 0;
      return -r > t ? u |= 1 : t > r && (u |= 2), -r > e ? u |= 4 : e > r && (u |= 8), u;
    }
    var i = Math.cos(n),
      a = i > 0,
      o = Ma(i) > Da,
      l = ve(n, 6 * Oa);
    return Rt(t, e, l, a ? [0, -n] : [-ja, n - ja]);
  }
  function Yt(n, t, e, r) {
    return function (u) {
      var i,
        a = u.a,
        o = u.b,
        l = a.x,
        c = a.y,
        s = o.x,
        f = o.y,
        h = 0,
        g = 1,
        p = s - l,
        v = f - c;
      if (i = n - l, p || !(i > 0)) {
        if (i /= p, 0 > p) {
          if (h > i) return;
          g > i && (g = i);
        } else if (p > 0) {
          if (i > g) return;
          i > h && (h = i);
        }
        if (i = e - l, p || !(0 > i)) {
          if (i /= p, 0 > p) {
            if (i > g) return;
            i > h && (h = i);
          } else if (p > 0) {
            if (h > i) return;
            g > i && (g = i);
          }
          if (i = t - c, v || !(i > 0)) {
            if (i /= v, 0 > v) {
              if (h > i) return;
              g > i && (g = i);
            } else if (v > 0) {
              if (i > g) return;
              i > h && (h = i);
            }
            if (i = r - c, v || !(0 > i)) {
              if (i /= v, 0 > v) {
                if (i > g) return;
                i > h && (h = i);
              } else if (v > 0) {
                if (h > i) return;
                g > i && (g = i);
              }
              return h > 0 && (u.a = {
                x: l + h * p,
                y: c + h * v
              }), 1 > g && (u.b = {
                x: l + g * p,
                y: c + g * v
              }), u;
            }
          }
        }
      }
    };
  }
  function Zt(n, t, e, r) {
    function u(r, u) {
      return Ma(r[0] - n) < Da ? u > 0 ? 0 : 3 : Ma(r[0] - e) < Da ? u > 0 ? 2 : 1 : Ma(r[1] - t) < Da ? u > 0 ? 1 : 0 : u > 0 ? 3 : 2;
    }
    function i(n, t) {
      return a(n.x, t.x);
    }
    function a(n, t) {
      var e = u(n, 1),
        r = u(t, 1);
      return e !== r ? e - r : 0 === e ? t[1] - n[1] : 1 === e ? n[0] - t[0] : 2 === e ? n[1] - t[1] : t[0] - n[0];
    }
    return function (o) {
      function l(n) {
        for (var t = 0, e = d.length, r = n[1], u = 0; e > u; ++u) for (var i, a = 1, o = d[u], l = o.length, c = o[0]; l > a; ++a) i = o[a], c[1] <= r ? i[1] > r && Q(c, i, n) > 0 && ++t : i[1] <= r && Q(c, i, n) < 0 && --t, c = i;
        return 0 !== t;
      }
      function c(i, o, l, c) {
        var s = 0,
          f = 0;
        if (null == i || (s = u(i, l)) !== (f = u(o, l)) || a(i, o) < 0 ^ l > 0) {
          do c.point(0 === s || 3 === s ? n : e, s > 1 ? r : t); while ((s = (s + l + 4) % 4) !== f);
        } else c.point(o[0], o[1]);
      }
      function s(u, i) {
        return u >= n && e >= u && i >= t && r >= i;
      }
      function f(n, t) {
        s(n, t) && o.point(n, t);
      }
      function h() {
        C.point = p, d && d.push(m = []), S = !0, w = !1, b = _ = NaN;
      }
      function g() {
        v && (p(y, M), x && w && E.rejoin(), v.push(E.buffer())), C.point = f, w && o.lineEnd();
      }
      function p(n, t) {
        n = Math.max(-Fo, Math.min(Fo, n)), t = Math.max(-Fo, Math.min(Fo, t));
        var e = s(n, t);
        if (d && m.push([n, t]), S) y = n, M = t, x = e, S = !1, e && (o.lineStart(), o.point(n, t));else if (e && w) o.point(n, t);else {
          var r = {
            a: {
              x: b,
              y: _
            },
            b: {
              x: n,
              y: t
            }
          };
          A(r) ? (w || (o.lineStart(), o.point(r.a.x, r.a.y)), o.point(r.b.x, r.b.y), e || o.lineEnd(), k = !1) : e && (o.lineStart(), o.point(n, t), k = !1);
        }
        b = n, _ = t, w = e;
      }
      var v,
        d,
        m,
        y,
        M,
        x,
        b,
        _,
        w,
        S,
        k,
        N = o,
        E = Pt(),
        A = Yt(n, t, e, r),
        C = {
          point: f,
          lineStart: h,
          lineEnd: g,
          polygonStart: function polygonStart() {
            o = E, v = [], d = [], k = !0;
          },
          polygonEnd: function polygonEnd() {
            o = N, v = oa.merge(v);
            var t = l([n, r]),
              e = k && t,
              u = v.length;
            (e || u) && (o.polygonStart(), e && (o.lineStart(), c(null, null, 1, o), o.lineEnd()), u && Lt(v, i, t, c, o), o.polygonEnd()), v = d = m = null;
          }
        };
      return C;
    };
  }
  function Vt(n) {
    var t = 0,
      e = ja / 3,
      r = oe(n),
      u = r(t, e);
    return u.parallels = function (n) {
      return arguments.length ? r(t = n[0] * ja / 180, e = n[1] * ja / 180) : [t / ja * 180, e / ja * 180];
    }, u;
  }
  function Xt(n, t) {
    function e(n, t) {
      var e = Math.sqrt(i - 2 * u * Math.sin(t)) / u;
      return [e * Math.sin(n *= u), a - e * Math.cos(n)];
    }
    var r = Math.sin(n),
      u = (r + Math.sin(t)) / 2,
      i = 1 + r * (2 * u - r),
      a = Math.sqrt(i) / u;
    return e.invert = function (n, t) {
      var e = a - t;
      return [Math.atan2(n, e) / u, tn((i - (n * n + e * e) * u * u) / (2 * u))];
    }, e;
  }
  function $t() {
    function n(n, t) {
      Oo += u * n - r * t, r = n, u = t;
    }
    var t, e, r, u;
    Xo.point = function (i, a) {
      Xo.point = n, t = r = i, e = u = a;
    }, Xo.lineEnd = function () {
      n(t, e);
    };
  }
  function Bt(n, t) {
    Io > n && (Io = n), n > Zo && (Zo = n), Yo > t && (Yo = t), t > Vo && (Vo = t);
  }
  function Wt() {
    function n(n, t) {
      a.push("M", n, ",", t, i);
    }
    function t(n, t) {
      a.push("M", n, ",", t), o.point = e;
    }
    function e(n, t) {
      a.push("L", n, ",", t);
    }
    function r() {
      o.point = n;
    }
    function u() {
      a.push("Z");
    }
    var i = Jt(4.5),
      a = [],
      o = {
        point: n,
        lineStart: function lineStart() {
          o.point = t;
        },
        lineEnd: r,
        polygonStart: function polygonStart() {
          o.lineEnd = u;
        },
        polygonEnd: function polygonEnd() {
          o.lineEnd = r, o.point = n;
        },
        pointRadius: function pointRadius(n) {
          return i = Jt(n), o;
        },
        result: function result() {
          if (a.length) {
            var n = a.join("");
            return a = [], n;
          }
        }
      };
    return o;
  }
  function Jt(n) {
    return "m0," + n + "a" + n + "," + n + " 0 1,1 0," + -2 * n + "a" + n + "," + n + " 0 1,1 0," + 2 * n + "z";
  }
  function Gt(n, t) {
    Ao += n, Co += t, ++zo;
  }
  function Kt() {
    function n(n, r) {
      var u = n - t,
        i = r - e,
        a = Math.sqrt(u * u + i * i);
      Lo += a * (t + n) / 2, qo += a * (e + r) / 2, To += a, Gt(t = n, e = r);
    }
    var t, e;
    Bo.point = function (r, u) {
      Bo.point = n, Gt(t = r, e = u);
    };
  }
  function Qt() {
    Bo.point = Gt;
  }
  function ne() {
    function n(n, t) {
      var e = n - r,
        i = t - u,
        a = Math.sqrt(e * e + i * i);
      Lo += a * (r + n) / 2, qo += a * (u + t) / 2, To += a, a = u * n - r * t, Ro += a * (r + n), Do += a * (u + t), Po += 3 * a, Gt(r = n, u = t);
    }
    var t, e, r, u;
    Bo.point = function (i, a) {
      Bo.point = n, Gt(t = r = i, e = u = a);
    }, Bo.lineEnd = function () {
      n(t, e);
    };
  }
  function te(n) {
    function t(t, e) {
      n.moveTo(t + a, e), n.arc(t, e, a, 0, Ua);
    }
    function e(t, e) {
      n.moveTo(t, e), o.point = r;
    }
    function r(t, e) {
      n.lineTo(t, e);
    }
    function u() {
      o.point = t;
    }
    function i() {
      n.closePath();
    }
    var a = 4.5,
      o = {
        point: t,
        lineStart: function lineStart() {
          o.point = e;
        },
        lineEnd: u,
        polygonStart: function polygonStart() {
          o.lineEnd = i;
        },
        polygonEnd: function polygonEnd() {
          o.lineEnd = u, o.point = t;
        },
        pointRadius: function pointRadius(n) {
          return a = n, o;
        },
        result: b
      };
    return o;
  }
  function ee(n) {
    function t(n) {
      return (o ? r : e)(n);
    }
    function e(t) {
      return ie(t, function (e, r) {
        e = n(e, r), t.point(e[0], e[1]);
      });
    }
    function r(t) {
      function e(e, r) {
        e = n(e, r), t.point(e[0], e[1]);
      }
      function r() {
        M = NaN, S.point = i, t.lineStart();
      }
      function i(e, r) {
        var i = dt([e, r]),
          a = n(e, r);
        u(M, x, y, b, _, w, M = a[0], x = a[1], y = e, b = i[0], _ = i[1], w = i[2], o, t), t.point(M, x);
      }
      function a() {
        S.point = e, t.lineEnd();
      }
      function l() {
        r(), S.point = c, S.lineEnd = s;
      }
      function c(n, t) {
        i(f = n, h = t), g = M, p = x, v = b, d = _, m = w, S.point = i;
      }
      function s() {
        u(M, x, y, b, _, w, g, p, f, v, d, m, o, t), S.lineEnd = a, a();
      }
      var f,
        h,
        g,
        p,
        v,
        d,
        m,
        y,
        M,
        x,
        b,
        _,
        w,
        S = {
          point: e,
          lineStart: r,
          lineEnd: a,
          polygonStart: function polygonStart() {
            t.polygonStart(), S.lineStart = l;
          },
          polygonEnd: function polygonEnd() {
            t.polygonEnd(), S.lineStart = r;
          }
        };
      return S;
    }
    function u(t, e, r, o, l, c, s, f, h, g, p, v, d, m) {
      var y = s - t,
        M = f - e,
        x = y * y + M * M;
      if (x > 4 * i && d--) {
        var b = o + g,
          _ = l + p,
          w = c + v,
          S = Math.sqrt(b * b + _ * _ + w * w),
          k = Math.asin(w /= S),
          N = Ma(Ma(w) - 1) < Da || Ma(r - h) < Da ? (r + h) / 2 : Math.atan2(_, b),
          E = n(N, k),
          A = E[0],
          C = E[1],
          z = A - t,
          L = C - e,
          q = M * z - y * L;
        (q * q / x > i || Ma((y * z + M * L) / x - .5) > .3 || a > o * g + l * p + c * v) && (u(t, e, r, o, l, c, A, C, N, b /= S, _ /= S, w, d, m), m.point(A, C), u(A, C, N, b, _, w, s, f, h, g, p, v, d, m));
      }
    }
    var i = .5,
      a = Math.cos(30 * Oa),
      o = 16;
    return t.precision = function (n) {
      return arguments.length ? (o = (i = n * n) > 0 && 16, t) : Math.sqrt(i);
    }, t;
  }
  function re(n) {
    var t = ee(function (t, e) {
      return n([t * Ia, e * Ia]);
    });
    return function (n) {
      return le(t(n));
    };
  }
  function ue(n) {
    this.stream = n;
  }
  function ie(n, t) {
    return {
      point: t,
      sphere: function sphere() {
        n.sphere();
      },
      lineStart: function lineStart() {
        n.lineStart();
      },
      lineEnd: function lineEnd() {
        n.lineEnd();
      },
      polygonStart: function polygonStart() {
        n.polygonStart();
      },
      polygonEnd: function polygonEnd() {
        n.polygonEnd();
      }
    };
  }
  function ae(n) {
    return oe(function () {
      return n;
    })();
  }
  function oe(n) {
    function t(n) {
      return n = o(n[0] * Oa, n[1] * Oa), [n[0] * h + l, c - n[1] * h];
    }
    function e(n) {
      return n = o.invert((n[0] - l) / h, (c - n[1]) / h), n && [n[0] * Ia, n[1] * Ia];
    }
    function r() {
      o = Ct(a = fe(m, M, x), i);
      var n = i(v, d);
      return l = g - n[0] * h, c = p + n[1] * h, u();
    }
    function u() {
      return s && (s.valid = !1, s = null), t;
    }
    var i,
      a,
      o,
      l,
      c,
      s,
      f = ee(function (n, t) {
        return n = i(n, t), [n[0] * h + l, c - n[1] * h];
      }),
      h = 150,
      g = 480,
      p = 250,
      v = 0,
      d = 0,
      m = 0,
      M = 0,
      x = 0,
      b = Uo,
      _ = y,
      w = null,
      S = null;
    return t.stream = function (n) {
      return s && (s.valid = !1), s = le(b(a, f(_(n)))), s.valid = !0, s;
    }, t.clipAngle = function (n) {
      return arguments.length ? (b = null == n ? (w = n, Uo) : It((w = +n) * Oa), u()) : w;
    }, t.clipExtent = function (n) {
      return arguments.length ? (S = n, _ = n ? Zt(n[0][0], n[0][1], n[1][0], n[1][1]) : y, u()) : S;
    }, t.scale = function (n) {
      return arguments.length ? (h = +n, r()) : h;
    }, t.translate = function (n) {
      return arguments.length ? (g = +n[0], p = +n[1], r()) : [g, p];
    }, t.center = function (n) {
      return arguments.length ? (v = n[0] % 360 * Oa, d = n[1] % 360 * Oa, r()) : [v * Ia, d * Ia];
    }, t.rotate = function (n) {
      return arguments.length ? (m = n[0] % 360 * Oa, M = n[1] % 360 * Oa, x = n.length > 2 ? n[2] % 360 * Oa : 0, r()) : [m * Ia, M * Ia, x * Ia];
    }, oa.rebind(t, f, "precision"), function () {
      return i = n.apply(this, arguments), t.invert = i.invert && e, r();
    };
  }
  function le(n) {
    return ie(n, function (t, e) {
      n.point(t * Oa, e * Oa);
    });
  }
  function ce(n, t) {
    return [n, t];
  }
  function se(n, t) {
    return [n > ja ? n - Ua : -ja > n ? n + Ua : n, t];
  }
  function fe(n, t, e) {
    return n ? t || e ? Ct(ge(n), pe(t, e)) : ge(n) : t || e ? pe(t, e) : se;
  }
  function he(n) {
    return function (t, e) {
      return t += n, [t > ja ? t - Ua : -ja > t ? t + Ua : t, e];
    };
  }
  function ge(n) {
    var t = he(n);
    return t.invert = he(-n), t;
  }
  function pe(n, t) {
    function e(n, t) {
      var e = Math.cos(t),
        o = Math.cos(n) * e,
        l = Math.sin(n) * e,
        c = Math.sin(t),
        s = c * r + o * u;
      return [Math.atan2(l * i - s * a, o * r - c * u), tn(s * i + l * a)];
    }
    var r = Math.cos(n),
      u = Math.sin(n),
      i = Math.cos(t),
      a = Math.sin(t);
    return e.invert = function (n, t) {
      var e = Math.cos(t),
        o = Math.cos(n) * e,
        l = Math.sin(n) * e,
        c = Math.sin(t),
        s = c * i - l * a;
      return [Math.atan2(l * i + c * a, o * r + s * u), tn(s * r - o * u)];
    }, e;
  }
  function ve(n, t) {
    var e = Math.cos(n),
      r = Math.sin(n);
    return function (u, i, a, o) {
      var l = a * t;
      null != u ? (u = de(e, u), i = de(e, i), (a > 0 ? i > u : u > i) && (u += a * Ua)) : (u = n + a * Ua, i = n - .5 * l);
      for (var c, s = u; a > 0 ? s > i : i > s; s -= l) o.point((c = _t([e, -r * Math.cos(s), -r * Math.sin(s)]))[0], c[1]);
    };
  }
  function de(n, t) {
    var e = dt(t);
    e[0] -= n, bt(e);
    var r = nn(-e[1]);
    return ((-e[2] < 0 ? -r : r) + 2 * Math.PI - Da) % (2 * Math.PI);
  }
  function me(n, t, e) {
    var r = oa.range(n, t - Da, e).concat(t);
    return function (n) {
      return r.map(function (t) {
        return [n, t];
      });
    };
  }
  function ye(n, t, e) {
    var r = oa.range(n, t - Da, e).concat(t);
    return function (n) {
      return r.map(function (t) {
        return [t, n];
      });
    };
  }
  function Me(n) {
    return n.source;
  }
  function xe(n) {
    return n.target;
  }
  function be(n, t, e, r) {
    var u = Math.cos(t),
      i = Math.sin(t),
      a = Math.cos(r),
      o = Math.sin(r),
      l = u * Math.cos(n),
      c = u * Math.sin(n),
      s = a * Math.cos(e),
      f = a * Math.sin(e),
      h = 2 * Math.asin(Math.sqrt(an(r - t) + u * a * an(e - n))),
      g = 1 / Math.sin(h),
      p = h ? function (n) {
        var t = Math.sin(n *= h) * g,
          e = Math.sin(h - n) * g,
          r = e * l + t * s,
          u = e * c + t * f,
          a = e * i + t * o;
        return [Math.atan2(u, r) * Ia, Math.atan2(a, Math.sqrt(r * r + u * u)) * Ia];
      } : function () {
        return [n * Ia, t * Ia];
      };
    return p.distance = h, p;
  }
  function _e() {
    function n(n, u) {
      var i = Math.sin(u *= Oa),
        a = Math.cos(u),
        o = Ma((n *= Oa) - t),
        l = Math.cos(o);
      Wo += Math.atan2(Math.sqrt((o = a * Math.sin(o)) * o + (o = r * i - e * a * l) * o), e * i + r * a * l), t = n, e = i, r = a;
    }
    var t, e, r;
    Jo.point = function (u, i) {
      t = u * Oa, e = Math.sin(i *= Oa), r = Math.cos(i), Jo.point = n;
    }, Jo.lineEnd = function () {
      Jo.point = Jo.lineEnd = b;
    };
  }
  function we(n, t) {
    function e(t, e) {
      var r = Math.cos(t),
        u = Math.cos(e),
        i = n(r * u);
      return [i * u * Math.sin(t), i * Math.sin(e)];
    }
    return e.invert = function (n, e) {
      var r = Math.sqrt(n * n + e * e),
        u = t(r),
        i = Math.sin(u),
        a = Math.cos(u);
      return [Math.atan2(n * i, r * a), Math.asin(r && e * i / r)];
    }, e;
  }
  function Se(n, t) {
    function e(n, t) {
      a > 0 ? -Ha + Da > t && (t = -Ha + Da) : t > Ha - Da && (t = Ha - Da);
      var e = a / Math.pow(u(t), i);
      return [e * Math.sin(i * n), a - e * Math.cos(i * n)];
    }
    var r = Math.cos(n),
      u = function u(n) {
        return Math.tan(ja / 4 + n / 2);
      },
      i = n === t ? Math.sin(n) : Math.log(r / Math.cos(t)) / Math.log(u(t) / u(n)),
      a = r * Math.pow(u(n), i) / i;
    return i ? (e.invert = function (n, t) {
      var e = a - t,
        r = K(i) * Math.sqrt(n * n + e * e);
      return [Math.atan2(n, e) / i, 2 * Math.atan(Math.pow(a / r, 1 / i)) - Ha];
    }, e) : Ne;
  }
  function ke(n, t) {
    function e(n, t) {
      var e = i - t;
      return [e * Math.sin(u * n), i - e * Math.cos(u * n)];
    }
    var r = Math.cos(n),
      u = n === t ? Math.sin(n) : (r - Math.cos(t)) / (t - n),
      i = r / u + n;
    return Ma(u) < Da ? ce : (e.invert = function (n, t) {
      var e = i - t;
      return [Math.atan2(n, e) / u, i - K(u) * Math.sqrt(n * n + e * e)];
    }, e);
  }
  function Ne(n, t) {
    return [n, Math.log(Math.tan(ja / 4 + t / 2))];
  }
  function Ee(n) {
    var t,
      e = ae(n),
      r = e.scale,
      u = e.translate,
      i = e.clipExtent;
    return e.scale = function () {
      var n = r.apply(e, arguments);
      return n === e ? t ? e.clipExtent(null) : e : n;
    }, e.translate = function () {
      var n = u.apply(e, arguments);
      return n === e ? t ? e.clipExtent(null) : e : n;
    }, e.clipExtent = function (n) {
      var a = i.apply(e, arguments);
      if (a === e) {
        if (t = null == n) {
          var o = ja * r(),
            l = u();
          i([[l[0] - o, l[1] - o], [l[0] + o, l[1] + o]]);
        }
      } else t && (a = null);
      return a;
    }, e.clipExtent(null);
  }
  function Ae(n, t) {
    return [Math.log(Math.tan(ja / 4 + t / 2)), -n];
  }
  function Ce(n) {
    return n[0];
  }
  function ze(n) {
    return n[1];
  }
  function Le(n) {
    for (var t = n.length, e = [0, 1], r = 2, u = 2; t > u; u++) {
      for (; r > 1 && Q(n[e[r - 2]], n[e[r - 1]], n[u]) <= 0;) --r;
      e[r++] = u;
    }
    return e.slice(0, r);
  }
  function qe(n, t) {
    return n[0] - t[0] || n[1] - t[1];
  }
  function Te(n, t, e) {
    return (e[0] - t[0]) * (n[1] - t[1]) < (e[1] - t[1]) * (n[0] - t[0]);
  }
  function Re(n, t, e, r) {
    var u = n[0],
      i = e[0],
      a = t[0] - u,
      o = r[0] - i,
      l = n[1],
      c = e[1],
      s = t[1] - l,
      f = r[1] - c,
      h = (o * (l - c) - f * (u - i)) / (f * a - o * s);
    return [u + h * a, l + h * s];
  }
  function De(n) {
    var t = n[0],
      e = n[n.length - 1];
    return !(t[0] - e[0] || t[1] - e[1]);
  }
  function Pe() {
    rr(this), this.edge = this.site = this.circle = null;
  }
  function je(n) {
    var t = ll.pop() || new Pe();
    return t.site = n, t;
  }
  function Ue(n) {
    Be(n), il.remove(n), ll.push(n), rr(n);
  }
  function Fe(n) {
    var t = n.circle,
      e = t.x,
      r = t.cy,
      u = {
        x: e,
        y: r
      },
      i = n.P,
      a = n.N,
      o = [n];
    Ue(n);
    for (var l = i; l.circle && Ma(e - l.circle.x) < Da && Ma(r - l.circle.cy) < Da;) i = l.P, o.unshift(l), Ue(l), l = i;
    o.unshift(l), Be(l);
    for (var c = a; c.circle && Ma(e - c.circle.x) < Da && Ma(r - c.circle.cy) < Da;) a = c.N, o.push(c), Ue(c), c = a;
    o.push(c), Be(c);
    var s,
      f = o.length;
    for (s = 1; f > s; ++s) c = o[s], l = o[s - 1], nr(c.edge, l.site, c.site, u);
    l = o[0], c = o[f - 1], c.edge = Ke(l.site, c.site, null, u), $e(l), $e(c);
  }
  function He(n) {
    for (var t, e, r, u, i = n.x, a = n.y, o = il._; o;) if (r = Oe(o, a) - i, r > Da) o = o.L;else {
      if (u = i - Ie(o, a), !(u > Da)) {
        r > -Da ? (t = o.P, e = o) : u > -Da ? (t = o, e = o.N) : t = e = o;
        break;
      }
      if (!o.R) {
        t = o;
        break;
      }
      o = o.R;
    }
    var l = je(n);
    if (il.insert(t, l), t || e) {
      if (t === e) return Be(t), e = je(t.site), il.insert(l, e), l.edge = e.edge = Ke(t.site, l.site), $e(t), void $e(e);
      if (!e) return void (l.edge = Ke(t.site, l.site));
      Be(t), Be(e);
      var c = t.site,
        s = c.x,
        f = c.y,
        h = n.x - s,
        g = n.y - f,
        p = e.site,
        v = p.x - s,
        d = p.y - f,
        m = 2 * (h * d - g * v),
        y = h * h + g * g,
        M = v * v + d * d,
        x = {
          x: (d * y - g * M) / m + s,
          y: (h * M - v * y) / m + f
        };
      nr(e.edge, c, p, x), l.edge = Ke(c, n, null, x), e.edge = Ke(n, p, null, x), $e(t), $e(e);
    }
  }
  function Oe(n, t) {
    var e = n.site,
      r = e.x,
      u = e.y,
      i = u - t;
    if (!i) return r;
    var a = n.P;
    if (!a) return -(1 / 0);
    e = a.site;
    var o = e.x,
      l = e.y,
      c = l - t;
    if (!c) return o;
    var s = o - r,
      f = 1 / i - 1 / c,
      h = s / c;
    return f ? (-h + Math.sqrt(h * h - 2 * f * (s * s / (-2 * c) - l + c / 2 + u - i / 2))) / f + r : (r + o) / 2;
  }
  function Ie(n, t) {
    var e = n.N;
    if (e) return Oe(e, t);
    var r = n.site;
    return r.y === t ? r.x : 1 / 0;
  }
  function Ye(n) {
    this.site = n, this.edges = [];
  }
  function Ze(n) {
    for (var t, e, r, u, i, a, o, l, c, s, f = n[0][0], h = n[1][0], g = n[0][1], p = n[1][1], v = ul, d = v.length; d--;) if (i = v[d], i && i.prepare()) for (o = i.edges, l = o.length, a = 0; l > a;) s = o[a].end(), r = s.x, u = s.y, c = o[++a % l].start(), t = c.x, e = c.y, (Ma(r - t) > Da || Ma(u - e) > Da) && (o.splice(a, 0, new tr(Qe(i.site, s, Ma(r - f) < Da && p - u > Da ? {
      x: f,
      y: Ma(t - f) < Da ? e : p
    } : Ma(u - p) < Da && h - r > Da ? {
      x: Ma(e - p) < Da ? t : h,
      y: p
    } : Ma(r - h) < Da && u - g > Da ? {
      x: h,
      y: Ma(t - h) < Da ? e : g
    } : Ma(u - g) < Da && r - f > Da ? {
      x: Ma(e - g) < Da ? t : f,
      y: g
    } : null), i.site, null)), ++l);
  }
  function Ve(n, t) {
    return t.angle - n.angle;
  }
  function Xe() {
    rr(this), this.x = this.y = this.arc = this.site = this.cy = null;
  }
  function $e(n) {
    var t = n.P,
      e = n.N;
    if (t && e) {
      var r = t.site,
        u = n.site,
        i = e.site;
      if (r !== i) {
        var a = u.x,
          o = u.y,
          l = r.x - a,
          c = r.y - o,
          s = i.x - a,
          f = i.y - o,
          h = 2 * (l * f - c * s);
        if (!(h >= -Pa)) {
          var g = l * l + c * c,
            p = s * s + f * f,
            v = (f * g - c * p) / h,
            d = (l * p - s * g) / h,
            f = d + o,
            m = cl.pop() || new Xe();
          m.arc = n, m.site = u, m.x = v + a, m.y = f + Math.sqrt(v * v + d * d), m.cy = f, n.circle = m;
          for (var y = null, M = ol._; M;) if (m.y < M.y || m.y === M.y && m.x <= M.x) {
            if (!M.L) {
              y = M.P;
              break;
            }
            M = M.L;
          } else {
            if (!M.R) {
              y = M;
              break;
            }
            M = M.R;
          }
          ol.insert(y, m), y || (al = m);
        }
      }
    }
  }
  function Be(n) {
    var t = n.circle;
    t && (t.P || (al = t.N), ol.remove(t), cl.push(t), rr(t), n.circle = null);
  }
  function We(n) {
    for (var t, e = rl, r = Yt(n[0][0], n[0][1], n[1][0], n[1][1]), u = e.length; u--;) t = e[u], (!Je(t, n) || !r(t) || Ma(t.a.x - t.b.x) < Da && Ma(t.a.y - t.b.y) < Da) && (t.a = t.b = null, e.splice(u, 1));
  }
  function Je(n, t) {
    var e = n.b;
    if (e) return !0;
    var r,
      u,
      i = n.a,
      a = t[0][0],
      o = t[1][0],
      l = t[0][1],
      c = t[1][1],
      s = n.l,
      f = n.r,
      h = s.x,
      g = s.y,
      p = f.x,
      v = f.y,
      d = (h + p) / 2,
      m = (g + v) / 2;
    if (v === g) {
      if (a > d || d >= o) return;
      if (h > p) {
        if (i) {
          if (i.y >= c) return;
        } else i = {
          x: d,
          y: l
        };
        e = {
          x: d,
          y: c
        };
      } else {
        if (i) {
          if (i.y < l) return;
        } else i = {
          x: d,
          y: c
        };
        e = {
          x: d,
          y: l
        };
      }
    } else if (r = (h - p) / (v - g), u = m - r * d, -1 > r || r > 1) {
      if (h > p) {
        if (i) {
          if (i.y >= c) return;
        } else i = {
          x: (l - u) / r,
          y: l
        };
        e = {
          x: (c - u) / r,
          y: c
        };
      } else {
        if (i) {
          if (i.y < l) return;
        } else i = {
          x: (c - u) / r,
          y: c
        };
        e = {
          x: (l - u) / r,
          y: l
        };
      }
    } else if (v > g) {
      if (i) {
        if (i.x >= o) return;
      } else i = {
        x: a,
        y: r * a + u
      };
      e = {
        x: o,
        y: r * o + u
      };
    } else {
      if (i) {
        if (i.x < a) return;
      } else i = {
        x: o,
        y: r * o + u
      };
      e = {
        x: a,
        y: r * a + u
      };
    }
    return n.a = i, n.b = e, !0;
  }
  function Ge(n, t) {
    this.l = n, this.r = t, this.a = this.b = null;
  }
  function Ke(n, t, e, r) {
    var u = new Ge(n, t);
    return rl.push(u), e && nr(u, n, t, e), r && nr(u, t, n, r), ul[n.i].edges.push(new tr(u, n, t)), ul[t.i].edges.push(new tr(u, t, n)), u;
  }
  function Qe(n, t, e) {
    var r = new Ge(n, null);
    return r.a = t, r.b = e, rl.push(r), r;
  }
  function nr(n, t, e, r) {
    n.a || n.b ? n.l === e ? n.b = r : n.a = r : (n.a = r, n.l = t, n.r = e);
  }
  function tr(n, t, e) {
    var r = n.a,
      u = n.b;
    this.edge = n, this.site = t, this.angle = e ? Math.atan2(e.y - t.y, e.x - t.x) : n.l === t ? Math.atan2(u.x - r.x, r.y - u.y) : Math.atan2(r.x - u.x, u.y - r.y);
  }
  function er() {
    this._ = null;
  }
  function rr(n) {
    n.U = n.C = n.L = n.R = n.P = n.N = null;
  }
  function ur(n, t) {
    var e = t,
      r = t.R,
      u = e.U;
    u ? u.L === e ? u.L = r : u.R = r : n._ = r, r.U = u, e.U = r, e.R = r.L, e.R && (e.R.U = e), r.L = e;
  }
  function ir(n, t) {
    var e = t,
      r = t.L,
      u = e.U;
    u ? u.L === e ? u.L = r : u.R = r : n._ = r, r.U = u, e.U = r, e.L = r.R, e.L && (e.L.U = e), r.R = e;
  }
  function ar(n) {
    for (; n.L;) n = n.L;
    return n;
  }
  function or(n, t) {
    var e,
      r,
      u,
      i = n.sort(lr).pop();
    for (rl = [], ul = new Array(n.length), il = new er(), ol = new er();;) if (u = al, i && (!u || i.y < u.y || i.y === u.y && i.x < u.x)) (i.x !== e || i.y !== r) && (ul[i.i] = new Ye(i), He(i), e = i.x, r = i.y), i = n.pop();else {
      if (!u) break;
      Fe(u.arc);
    }
    t && (We(t), Ze(t));
    var a = {
      cells: ul,
      edges: rl
    };
    return il = ol = rl = ul = null, a;
  }
  function lr(n, t) {
    return t.y - n.y || t.x - n.x;
  }
  function cr(n, t, e) {
    return (n.x - e.x) * (t.y - n.y) - (n.x - t.x) * (e.y - n.y);
  }
  function sr(n) {
    return n.x;
  }
  function fr(n) {
    return n.y;
  }
  function hr() {
    return {
      leaf: !0,
      nodes: [],
      point: null,
      x: null,
      y: null
    };
  }
  function gr(n, t, e, r, u, i) {
    if (!n(t, e, r, u, i)) {
      var a = .5 * (e + u),
        o = .5 * (r + i),
        l = t.nodes;
      l[0] && gr(n, l[0], e, r, a, o), l[1] && gr(n, l[1], a, r, u, o), l[2] && gr(n, l[2], e, o, a, i), l[3] && gr(n, l[3], a, o, u, i);
    }
  }
  function pr(n, t, e, r, u, i, a) {
    var o,
      l = 1 / 0;
    return function c(n, s, f, h, g) {
      if (!(s > i || f > a || r > h || u > g)) {
        if (p = n.point) {
          var p,
            v = t - n.x,
            d = e - n.y,
            m = v * v + d * d;
          if (l > m) {
            var y = Math.sqrt(l = m);
            r = t - y, u = e - y, i = t + y, a = e + y, o = p;
          }
        }
        for (var M = n.nodes, x = .5 * (s + h), b = .5 * (f + g), _ = t >= x, w = e >= b, S = w << 1 | _, k = S + 4; k > S; ++S) if (n = M[3 & S]) switch (3 & S) {
          case 0:
            c(n, s, f, x, b);
            break;
          case 1:
            c(n, x, f, h, b);
            break;
          case 2:
            c(n, s, b, x, g);
            break;
          case 3:
            c(n, x, b, h, g);
        }
      }
    }(n, r, u, i, a), o;
  }
  function vr(n, t) {
    n = oa.rgb(n), t = oa.rgb(t);
    var e = n.r,
      r = n.g,
      u = n.b,
      i = t.r - e,
      a = t.g - r,
      o = t.b - u;
    return function (n) {
      return "#" + bn(Math.round(e + i * n)) + bn(Math.round(r + a * n)) + bn(Math.round(u + o * n));
    };
  }
  function dr(n, t) {
    var e,
      r = {},
      u = {};
    for (e in n) e in t ? r[e] = Mr(n[e], t[e]) : u[e] = n[e];
    for (e in t) e in n || (u[e] = t[e]);
    return function (n) {
      for (e in r) u[e] = r[e](n);
      return u;
    };
  }
  function mr(n, t) {
    return n = +n, t = +t, function (e) {
      return n * (1 - e) + t * e;
    };
  }
  function yr(n, t) {
    var e,
      r,
      u,
      i = fl.lastIndex = hl.lastIndex = 0,
      a = -1,
      o = [],
      l = [];
    for (n += "", t += ""; (e = fl.exec(n)) && (r = hl.exec(t));) (u = r.index) > i && (u = t.slice(i, u), o[a] ? o[a] += u : o[++a] = u), (e = e[0]) === (r = r[0]) ? o[a] ? o[a] += r : o[++a] = r : (o[++a] = null, l.push({
      i: a,
      x: mr(e, r)
    })), i = hl.lastIndex;
    return i < t.length && (u = t.slice(i), o[a] ? o[a] += u : o[++a] = u), o.length < 2 ? l[0] ? (t = l[0].x, function (n) {
      return t(n) + "";
    }) : function () {
      return t;
    } : (t = l.length, function (n) {
      for (var e, r = 0; t > r; ++r) o[(e = l[r]).i] = e.x(n);
      return o.join("");
    });
  }
  function Mr(n, t) {
    for (var e, r = oa.interpolators.length; --r >= 0 && !(e = oa.interpolators[r](n, t)););
    return e;
  }
  function xr(n, t) {
    var e,
      r = [],
      u = [],
      i = n.length,
      a = t.length,
      o = Math.min(n.length, t.length);
    for (e = 0; o > e; ++e) r.push(Mr(n[e], t[e]));
    for (; i > e; ++e) u[e] = n[e];
    for (; a > e; ++e) u[e] = t[e];
    return function (n) {
      for (e = 0; o > e; ++e) u[e] = r[e](n);
      return u;
    };
  }
  function br(n) {
    return function (t) {
      return 0 >= t ? 0 : t >= 1 ? 1 : n(t);
    };
  }
  function _r(n) {
    return function (t) {
      return 1 - n(1 - t);
    };
  }
  function wr(n) {
    return function (t) {
      return .5 * (.5 > t ? n(2 * t) : 2 - n(2 - 2 * t));
    };
  }
  function Sr(n) {
    return n * n;
  }
  function kr(n) {
    return n * n * n;
  }
  function Nr(n) {
    if (0 >= n) return 0;
    if (n >= 1) return 1;
    var t = n * n,
      e = t * n;
    return 4 * (.5 > n ? e : 3 * (n - t) + e - .75);
  }
  function Er(n) {
    return function (t) {
      return Math.pow(t, n);
    };
  }
  function Ar(n) {
    return 1 - Math.cos(n * Ha);
  }
  function Cr(n) {
    return Math.pow(2, 10 * (n - 1));
  }
  function zr(n) {
    return 1 - Math.sqrt(1 - n * n);
  }
  function Lr(n, t) {
    var e;
    return arguments.length < 2 && (t = .45), arguments.length ? e = t / Ua * Math.asin(1 / n) : (n = 1, e = t / 4), function (r) {
      return 1 + n * Math.pow(2, -10 * r) * Math.sin((r - e) * Ua / t);
    };
  }
  function qr(n) {
    return n || (n = 1.70158), function (t) {
      return t * t * ((n + 1) * t - n);
    };
  }
  function Tr(n) {
    return 1 / 2.75 > n ? 7.5625 * n * n : 2 / 2.75 > n ? 7.5625 * (n -= 1.5 / 2.75) * n + .75 : 2.5 / 2.75 > n ? 7.5625 * (n -= 2.25 / 2.75) * n + .9375 : 7.5625 * (n -= 2.625 / 2.75) * n + .984375;
  }
  function Rr(n, t) {
    n = oa.hcl(n), t = oa.hcl(t);
    var e = n.h,
      r = n.c,
      u = n.l,
      i = t.h - e,
      a = t.c - r,
      o = t.l - u;
    return isNaN(a) && (a = 0, r = isNaN(r) ? t.c : r), isNaN(i) ? (i = 0, e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), function (n) {
      return fn(e + i * n, r + a * n, u + o * n) + "";
    };
  }
  function Dr(n, t) {
    n = oa.hsl(n), t = oa.hsl(t);
    var e = n.h,
      r = n.s,
      u = n.l,
      i = t.h - e,
      a = t.s - r,
      o = t.l - u;
    return isNaN(a) && (a = 0, r = isNaN(r) ? t.s : r), isNaN(i) ? (i = 0, e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), function (n) {
      return cn(e + i * n, r + a * n, u + o * n) + "";
    };
  }
  function Pr(n, t) {
    n = oa.lab(n), t = oa.lab(t);
    var e = n.l,
      r = n.a,
      u = n.b,
      i = t.l - e,
      a = t.a - r,
      o = t.b - u;
    return function (n) {
      return gn(e + i * n, r + a * n, u + o * n) + "";
    };
  }
  function jr(n, t) {
    return t -= n, function (e) {
      return Math.round(n + t * e);
    };
  }
  function Ur(n) {
    var t = [n.a, n.b],
      e = [n.c, n.d],
      r = Hr(t),
      u = Fr(t, e),
      i = Hr(Or(e, t, -u)) || 0;
    t[0] * e[1] < e[0] * t[1] && (t[0] *= -1, t[1] *= -1, r *= -1, u *= -1), this.rotate = (r ? Math.atan2(t[1], t[0]) : Math.atan2(-e[0], e[1])) * Ia, this.translate = [n.e, n.f], this.scale = [r, i], this.skew = i ? Math.atan2(u, i) * Ia : 0;
  }
  function Fr(n, t) {
    return n[0] * t[0] + n[1] * t[1];
  }
  function Hr(n) {
    var t = Math.sqrt(Fr(n, n));
    return t && (n[0] /= t, n[1] /= t), t;
  }
  function Or(n, t, e) {
    return n[0] += e * t[0], n[1] += e * t[1], n;
  }
  function Ir(n) {
    return n.length ? n.pop() + "," : "";
  }
  function Yr(n, t, e, r) {
    if (n[0] !== t[0] || n[1] !== t[1]) {
      var u = e.push("translate(", null, ",", null, ")");
      r.push({
        i: u - 4,
        x: mr(n[0], t[0])
      }, {
        i: u - 2,
        x: mr(n[1], t[1])
      });
    } else (t[0] || t[1]) && e.push("translate(" + t + ")");
  }
  function Zr(n, t, e, r) {
    n !== t ? (n - t > 180 ? t += 360 : t - n > 180 && (n += 360), r.push({
      i: e.push(Ir(e) + "rotate(", null, ")") - 2,
      x: mr(n, t)
    })) : t && e.push(Ir(e) + "rotate(" + t + ")");
  }
  function Vr(n, t, e, r) {
    n !== t ? r.push({
      i: e.push(Ir(e) + "skewX(", null, ")") - 2,
      x: mr(n, t)
    }) : t && e.push(Ir(e) + "skewX(" + t + ")");
  }
  function Xr(n, t, e, r) {
    if (n[0] !== t[0] || n[1] !== t[1]) {
      var u = e.push(Ir(e) + "scale(", null, ",", null, ")");
      r.push({
        i: u - 4,
        x: mr(n[0], t[0])
      }, {
        i: u - 2,
        x: mr(n[1], t[1])
      });
    } else (1 !== t[0] || 1 !== t[1]) && e.push(Ir(e) + "scale(" + t + ")");
  }
  function $r(n, t) {
    var e = [],
      r = [];
    return n = oa.transform(n), t = oa.transform(t), Yr(n.translate, t.translate, e, r), Zr(n.rotate, t.rotate, e, r), Vr(n.skew, t.skew, e, r), Xr(n.scale, t.scale, e, r), n = t = null, function (n) {
      for (var t, u = -1, i = r.length; ++u < i;) e[(t = r[u]).i] = t.x(n);
      return e.join("");
    };
  }
  function Br(n, t) {
    return t = (t -= n = +n) || 1 / t, function (e) {
      return (e - n) / t;
    };
  }
  function Wr(n, t) {
    return t = (t -= n = +n) || 1 / t, function (e) {
      return Math.max(0, Math.min(1, (e - n) / t));
    };
  }
  function Jr(n) {
    for (var t = n.source, e = n.target, r = Kr(t, e), u = [t]; t !== r;) t = t.parent, u.push(t);
    for (var i = u.length; e !== r;) u.splice(i, 0, e), e = e.parent;
    return u;
  }
  function Gr(n) {
    for (var t = [], e = n.parent; null != e;) t.push(n), n = e, e = e.parent;
    return t.push(n), t;
  }
  function Kr(n, t) {
    if (n === t) return n;
    for (var e = Gr(n), r = Gr(t), u = e.pop(), i = r.pop(), a = null; u === i;) a = u, u = e.pop(), i = r.pop();
    return a;
  }
  function Qr(n) {
    n.fixed |= 2;
  }
  function nu(n) {
    n.fixed &= -7;
  }
  function tu(n) {
    n.fixed |= 4, n.px = n.x, n.py = n.y;
  }
  function eu(n) {
    n.fixed &= -5;
  }
  function ru(n, t, e) {
    var r = 0,
      u = 0;
    if (n.charge = 0, !n.leaf) for (var i, a = n.nodes, o = a.length, l = -1; ++l < o;) i = a[l], null != i && (ru(i, t, e), n.charge += i.charge, r += i.charge * i.cx, u += i.charge * i.cy);
    if (n.point) {
      n.leaf || (n.point.x += Math.random() - .5, n.point.y += Math.random() - .5);
      var c = t * e[n.point.index];
      n.charge += n.pointCharge = c, r += c * n.point.x, u += c * n.point.y;
    }
    n.cx = r / n.charge, n.cy = u / n.charge;
  }
  function uu(n, t) {
    return oa.rebind(n, t, "sort", "children", "value"), n.nodes = n, n.links = su, n;
  }
  function iu(n, t) {
    for (var e = [n]; null != (n = e.pop());) if (t(n), (u = n.children) && (r = u.length)) for (var r, u; --r >= 0;) e.push(u[r]);
  }
  function au(n, t) {
    for (var e = [n], r = []; null != (n = e.pop());) if (r.push(n), (i = n.children) && (u = i.length)) for (var u, i, a = -1; ++a < u;) e.push(i[a]);
    for (; null != (n = r.pop());) t(n);
  }
  function ou(n) {
    return n.children;
  }
  function lu(n) {
    return n.value;
  }
  function cu(n, t) {
    return t.value - n.value;
  }
  function su(n) {
    return oa.merge(n.map(function (n) {
      return (n.children || []).map(function (t) {
        return {
          source: n,
          target: t
        };
      });
    }));
  }
  function fu(n) {
    return n.x;
  }
  function hu(n) {
    return n.y;
  }
  function gu(n, t, e) {
    n.y0 = t, n.y = e;
  }
  function pu(n) {
    return oa.range(n.length);
  }
  function vu(n) {
    for (var t = -1, e = n[0].length, r = []; ++t < e;) r[t] = 0;
    return r;
  }
  function du(n) {
    for (var t, e = 1, r = 0, u = n[0][1], i = n.length; i > e; ++e) (t = n[e][1]) > u && (r = e, u = t);
    return r;
  }
  function mu(n) {
    return n.reduce(yu, 0);
  }
  function yu(n, t) {
    return n + t[1];
  }
  function Mu(n, t) {
    return xu(n, Math.ceil(Math.log(t.length) / Math.LN2 + 1));
  }
  function xu(n, t) {
    for (var e = -1, r = +n[0], u = (n[1] - r) / t, i = []; ++e <= t;) i[e] = u * e + r;
    return i;
  }
  function bu(n) {
    return [oa.min(n), oa.max(n)];
  }
  function _u(n, t) {
    return n.value - t.value;
  }
  function wu(n, t) {
    var e = n._pack_next;
    n._pack_next = t, t._pack_prev = n, t._pack_next = e, e._pack_prev = t;
  }
  function Su(n, t) {
    n._pack_next = t, t._pack_prev = n;
  }
  function ku(n, t) {
    var e = t.x - n.x,
      r = t.y - n.y,
      u = n.r + t.r;
    return .999 * u * u > e * e + r * r;
  }
  function Nu(n) {
    function t(n) {
      s = Math.min(n.x - n.r, s), f = Math.max(n.x + n.r, f), h = Math.min(n.y - n.r, h), g = Math.max(n.y + n.r, g);
    }
    if ((e = n.children) && (c = e.length)) {
      var e,
        r,
        u,
        i,
        a,
        o,
        l,
        c,
        s = 1 / 0,
        f = -(1 / 0),
        h = 1 / 0,
        g = -(1 / 0);
      if (e.forEach(Eu), r = e[0], r.x = -r.r, r.y = 0, t(r), c > 1 && (u = e[1], u.x = u.r, u.y = 0, t(u), c > 2)) for (i = e[2], zu(r, u, i), t(i), wu(r, i), r._pack_prev = i, wu(i, u), u = r._pack_next, a = 3; c > a; a++) {
        zu(r, u, i = e[a]);
        var p = 0,
          v = 1,
          d = 1;
        for (o = u._pack_next; o !== u; o = o._pack_next, v++) if (ku(o, i)) {
          p = 1;
          break;
        }
        if (1 == p) for (l = r._pack_prev; l !== o._pack_prev && !ku(l, i); l = l._pack_prev, d++);
        p ? (d > v || v == d && u.r < r.r ? Su(r, u = o) : Su(r = l, u), a--) : (wu(r, i), u = i, t(i));
      }
      var m = (s + f) / 2,
        y = (h + g) / 2,
        M = 0;
      for (a = 0; c > a; a++) i = e[a], i.x -= m, i.y -= y, M = Math.max(M, i.r + Math.sqrt(i.x * i.x + i.y * i.y));
      n.r = M, e.forEach(Au);
    }
  }
  function Eu(n) {
    n._pack_next = n._pack_prev = n;
  }
  function Au(n) {
    delete n._pack_next, delete n._pack_prev;
  }
  function Cu(n, t, e, r) {
    var u = n.children;
    if (n.x = t += r * n.x, n.y = e += r * n.y, n.r *= r, u) for (var i = -1, a = u.length; ++i < a;) Cu(u[i], t, e, r);
  }
  function zu(n, t, e) {
    var r = n.r + e.r,
      u = t.x - n.x,
      i = t.y - n.y;
    if (r && (u || i)) {
      var a = t.r + e.r,
        o = u * u + i * i;
      a *= a, r *= r;
      var l = .5 + (r - a) / (2 * o),
        c = Math.sqrt(Math.max(0, 2 * a * (r + o) - (r -= o) * r - a * a)) / (2 * o);
      e.x = n.x + l * u + c * i, e.y = n.y + l * i - c * u;
    } else e.x = n.x + r, e.y = n.y;
  }
  function Lu(n, t) {
    return n.parent == t.parent ? 1 : 2;
  }
  function qu(n) {
    var t = n.children;
    return t.length ? t[0] : n.t;
  }
  function Tu(n) {
    var t,
      e = n.children;
    return (t = e.length) ? e[t - 1] : n.t;
  }
  function Ru(n, t, e) {
    var r = e / (t.i - n.i);
    t.c -= r, t.s += e, n.c += r, t.z += e, t.m += e;
  }
  function Du(n) {
    for (var t, e = 0, r = 0, u = n.children, i = u.length; --i >= 0;) t = u[i], t.z += e, t.m += e, e += t.s + (r += t.c);
  }
  function Pu(n, t, e) {
    return n.a.parent === t.parent ? n.a : e;
  }
  function ju(n) {
    return 1 + oa.max(n, function (n) {
      return n.y;
    });
  }
  function Uu(n) {
    return n.reduce(function (n, t) {
      return n + t.x;
    }, 0) / n.length;
  }
  function Fu(n) {
    var t = n.children;
    return t && t.length ? Fu(t[0]) : n;
  }
  function Hu(n) {
    var t,
      e = n.children;
    return e && (t = e.length) ? Hu(e[t - 1]) : n;
  }
  function Ou(n) {
    return {
      x: n.x,
      y: n.y,
      dx: n.dx,
      dy: n.dy
    };
  }
  function Iu(n, t) {
    var e = n.x + t[3],
      r = n.y + t[0],
      u = n.dx - t[1] - t[3],
      i = n.dy - t[0] - t[2];
    return 0 > u && (e += u / 2, u = 0), 0 > i && (r += i / 2, i = 0), {
      x: e,
      y: r,
      dx: u,
      dy: i
    };
  }
  function Yu(n) {
    var t = n[0],
      e = n[n.length - 1];
    return e > t ? [t, e] : [e, t];
  }
  function Zu(n) {
    return n.rangeExtent ? n.rangeExtent() : Yu(n.range());
  }
  function Vu(n, t, e, r) {
    var u = e(n[0], n[1]),
      i = r(t[0], t[1]);
    return function (n) {
      return i(u(n));
    };
  }
  function Xu(n, t) {
    var e,
      r = 0,
      u = n.length - 1,
      i = n[r],
      a = n[u];
    return i > a && (e = r, r = u, u = e, e = i, i = a, a = e), n[r] = t.floor(i), n[u] = t.ceil(a), n;
  }
  function $u(n) {
    return n ? {
      floor: function floor(t) {
        return Math.floor(t / n) * n;
      },
      ceil: function ceil(t) {
        return Math.ceil(t / n) * n;
      }
    } : wl;
  }
  function Bu(n, t, e, r) {
    var u = [],
      i = [],
      a = 0,
      o = Math.min(n.length, t.length) - 1;
    for (n[o] < n[0] && (n = n.slice().reverse(), t = t.slice().reverse()); ++a <= o;) u.push(e(n[a - 1], n[a])), i.push(r(t[a - 1], t[a]));
    return function (t) {
      var e = oa.bisect(n, t, 1, o) - 1;
      return i[e](u[e](t));
    };
  }
  function Wu(n, t, e, r) {
    function u() {
      var u = Math.min(n.length, t.length) > 2 ? Bu : Vu,
        l = r ? Wr : Br;
      return a = u(n, t, l, e), o = u(t, n, l, Mr), i;
    }
    function i(n) {
      return a(n);
    }
    var a, o;
    return i.invert = function (n) {
      return o(n);
    }, i.domain = function (t) {
      return arguments.length ? (n = t.map(Number), u()) : n;
    }, i.range = function (n) {
      return arguments.length ? (t = n, u()) : t;
    }, i.rangeRound = function (n) {
      return i.range(n).interpolate(jr);
    }, i.clamp = function (n) {
      return arguments.length ? (r = n, u()) : r;
    }, i.interpolate = function (n) {
      return arguments.length ? (e = n, u()) : e;
    }, i.ticks = function (t) {
      return Qu(n, t);
    }, i.tickFormat = function (t, e) {
      return ni(n, t, e);
    }, i.nice = function (t) {
      return Gu(n, t), u();
    }, i.copy = function () {
      return Wu(n, t, e, r);
    }, u();
  }
  function Ju(n, t) {
    return oa.rebind(n, t, "range", "rangeRound", "interpolate", "clamp");
  }
  function Gu(n, t) {
    return Xu(n, $u(Ku(n, t)[2]));
  }
  function Ku(n, t) {
    null == t && (t = 10);
    var e = Yu(n),
      r = e[1] - e[0],
      u = Math.pow(10, Math.floor(Math.log(r / t) / Math.LN10)),
      i = t / r * u;
    return .15 >= i ? u *= 10 : .35 >= i ? u *= 5 : .75 >= i && (u *= 2), e[0] = Math.ceil(e[0] / u) * u, e[1] = Math.floor(e[1] / u) * u + .5 * u, e[2] = u, e;
  }
  function Qu(n, t) {
    return oa.range.apply(oa, Ku(n, t));
  }
  function ni(n, t, e) {
    var r = Ku(n, t);
    if (e) {
      var u = so.exec(e);
      if (u.shift(), "s" === u[8]) {
        var i = oa.formatPrefix(Math.max(Ma(r[0]), Ma(r[1])));
        return u[7] || (u[7] = "." + ti(i.scale(r[2]))), u[8] = "f", e = oa.format(u.join("")), function (n) {
          return e(i.scale(n)) + i.symbol;
        };
      }
      u[7] || (u[7] = "." + ei(u[8], r)), e = u.join("");
    } else e = ",." + ti(r[2]) + "f";
    return oa.format(e);
  }
  function ti(n) {
    return -Math.floor(Math.log(n) / Math.LN10 + .01);
  }
  function ei(n, t) {
    var e = ti(t[2]);
    return n in Sl ? Math.abs(e - ti(Math.max(Ma(t[0]), Ma(t[1])))) + +("e" !== n) : e - 2 * ("%" === n);
  }
  function ri(n, t, e, r) {
    function u(n) {
      return (e ? Math.log(0 > n ? 0 : n) : -Math.log(n > 0 ? 0 : -n)) / Math.log(t);
    }
    function i(n) {
      return e ? Math.pow(t, n) : -Math.pow(t, -n);
    }
    function a(t) {
      return n(u(t));
    }
    return a.invert = function (t) {
      return i(n.invert(t));
    }, a.domain = function (t) {
      return arguments.length ? (e = t[0] >= 0, n.domain((r = t.map(Number)).map(u)), a) : r;
    }, a.base = function (e) {
      return arguments.length ? (t = +e, n.domain(r.map(u)), a) : t;
    }, a.nice = function () {
      var t = Xu(r.map(u), e ? Math : Nl);
      return n.domain(t), r = t.map(i), a;
    }, a.ticks = function () {
      var n = Yu(r),
        a = [],
        o = n[0],
        l = n[1],
        c = Math.floor(u(o)),
        s = Math.ceil(u(l)),
        f = t % 1 ? 2 : t;
      if (isFinite(s - c)) {
        if (e) {
          for (; s > c; c++) for (var h = 1; f > h; h++) a.push(i(c) * h);
          a.push(i(c));
        } else for (a.push(i(c)); c++ < s;) for (var h = f - 1; h > 0; h--) a.push(i(c) * h);
        for (c = 0; a[c] < o; c++);
        for (s = a.length; a[s - 1] > l; s--);
        a = a.slice(c, s);
      }
      return a;
    }, a.tickFormat = function (n, t) {
      if (!arguments.length) return kl;
      arguments.length < 2 ? t = kl : "function" != typeof t && (t = oa.format(t));
      var r,
        o = Math.max(.1, n / a.ticks().length),
        l = e ? (r = 1e-12, Math.ceil) : (r = -1e-12, Math.floor);
      return function (n) {
        return n / i(l(u(n) + r)) <= o ? t(n) : "";
      };
    }, a.copy = function () {
      return ri(n.copy(), t, e, r);
    }, Ju(a, n);
  }
  function ui(n, t, e) {
    function r(t) {
      return n(u(t));
    }
    var u = ii(t),
      i = ii(1 / t);
    return r.invert = function (t) {
      return i(n.invert(t));
    }, r.domain = function (t) {
      return arguments.length ? (n.domain((e = t.map(Number)).map(u)), r) : e;
    }, r.ticks = function (n) {
      return Qu(e, n);
    }, r.tickFormat = function (n, t) {
      return ni(e, n, t);
    }, r.nice = function (n) {
      return r.domain(Gu(e, n));
    }, r.exponent = function (a) {
      return arguments.length ? (u = ii(t = a), i = ii(1 / t), n.domain(e.map(u)), r) : t;
    }, r.copy = function () {
      return ui(n.copy(), t, e);
    }, Ju(r, n);
  }
  function ii(n) {
    return function (t) {
      return 0 > t ? -Math.pow(-t, n) : Math.pow(t, n);
    };
  }
  function ai(n, t) {
    function e(e) {
      return i[((u.get(e) || ("range" === t.t ? u.set(e, n.push(e)) : NaN)) - 1) % i.length];
    }
    function r(t, e) {
      return oa.range(n.length).map(function (n) {
        return t + e * n;
      });
    }
    var u, i, a;
    return e.domain = function (r) {
      if (!arguments.length) return n;
      n = [], u = new c();
      for (var i, a = -1, o = r.length; ++a < o;) u.has(i = r[a]) || u.set(i, n.push(i));
      return e[t.t].apply(e, t.a);
    }, e.range = function (n) {
      return arguments.length ? (i = n, a = 0, t = {
        t: "range",
        a: arguments
      }, e) : i;
    }, e.rangePoints = function (u, o) {
      arguments.length < 2 && (o = 0);
      var l = u[0],
        c = u[1],
        s = n.length < 2 ? (l = (l + c) / 2, 0) : (c - l) / (n.length - 1 + o);
      return i = r(l + s * o / 2, s), a = 0, t = {
        t: "rangePoints",
        a: arguments
      }, e;
    }, e.rangeRoundPoints = function (u, o) {
      arguments.length < 2 && (o = 0);
      var l = u[0],
        c = u[1],
        s = n.length < 2 ? (l = c = Math.round((l + c) / 2), 0) : (c - l) / (n.length - 1 + o) | 0;
      return i = r(l + Math.round(s * o / 2 + (c - l - (n.length - 1 + o) * s) / 2), s), a = 0, t = {
        t: "rangeRoundPoints",
        a: arguments
      }, e;
    }, e.rangeBands = function (u, o, l) {
      arguments.length < 2 && (o = 0), arguments.length < 3 && (l = o);
      var c = u[1] < u[0],
        s = u[c - 0],
        f = u[1 - c],
        h = (f - s) / (n.length - o + 2 * l);
      return i = r(s + h * l, h), c && i.reverse(), a = h * (1 - o), t = {
        t: "rangeBands",
        a: arguments
      }, e;
    }, e.rangeRoundBands = function (u, o, l) {
      arguments.length < 2 && (o = 0), arguments.length < 3 && (l = o);
      var c = u[1] < u[0],
        s = u[c - 0],
        f = u[1 - c],
        h = Math.floor((f - s) / (n.length - o + 2 * l));
      return i = r(s + Math.round((f - s - (n.length - o) * h) / 2), h), c && i.reverse(), a = Math.round(h * (1 - o)), t = {
        t: "rangeRoundBands",
        a: arguments
      }, e;
    }, e.rangeBand = function () {
      return a;
    }, e.rangeExtent = function () {
      return Yu(t.a[0]);
    }, e.copy = function () {
      return ai(n, t);
    }, e.domain(n);
  }
  function oi(n, t) {
    function i() {
      var e = 0,
        r = t.length;
      for (o = []; ++e < r;) o[e - 1] = oa.quantile(n, e / r);
      return a;
    }
    function a(n) {
      return isNaN(n = +n) ? void 0 : t[oa.bisect(o, n)];
    }
    var o;
    return a.domain = function (t) {
      return arguments.length ? (n = t.map(r).filter(u).sort(e), i()) : n;
    }, a.range = function (n) {
      return arguments.length ? (t = n, i()) : t;
    }, a.quantiles = function () {
      return o;
    }, a.invertExtent = function (e) {
      return e = t.indexOf(e), 0 > e ? [NaN, NaN] : [e > 0 ? o[e - 1] : n[0], e < o.length ? o[e] : n[n.length - 1]];
    }, a.copy = function () {
      return oi(n, t);
    }, i();
  }
  function li(n, t, e) {
    function r(t) {
      return e[Math.max(0, Math.min(a, Math.floor(i * (t - n))))];
    }
    function u() {
      return i = e.length / (t - n), a = e.length - 1, r;
    }
    var i, a;
    return r.domain = function (e) {
      return arguments.length ? (n = +e[0], t = +e[e.length - 1], u()) : [n, t];
    }, r.range = function (n) {
      return arguments.length ? (e = n, u()) : e;
    }, r.invertExtent = function (t) {
      return t = e.indexOf(t), t = 0 > t ? NaN : t / i + n, [t, t + 1 / i];
    }, r.copy = function () {
      return li(n, t, e);
    }, u();
  }
  function ci(n, t) {
    function e(e) {
      return e >= e ? t[oa.bisect(n, e)] : void 0;
    }
    return e.domain = function (t) {
      return arguments.length ? (n = t, e) : n;
    }, e.range = function (n) {
      return arguments.length ? (t = n, e) : t;
    }, e.invertExtent = function (e) {
      return e = t.indexOf(e), [n[e - 1], n[e]];
    }, e.copy = function () {
      return ci(n, t);
    }, e;
  }
  function si(n) {
    function t(n) {
      return +n;
    }
    return t.invert = t, t.domain = t.range = function (e) {
      return arguments.length ? (n = e.map(t), t) : n;
    }, t.ticks = function (t) {
      return Qu(n, t);
    }, t.tickFormat = function (t, e) {
      return ni(n, t, e);
    }, t.copy = function () {
      return si(n);
    }, t;
  }
  function fi() {
    return 0;
  }
  function hi(n) {
    return n.innerRadius;
  }
  function gi(n) {
    return n.outerRadius;
  }
  function pi(n) {
    return n.startAngle;
  }
  function vi(n) {
    return n.endAngle;
  }
  function di(n) {
    return n && n.padAngle;
  }
  function mi(n, t, e, r) {
    return (n - e) * t - (t - r) * n > 0 ? 0 : 1;
  }
  function yi(n, t, e, r, u) {
    var i = n[0] - t[0],
      a = n[1] - t[1],
      o = (u ? r : -r) / Math.sqrt(i * i + a * a),
      l = o * a,
      c = -o * i,
      s = n[0] + l,
      f = n[1] + c,
      h = t[0] + l,
      g = t[1] + c,
      p = (s + h) / 2,
      v = (f + g) / 2,
      d = h - s,
      m = g - f,
      y = d * d + m * m,
      M = e - r,
      x = s * g - h * f,
      b = (0 > m ? -1 : 1) * Math.sqrt(Math.max(0, M * M * y - x * x)),
      _ = (x * m - d * b) / y,
      w = (-x * d - m * b) / y,
      S = (x * m + d * b) / y,
      k = (-x * d + m * b) / y,
      N = _ - p,
      E = w - v,
      A = S - p,
      C = k - v;
    return N * N + E * E > A * A + C * C && (_ = S, w = k), [[_ - l, w - c], [_ * e / M, w * e / M]];
  }
  function Mi(n) {
    function t(t) {
      function a() {
        c.push("M", i(n(s), o));
      }
      for (var l, c = [], s = [], f = -1, h = t.length, g = En(e), p = En(r); ++f < h;) u.call(this, l = t[f], f) ? s.push([+g.call(this, l, f), +p.call(this, l, f)]) : s.length && (a(), s = []);
      return s.length && a(), c.length ? c.join("") : null;
    }
    var e = Ce,
      r = ze,
      u = zt,
      i = xi,
      a = i.key,
      o = .7;
    return t.x = function (n) {
      return arguments.length ? (e = n, t) : e;
    }, t.y = function (n) {
      return arguments.length ? (r = n, t) : r;
    }, t.defined = function (n) {
      return arguments.length ? (u = n, t) : u;
    }, t.interpolate = function (n) {
      return arguments.length ? (a = "function" == typeof n ? i = n : (i = ql.get(n) || xi).key, t) : a;
    }, t.tension = function (n) {
      return arguments.length ? (o = n, t) : o;
    }, t;
  }
  function xi(n) {
    return n.length > 1 ? n.join("L") : n + "Z";
  }
  function bi(n) {
    return n.join("L") + "Z";
  }
  function _i(n) {
    for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("H", (r[0] + (r = n[t])[0]) / 2, "V", r[1]);
    return e > 1 && u.push("H", r[0]), u.join("");
  }
  function wi(n) {
    for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("V", (r = n[t])[1], "H", r[0]);
    return u.join("");
  }
  function Si(n) {
    for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("H", (r = n[t])[0], "V", r[1]);
    return u.join("");
  }
  function ki(n, t) {
    return n.length < 4 ? xi(n) : n[1] + Ai(n.slice(1, -1), Ci(n, t));
  }
  function Ni(n, t) {
    return n.length < 3 ? bi(n) : n[0] + Ai((n.push(n[0]), n), Ci([n[n.length - 2]].concat(n, [n[1]]), t));
  }
  function Ei(n, t) {
    return n.length < 3 ? xi(n) : n[0] + Ai(n, Ci(n, t));
  }
  function Ai(n, t) {
    if (t.length < 1 || n.length != t.length && n.length != t.length + 2) return xi(n);
    var e = n.length != t.length,
      r = "",
      u = n[0],
      i = n[1],
      a = t[0],
      o = a,
      l = 1;
    if (e && (r += "Q" + (i[0] - 2 * a[0] / 3) + "," + (i[1] - 2 * a[1] / 3) + "," + i[0] + "," + i[1], u = n[1], l = 2), t.length > 1) {
      o = t[1], i = n[l], l++, r += "C" + (u[0] + a[0]) + "," + (u[1] + a[1]) + "," + (i[0] - o[0]) + "," + (i[1] - o[1]) + "," + i[0] + "," + i[1];
      for (var c = 2; c < t.length; c++, l++) i = n[l], o = t[c], r += "S" + (i[0] - o[0]) + "," + (i[1] - o[1]) + "," + i[0] + "," + i[1];
    }
    if (e) {
      var s = n[l];
      r += "Q" + (i[0] + 2 * o[0] / 3) + "," + (i[1] + 2 * o[1] / 3) + "," + s[0] + "," + s[1];
    }
    return r;
  }
  function Ci(n, t) {
    for (var e, r = [], u = (1 - t) / 2, i = n[0], a = n[1], o = 1, l = n.length; ++o < l;) e = i, i = a, a = n[o], r.push([u * (a[0] - e[0]), u * (a[1] - e[1])]);
    return r;
  }
  function zi(n) {
    if (n.length < 3) return xi(n);
    var t = 1,
      e = n.length,
      r = n[0],
      u = r[0],
      i = r[1],
      a = [u, u, u, (r = n[1])[0]],
      o = [i, i, i, r[1]],
      l = [u, ",", i, "L", Ri(Dl, a), ",", Ri(Dl, o)];
    for (n.push(n[e - 1]); ++t <= e;) r = n[t], a.shift(), a.push(r[0]), o.shift(), o.push(r[1]), Di(l, a, o);
    return n.pop(), l.push("L", r), l.join("");
  }
  function Li(n) {
    if (n.length < 4) return xi(n);
    for (var t, e = [], r = -1, u = n.length, i = [0], a = [0]; ++r < 3;) t = n[r], i.push(t[0]), a.push(t[1]);
    for (e.push(Ri(Dl, i) + "," + Ri(Dl, a)), --r; ++r < u;) t = n[r], i.shift(), i.push(t[0]), a.shift(), a.push(t[1]), Di(e, i, a);
    return e.join("");
  }
  function qi(n) {
    for (var t, e, r = -1, u = n.length, i = u + 4, a = [], o = []; ++r < 4;) e = n[r % u], a.push(e[0]), o.push(e[1]);
    for (t = [Ri(Dl, a), ",", Ri(Dl, o)], --r; ++r < i;) e = n[r % u], a.shift(), a.push(e[0]), o.shift(), o.push(e[1]), Di(t, a, o);
    return t.join("");
  }
  function Ti(n, t) {
    var e = n.length - 1;
    if (e) for (var r, u, i = n[0][0], a = n[0][1], o = n[e][0] - i, l = n[e][1] - a, c = -1; ++c <= e;) r = n[c], u = c / e, r[0] = t * r[0] + (1 - t) * (i + u * o), r[1] = t * r[1] + (1 - t) * (a + u * l);
    return zi(n);
  }
  function Ri(n, t) {
    return n[0] * t[0] + n[1] * t[1] + n[2] * t[2] + n[3] * t[3];
  }
  function Di(n, t, e) {
    n.push("C", Ri(Tl, t), ",", Ri(Tl, e), ",", Ri(Rl, t), ",", Ri(Rl, e), ",", Ri(Dl, t), ",", Ri(Dl, e));
  }
  function Pi(n, t) {
    return (t[1] - n[1]) / (t[0] - n[0]);
  }
  function ji(n) {
    for (var t = 0, e = n.length - 1, r = [], u = n[0], i = n[1], a = r[0] = Pi(u, i); ++t < e;) r[t] = (a + (a = Pi(u = i, i = n[t + 1]))) / 2;
    return r[t] = a, r;
  }
  function Ui(n) {
    for (var t, e, r, u, i = [], a = ji(n), o = -1, l = n.length - 1; ++o < l;) t = Pi(n[o], n[o + 1]), Ma(t) < Da ? a[o] = a[o + 1] = 0 : (e = a[o] / t, r = a[o + 1] / t, u = e * e + r * r, u > 9 && (u = 3 * t / Math.sqrt(u), a[o] = u * e, a[o + 1] = u * r));
    for (o = -1; ++o <= l;) u = (n[Math.min(l, o + 1)][0] - n[Math.max(0, o - 1)][0]) / (6 * (1 + a[o] * a[o])), i.push([u || 0, a[o] * u || 0]);
    return i;
  }
  function Fi(n) {
    return n.length < 3 ? xi(n) : n[0] + Ai(n, Ui(n));
  }
  function Hi(n) {
    for (var t, e, r, u = -1, i = n.length; ++u < i;) t = n[u], e = t[0], r = t[1] - Ha, t[0] = e * Math.cos(r), t[1] = e * Math.sin(r);
    return n;
  }
  function Oi(n) {
    function t(t) {
      function l() {
        v.push("M", o(n(m), f), s, c(n(d.reverse()), f), "Z");
      }
      for (var h, g, p, v = [], d = [], m = [], y = -1, M = t.length, x = En(e), b = En(u), _ = e === r ? function () {
          return g;
        } : En(r), w = u === i ? function () {
          return p;
        } : En(i); ++y < M;) a.call(this, h = t[y], y) ? (d.push([g = +x.call(this, h, y), p = +b.call(this, h, y)]), m.push([+_.call(this, h, y), +w.call(this, h, y)])) : d.length && (l(), d = [], m = []);
      return d.length && l(), v.length ? v.join("") : null;
    }
    var e = Ce,
      r = Ce,
      u = 0,
      i = ze,
      a = zt,
      o = xi,
      l = o.key,
      c = o,
      s = "L",
      f = .7;
    return t.x = function (n) {
      return arguments.length ? (e = r = n, t) : r;
    }, t.x0 = function (n) {
      return arguments.length ? (e = n, t) : e;
    }, t.x1 = function (n) {
      return arguments.length ? (r = n, t) : r;
    }, t.y = function (n) {
      return arguments.length ? (u = i = n, t) : i;
    }, t.y0 = function (n) {
      return arguments.length ? (u = n, t) : u;
    }, t.y1 = function (n) {
      return arguments.length ? (i = n, t) : i;
    }, t.defined = function (n) {
      return arguments.length ? (a = n, t) : a;
    }, t.interpolate = function (n) {
      return arguments.length ? (l = "function" == typeof n ? o = n : (o = ql.get(n) || xi).key, c = o.reverse || o, s = o.closed ? "M" : "L", t) : l;
    }, t.tension = function (n) {
      return arguments.length ? (f = n, t) : f;
    }, t;
  }
  function Ii(n) {
    return n.radius;
  }
  function Yi(n) {
    return [n.x, n.y];
  }
  function Zi(n) {
    return function () {
      var t = n.apply(this, arguments),
        e = t[0],
        r = t[1] - Ha;
      return [e * Math.cos(r), e * Math.sin(r)];
    };
  }
  function Vi() {
    return 64;
  }
  function Xi() {
    return "circle";
  }
  function $i(n) {
    var t = Math.sqrt(n / ja);
    return "M0," + t + "A" + t + "," + t + " 0 1,1 0," + -t + "A" + t + "," + t + " 0 1,1 0," + t + "Z";
  }
  function Bi(n) {
    return function () {
      var t, e, r;
      (t = this[n]) && (r = t[e = t.active]) && (r.timer.c = null, r.timer.t = NaN, --t.count ? delete t[e] : delete this[n], t.active += .5, r.event && r.event.interrupt.call(this, this.__data__, r.index));
    };
  }
  function Wi(n, t, e) {
    return Sa(n, Il), n.namespace = t, n.id = e, n;
  }
  function Ji(n, t, e, r) {
    var u = n.id,
      i = n.namespace;
    return Y(n, "function" == typeof e ? function (n, a, o) {
      n[i][u].tween.set(t, r(e.call(n, n.__data__, a, o)));
    } : (e = r(e), function (n) {
      n[i][u].tween.set(t, e);
    }));
  }
  function Gi(n) {
    return null == n && (n = ""), function () {
      this.textContent = n;
    };
  }
  function Ki(n) {
    return null == n ? "__transition__" : "__transition_" + n + "__";
  }
  function Qi(n, t, e, r, u) {
    function i(n) {
      var t = v.delay;
      return s.t = t + l, n >= t ? a(n - t) : void (s.c = a);
    }
    function a(e) {
      var u = p.active,
        i = p[u];
      i && (i.timer.c = null, i.timer.t = NaN, --p.count, delete p[u], i.event && i.event.interrupt.call(n, n.__data__, i.index));
      for (var a in p) if (r > +a) {
        var c = p[a];
        c.timer.c = null, c.timer.t = NaN, --p.count, delete p[a];
      }
      s.c = o, qn(function () {
        return s.c && o(e || 1) && (s.c = null, s.t = NaN), 1;
      }, 0, l), p.active = r, v.event && v.event.start.call(n, n.__data__, t), g = [], v.tween.forEach(function (e, r) {
        (r = r.call(n, n.__data__, t)) && g.push(r);
      }), h = v.ease, f = v.duration;
    }
    function o(u) {
      for (var i = u / f, a = h(i), o = g.length; o > 0;) g[--o].call(n, a);
      return i >= 1 ? (v.event && v.event.end.call(n, n.__data__, t), --p.count ? delete p[r] : delete n[e], 1) : void 0;
    }
    var l,
      s,
      f,
      h,
      g,
      p = n[e] || (n[e] = {
        active: 0,
        count: 0
      }),
      v = p[r];
    v || (l = u.time, s = qn(i, 0, l), v = p[r] = {
      tween: new c(),
      time: l,
      timer: s,
      delay: u.delay,
      duration: u.duration,
      ease: u.ease,
      index: t
    }, u = null, ++p.count);
  }
  function na(n, t, e) {
    n.attr("transform", function (n) {
      var r = t(n);
      return "translate(" + (isFinite(r) ? r : e(n)) + ",0)";
    });
  }
  function ta(n, t, e) {
    n.attr("transform", function (n) {
      var r = t(n);
      return "translate(0," + (isFinite(r) ? r : e(n)) + ")";
    });
  }
  function ea(n) {
    return n.toISOString();
  }
  function ra(n, t, e) {
    function r(t) {
      return n(t);
    }
    function u(n, e) {
      var r = n[1] - n[0],
        u = r / e,
        i = oa.bisect(Gl, u);
      return i == Gl.length ? [t.year, Ku(n.map(function (n) {
        return n / 31536e6;
      }), e)[2]] : i ? t[u / Gl[i - 1] < Gl[i] / u ? i - 1 : i] : [nc, Ku(n, e)[2]];
    }
    return r.invert = function (t) {
      return ua(n.invert(t));
    }, r.domain = function (t) {
      return arguments.length ? (n.domain(t), r) : n.domain().map(ua);
    }, r.nice = function (n, t) {
      function e(e) {
        return !isNaN(e) && !n.range(e, ua(+e + 1), t).length;
      }
      var i = r.domain(),
        a = Yu(i),
        o = null == n ? u(a, 10) : "number" == typeof n && u(a, n);
      return o && (n = o[0], t = o[1]), r.domain(Xu(i, t > 1 ? {
        floor: function floor(t) {
          for (; e(t = n.floor(t));) t = ua(t - 1);
          return t;
        },
        ceil: function ceil(t) {
          for (; e(t = n.ceil(t));) t = ua(+t + 1);
          return t;
        }
      } : n));
    }, r.ticks = function (n, t) {
      var e = Yu(r.domain()),
        i = null == n ? u(e, 10) : "number" == typeof n ? u(e, n) : !n.range && [{
          range: n
        }, t];
      return i && (n = i[0], t = i[1]), n.range(e[0], ua(+e[1] + 1), 1 > t ? 1 : t);
    }, r.tickFormat = function () {
      return e;
    }, r.copy = function () {
      return ra(n.copy(), t, e);
    }, Ju(r, n);
  }
  function ua(n) {
    return new Date(n);
  }
  function ia(n) {
    return JSON.parse(n.responseText);
  }
  function aa(n) {
    var t = sa.createRange();
    return t.selectNode(sa.body), t.createContextualFragment(n.responseText);
  }
  var oa = {
      version: "3.5.10"
    },
    la = [].slice,
    ca = function ca(n) {
      return la.call(n);
    },
    sa = this.document;
  if (sa) try {
    ca(sa.documentElement.childNodes)[0].nodeType;
  } catch (fa) {
    ca = function ca(n) {
      for (var t = n.length, e = new Array(t); t--;) e[t] = n[t];
      return e;
    };
  }
  if (Date.now || (Date.now = function () {
    return +new Date();
  }), sa) try {
    sa.createElement("DIV").style.setProperty("opacity", 0, "");
  } catch (ha) {
    var ga = this.Element.prototype,
      pa = ga.setAttribute,
      va = ga.setAttributeNS,
      da = this.CSSStyleDeclaration.prototype,
      ma = da.setProperty;
    ga.setAttribute = function (n, t) {
      pa.call(this, n, t + "");
    }, ga.setAttributeNS = function (n, t, e) {
      va.call(this, n, t, e + "");
    }, da.setProperty = function (n, t, e) {
      ma.call(this, n, t + "", e);
    };
  }
  oa.ascending = e, oa.descending = function (n, t) {
    return n > t ? -1 : t > n ? 1 : t >= n ? 0 : NaN;
  }, oa.min = function (n, t) {
    var e,
      r,
      u = -1,
      i = n.length;
    if (1 === arguments.length) {
      for (; ++u < i;) if (null != (r = n[u]) && r >= r) {
        e = r;
        break;
      }
      for (; ++u < i;) null != (r = n[u]) && e > r && (e = r);
    } else {
      for (; ++u < i;) if (null != (r = t.call(n, n[u], u)) && r >= r) {
        e = r;
        break;
      }
      for (; ++u < i;) null != (r = t.call(n, n[u], u)) && e > r && (e = r);
    }
    return e;
  }, oa.max = function (n, t) {
    var e,
      r,
      u = -1,
      i = n.length;
    if (1 === arguments.length) {
      for (; ++u < i;) if (null != (r = n[u]) && r >= r) {
        e = r;
        break;
      }
      for (; ++u < i;) null != (r = n[u]) && r > e && (e = r);
    } else {
      for (; ++u < i;) if (null != (r = t.call(n, n[u], u)) && r >= r) {
        e = r;
        break;
      }
      for (; ++u < i;) null != (r = t.call(n, n[u], u)) && r > e && (e = r);
    }
    return e;
  }, oa.extent = function (n, t) {
    var e,
      r,
      u,
      i = -1,
      a = n.length;
    if (1 === arguments.length) {
      for (; ++i < a;) if (null != (r = n[i]) && r >= r) {
        e = u = r;
        break;
      }
      for (; ++i < a;) null != (r = n[i]) && (e > r && (e = r), r > u && (u = r));
    } else {
      for (; ++i < a;) if (null != (r = t.call(n, n[i], i)) && r >= r) {
        e = u = r;
        break;
      }
      for (; ++i < a;) null != (r = t.call(n, n[i], i)) && (e > r && (e = r), r > u && (u = r));
    }
    return [e, u];
  }, oa.sum = function (n, t) {
    var e,
      r = 0,
      i = n.length,
      a = -1;
    if (1 === arguments.length) for (; ++a < i;) u(e = +n[a]) && (r += e);else for (; ++a < i;) u(e = +t.call(n, n[a], a)) && (r += e);
    return r;
  }, oa.mean = function (n, t) {
    var e,
      i = 0,
      a = n.length,
      o = -1,
      l = a;
    if (1 === arguments.length) for (; ++o < a;) u(e = r(n[o])) ? i += e : --l;else for (; ++o < a;) u(e = r(t.call(n, n[o], o))) ? i += e : --l;
    return l ? i / l : void 0;
  }, oa.quantile = function (n, t) {
    var e = (n.length - 1) * t + 1,
      r = Math.floor(e),
      u = +n[r - 1],
      i = e - r;
    return i ? u + i * (n[r] - u) : u;
  }, oa.median = function (n, t) {
    var i,
      a = [],
      o = n.length,
      l = -1;
    if (1 === arguments.length) for (; ++l < o;) u(i = r(n[l])) && a.push(i);else for (; ++l < o;) u(i = r(t.call(n, n[l], l))) && a.push(i);
    return a.length ? oa.quantile(a.sort(e), .5) : void 0;
  }, oa.variance = function (n, t) {
    var e,
      i,
      a = n.length,
      o = 0,
      l = 0,
      c = -1,
      s = 0;
    if (1 === arguments.length) for (; ++c < a;) u(e = r(n[c])) && (i = e - o, o += i / ++s, l += i * (e - o));else for (; ++c < a;) u(e = r(t.call(n, n[c], c))) && (i = e - o, o += i / ++s, l += i * (e - o));
    return s > 1 ? l / (s - 1) : void 0;
  }, oa.deviation = function () {
    var n = oa.variance.apply(this, arguments);
    return n ? Math.sqrt(n) : n;
  };
  var ya = i(e);
  oa.bisectLeft = ya.left, oa.bisect = oa.bisectRight = ya.right, oa.bisector = function (n) {
    return i(1 === n.length ? function (t, r) {
      return e(n(t), r);
    } : n);
  }, oa.shuffle = function (n, t, e) {
    (i = arguments.length) < 3 && (e = n.length, 2 > i && (t = 0));
    for (var r, u, i = e - t; i;) u = Math.random() * i-- | 0, r = n[i + t], n[i + t] = n[u + t], n[u + t] = r;
    return n;
  }, oa.permute = function (n, t) {
    for (var e = t.length, r = new Array(e); e--;) r[e] = n[t[e]];
    return r;
  }, oa.pairs = function (n) {
    for (var t, e = 0, r = n.length - 1, u = n[0], i = new Array(0 > r ? 0 : r); r > e;) i[e] = [t = u, u = n[++e]];
    return i;
  }, oa.zip = function () {
    if (!(r = arguments.length)) return [];
    for (var n = -1, t = oa.min(arguments, a), e = new Array(t); ++n < t;) for (var r, u = -1, i = e[n] = new Array(r); ++u < r;) i[u] = arguments[u][n];
    return e;
  }, oa.transpose = function (n) {
    return oa.zip.apply(oa, n);
  }, oa.keys = function (n) {
    var t = [];
    for (var e in n) t.push(e);
    return t;
  }, oa.values = function (n) {
    var t = [];
    for (var e in n) t.push(n[e]);
    return t;
  }, oa.entries = function (n) {
    var t = [];
    for (var e in n) t.push({
      key: e,
      value: n[e]
    });
    return t;
  }, oa.merge = function (n) {
    for (var t, e, r, u = n.length, i = -1, a = 0; ++i < u;) a += n[i].length;
    for (e = new Array(a); --u >= 0;) for (r = n[u], t = r.length; --t >= 0;) e[--a] = r[t];
    return e;
  };
  var Ma = Math.abs;
  oa.range = function (n, t, e) {
    if (arguments.length < 3 && (e = 1, arguments.length < 2 && (t = n, n = 0)), (t - n) / e === 1 / 0) throw new Error("infinite range");
    var r,
      u = [],
      i = o(Ma(e)),
      a = -1;
    if (n *= i, t *= i, e *= i, 0 > e) for (; (r = n + e * ++a) > t;) u.push(r / i);else for (; (r = n + e * ++a) < t;) u.push(r / i);
    return u;
  }, oa.map = function (n, t) {
    var e = new c();
    if (n instanceof c) n.forEach(function (n, t) {
      e.set(n, t);
    });else if (Array.isArray(n)) {
      var r,
        u = -1,
        i = n.length;
      if (1 === arguments.length) for (; ++u < i;) e.set(u, n[u]);else for (; ++u < i;) e.set(t.call(n, r = n[u], u), r);
    } else for (var a in n) e.set(a, n[a]);
    return e;
  };
  var xa = "__proto__",
    ba = "\x00";
  l(c, {
    has: h,
    get: function get(n) {
      return this._[s(n)];
    },
    set: function set(n, t) {
      return this._[s(n)] = t;
    },
    remove: g,
    keys: p,
    values: function values() {
      var n = [];
      for (var t in this._) n.push(this._[t]);
      return n;
    },
    entries: function entries() {
      var n = [];
      for (var t in this._) n.push({
        key: f(t),
        value: this._[t]
      });
      return n;
    },
    size: v,
    empty: d,
    forEach: function forEach(n) {
      for (var t in this._) n.call(this, f(t), this._[t]);
    }
  }), oa.nest = function () {
    function n(t, a, o) {
      if (o >= i.length) return r ? r.call(u, a) : e ? a.sort(e) : a;
      for (var l, s, f, h, g = -1, p = a.length, v = i[o++], d = new c(); ++g < p;) (h = d.get(l = v(s = a[g]))) ? h.push(s) : d.set(l, [s]);
      return t ? (s = t(), f = function f(e, r) {
        s.set(e, n(t, r, o));
      }) : (s = {}, f = function f(e, r) {
        s[e] = n(t, r, o);
      }), d.forEach(f), s;
    }
    function t(n, e) {
      if (e >= i.length) return n;
      var r = [],
        u = a[e++];
      return n.forEach(function (n, u) {
        r.push({
          key: n,
          values: t(u, e)
        });
      }), u ? r.sort(function (n, t) {
        return u(n.key, t.key);
      }) : r;
    }
    var e,
      r,
      u = {},
      i = [],
      a = [];
    return u.map = function (t, e) {
      return n(e, t, 0);
    }, u.entries = function (e) {
      return t(n(oa.map, e, 0), 0);
    }, u.key = function (n) {
      return i.push(n), u;
    }, u.sortKeys = function (n) {
      return a[i.length - 1] = n, u;
    }, u.sortValues = function (n) {
      return e = n, u;
    }, u.rollup = function (n) {
      return r = n, u;
    }, u;
  }, oa.set = function (n) {
    var t = new m();
    if (n) for (var e = 0, r = n.length; r > e; ++e) t.add(n[e]);
    return t;
  }, l(m, {
    has: h,
    add: function add(n) {
      return this._[s(n += "")] = !0, n;
    },
    remove: g,
    values: p,
    size: v,
    empty: d,
    forEach: function forEach(n) {
      for (var t in this._) n.call(this, f(t));
    }
  }), oa.behavior = {}, oa.rebind = function (n, t) {
    for (var e, r = 1, u = arguments.length; ++r < u;) n[e = arguments[r]] = M(n, t, t[e]);
    return n;
  };
  var _a = ["webkit", "ms", "moz", "Moz", "o", "O"];
  oa.dispatch = function () {
    for (var n = new _(), t = -1, e = arguments.length; ++t < e;) n[arguments[t]] = w(n);
    return n;
  }, _.prototype.on = function (n, t) {
    var e = n.indexOf("."),
      r = "";
    if (e >= 0 && (r = n.slice(e + 1), n = n.slice(0, e)), n) return arguments.length < 2 ? this[n].on(r) : this[n].on(r, t);
    if (2 === arguments.length) {
      if (null == t) for (n in this) this.hasOwnProperty(n) && this[n].on(r, null);
      return this;
    }
  }, oa.event = null, oa.requote = function (n) {
    return n.replace(wa, "\\$&");
  };
  var wa = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,
    Sa = {}.__proto__ ? function (n, t) {
      n.__proto__ = t;
    } : function (n, t) {
      for (var e in t) n[e] = t[e];
    },
    ka = function ka(n, t) {
      return t.querySelector(n);
    },
    Na = function Na(n, t) {
      return t.querySelectorAll(n);
    },
    _Ea = function Ea(n, t) {
      var e = n.matches || n[x(n, "matchesSelector")];
      return (_Ea = function Ea(n, t) {
        return e.call(n, t);
      })(n, t);
    };
  "function" == typeof Sizzle && (ka = function ka(n, t) {
    return Sizzle(n, t)[0] || null;
  }, Na = Sizzle, _Ea = Sizzle.matchesSelector), oa.selection = function () {
    return oa.select(sa.documentElement);
  };
  var Aa = oa.selection.prototype = [];
  Aa.select = function (n) {
    var t,
      e,
      r,
      u,
      i = [];
    n = A(n);
    for (var a = -1, o = this.length; ++a < o;) {
      i.push(t = []), t.parentNode = (r = this[a]).parentNode;
      for (var l = -1, c = r.length; ++l < c;) (u = r[l]) ? (t.push(e = n.call(u, u.__data__, l, a)), e && "__data__" in u && (e.__data__ = u.__data__)) : t.push(null);
    }
    return E(i);
  }, Aa.selectAll = function (n) {
    var t,
      e,
      r = [];
    n = C(n);
    for (var u = -1, i = this.length; ++u < i;) for (var a = this[u], o = -1, l = a.length; ++o < l;) (e = a[o]) && (r.push(t = ca(n.call(e, e.__data__, o, u))), t.parentNode = e);
    return E(r);
  };
  var Ca = {
    svg: "http://www.w3.org/2000/svg",
    xhtml: "http://www.w3.org/1999/xhtml",
    xlink: "http://www.w3.org/1999/xlink",
    xml: "http://www.w3.org/XML/1998/namespace",
    xmlns: "http://www.w3.org/2000/xmlns/"
  };
  oa.ns = {
    prefix: Ca,
    qualify: function qualify(n) {
      var t = n.indexOf(":"),
        e = n;
      return t >= 0 && "xmlns" !== (e = n.slice(0, t)) && (n = n.slice(t + 1)), Ca.hasOwnProperty(e) ? {
        space: Ca[e],
        local: n
      } : n;
    }
  }, Aa.attr = function (n, t) {
    if (arguments.length < 2) {
      if ("string" == typeof n) {
        var e = this.node();
        return n = oa.ns.qualify(n), n.local ? e.getAttributeNS(n.space, n.local) : e.getAttribute(n);
      }
      for (t in n) this.each(z(t, n[t]));
      return this;
    }
    return this.each(z(n, t));
  }, Aa.classed = function (n, t) {
    if (arguments.length < 2) {
      if ("string" == typeof n) {
        var e = this.node(),
          r = (n = T(n)).length,
          u = -1;
        if (t = e.classList) {
          for (; ++u < r;) if (!t.contains(n[u])) return !1;
        } else for (t = e.getAttribute("class"); ++u < r;) if (!q(n[u]).test(t)) return !1;
        return !0;
      }
      for (t in n) this.each(R(t, n[t]));
      return this;
    }
    return this.each(R(n, t));
  }, Aa.style = function (n, e, r) {
    var u = arguments.length;
    if (3 > u) {
      if ("string" != typeof n) {
        2 > u && (e = "");
        for (r in n) this.each(P(r, n[r], e));
        return this;
      }
      if (2 > u) {
        var i = this.node();
        return t(i).getComputedStyle(i, null).getPropertyValue(n);
      }
      r = "";
    }
    return this.each(P(n, e, r));
  }, Aa.property = function (n, t) {
    if (arguments.length < 2) {
      if ("string" == typeof n) return this.node()[n];
      for (t in n) this.each(j(t, n[t]));
      return this;
    }
    return this.each(j(n, t));
  }, Aa.text = function (n) {
    return arguments.length ? this.each("function" == typeof n ? function () {
      var t = n.apply(this, arguments);
      this.textContent = null == t ? "" : t;
    } : null == n ? function () {
      this.textContent = "";
    } : function () {
      this.textContent = n;
    }) : this.node().textContent;
  }, Aa.html = function (n) {
    return arguments.length ? this.each("function" == typeof n ? function () {
      var t = n.apply(this, arguments);
      this.innerHTML = null == t ? "" : t;
    } : null == n ? function () {
      this.innerHTML = "";
    } : function () {
      this.innerHTML = n;
    }) : this.node().innerHTML;
  }, Aa.append = function (n) {
    return n = U(n), this.select(function () {
      return this.appendChild(n.apply(this, arguments));
    });
  }, Aa.insert = function (n, t) {
    return n = U(n), t = A(t), this.select(function () {
      return this.insertBefore(n.apply(this, arguments), t.apply(this, arguments) || null);
    });
  }, Aa.remove = function () {
    return this.each(F);
  }, Aa.data = function (n, t) {
    function e(n, e) {
      var r,
        u,
        i,
        a = n.length,
        f = e.length,
        h = Math.min(a, f),
        g = new Array(f),
        p = new Array(f),
        v = new Array(a);
      if (t) {
        var d,
          m = new c(),
          y = new Array(a);
        for (r = -1; ++r < a;) (u = n[r]) && (m.has(d = t.call(u, u.__data__, r)) ? v[r] = u : m.set(d, u), y[r] = d);
        for (r = -1; ++r < f;) (u = m.get(d = t.call(e, i = e[r], r))) ? u !== !0 && (g[r] = u, u.__data__ = i) : p[r] = H(i), m.set(d, !0);
        for (r = -1; ++r < a;) r in y && m.get(y[r]) !== !0 && (v[r] = n[r]);
      } else {
        for (r = -1; ++r < h;) u = n[r], i = e[r], u ? (u.__data__ = i, g[r] = u) : p[r] = H(i);
        for (; f > r; ++r) p[r] = H(e[r]);
        for (; a > r; ++r) v[r] = n[r];
      }
      p.update = g, p.parentNode = g.parentNode = v.parentNode = n.parentNode, o.push(p), l.push(g), s.push(v);
    }
    var r,
      u,
      i = -1,
      a = this.length;
    if (!arguments.length) {
      for (n = new Array(a = (r = this[0]).length); ++i < a;) (u = r[i]) && (n[i] = u.__data__);
      return n;
    }
    var o = Z([]),
      l = E([]),
      s = E([]);
    if ("function" == typeof n) for (; ++i < a;) e(r = this[i], n.call(r, r.parentNode.__data__, i));else for (; ++i < a;) e(r = this[i], n);
    return l.enter = function () {
      return o;
    }, l.exit = function () {
      return s;
    }, l;
  }, Aa.datum = function (n) {
    return arguments.length ? this.property("__data__", n) : this.property("__data__");
  }, Aa.filter = function (n) {
    var t,
      e,
      r,
      u = [];
    "function" != typeof n && (n = O(n));
    for (var i = 0, a = this.length; a > i; i++) {
      u.push(t = []), t.parentNode = (e = this[i]).parentNode;
      for (var o = 0, l = e.length; l > o; o++) (r = e[o]) && n.call(r, r.__data__, o, i) && t.push(r);
    }
    return E(u);
  }, Aa.order = function () {
    for (var n = -1, t = this.length; ++n < t;) for (var e, r = this[n], u = r.length - 1, i = r[u]; --u >= 0;) (e = r[u]) && (i && i !== e.nextSibling && i.parentNode.insertBefore(e, i), i = e);
    return this;
  }, Aa.sort = function (n) {
    n = I.apply(this, arguments);
    for (var t = -1, e = this.length; ++t < e;) this[t].sort(n);
    return this.order();
  }, Aa.each = function (n) {
    return Y(this, function (t, e, r) {
      n.call(t, t.__data__, e, r);
    });
  }, Aa.call = function (n) {
    var t = ca(arguments);
    return n.apply(t[0] = this, t), this;
  }, Aa.empty = function () {
    return !this.node();
  }, Aa.node = function () {
    for (var n = 0, t = this.length; t > n; n++) for (var e = this[n], r = 0, u = e.length; u > r; r++) {
      var i = e[r];
      if (i) return i;
    }
    return null;
  }, Aa.size = function () {
    var n = 0;
    return Y(this, function () {
      ++n;
    }), n;
  };
  var za = [];
  oa.selection.enter = Z, oa.selection.enter.prototype = za, za.append = Aa.append, za.empty = Aa.empty, za.node = Aa.node, za.call = Aa.call, za.size = Aa.size, za.select = function (n) {
    for (var t, e, r, u, i, a = [], o = -1, l = this.length; ++o < l;) {
      r = (u = this[o]).update, a.push(t = []), t.parentNode = u.parentNode;
      for (var c = -1, s = u.length; ++c < s;) (i = u[c]) ? (t.push(r[c] = e = n.call(u.parentNode, i.__data__, c, o)), e.__data__ = i.__data__) : t.push(null);
    }
    return E(a);
  }, za.insert = function (n, t) {
    return arguments.length < 2 && (t = V(this)), Aa.insert.call(this, n, t);
  }, oa.select = function (t) {
    var e;
    return "string" == typeof t ? (e = [ka(t, sa)], e.parentNode = sa.documentElement) : (e = [t], e.parentNode = n(t)), E([e]);
  }, oa.selectAll = function (n) {
    var t;
    return "string" == typeof n ? (t = ca(Na(n, sa)), t.parentNode = sa.documentElement) : (t = ca(n), t.parentNode = null), E([t]);
  }, Aa.on = function (n, t, e) {
    var r = arguments.length;
    if (3 > r) {
      if ("string" != typeof n) {
        2 > r && (t = !1);
        for (e in n) this.each(X(e, n[e], t));
        return this;
      }
      if (2 > r) return (r = this.node()["__on" + n]) && r._;
      e = !1;
    }
    return this.each(X(n, t, e));
  };
  var La = oa.map({
    mouseenter: "mouseover",
    mouseleave: "mouseout"
  });
  sa && La.forEach(function (n) {
    "on" + n in sa && La.remove(n);
  });
  var qa,
    Ta = 0;
  oa.mouse = function (n) {
    return J(n, k());
  };
  var Ra = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
  oa.touch = function (n, t, e) {
    if (arguments.length < 3 && (e = t, t = k().changedTouches), t) for (var r, u = 0, i = t.length; i > u; ++u) if ((r = t[u]).identifier === e) return J(n, r);
  }, oa.behavior.drag = function () {
    function n() {
      this.on("mousedown.drag", i).on("touchstart.drag", a);
    }
    function e(n, t, e, i, a) {
      return function () {
        function o() {
          var n,
            e,
            r = t(h, v);
          r && (n = r[0] - M[0], e = r[1] - M[1], p |= n | e, M = r, g({
            type: "drag",
            x: r[0] + c[0],
            y: r[1] + c[1],
            dx: n,
            dy: e
          }));
        }
        function l() {
          t(h, v) && (m.on(i + d, null).on(a + d, null), y(p), g({
            type: "dragend"
          }));
        }
        var c,
          s = this,
          f = oa.event.target,
          h = s.parentNode,
          g = r.of(s, arguments),
          p = 0,
          v = n(),
          d = ".drag" + (null == v ? "" : "-" + v),
          m = oa.select(e(f)).on(i + d, o).on(a + d, l),
          y = W(f),
          M = t(h, v);
        u ? (c = u.apply(s, arguments), c = [c.x - M[0], c.y - M[1]]) : c = [0, 0], g({
          type: "dragstart"
        });
      };
    }
    var r = N(n, "drag", "dragstart", "dragend"),
      u = null,
      i = e(b, oa.mouse, t, "mousemove", "mouseup"),
      a = e(G, oa.touch, y, "touchmove", "touchend");
    return n.origin = function (t) {
      return arguments.length ? (u = t, n) : u;
    }, oa.rebind(n, r, "on");
  }, oa.touches = function (n, t) {
    return arguments.length < 2 && (t = k().touches), t ? ca(t).map(function (t) {
      var e = J(n, t);
      return e.identifier = t.identifier, e;
    }) : [];
  };
  var Da = 1e-6,
    Pa = Da * Da,
    ja = Math.PI,
    Ua = 2 * ja,
    Fa = Ua - Da,
    Ha = ja / 2,
    Oa = ja / 180,
    Ia = 180 / ja,
    Ya = Math.SQRT2,
    Za = 2,
    Va = 4;
  oa.interpolateZoom = function (n, t) {
    var e,
      r,
      u = n[0],
      i = n[1],
      a = n[2],
      o = t[0],
      l = t[1],
      c = t[2],
      s = o - u,
      f = l - i,
      h = s * s + f * f;
    if (Pa > h) r = Math.log(c / a) / Ya, e = function e(n) {
      return [u + n * s, i + n * f, a * Math.exp(Ya * n * r)];
    };else {
      var g = Math.sqrt(h),
        p = (c * c - a * a + Va * h) / (2 * a * Za * g),
        v = (c * c - a * a - Va * h) / (2 * c * Za * g),
        d = Math.log(Math.sqrt(p * p + 1) - p),
        m = Math.log(Math.sqrt(v * v + 1) - v);
      r = (m - d) / Ya, e = function e(n) {
        var t = n * r,
          e = rn(d),
          o = a / (Za * g) * (e * un(Ya * t + d) - en(d));
        return [u + o * s, i + o * f, a * e / rn(Ya * t + d)];
      };
    }
    return e.duration = 1e3 * r, e;
  }, oa.behavior.zoom = function () {
    function n(n) {
      n.on(L, f).on($a + ".zoom", g).on("dblclick.zoom", p).on(R, h);
    }
    function e(n) {
      return [(n[0] - k.x) / k.k, (n[1] - k.y) / k.k];
    }
    function r(n) {
      return [n[0] * k.k + k.x, n[1] * k.k + k.y];
    }
    function u(n) {
      k.k = Math.max(A[0], Math.min(A[1], n));
    }
    function i(n, t) {
      t = r(t), k.x += n[0] - t[0], k.y += n[1] - t[1];
    }
    function a(t, e, r, a) {
      t.__chart__ = {
        x: k.x,
        y: k.y,
        k: k.k
      }, u(Math.pow(2, a)), i(d = e, r), t = oa.select(t), C > 0 && (t = t.transition().duration(C)), t.call(n.event);
    }
    function o() {
      b && b.domain(x.range().map(function (n) {
        return (n - k.x) / k.k;
      }).map(x.invert)), w && w.domain(_.range().map(function (n) {
        return (n - k.y) / k.k;
      }).map(_.invert));
    }
    function l(n) {
      z++ || n({
        type: "zoomstart"
      });
    }
    function c(n) {
      o(), n({
        type: "zoom",
        scale: k.k,
        translate: [k.x, k.y]
      });
    }
    function s(n) {
      --z || (n({
        type: "zoomend"
      }), d = null);
    }
    function f() {
      function n() {
        o = 1, i(oa.mouse(u), h), c(a);
      }
      function r() {
        f.on(q, null).on(T, null), g(o), s(a);
      }
      var u = this,
        a = D.of(u, arguments),
        o = 0,
        f = oa.select(t(u)).on(q, n).on(T, r),
        h = e(oa.mouse(u)),
        g = W(u);
      Ol.call(u), l(a);
    }
    function h() {
      function n() {
        var n = oa.touches(p);
        return g = k.k, n.forEach(function (n) {
          n.identifier in d && (d[n.identifier] = e(n));
        }), n;
      }
      function t() {
        var t = oa.event.target;
        oa.select(t).on(x, r).on(b, o), _.push(t);
        for (var e = oa.event.changedTouches, u = 0, i = e.length; i > u; ++u) d[e[u].identifier] = null;
        var l = n(),
          c = Date.now();
        if (1 === l.length) {
          if (500 > c - M) {
            var s = l[0];
            a(p, s, d[s.identifier], Math.floor(Math.log(k.k) / Math.LN2) + 1), S();
          }
          M = c;
        } else if (l.length > 1) {
          var s = l[0],
            f = l[1],
            h = s[0] - f[0],
            g = s[1] - f[1];
          m = h * h + g * g;
        }
      }
      function r() {
        var n,
          t,
          e,
          r,
          a = oa.touches(p);
        Ol.call(p);
        for (var o = 0, l = a.length; l > o; ++o, r = null) if (e = a[o], r = d[e.identifier]) {
          if (t) break;
          n = e, t = r;
        }
        if (r) {
          var s = (s = e[0] - n[0]) * s + (s = e[1] - n[1]) * s,
            f = m && Math.sqrt(s / m);
          n = [(n[0] + e[0]) / 2, (n[1] + e[1]) / 2], t = [(t[0] + r[0]) / 2, (t[1] + r[1]) / 2], u(f * g);
        }
        M = null, i(n, t), c(v);
      }
      function o() {
        if (oa.event.touches.length) {
          for (var t = oa.event.changedTouches, e = 0, r = t.length; r > e; ++e) delete d[t[e].identifier];
          for (var u in d) return void n();
        }
        oa.selectAll(_).on(y, null), w.on(L, f).on(R, h), N(), s(v);
      }
      var g,
        p = this,
        v = D.of(p, arguments),
        d = {},
        m = 0,
        y = ".zoom-" + oa.event.changedTouches[0].identifier,
        x = "touchmove" + y,
        b = "touchend" + y,
        _ = [],
        w = oa.select(p),
        N = W(p);
      t(), l(v), w.on(L, null).on(R, t);
    }
    function g() {
      var n = D.of(this, arguments);
      y ? clearTimeout(y) : (Ol.call(this), v = e(d = m || oa.mouse(this)), l(n)), y = setTimeout(function () {
        y = null, s(n);
      }, 50), S(), u(Math.pow(2, .002 * Xa()) * k.k), i(d, v), c(n);
    }
    function p() {
      var n = oa.mouse(this),
        t = Math.log(k.k) / Math.LN2;
      a(this, n, e(n), oa.event.shiftKey ? Math.ceil(t) - 1 : Math.floor(t) + 1);
    }
    var v,
      d,
      m,
      y,
      M,
      x,
      b,
      _,
      w,
      k = {
        x: 0,
        y: 0,
        k: 1
      },
      E = [960, 500],
      A = Ba,
      C = 250,
      z = 0,
      L = "mousedown.zoom",
      q = "mousemove.zoom",
      T = "mouseup.zoom",
      R = "touchstart.zoom",
      D = N(n, "zoomstart", "zoom", "zoomend");
    return $a || ($a = "onwheel" in sa ? (Xa = function Xa() {
      return -oa.event.deltaY * (oa.event.deltaMode ? 120 : 1);
    }, "wheel") : "onmousewheel" in sa ? (Xa = function Xa() {
      return oa.event.wheelDelta;
    }, "mousewheel") : (Xa = function Xa() {
      return -oa.event.detail;
    }, "MozMousePixelScroll")), n.event = function (n) {
      n.each(function () {
        var n = D.of(this, arguments),
          t = k;
        Fl ? oa.select(this).transition().each("start.zoom", function () {
          k = this.__chart__ || {
            x: 0,
            y: 0,
            k: 1
          }, l(n);
        }).tween("zoom:zoom", function () {
          var e = E[0],
            r = E[1],
            u = d ? d[0] : e / 2,
            i = d ? d[1] : r / 2,
            a = oa.interpolateZoom([(u - k.x) / k.k, (i - k.y) / k.k, e / k.k], [(u - t.x) / t.k, (i - t.y) / t.k, e / t.k]);
          return function (t) {
            var r = a(t),
              o = e / r[2];
            this.__chart__ = k = {
              x: u - r[0] * o,
              y: i - r[1] * o,
              k: o
            }, c(n);
          };
        }).each("interrupt.zoom", function () {
          s(n);
        }).each("end.zoom", function () {
          s(n);
        }) : (this.__chart__ = k, l(n), c(n), s(n));
      });
    }, n.translate = function (t) {
      return arguments.length ? (k = {
        x: +t[0],
        y: +t[1],
        k: k.k
      }, o(), n) : [k.x, k.y];
    }, n.scale = function (t) {
      return arguments.length ? (k = {
        x: k.x,
        y: k.y,
        k: null
      }, u(+t), o(), n) : k.k;
    }, n.scaleExtent = function (t) {
      return arguments.length ? (A = null == t ? Ba : [+t[0], +t[1]], n) : A;
    }, n.center = function (t) {
      return arguments.length ? (m = t && [+t[0], +t[1]], n) : m;
    }, n.size = function (t) {
      return arguments.length ? (E = t && [+t[0], +t[1]], n) : E;
    }, n.duration = function (t) {
      return arguments.length ? (C = +t, n) : C;
    }, n.x = function (t) {
      return arguments.length ? (b = t, x = t.copy(), k = {
        x: 0,
        y: 0,
        k: 1
      }, n) : b;
    }, n.y = function (t) {
      return arguments.length ? (w = t, _ = t.copy(), k = {
        x: 0,
        y: 0,
        k: 1
      }, n) : w;
    }, oa.rebind(n, D, "on");
  };
  var Xa,
    $a,
    Ba = [0, 1 / 0];
  oa.color = on, on.prototype.toString = function () {
    return this.rgb() + "";
  }, oa.hsl = ln;
  var Wa = ln.prototype = new on();
  Wa.brighter = function (n) {
    return n = Math.pow(.7, arguments.length ? n : 1), new ln(this.h, this.s, this.l / n);
  }, Wa.darker = function (n) {
    return n = Math.pow(.7, arguments.length ? n : 1), new ln(this.h, this.s, n * this.l);
  }, Wa.rgb = function () {
    return cn(this.h, this.s, this.l);
  }, oa.hcl = sn;
  var Ja = sn.prototype = new on();
  Ja.brighter = function (n) {
    return new sn(this.h, this.c, Math.min(100, this.l + Ga * (arguments.length ? n : 1)));
  }, Ja.darker = function (n) {
    return new sn(this.h, this.c, Math.max(0, this.l - Ga * (arguments.length ? n : 1)));
  }, Ja.rgb = function () {
    return fn(this.h, this.c, this.l).rgb();
  }, oa.lab = hn;
  var Ga = 18,
    Ka = .95047,
    Qa = 1,
    no = 1.08883,
    to = hn.prototype = new on();
  to.brighter = function (n) {
    return new hn(Math.min(100, this.l + Ga * (arguments.length ? n : 1)), this.a, this.b);
  }, to.darker = function (n) {
    return new hn(Math.max(0, this.l - Ga * (arguments.length ? n : 1)), this.a, this.b);
  }, to.rgb = function () {
    return gn(this.l, this.a, this.b);
  }, oa.rgb = yn;
  var eo = yn.prototype = new on();
  eo.brighter = function (n) {
    n = Math.pow(.7, arguments.length ? n : 1);
    var t = this.r,
      e = this.g,
      r = this.b,
      u = 30;
    return t || e || r ? (t && u > t && (t = u), e && u > e && (e = u), r && u > r && (r = u), new yn(Math.min(255, t / n), Math.min(255, e / n), Math.min(255, r / n))) : new yn(u, u, u);
  }, eo.darker = function (n) {
    return n = Math.pow(.7, arguments.length ? n : 1), new yn(n * this.r, n * this.g, n * this.b);
  }, eo.hsl = function () {
    return wn(this.r, this.g, this.b);
  }, eo.toString = function () {
    return "#" + bn(this.r) + bn(this.g) + bn(this.b);
  };
  var ro = oa.map({
    aliceblue: 15792383,
    antiquewhite: 16444375,
    aqua: 65535,
    aquamarine: 8388564,
    azure: 15794175,
    beige: 16119260,
    bisque: 16770244,
    black: 0,
    blanchedalmond: 16772045,
    blue: 255,
    blueviolet: 9055202,
    brown: 10824234,
    burlywood: 14596231,
    cadetblue: 6266528,
    chartreuse: 8388352,
    chocolate: 13789470,
    coral: 16744272,
    cornflowerblue: 6591981,
    cornsilk: 16775388,
    crimson: 14423100,
    cyan: 65535,
    darkblue: 139,
    darkcyan: 35723,
    darkgoldenrod: 12092939,
    darkgray: 11119017,
    darkgreen: 25600,
    darkgrey: 11119017,
    darkkhaki: 12433259,
    darkmagenta: 9109643,
    darkolivegreen: 5597999,
    darkorange: 16747520,
    darkorchid: 10040012,
    darkred: 9109504,
    darksalmon: 15308410,
    darkseagreen: 9419919,
    darkslateblue: 4734347,
    darkslategray: 3100495,
    darkslategrey: 3100495,
    darkturquoise: 52945,
    darkviolet: 9699539,
    deeppink: 16716947,
    deepskyblue: 49151,
    dimgray: 6908265,
    dimgrey: 6908265,
    dodgerblue: 2003199,
    firebrick: 11674146,
    floralwhite: 16775920,
    forestgreen: 2263842,
    fuchsia: 16711935,
    gainsboro: 14474460,
    ghostwhite: 16316671,
    gold: 16766720,
    goldenrod: 14329120,
    gray: 8421504,
    green: 32768,
    greenyellow: 11403055,
    grey: 8421504,
    honeydew: 15794160,
    hotpink: 16738740,
    indianred: 13458524,
    indigo: 4915330,
    ivory: 16777200,
    khaki: 15787660,
    lavender: 15132410,
    lavenderblush: 16773365,
    lawngreen: 8190976,
    lemonchiffon: 16775885,
    lightblue: 11393254,
    lightcoral: 15761536,
    lightcyan: 14745599,
    lightgoldenrodyellow: 16448210,
    lightgray: 13882323,
    lightgreen: 9498256,
    lightgrey: 13882323,
    lightpink: 16758465,
    lightsalmon: 16752762,
    lightseagreen: 2142890,
    lightskyblue: 8900346,
    lightslategray: 7833753,
    lightslategrey: 7833753,
    lightsteelblue: 11584734,
    lightyellow: 16777184,
    lime: 65280,
    limegreen: 3329330,
    linen: 16445670,
    magenta: 16711935,
    maroon: 8388608,
    mediumaquamarine: 6737322,
    mediumblue: 205,
    mediumorchid: 12211667,
    mediumpurple: 9662683,
    mediumseagreen: 3978097,
    mediumslateblue: 8087790,
    mediumspringgreen: 64154,
    mediumturquoise: 4772300,
    mediumvioletred: 13047173,
    midnightblue: 1644912,
    mintcream: 16121850,
    mistyrose: 16770273,
    moccasin: 16770229,
    navajowhite: 16768685,
    navy: 128,
    oldlace: 16643558,
    olive: 8421376,
    olivedrab: 7048739,
    orange: 16753920,
    orangered: 16729344,
    orchid: 14315734,
    palegoldenrod: 15657130,
    palegreen: 10025880,
    paleturquoise: 11529966,
    palevioletred: 14381203,
    papayawhip: 16773077,
    peachpuff: 16767673,
    peru: 13468991,
    pink: 16761035,
    plum: 14524637,
    powderblue: 11591910,
    purple: 8388736,
    rebeccapurple: 6697881,
    red: 16711680,
    rosybrown: 12357519,
    royalblue: 4286945,
    saddlebrown: 9127187,
    salmon: 16416882,
    sandybrown: 16032864,
    seagreen: 3050327,
    seashell: 16774638,
    sienna: 10506797,
    silver: 12632256,
    skyblue: 8900331,
    slateblue: 6970061,
    slategray: 7372944,
    slategrey: 7372944,
    snow: 16775930,
    springgreen: 65407,
    steelblue: 4620980,
    tan: 13808780,
    teal: 32896,
    thistle: 14204888,
    tomato: 16737095,
    turquoise: 4251856,
    violet: 15631086,
    wheat: 16113331,
    white: 16777215,
    whitesmoke: 16119285,
    yellow: 16776960,
    yellowgreen: 10145074
  });
  ro.forEach(function (n, t) {
    ro.set(n, Mn(t));
  }), oa.functor = En, oa.xhr = An(y), oa.dsv = function (n, t) {
    function e(n, e, i) {
      arguments.length < 3 && (i = e, e = null);
      var a = Cn(n, t, null == e ? r : u(e), i);
      return a.row = function (n) {
        return arguments.length ? a.response(null == (e = n) ? r : u(n)) : e;
      }, a;
    }
    function r(n) {
      return e.parse(n.responseText);
    }
    function u(n) {
      return function (t) {
        return e.parse(t.responseText, n);
      };
    }
    function i(t) {
      return t.map(a).join(n);
    }
    function a(n) {
      return o.test(n) ? '"' + n.replace(/\"/g, '""') + '"' : n;
    }
    var o = new RegExp('["' + n + "\n]"),
      l = n.charCodeAt(0);
    return e.parse = function (n, t) {
      var r;
      return e.parseRows(n, function (n, e) {
        if (r) return r(n, e - 1);
        var u = new Function("d", "return {" + n.map(function (n, t) {
          return JSON.stringify(n) + ": d[" + t + "]";
        }).join(",") + "}");
        r = t ? function (n, e) {
          return t(u(n), e);
        } : u;
      });
    }, e.parseRows = function (n, t) {
      function e() {
        if (s >= c) return a;
        if (u) return u = !1, i;
        var t = s;
        if (34 === n.charCodeAt(t)) {
          for (var e = t; e++ < c;) if (34 === n.charCodeAt(e)) {
            if (34 !== n.charCodeAt(e + 1)) break;
            ++e;
          }
          s = e + 2;
          var r = n.charCodeAt(e + 1);
          return 13 === r ? (u = !0, 10 === n.charCodeAt(e + 2) && ++s) : 10 === r && (u = !0), n.slice(t + 1, e).replace(/""/g, '"');
        }
        for (; c > s;) {
          var r = n.charCodeAt(s++),
            o = 1;
          if (10 === r) u = !0;else if (13 === r) u = !0, 10 === n.charCodeAt(s) && (++s, ++o);else if (r !== l) continue;
          return n.slice(t, s - o);
        }
        return n.slice(t);
      }
      for (var r, u, i = {}, a = {}, o = [], c = n.length, s = 0, f = 0; (r = e()) !== a;) {
        for (var h = []; r !== i && r !== a;) h.push(r), r = e();
        t && null == (h = t(h, f++)) || o.push(h);
      }
      return o;
    }, e.format = function (t) {
      if (Array.isArray(t[0])) return e.formatRows(t);
      var r = new m(),
        u = [];
      return t.forEach(function (n) {
        for (var t in n) r.has(t) || u.push(r.add(t));
      }), [u.map(a).join(n)].concat(t.map(function (t) {
        return u.map(function (n) {
          return a(t[n]);
        }).join(n);
      })).join("\n");
    }, e.formatRows = function (n) {
      return n.map(i).join("\n");
    }, e;
  }, oa.csv = oa.dsv(",", "text/csv"), oa.tsv = oa.dsv("	", "text/tab-separated-values");
  var uo,
    io,
    ao,
    oo,
    lo = this[x(this, "requestAnimationFrame")] || function (n) {
      setTimeout(n, 17);
    };
  oa.timer = function () {
    qn.apply(this, arguments);
  }, oa.timer.flush = function () {
    Rn(), Dn();
  }, oa.round = function (n, t) {
    return t ? Math.round(n * (t = Math.pow(10, t))) / t : Math.round(n);
  };
  var co = ["y", "z", "a", "f", "p", "n", "\xb5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"].map(jn);
  oa.formatPrefix = function (n, t) {
    var e = 0;
    return (n = +n) && (0 > n && (n *= -1), t && (n = oa.round(n, Pn(n, t))), e = 1 + Math.floor(1e-12 + Math.log(n) / Math.LN10), e = Math.max(-24, Math.min(24, 3 * Math.floor((e - 1) / 3)))), co[8 + e / 3];
  };
  var so = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,
    fo = oa.map({
      b: function b(n) {
        return n.toString(2);
      },
      c: function c(n) {
        return String.fromCharCode(n);
      },
      o: function o(n) {
        return n.toString(8);
      },
      x: function x(n) {
        return n.toString(16);
      },
      X: function X(n) {
        return n.toString(16).toUpperCase();
      },
      g: function g(n, t) {
        return n.toPrecision(t);
      },
      e: function e(n, t) {
        return n.toExponential(t);
      },
      f: function f(n, t) {
        return n.toFixed(t);
      },
      r: function r(n, t) {
        return (n = oa.round(n, Pn(n, t))).toFixed(Math.max(0, Math.min(20, Pn(n * (1 + 1e-15), t))));
      }
    }),
    ho = oa.time = {},
    go = Date;
  Hn.prototype = {
    getDate: function getDate() {
      return this._.getUTCDate();
    },
    getDay: function getDay() {
      return this._.getUTCDay();
    },
    getFullYear: function getFullYear() {
      return this._.getUTCFullYear();
    },
    getHours: function getHours() {
      return this._.getUTCHours();
    },
    getMilliseconds: function getMilliseconds() {
      return this._.getUTCMilliseconds();
    },
    getMinutes: function getMinutes() {
      return this._.getUTCMinutes();
    },
    getMonth: function getMonth() {
      return this._.getUTCMonth();
    },
    getSeconds: function getSeconds() {
      return this._.getUTCSeconds();
    },
    getTime: function getTime() {
      return this._.getTime();
    },
    getTimezoneOffset: function getTimezoneOffset() {
      return 0;
    },
    valueOf: function valueOf() {
      return this._.valueOf();
    },
    setDate: function setDate() {
      po.setUTCDate.apply(this._, arguments);
    },
    setDay: function setDay() {
      po.setUTCDay.apply(this._, arguments);
    },
    setFullYear: function setFullYear() {
      po.setUTCFullYear.apply(this._, arguments);
    },
    setHours: function setHours() {
      po.setUTCHours.apply(this._, arguments);
    },
    setMilliseconds: function setMilliseconds() {
      po.setUTCMilliseconds.apply(this._, arguments);
    },
    setMinutes: function setMinutes() {
      po.setUTCMinutes.apply(this._, arguments);
    },
    setMonth: function setMonth() {
      po.setUTCMonth.apply(this._, arguments);
    },
    setSeconds: function setSeconds() {
      po.setUTCSeconds.apply(this._, arguments);
    },
    setTime: function setTime() {
      po.setTime.apply(this._, arguments);
    }
  };
  var po = Date.prototype;
  ho.year = On(function (n) {
    return n = ho.day(n), n.setMonth(0, 1), n;
  }, function (n, t) {
    n.setFullYear(n.getFullYear() + t);
  }, function (n) {
    return n.getFullYear();
  }), ho.years = ho.year.range, ho.years.utc = ho.year.utc.range, ho.day = On(function (n) {
    var t = new go(2e3, 0);
    return t.setFullYear(n.getFullYear(), n.getMonth(), n.getDate()), t;
  }, function (n, t) {
    n.setDate(n.getDate() + t);
  }, function (n) {
    return n.getDate() - 1;
  }), ho.days = ho.day.range, ho.days.utc = ho.day.utc.range, ho.dayOfYear = function (n) {
    var t = ho.year(n);
    return Math.floor((n - t - 6e4 * (n.getTimezoneOffset() - t.getTimezoneOffset())) / 864e5);
  }, ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"].forEach(function (n, t) {
    t = 7 - t;
    var e = ho[n] = On(function (n) {
      return (n = ho.day(n)).setDate(n.getDate() - (n.getDay() + t) % 7), n;
    }, function (n, t) {
      n.setDate(n.getDate() + 7 * Math.floor(t));
    }, function (n) {
      var e = ho.year(n).getDay();
      return Math.floor((ho.dayOfYear(n) + (e + t) % 7) / 7) - (e !== t);
    });
    ho[n + "s"] = e.range, ho[n + "s"].utc = e.utc.range, ho[n + "OfYear"] = function (n) {
      var e = ho.year(n).getDay();
      return Math.floor((ho.dayOfYear(n) + (e + t) % 7) / 7);
    };
  }), ho.week = ho.sunday, ho.weeks = ho.sunday.range, ho.weeks.utc = ho.sunday.utc.range, ho.weekOfYear = ho.sundayOfYear;
  var vo = {
      "-": "",
      _: " ",
      0: "0"
    },
    mo = /^\s*\d+/,
    yo = /^%/;
  oa.locale = function (n) {
    return {
      numberFormat: Un(n),
      timeFormat: Yn(n)
    };
  };
  var Mo = oa.locale({
    decimal: ".",
    thousands: ",",
    grouping: [3],
    currency: ["$", ""],
    dateTime: "%a %b %e %X %Y",
    date: "%m/%d/%Y",
    time: "%H:%M:%S",
    periods: ["AM", "PM"],
    days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
    shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
  });
  oa.format = Mo.numberFormat, oa.geo = {}, st.prototype = {
    s: 0,
    t: 0,
    add: function add(n) {
      ft(n, this.t, xo), ft(xo.s, this.s, this), this.s ? this.t += xo.t : this.s = xo.t;
    },
    reset: function reset() {
      this.s = this.t = 0;
    },
    valueOf: function valueOf() {
      return this.s;
    }
  };
  var xo = new st();
  oa.geo.stream = function (n, t) {
    n && bo.hasOwnProperty(n.type) ? bo[n.type](n, t) : ht(n, t);
  };
  var bo = {
      Feature: function Feature(n, t) {
        ht(n.geometry, t);
      },
      FeatureCollection: function FeatureCollection(n, t) {
        for (var e = n.features, r = -1, u = e.length; ++r < u;) ht(e[r].geometry, t);
      }
    },
    _o = {
      Sphere: function Sphere(n, t) {
        t.sphere();
      },
      Point: function Point(n, t) {
        n = n.coordinates, t.point(n[0], n[1], n[2]);
      },
      MultiPoint: function MultiPoint(n, t) {
        for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) n = e[r], t.point(n[0], n[1], n[2]);
      },
      LineString: function LineString(n, t) {
        gt(n.coordinates, t, 0);
      },
      MultiLineString: function MultiLineString(n, t) {
        for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) gt(e[r], t, 0);
      },
      Polygon: function Polygon(n, t) {
        pt(n.coordinates, t);
      },
      MultiPolygon: function MultiPolygon(n, t) {
        for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) pt(e[r], t);
      },
      GeometryCollection: function GeometryCollection(n, t) {
        for (var e = n.geometries, r = -1, u = e.length; ++r < u;) ht(e[r], t);
      }
    };
  oa.geo.area = function (n) {
    return wo = 0, oa.geo.stream(n, ko), wo;
  };
  var wo,
    So = new st(),
    ko = {
      sphere: function sphere() {
        wo += 4 * ja;
      },
      point: b,
      lineStart: b,
      lineEnd: b,
      polygonStart: function polygonStart() {
        So.reset(), ko.lineStart = vt;
      },
      polygonEnd: function polygonEnd() {
        var n = 2 * So;
        wo += 0 > n ? 4 * ja + n : n, ko.lineStart = ko.lineEnd = ko.point = b;
      }
    };
  oa.geo.bounds = function () {
    function n(n, t) {
      M.push(x = [s = n, h = n]), f > t && (f = t), t > g && (g = t);
    }
    function t(t, e) {
      var r = dt([t * Oa, e * Oa]);
      if (m) {
        var u = yt(m, r),
          i = [u[1], -u[0], 0],
          a = yt(i, u);
        bt(a), a = _t(a);
        var l = t - p,
          c = l > 0 ? 1 : -1,
          v = a[0] * Ia * c,
          d = Ma(l) > 180;
        if (d ^ (v > c * p && c * t > v)) {
          var y = a[1] * Ia;
          y > g && (g = y);
        } else if (v = (v + 360) % 360 - 180, d ^ (v > c * p && c * t > v)) {
          var y = -a[1] * Ia;
          f > y && (f = y);
        } else f > e && (f = e), e > g && (g = e);
        d ? p > t ? o(s, t) > o(s, h) && (h = t) : o(t, h) > o(s, h) && (s = t) : h >= s ? (s > t && (s = t), t > h && (h = t)) : t > p ? o(s, t) > o(s, h) && (h = t) : o(t, h) > o(s, h) && (s = t);
      } else n(t, e);
      m = r, p = t;
    }
    function e() {
      b.point = t;
    }
    function r() {
      x[0] = s, x[1] = h, b.point = n, m = null;
    }
    function u(n, e) {
      if (m) {
        var r = n - p;
        y += Ma(r) > 180 ? r + (r > 0 ? 360 : -360) : r;
      } else v = n, d = e;
      ko.point(n, e), t(n, e);
    }
    function i() {
      ko.lineStart();
    }
    function a() {
      u(v, d), ko.lineEnd(), Ma(y) > Da && (s = -(h = 180)), x[0] = s, x[1] = h, m = null;
    }
    function o(n, t) {
      return (t -= n) < 0 ? t + 360 : t;
    }
    function l(n, t) {
      return n[0] - t[0];
    }
    function c(n, t) {
      return t[0] <= t[1] ? t[0] <= n && n <= t[1] : n < t[0] || t[1] < n;
    }
    var s,
      f,
      h,
      g,
      p,
      v,
      d,
      m,
      y,
      M,
      x,
      b = {
        point: n,
        lineStart: e,
        lineEnd: r,
        polygonStart: function polygonStart() {
          b.point = u, b.lineStart = i, b.lineEnd = a, y = 0, ko.polygonStart();
        },
        polygonEnd: function polygonEnd() {
          ko.polygonEnd(), b.point = n, b.lineStart = e, b.lineEnd = r, 0 > So ? (s = -(h = 180), f = -(g = 90)) : y > Da ? g = 90 : -Da > y && (f = -90), x[0] = s, x[1] = h;
        }
      };
    return function (n) {
      g = h = -(s = f = 1 / 0), M = [], oa.geo.stream(n, b);
      var t = M.length;
      if (t) {
        M.sort(l);
        for (var e, r = 1, u = M[0], i = [u]; t > r; ++r) e = M[r], c(e[0], u) || c(e[1], u) ? (o(u[0], e[1]) > o(u[0], u[1]) && (u[1] = e[1]), o(e[0], u[1]) > o(u[0], u[1]) && (u[0] = e[0])) : i.push(u = e);
        for (var a, e, p = -(1 / 0), t = i.length - 1, r = 0, u = i[t]; t >= r; u = e, ++r) e = i[r], (a = o(u[1], e[0])) > p && (p = a, s = e[0], h = u[1]);
      }
      return M = x = null, s === 1 / 0 || f === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[s, f], [h, g]];
    };
  }(), oa.geo.centroid = function (n) {
    No = Eo = Ao = Co = zo = Lo = qo = To = Ro = Do = Po = 0, oa.geo.stream(n, jo);
    var t = Ro,
      e = Do,
      r = Po,
      u = t * t + e * e + r * r;
    return Pa > u && (t = Lo, e = qo, r = To, Da > Eo && (t = Ao, e = Co, r = zo), u = t * t + e * e + r * r, Pa > u) ? [NaN, NaN] : [Math.atan2(e, t) * Ia, tn(r / Math.sqrt(u)) * Ia];
  };
  var No,
    Eo,
    Ao,
    Co,
    zo,
    Lo,
    qo,
    To,
    Ro,
    Do,
    Po,
    jo = {
      sphere: b,
      point: St,
      lineStart: Nt,
      lineEnd: Et,
      polygonStart: function polygonStart() {
        jo.lineStart = At;
      },
      polygonEnd: function polygonEnd() {
        jo.lineStart = Nt;
      }
    },
    Uo = Rt(zt, Ut, Ht, [-ja, -ja / 2]),
    Fo = 1e9;
  oa.geo.clipExtent = function () {
    var n,
      t,
      e,
      r,
      u,
      i,
      a = {
        stream: function stream(n) {
          return u && (u.valid = !1), u = i(n), u.valid = !0, u;
        },
        extent: function extent(o) {
          return arguments.length ? (i = Zt(n = +o[0][0], t = +o[0][1], e = +o[1][0], r = +o[1][1]), u && (u.valid = !1, u = null), a) : [[n, t], [e, r]];
        }
      };
    return a.extent([[0, 0], [960, 500]]);
  }, (oa.geo.conicEqualArea = function () {
    return Vt(Xt);
  }).raw = Xt, oa.geo.albers = function () {
    return oa.geo.conicEqualArea().rotate([96, 0]).center([-.6, 38.7]).parallels([29.5, 45.5]).scale(1070);
  }, oa.geo.albersUsa = function () {
    function n(n) {
      var i = n[0],
        a = n[1];
      return t = null, e(i, a), t || (r(i, a), t) || u(i, a), t;
    }
    var t,
      e,
      r,
      u,
      i = oa.geo.albers(),
      a = oa.geo.conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),
      o = oa.geo.conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),
      l = {
        point: function point(n, e) {
          t = [n, e];
        }
      };
    return n.invert = function (n) {
      var t = i.scale(),
        e = i.translate(),
        r = (n[0] - e[0]) / t,
        u = (n[1] - e[1]) / t;
      return (u >= .12 && .234 > u && r >= -.425 && -.214 > r ? a : u >= .166 && .234 > u && r >= -.214 && -.115 > r ? o : i).invert(n);
    }, n.stream = function (n) {
      var t = i.stream(n),
        e = a.stream(n),
        r = o.stream(n);
      return {
        point: function point(n, u) {
          t.point(n, u), e.point(n, u), r.point(n, u);
        },
        sphere: function sphere() {
          t.sphere(), e.sphere(), r.sphere();
        },
        lineStart: function lineStart() {
          t.lineStart(), e.lineStart(), r.lineStart();
        },
        lineEnd: function lineEnd() {
          t.lineEnd(), e.lineEnd(), r.lineEnd();
        },
        polygonStart: function polygonStart() {
          t.polygonStart(), e.polygonStart(), r.polygonStart();
        },
        polygonEnd: function polygonEnd() {
          t.polygonEnd(), e.polygonEnd(), r.polygonEnd();
        }
      };
    }, n.precision = function (t) {
      return arguments.length ? (i.precision(t), a.precision(t), o.precision(t), n) : i.precision();
    }, n.scale = function (t) {
      return arguments.length ? (i.scale(t), a.scale(.35 * t), o.scale(t), n.translate(i.translate())) : i.scale();
    }, n.translate = function (t) {
      if (!arguments.length) return i.translate();
      var c = i.scale(),
        s = +t[0],
        f = +t[1];
      return e = i.translate(t).clipExtent([[s - .455 * c, f - .238 * c], [s + .455 * c, f + .238 * c]]).stream(l).point, r = a.translate([s - .307 * c, f + .201 * c]).clipExtent([[s - .425 * c + Da, f + .12 * c + Da], [s - .214 * c - Da, f + .234 * c - Da]]).stream(l).point, u = o.translate([s - .205 * c, f + .212 * c]).clipExtent([[s - .214 * c + Da, f + .166 * c + Da], [s - .115 * c - Da, f + .234 * c - Da]]).stream(l).point, n;
    }, n.scale(1070);
  };
  var Ho,
    Oo,
    Io,
    Yo,
    Zo,
    Vo,
    Xo = {
      point: b,
      lineStart: b,
      lineEnd: b,
      polygonStart: function polygonStart() {
        Oo = 0, Xo.lineStart = $t;
      },
      polygonEnd: function polygonEnd() {
        Xo.lineStart = Xo.lineEnd = Xo.point = b, Ho += Ma(Oo / 2);
      }
    },
    $o = {
      point: Bt,
      lineStart: b,
      lineEnd: b,
      polygonStart: b,
      polygonEnd: b
    },
    Bo = {
      point: Gt,
      lineStart: Kt,
      lineEnd: Qt,
      polygonStart: function polygonStart() {
        Bo.lineStart = ne;
      },
      polygonEnd: function polygonEnd() {
        Bo.point = Gt, Bo.lineStart = Kt, Bo.lineEnd = Qt;
      }
    };
  oa.geo.path = function () {
    function n(n) {
      return n && ("function" == typeof o && i.pointRadius(+o.apply(this, arguments)), a && a.valid || (a = u(i)), oa.geo.stream(n, a)), i.result();
    }
    function t() {
      return a = null, n;
    }
    var e,
      r,
      u,
      i,
      a,
      o = 4.5;
    return n.area = function (n) {
      return Ho = 0, oa.geo.stream(n, u(Xo)), Ho;
    }, n.centroid = function (n) {
      return Ao = Co = zo = Lo = qo = To = Ro = Do = Po = 0, oa.geo.stream(n, u(Bo)), Po ? [Ro / Po, Do / Po] : To ? [Lo / To, qo / To] : zo ? [Ao / zo, Co / zo] : [NaN, NaN];
    }, n.bounds = function (n) {
      return Zo = Vo = -(Io = Yo = 1 / 0), oa.geo.stream(n, u($o)), [[Io, Yo], [Zo, Vo]];
    }, n.projection = function (n) {
      return arguments.length ? (u = (e = n) ? n.stream || re(n) : y, t()) : e;
    }, n.context = function (n) {
      return arguments.length ? (i = null == (r = n) ? new Wt() : new te(n), "function" != typeof o && i.pointRadius(o), t()) : r;
    }, n.pointRadius = function (t) {
      return arguments.length ? (o = "function" == typeof t ? t : (i.pointRadius(+t), +t), n) : o;
    }, n.projection(oa.geo.albersUsa()).context(null);
  }, oa.geo.transform = function (n) {
    return {
      stream: function stream(t) {
        var e = new ue(t);
        for (var r in n) e[r] = n[r];
        return e;
      }
    };
  }, ue.prototype = {
    point: function point(n, t) {
      this.stream.point(n, t);
    },
    sphere: function sphere() {
      this.stream.sphere();
    },
    lineStart: function lineStart() {
      this.stream.lineStart();
    },
    lineEnd: function lineEnd() {
      this.stream.lineEnd();
    },
    polygonStart: function polygonStart() {
      this.stream.polygonStart();
    },
    polygonEnd: function polygonEnd() {
      this.stream.polygonEnd();
    }
  }, oa.geo.projection = ae, oa.geo.projectionMutator = oe, (oa.geo.equirectangular = function () {
    return ae(ce);
  }).raw = ce.invert = ce, oa.geo.rotation = function (n) {
    function t(t) {
      return t = n(t[0] * Oa, t[1] * Oa), t[0] *= Ia, t[1] *= Ia, t;
    }
    return n = fe(n[0] % 360 * Oa, n[1] * Oa, n.length > 2 ? n[2] * Oa : 0), t.invert = function (t) {
      return t = n.invert(t[0] * Oa, t[1] * Oa), t[0] *= Ia, t[1] *= Ia, t;
    }, t;
  }, se.invert = ce, oa.geo.circle = function () {
    function n() {
      var n = "function" == typeof r ? r.apply(this, arguments) : r,
        t = fe(-n[0] * Oa, -n[1] * Oa, 0).invert,
        u = [];
      return e(null, null, 1, {
        point: function point(n, e) {
          u.push(n = t(n, e)), n[0] *= Ia, n[1] *= Ia;
        }
      }), {
        type: "Polygon",
        coordinates: [u]
      };
    }
    var t,
      e,
      r = [0, 0],
      u = 6;
    return n.origin = function (t) {
      return arguments.length ? (r = t, n) : r;
    }, n.angle = function (r) {
      return arguments.length ? (e = ve((t = +r) * Oa, u * Oa), n) : t;
    }, n.precision = function (r) {
      return arguments.length ? (e = ve(t * Oa, (u = +r) * Oa), n) : u;
    }, n.angle(90);
  }, oa.geo.distance = function (n, t) {
    var e,
      r = (t[0] - n[0]) * Oa,
      u = n[1] * Oa,
      i = t[1] * Oa,
      a = Math.sin(r),
      o = Math.cos(r),
      l = Math.sin(u),
      c = Math.cos(u),
      s = Math.sin(i),
      f = Math.cos(i);
    return Math.atan2(Math.sqrt((e = f * a) * e + (e = c * s - l * f * o) * e), l * s + c * f * o);
  }, oa.geo.graticule = function () {
    function n() {
      return {
        type: "MultiLineString",
        coordinates: t()
      };
    }
    function t() {
      return oa.range(Math.ceil(i / d) * d, u, d).map(h).concat(oa.range(Math.ceil(c / m) * m, l, m).map(g)).concat(oa.range(Math.ceil(r / p) * p, e, p).filter(function (n) {
        return Ma(n % d) > Da;
      }).map(s)).concat(oa.range(Math.ceil(o / v) * v, a, v).filter(function (n) {
        return Ma(n % m) > Da;
      }).map(f));
    }
    var e,
      r,
      u,
      i,
      a,
      o,
      l,
      c,
      s,
      f,
      h,
      g,
      p = 10,
      v = p,
      d = 90,
      m = 360,
      y = 2.5;
    return n.lines = function () {
      return t().map(function (n) {
        return {
          type: "LineString",
          coordinates: n
        };
      });
    }, n.outline = function () {
      return {
        type: "Polygon",
        coordinates: [h(i).concat(g(l).slice(1), h(u).reverse().slice(1), g(c).reverse().slice(1))]
      };
    }, n.extent = function (t) {
      return arguments.length ? n.majorExtent(t).minorExtent(t) : n.minorExtent();
    }, n.majorExtent = function (t) {
      return arguments.length ? (i = +t[0][0], u = +t[1][0], c = +t[0][1], l = +t[1][1], i > u && (t = i, i = u, u = t), c > l && (t = c, c = l, l = t), n.precision(y)) : [[i, c], [u, l]];
    }, n.minorExtent = function (t) {
      return arguments.length ? (r = +t[0][0], e = +t[1][0], o = +t[0][1], a = +t[1][1], r > e && (t = r, r = e, e = t), o > a && (t = o, o = a, a = t), n.precision(y)) : [[r, o], [e, a]];
    }, n.step = function (t) {
      return arguments.length ? n.majorStep(t).minorStep(t) : n.minorStep();
    }, n.majorStep = function (t) {
      return arguments.length ? (d = +t[0], m = +t[1], n) : [d, m];
    }, n.minorStep = function (t) {
      return arguments.length ? (p = +t[0], v = +t[1], n) : [p, v];
    }, n.precision = function (t) {
      return arguments.length ? (y = +t, s = me(o, a, 90), f = ye(r, e, y), h = me(c, l, 90), g = ye(i, u, y), n) : y;
    }, n.majorExtent([[-180, -90 + Da], [180, 90 - Da]]).minorExtent([[-180, -80 - Da], [180, 80 + Da]]);
  }, oa.geo.greatArc = function () {
    function n() {
      return {
        type: "LineString",
        coordinates: [t || r.apply(this, arguments), e || u.apply(this, arguments)]
      };
    }
    var t,
      e,
      r = Me,
      u = xe;
    return n.distance = function () {
      return oa.geo.distance(t || r.apply(this, arguments), e || u.apply(this, arguments));
    }, n.source = function (e) {
      return arguments.length ? (r = e, t = "function" == typeof e ? null : e, n) : r;
    }, n.target = function (t) {
      return arguments.length ? (u = t, e = "function" == typeof t ? null : t, n) : u;
    }, n.precision = function () {
      return arguments.length ? n : 0;
    }, n;
  }, oa.geo.interpolate = function (n, t) {
    return be(n[0] * Oa, n[1] * Oa, t[0] * Oa, t[1] * Oa);
  }, oa.geo.length = function (n) {
    return Wo = 0, oa.geo.stream(n, Jo), Wo;
  };
  var Wo,
    Jo = {
      sphere: b,
      point: b,
      lineStart: _e,
      lineEnd: b,
      polygonStart: b,
      polygonEnd: b
    },
    Go = we(function (n) {
      return Math.sqrt(2 / (1 + n));
    }, function (n) {
      return 2 * Math.asin(n / 2);
    });
  (oa.geo.azimuthalEqualArea = function () {
    return ae(Go);
  }).raw = Go;
  var Ko = we(function (n) {
    var t = Math.acos(n);
    return t && t / Math.sin(t);
  }, y);
  (oa.geo.azimuthalEquidistant = function () {
    return ae(Ko);
  }).raw = Ko, (oa.geo.conicConformal = function () {
    return Vt(Se);
  }).raw = Se, (oa.geo.conicEquidistant = function () {
    return Vt(ke);
  }).raw = ke;
  var Qo = we(function (n) {
    return 1 / n;
  }, Math.atan);
  (oa.geo.gnomonic = function () {
    return ae(Qo);
  }).raw = Qo, Ne.invert = function (n, t) {
    return [n, 2 * Math.atan(Math.exp(t)) - Ha];
  }, (oa.geo.mercator = function () {
    return Ee(Ne);
  }).raw = Ne;
  var nl = we(function () {
    return 1;
  }, Math.asin);
  (oa.geo.orthographic = function () {
    return ae(nl);
  }).raw = nl;
  var tl = we(function (n) {
    return 1 / (1 + n);
  }, function (n) {
    return 2 * Math.atan(n);
  });
  (oa.geo.stereographic = function () {
    return ae(tl);
  }).raw = tl, Ae.invert = function (n, t) {
    return [-t, 2 * Math.atan(Math.exp(n)) - Ha];
  }, (oa.geo.transverseMercator = function () {
    var n = Ee(Ae),
      t = n.center,
      e = n.rotate;
    return n.center = function (n) {
      return n ? t([-n[1], n[0]]) : (n = t(), [n[1], -n[0]]);
    }, n.rotate = function (n) {
      return n ? e([n[0], n[1], n.length > 2 ? n[2] + 90 : 90]) : (n = e(), [n[0], n[1], n[2] - 90]);
    }, e([0, 0, 90]);
  }).raw = Ae, oa.geom = {}, oa.geom.hull = function (n) {
    function t(n) {
      if (n.length < 3) return [];
      var t,
        u = En(e),
        i = En(r),
        a = n.length,
        o = [],
        l = [];
      for (t = 0; a > t; t++) o.push([+u.call(this, n[t], t), +i.call(this, n[t], t), t]);
      for (o.sort(qe), t = 0; a > t; t++) l.push([o[t][0], -o[t][1]]);
      var c = Le(o),
        s = Le(l),
        f = s[0] === c[0],
        h = s[s.length - 1] === c[c.length - 1],
        g = [];
      for (t = c.length - 1; t >= 0; --t) g.push(n[o[c[t]][2]]);
      for (t = +f; t < s.length - h; ++t) g.push(n[o[s[t]][2]]);
      return g;
    }
    var e = Ce,
      r = ze;
    return arguments.length ? t(n) : (t.x = function (n) {
      return arguments.length ? (e = n, t) : e;
    }, t.y = function (n) {
      return arguments.length ? (r = n, t) : r;
    }, t);
  }, oa.geom.polygon = function (n) {
    return Sa(n, el), n;
  };
  var el = oa.geom.polygon.prototype = [];
  el.area = function () {
    for (var n, t = -1, e = this.length, r = this[e - 1], u = 0; ++t < e;) n = r, r = this[t], u += n[1] * r[0] - n[0] * r[1];
    return .5 * u;
  }, el.centroid = function (n) {
    var t,
      e,
      r = -1,
      u = this.length,
      i = 0,
      a = 0,
      o = this[u - 1];
    for (arguments.length || (n = -1 / (6 * this.area())); ++r < u;) t = o, o = this[r], e = t[0] * o[1] - o[0] * t[1], i += (t[0] + o[0]) * e, a += (t[1] + o[1]) * e;
    return [i * n, a * n];
  }, el.clip = function (n) {
    for (var t, e, r, u, i, a, o = De(n), l = -1, c = this.length - De(this), s = this[c - 1]; ++l < c;) {
      for (t = n.slice(), n.length = 0, u = this[l], i = t[(r = t.length - o) - 1], e = -1; ++e < r;) a = t[e], Te(a, s, u) ? (Te(i, s, u) || n.push(Re(i, a, s, u)), n.push(a)) : Te(i, s, u) && n.push(Re(i, a, s, u)), i = a;
      o && n.push(n[0]), s = u;
    }
    return n;
  };
  var rl,
    ul,
    il,
    al,
    ol,
    ll = [],
    cl = [];
  Ye.prototype.prepare = function () {
    for (var n, t = this.edges, e = t.length; e--;) n = t[e].edge, n.b && n.a || t.splice(e, 1);
    return t.sort(Ve), t.length;
  }, tr.prototype = {
    start: function start() {
      return this.edge.l === this.site ? this.edge.a : this.edge.b;
    },
    end: function end() {
      return this.edge.l === this.site ? this.edge.b : this.edge.a;
    }
  }, er.prototype = {
    insert: function insert(n, t) {
      var e, r, u;
      if (n) {
        if (t.P = n, t.N = n.N, n.N && (n.N.P = t), n.N = t, n.R) {
          for (n = n.R; n.L;) n = n.L;
          n.L = t;
        } else n.R = t;
        e = n;
      } else this._ ? (n = ar(this._), t.P = null, t.N = n, n.P = n.L = t, e = n) : (t.P = t.N = null, this._ = t, e = null);
      for (t.L = t.R = null, t.U = e, t.C = !0, n = t; e && e.C;) r = e.U, e === r.L ? (u = r.R, u && u.C ? (e.C = u.C = !1, r.C = !0, n = r) : (n === e.R && (ur(this, e), n = e, e = n.U), e.C = !1, r.C = !0, ir(this, r))) : (u = r.L, u && u.C ? (e.C = u.C = !1, r.C = !0, n = r) : (n === e.L && (ir(this, e), n = e, e = n.U), e.C = !1, r.C = !0, ur(this, r))), e = n.U;
      this._.C = !1;
    },
    remove: function remove(n) {
      n.N && (n.N.P = n.P), n.P && (n.P.N = n.N), n.N = n.P = null;
      var t,
        e,
        r,
        u = n.U,
        i = n.L,
        a = n.R;
      if (e = i ? a ? ar(a) : i : a, u ? u.L === n ? u.L = e : u.R = e : this._ = e, i && a ? (r = e.C, e.C = n.C, e.L = i, i.U = e, e !== a ? (u = e.U, e.U = n.U, n = e.R, u.L = n, e.R = a, a.U = e) : (e.U = u, u = e, n = e.R)) : (r = n.C, n = e), n && (n.U = u), !r) {
        if (n && n.C) return void (n.C = !1);
        do {
          if (n === this._) break;
          if (n === u.L) {
            if (t = u.R, t.C && (t.C = !1, u.C = !0, ur(this, u), t = u.R), t.L && t.L.C || t.R && t.R.C) {
              t.R && t.R.C || (t.L.C = !1, t.C = !0, ir(this, t), t = u.R), t.C = u.C, u.C = t.R.C = !1, ur(this, u), n = this._;
              break;
            }
          } else if (t = u.L, t.C && (t.C = !1, u.C = !0, ir(this, u), t = u.L), t.L && t.L.C || t.R && t.R.C) {
            t.L && t.L.C || (t.R.C = !1, t.C = !0, ur(this, t), t = u.L), t.C = u.C, u.C = t.L.C = !1, ir(this, u), n = this._;
            break;
          }
          t.C = !0, n = u, u = u.U;
        } while (!n.C);
        n && (n.C = !1);
      }
    }
  }, oa.geom.voronoi = function (n) {
    function t(n) {
      var t = new Array(n.length),
        r = o[0][0],
        u = o[0][1],
        i = o[1][0],
        a = o[1][1];
      return or(e(n), o).cells.forEach(function (e, o) {
        var l = e.edges,
          c = e.site,
          s = t[o] = l.length ? l.map(function (n) {
            var t = n.start();
            return [t.x, t.y];
          }) : c.x >= r && c.x <= i && c.y >= u && c.y <= a ? [[r, a], [i, a], [i, u], [r, u]] : [];
        s.point = n[o];
      }), t;
    }
    function e(n) {
      return n.map(function (n, t) {
        return {
          x: Math.round(i(n, t) / Da) * Da,
          y: Math.round(a(n, t) / Da) * Da,
          i: t
        };
      });
    }
    var r = Ce,
      u = ze,
      i = r,
      a = u,
      o = sl;
    return n ? t(n) : (t.links = function (n) {
      return or(e(n)).edges.filter(function (n) {
        return n.l && n.r;
      }).map(function (t) {
        return {
          source: n[t.l.i],
          target: n[t.r.i]
        };
      });
    }, t.triangles = function (n) {
      var t = [];
      return or(e(n)).cells.forEach(function (e, r) {
        for (var u, i, a = e.site, o = e.edges.sort(Ve), l = -1, c = o.length, s = o[c - 1].edge, f = s.l === a ? s.r : s.l; ++l < c;) u = s, i = f, s = o[l].edge, f = s.l === a ? s.r : s.l, r < i.i && r < f.i && cr(a, i, f) < 0 && t.push([n[r], n[i.i], n[f.i]]);
      }), t;
    }, t.x = function (n) {
      return arguments.length ? (i = En(r = n), t) : r;
    }, t.y = function (n) {
      return arguments.length ? (a = En(u = n), t) : u;
    }, t.clipExtent = function (n) {
      return arguments.length ? (o = null == n ? sl : n, t) : o === sl ? null : o;
    }, t.size = function (n) {
      return arguments.length ? t.clipExtent(n && [[0, 0], n]) : o === sl ? null : o && o[1];
    }, t);
  };
  var sl = [[-1e6, -1e6], [1e6, 1e6]];
  oa.geom.delaunay = function (n) {
    return oa.geom.voronoi().triangles(n);
  }, oa.geom.quadtree = function (n, t, e, r, u) {
    function i(n) {
      function i(n, t, e, r, u, i, a, o) {
        if (!isNaN(e) && !isNaN(r)) if (n.leaf) {
          var l = n.x,
            s = n.y;
          if (null != l) {
            if (Ma(l - e) + Ma(s - r) < .01) c(n, t, e, r, u, i, a, o);else {
              var f = n.point;
              n.x = n.y = n.point = null, c(n, f, l, s, u, i, a, o), c(n, t, e, r, u, i, a, o);
            }
          } else n.x = e, n.y = r, n.point = t;
        } else c(n, t, e, r, u, i, a, o);
      }
      function c(n, t, e, r, u, a, o, l) {
        var c = .5 * (u + o),
          s = .5 * (a + l),
          f = e >= c,
          h = r >= s,
          g = h << 1 | f;
        n.leaf = !1, n = n.nodes[g] || (n.nodes[g] = hr()), f ? u = c : o = c, h ? a = s : l = s, i(n, t, e, r, u, a, o, l);
      }
      var s,
        f,
        h,
        g,
        p,
        v,
        d,
        m,
        y,
        M = En(o),
        x = En(l);
      if (null != t) v = t, d = e, m = r, y = u;else if (m = y = -(v = d = 1 / 0), f = [], h = [], p = n.length, a) for (g = 0; p > g; ++g) s = n[g], s.x < v && (v = s.x), s.y < d && (d = s.y), s.x > m && (m = s.x), s.y > y && (y = s.y), f.push(s.x), h.push(s.y);else for (g = 0; p > g; ++g) {
        var b = +M(s = n[g], g),
          _ = +x(s, g);
        v > b && (v = b), d > _ && (d = _), b > m && (m = b), _ > y && (y = _), f.push(b), h.push(_);
      }
      var w = m - v,
        S = y - d;
      w > S ? y = d + w : m = v + S;
      var k = hr();
      if (k.add = function (n) {
        i(k, n, +M(n, ++g), +x(n, g), v, d, m, y);
      }, k.visit = function (n) {
        gr(n, k, v, d, m, y);
      }, k.find = function (n) {
        return pr(k, n[0], n[1], v, d, m, y);
      }, g = -1, null == t) {
        for (; ++g < p;) i(k, n[g], f[g], h[g], v, d, m, y);
        --g;
      } else n.forEach(k.add);
      return f = h = n = s = null, k;
    }
    var a,
      o = Ce,
      l = ze;
    return (a = arguments.length) ? (o = sr, l = fr, 3 === a && (u = e, r = t, e = t = 0), i(n)) : (i.x = function (n) {
      return arguments.length ? (o = n, i) : o;
    }, i.y = function (n) {
      return arguments.length ? (l = n, i) : l;
    }, i.extent = function (n) {
      return arguments.length ? (null == n ? t = e = r = u = null : (t = +n[0][0], e = +n[0][1], r = +n[1][0], u = +n[1][1]), i) : null == t ? null : [[t, e], [r, u]];
    }, i.size = function (n) {
      return arguments.length ? (null == n ? t = e = r = u = null : (t = e = 0, r = +n[0], u = +n[1]), i) : null == t ? null : [r - t, u - e];
    }, i);
  }, oa.interpolateRgb = vr, oa.interpolateObject = dr, oa.interpolateNumber = mr, oa.interpolateString = yr;
  var fl = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
    hl = new RegExp(fl.source, "g");
  oa.interpolate = Mr, oa.interpolators = [function (n, t) {
    var e = _typeof(t);
    return ("string" === e ? ro.has(t.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(t) ? vr : yr : t instanceof on ? vr : Array.isArray(t) ? xr : "object" === e && isNaN(t) ? dr : mr)(n, t);
  }], oa.interpolateArray = xr;
  var gl = function gl() {
      return y;
    },
    pl = oa.map({
      linear: gl,
      poly: Er,
      quad: function quad() {
        return Sr;
      },
      cubic: function cubic() {
        return kr;
      },
      sin: function sin() {
        return Ar;
      },
      exp: function exp() {
        return Cr;
      },
      circle: function circle() {
        return zr;
      },
      elastic: Lr,
      back: qr,
      bounce: function bounce() {
        return Tr;
      }
    }),
    vl = oa.map({
      "in": y,
      out: _r,
      "in-out": wr,
      "out-in": function outIn(n) {
        return wr(_r(n));
      }
    });
  oa.ease = function (n) {
    var t = n.indexOf("-"),
      e = t >= 0 ? n.slice(0, t) : n,
      r = t >= 0 ? n.slice(t + 1) : "in";
    return e = pl.get(e) || gl, r = vl.get(r) || y, br(r(e.apply(null, la.call(arguments, 1))));
  }, oa.interpolateHcl = Rr, oa.interpolateHsl = Dr, oa.interpolateLab = Pr, oa.interpolateRound = jr, oa.transform = function (n) {
    var t = sa.createElementNS(oa.ns.prefix.svg, "g");
    return (oa.transform = function (n) {
      if (null != n) {
        t.setAttribute("transform", n);
        var e = t.transform.baseVal.consolidate();
      }
      return new Ur(e ? e.matrix : dl);
    })(n);
  }, Ur.prototype.toString = function () {
    return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
  };
  var dl = {
    a: 1,
    b: 0,
    c: 0,
    d: 1,
    e: 0,
    f: 0
  };
  oa.interpolateTransform = $r, oa.layout = {}, oa.layout.bundle = function () {
    return function (n) {
      for (var t = [], e = -1, r = n.length; ++e < r;) t.push(Jr(n[e]));
      return t;
    };
  }, oa.layout.chord = function () {
    function n() {
      var n,
        c,
        f,
        h,
        g,
        p = {},
        v = [],
        d = oa.range(i),
        m = [];
      for (e = [], r = [], n = 0, h = -1; ++h < i;) {
        for (c = 0, g = -1; ++g < i;) c += u[h][g];
        v.push(c), m.push(oa.range(i)), n += c;
      }
      for (a && d.sort(function (n, t) {
        return a(v[n], v[t]);
      }), o && m.forEach(function (n, t) {
        n.sort(function (n, e) {
          return o(u[t][n], u[t][e]);
        });
      }), n = (Ua - s * i) / n, c = 0, h = -1; ++h < i;) {
        for (f = c, g = -1; ++g < i;) {
          var y = d[h],
            M = m[y][g],
            x = u[y][M],
            b = c,
            _ = c += x * n;
          p[y + "-" + M] = {
            index: y,
            subindex: M,
            startAngle: b,
            endAngle: _,
            value: x
          };
        }
        r[y] = {
          index: y,
          startAngle: f,
          endAngle: c,
          value: (c - f) / n
        }, c += s;
      }
      for (h = -1; ++h < i;) for (g = h - 1; ++g < i;) {
        var w = p[h + "-" + g],
          S = p[g + "-" + h];
        (w.value || S.value) && e.push(w.value < S.value ? {
          source: S,
          target: w
        } : {
          source: w,
          target: S
        });
      }
      l && t();
    }
    function t() {
      e.sort(function (n, t) {
        return l((n.source.value + n.target.value) / 2, (t.source.value + t.target.value) / 2);
      });
    }
    var e,
      r,
      u,
      i,
      a,
      o,
      l,
      c = {},
      s = 0;
    return c.matrix = function (n) {
      return arguments.length ? (i = (u = n) && u.length, e = r = null, c) : u;
    }, c.padding = function (n) {
      return arguments.length ? (s = n, e = r = null, c) : s;
    }, c.sortGroups = function (n) {
      return arguments.length ? (a = n, e = r = null, c) : a;
    }, c.sortSubgroups = function (n) {
      return arguments.length ? (o = n, e = null, c) : o;
    }, c.sortChords = function (n) {
      return arguments.length ? (l = n, e && t(), c) : l;
    }, c.chords = function () {
      return e || n(), e;
    }, c.groups = function () {
      return r || n(), r;
    }, c;
  }, oa.layout.force = function () {
    function n(n) {
      return function (t, e, r, u) {
        if (t.point !== n) {
          var i = t.cx - n.x,
            a = t.cy - n.y,
            o = u - e,
            l = i * i + a * a;
          if (l > o * o / m) {
            if (v > l) {
              var c = t.charge / l;
              n.px -= i * c, n.py -= a * c;
            }
            return !0;
          }
          if (t.point && l && v > l) {
            var c = t.pointCharge / l;
            n.px -= i * c, n.py -= a * c;
          }
        }
        return !t.charge;
      };
    }
    function t(n) {
      n.px = oa.event.x, n.py = oa.event.y, l.resume();
    }
    var e,
      r,
      u,
      i,
      a,
      o,
      l = {},
      c = oa.dispatch("start", "tick", "end"),
      s = [1, 1],
      f = .9,
      h = ml,
      g = yl,
      p = -30,
      v = Ml,
      d = .1,
      m = .64,
      M = [],
      x = [];
    return l.tick = function () {
      if ((u *= .99) < .005) return e = null, c.end({
        type: "end",
        alpha: u = 0
      }), !0;
      var t,
        r,
        l,
        h,
        g,
        v,
        m,
        y,
        b,
        _ = M.length,
        w = x.length;
      for (r = 0; w > r; ++r) l = x[r], h = l.source, g = l.target, y = g.x - h.x, b = g.y - h.y, (v = y * y + b * b) && (v = u * a[r] * ((v = Math.sqrt(v)) - i[r]) / v, y *= v, b *= v, g.x -= y * (m = h.weight + g.weight ? h.weight / (h.weight + g.weight) : .5), g.y -= b * m, h.x += y * (m = 1 - m), h.y += b * m);
      if ((m = u * d) && (y = s[0] / 2, b = s[1] / 2, r = -1, m)) for (; ++r < _;) l = M[r], l.x += (y - l.x) * m, l.y += (b - l.y) * m;
      if (p) for (ru(t = oa.geom.quadtree(M), u, o), r = -1; ++r < _;) (l = M[r]).fixed || t.visit(n(l));
      for (r = -1; ++r < _;) l = M[r], l.fixed ? (l.x = l.px, l.y = l.py) : (l.x -= (l.px - (l.px = l.x)) * f, l.y -= (l.py - (l.py = l.y)) * f);
      c.tick({
        type: "tick",
        alpha: u
      });
    }, l.nodes = function (n) {
      return arguments.length ? (M = n, l) : M;
    }, l.links = function (n) {
      return arguments.length ? (x = n, l) : x;
    }, l.size = function (n) {
      return arguments.length ? (s = n, l) : s;
    }, l.linkDistance = function (n) {
      return arguments.length ? (h = "function" == typeof n ? n : +n, l) : h;
    }, l.distance = l.linkDistance, l.linkStrength = function (n) {
      return arguments.length ? (g = "function" == typeof n ? n : +n, l) : g;
    }, l.friction = function (n) {
      return arguments.length ? (f = +n, l) : f;
    }, l.charge = function (n) {
      return arguments.length ? (p = "function" == typeof n ? n : +n, l) : p;
    }, l.chargeDistance = function (n) {
      return arguments.length ? (v = n * n, l) : Math.sqrt(v);
    }, l.gravity = function (n) {
      return arguments.length ? (d = +n, l) : d;
    }, l.theta = function (n) {
      return arguments.length ? (m = n * n, l) : Math.sqrt(m);
    }, l.alpha = function (n) {
      return arguments.length ? (n = +n, u ? n > 0 ? u = n : (e.c = null, e.t = NaN, e = null, c.end({
        type: "end",
        alpha: u = 0
      })) : n > 0 && (c.start({
        type: "start",
        alpha: u = n
      }), e = qn(l.tick)), l) : u;
    }, l.start = function () {
      function n(n, r) {
        if (!e) {
          for (e = new Array(u), l = 0; u > l; ++l) e[l] = [];
          for (l = 0; c > l; ++l) {
            var i = x[l];
            e[i.source.index].push(i.target), e[i.target.index].push(i.source);
          }
        }
        for (var a, o = e[t], l = -1, s = o.length; ++l < s;) if (!isNaN(a = o[l][n])) return a;
        return Math.random() * r;
      }
      var t,
        e,
        r,
        u = M.length,
        c = x.length,
        f = s[0],
        v = s[1];
      for (t = 0; u > t; ++t) (r = M[t]).index = t, r.weight = 0;
      for (t = 0; c > t; ++t) r = x[t], "number" == typeof r.source && (r.source = M[r.source]), "number" == typeof r.target && (r.target = M[r.target]), ++r.source.weight, ++r.target.weight;
      for (t = 0; u > t; ++t) r = M[t], isNaN(r.x) && (r.x = n("x", f)), isNaN(r.y) && (r.y = n("y", v)), isNaN(r.px) && (r.px = r.x), isNaN(r.py) && (r.py = r.y);
      if (i = [], "function" == typeof h) for (t = 0; c > t; ++t) i[t] = +h.call(this, x[t], t);else for (t = 0; c > t; ++t) i[t] = h;
      if (a = [], "function" == typeof g) for (t = 0; c > t; ++t) a[t] = +g.call(this, x[t], t);else for (t = 0; c > t; ++t) a[t] = g;
      if (o = [], "function" == typeof p) for (t = 0; u > t; ++t) o[t] = +p.call(this, M[t], t);else for (t = 0; u > t; ++t) o[t] = p;
      return l.resume();
    }, l.resume = function () {
      return l.alpha(.1);
    }, l.stop = function () {
      return l.alpha(0);
    }, l.drag = function () {
      return r || (r = oa.behavior.drag().origin(y).on("dragstart.force", Qr).on("drag.force", t).on("dragend.force", nu)), arguments.length ? void this.on("mouseover.force", tu).on("mouseout.force", eu).call(r) : r;
    }, oa.rebind(l, c, "on");
  };
  var ml = 20,
    yl = 1,
    Ml = 1 / 0;
  oa.layout.hierarchy = function () {
    function n(u) {
      var i,
        a = [u],
        o = [];
      for (u.depth = 0; null != (i = a.pop());) if (o.push(i), (c = e.call(n, i, i.depth)) && (l = c.length)) {
        for (var l, c, s; --l >= 0;) a.push(s = c[l]), s.parent = i, s.depth = i.depth + 1;
        r && (i.value = 0), i.children = c;
      } else r && (i.value = +r.call(n, i, i.depth) || 0), delete i.children;
      return au(u, function (n) {
        var e, u;
        t && (e = n.children) && e.sort(t), r && (u = n.parent) && (u.value += n.value);
      }), o;
    }
    var t = cu,
      e = ou,
      r = lu;
    return n.sort = function (e) {
      return arguments.length ? (t = e, n) : t;
    }, n.children = function (t) {
      return arguments.length ? (e = t, n) : e;
    }, n.value = function (t) {
      return arguments.length ? (r = t, n) : r;
    }, n.revalue = function (t) {
      return r && (iu(t, function (n) {
        n.children && (n.value = 0);
      }), au(t, function (t) {
        var e;
        t.children || (t.value = +r.call(n, t, t.depth) || 0), (e = t.parent) && (e.value += t.value);
      })), t;
    }, n;
  }, oa.layout.partition = function () {
    function n(t, e, r, u) {
      var i = t.children;
      if (t.x = e, t.y = t.depth * u, t.dx = r, t.dy = u, i && (a = i.length)) {
        var a,
          o,
          l,
          c = -1;
        for (r = t.value ? r / t.value : 0; ++c < a;) n(o = i[c], e, l = o.value * r, u), e += l;
      }
    }
    function t(n) {
      var e = n.children,
        r = 0;
      if (e && (u = e.length)) for (var u, i = -1; ++i < u;) r = Math.max(r, t(e[i]));
      return 1 + r;
    }
    function e(e, i) {
      var a = r.call(this, e, i);
      return n(a[0], 0, u[0], u[1] / t(a[0])), a;
    }
    var r = oa.layout.hierarchy(),
      u = [1, 1];
    return e.size = function (n) {
      return arguments.length ? (u = n, e) : u;
    }, uu(e, r);
  }, oa.layout.pie = function () {
    function n(a) {
      var o,
        l = a.length,
        c = a.map(function (e, r) {
          return +t.call(n, e, r);
        }),
        s = +("function" == typeof r ? r.apply(this, arguments) : r),
        f = ("function" == typeof u ? u.apply(this, arguments) : u) - s,
        h = Math.min(Math.abs(f) / l, +("function" == typeof i ? i.apply(this, arguments) : i)),
        g = h * (0 > f ? -1 : 1),
        p = oa.sum(c),
        v = p ? (f - l * g) / p : 0,
        d = oa.range(l),
        m = [];
      return null != e && d.sort(e === xl ? function (n, t) {
        return c[t] - c[n];
      } : function (n, t) {
        return e(a[n], a[t]);
      }), d.forEach(function (n) {
        m[n] = {
          data: a[n],
          value: o = c[n],
          startAngle: s,
          endAngle: s += o * v + g,
          padAngle: h
        };
      }), m;
    }
    var t = Number,
      e = xl,
      r = 0,
      u = Ua,
      i = 0;
    return n.value = function (e) {
      return arguments.length ? (t = e, n) : t;
    }, n.sort = function (t) {
      return arguments.length ? (e = t, n) : e;
    }, n.startAngle = function (t) {
      return arguments.length ? (r = t, n) : r;
    }, n.endAngle = function (t) {
      return arguments.length ? (u = t, n) : u;
    }, n.padAngle = function (t) {
      return arguments.length ? (i = t, n) : i;
    }, n;
  };
  var xl = {};
  oa.layout.stack = function () {
    function n(o, l) {
      if (!(h = o.length)) return o;
      var c = o.map(function (e, r) {
          return t.call(n, e, r);
        }),
        s = c.map(function (t) {
          return t.map(function (t, e) {
            return [i.call(n, t, e), a.call(n, t, e)];
          });
        }),
        f = e.call(n, s, l);
      c = oa.permute(c, f), s = oa.permute(s, f);
      var h,
        g,
        p,
        v,
        d = r.call(n, s, l),
        m = c[0].length;
      for (p = 0; m > p; ++p) for (u.call(n, c[0][p], v = d[p], s[0][p][1]), g = 1; h > g; ++g) u.call(n, c[g][p], v += s[g - 1][p][1], s[g][p][1]);
      return o;
    }
    var t = y,
      e = pu,
      r = vu,
      u = gu,
      i = fu,
      a = hu;
    return n.values = function (e) {
      return arguments.length ? (t = e, n) : t;
    }, n.order = function (t) {
      return arguments.length ? (e = "function" == typeof t ? t : bl.get(t) || pu, n) : e;
    }, n.offset = function (t) {
      return arguments.length ? (r = "function" == typeof t ? t : _l.get(t) || vu, n) : r;
    }, n.x = function (t) {
      return arguments.length ? (i = t, n) : i;
    }, n.y = function (t) {
      return arguments.length ? (a = t, n) : a;
    }, n.out = function (t) {
      return arguments.length ? (u = t, n) : u;
    }, n;
  };
  var bl = oa.map({
      "inside-out": function insideOut(n) {
        var t,
          e,
          r = n.length,
          u = n.map(du),
          i = n.map(mu),
          a = oa.range(r).sort(function (n, t) {
            return u[n] - u[t];
          }),
          o = 0,
          l = 0,
          c = [],
          s = [];
        for (t = 0; r > t; ++t) e = a[t], l > o ? (o += i[e], c.push(e)) : (l += i[e], s.push(e));
        return s.reverse().concat(c);
      },
      reverse: function reverse(n) {
        return oa.range(n.length).reverse();
      },
      "default": pu
    }),
    _l = oa.map({
      silhouette: function silhouette(n) {
        var t,
          e,
          r,
          u = n.length,
          i = n[0].length,
          a = [],
          o = 0,
          l = [];
        for (e = 0; i > e; ++e) {
          for (t = 0, r = 0; u > t; t++) r += n[t][e][1];
          r > o && (o = r), a.push(r);
        }
        for (e = 0; i > e; ++e) l[e] = (o - a[e]) / 2;
        return l;
      },
      wiggle: function wiggle(n) {
        var t,
          e,
          r,
          u,
          i,
          a,
          o,
          l,
          c,
          s = n.length,
          f = n[0],
          h = f.length,
          g = [];
        for (g[0] = l = c = 0, e = 1; h > e; ++e) {
          for (t = 0, u = 0; s > t; ++t) u += n[t][e][1];
          for (t = 0, i = 0, o = f[e][0] - f[e - 1][0]; s > t; ++t) {
            for (r = 0, a = (n[t][e][1] - n[t][e - 1][1]) / (2 * o); t > r; ++r) a += (n[r][e][1] - n[r][e - 1][1]) / o;
            i += a * n[t][e][1];
          }
          g[e] = l -= u ? i / u * o : 0, c > l && (c = l);
        }
        for (e = 0; h > e; ++e) g[e] -= c;
        return g;
      },
      expand: function expand(n) {
        var t,
          e,
          r,
          u = n.length,
          i = n[0].length,
          a = 1 / u,
          o = [];
        for (e = 0; i > e; ++e) {
          for (t = 0, r = 0; u > t; t++) r += n[t][e][1];
          if (r) for (t = 0; u > t; t++) n[t][e][1] /= r;else for (t = 0; u > t; t++) n[t][e][1] = a;
        }
        for (e = 0; i > e; ++e) o[e] = 0;
        return o;
      },
      zero: vu
    });
  oa.layout.histogram = function () {
    function n(n, i) {
      for (var a, o, l = [], c = n.map(e, this), s = r.call(this, c, i), f = u.call(this, s, c, i), i = -1, h = c.length, g = f.length - 1, p = t ? 1 : 1 / h; ++i < g;) a = l[i] = [], a.dx = f[i + 1] - (a.x = f[i]), a.y = 0;
      if (g > 0) for (i = -1; ++i < h;) o = c[i], o >= s[0] && o <= s[1] && (a = l[oa.bisect(f, o, 1, g) - 1], a.y += p, a.push(n[i]));
      return l;
    }
    var t = !0,
      e = Number,
      r = bu,
      u = Mu;
    return n.value = function (t) {
      return arguments.length ? (e = t, n) : e;
    }, n.range = function (t) {
      return arguments.length ? (r = En(t), n) : r;
    }, n.bins = function (t) {
      return arguments.length ? (u = "number" == typeof t ? function (n) {
        return xu(n, t);
      } : En(t), n) : u;
    }, n.frequency = function (e) {
      return arguments.length ? (t = !!e, n) : t;
    }, n;
  }, oa.layout.pack = function () {
    function n(n, i) {
      var a = e.call(this, n, i),
        o = a[0],
        l = u[0],
        c = u[1],
        s = null == t ? Math.sqrt : "function" == typeof t ? t : function () {
          return t;
        };
      if (o.x = o.y = 0, au(o, function (n) {
        n.r = +s(n.value);
      }), au(o, Nu), r) {
        var f = r * (t ? 1 : Math.max(2 * o.r / l, 2 * o.r / c)) / 2;
        au(o, function (n) {
          n.r += f;
        }), au(o, Nu), au(o, function (n) {
          n.r -= f;
        });
      }
      return Cu(o, l / 2, c / 2, t ? 1 : 1 / Math.max(2 * o.r / l, 2 * o.r / c)), a;
    }
    var t,
      e = oa.layout.hierarchy().sort(_u),
      r = 0,
      u = [1, 1];
    return n.size = function (t) {
      return arguments.length ? (u = t, n) : u;
    }, n.radius = function (e) {
      return arguments.length ? (t = null == e || "function" == typeof e ? e : +e, n) : t;
    }, n.padding = function (t) {
      return arguments.length ? (r = +t, n) : r;
    }, uu(n, e);
  }, oa.layout.tree = function () {
    function n(n, u) {
      var s = a.call(this, n, u),
        f = s[0],
        h = t(f);
      if (au(h, e), h.parent.m = -h.z, iu(h, r), c) iu(f, i);else {
        var g = f,
          p = f,
          v = f;
        iu(f, function (n) {
          n.x < g.x && (g = n), n.x > p.x && (p = n), n.depth > v.depth && (v = n);
        });
        var d = o(g, p) / 2 - g.x,
          m = l[0] / (p.x + o(p, g) / 2 + d),
          y = l[1] / (v.depth || 1);
        iu(f, function (n) {
          n.x = (n.x + d) * m, n.y = n.depth * y;
        });
      }
      return s;
    }
    function t(n) {
      for (var t, e = {
          A: null,
          children: [n]
        }, r = [e]; null != (t = r.pop());) for (var u, i = t.children, a = 0, o = i.length; o > a; ++a) r.push((i[a] = u = {
        _: i[a],
        parent: t,
        children: (u = i[a].children) && u.slice() || [],
        A: null,
        a: null,
        z: 0,
        m: 0,
        c: 0,
        s: 0,
        t: null,
        i: a
      }).a = u);
      return e.children[0];
    }
    function e(n) {
      var t = n.children,
        e = n.parent.children,
        r = n.i ? e[n.i - 1] : null;
      if (t.length) {
        Du(n);
        var i = (t[0].z + t[t.length - 1].z) / 2;
        r ? (n.z = r.z + o(n._, r._), n.m = n.z - i) : n.z = i;
      } else r && (n.z = r.z + o(n._, r._));
      n.parent.A = u(n, r, n.parent.A || e[0]);
    }
    function r(n) {
      n._.x = n.z + n.parent.m, n.m += n.parent.m;
    }
    function u(n, t, e) {
      if (t) {
        for (var r, u = n, i = n, a = t, l = u.parent.children[0], c = u.m, s = i.m, f = a.m, h = l.m; a = Tu(a), u = qu(u), a && u;) l = qu(l), i = Tu(i), i.a = n, r = a.z + f - u.z - c + o(a._, u._), r > 0 && (Ru(Pu(a, n, e), n, r), c += r, s += r), f += a.m, c += u.m, h += l.m, s += i.m;
        a && !Tu(i) && (i.t = a, i.m += f - s), u && !qu(l) && (l.t = u, l.m += c - h, e = n);
      }
      return e;
    }
    function i(n) {
      n.x *= l[0], n.y = n.depth * l[1];
    }
    var a = oa.layout.hierarchy().sort(null).value(null),
      o = Lu,
      l = [1, 1],
      c = null;
    return n.separation = function (t) {
      return arguments.length ? (o = t, n) : o;
    }, n.size = function (t) {
      return arguments.length ? (c = null == (l = t) ? i : null, n) : c ? null : l;
    }, n.nodeSize = function (t) {
      return arguments.length ? (c = null == (l = t) ? null : i, n) : c ? l : null;
    }, uu(n, a);
  }, oa.layout.cluster = function () {
    function n(n, i) {
      var a,
        o = t.call(this, n, i),
        l = o[0],
        c = 0;
      au(l, function (n) {
        var t = n.children;
        t && t.length ? (n.x = Uu(t), n.y = ju(t)) : (n.x = a ? c += e(n, a) : 0, n.y = 0, a = n);
      });
      var s = Fu(l),
        f = Hu(l),
        h = s.x - e(s, f) / 2,
        g = f.x + e(f, s) / 2;
      return au(l, u ? function (n) {
        n.x = (n.x - l.x) * r[0], n.y = (l.y - n.y) * r[1];
      } : function (n) {
        n.x = (n.x - h) / (g - h) * r[0], n.y = (1 - (l.y ? n.y / l.y : 1)) * r[1];
      }), o;
    }
    var t = oa.layout.hierarchy().sort(null).value(null),
      e = Lu,
      r = [1, 1],
      u = !1;
    return n.separation = function (t) {
      return arguments.length ? (e = t, n) : e;
    }, n.size = function (t) {
      return arguments.length ? (u = null == (r = t), n) : u ? null : r;
    }, n.nodeSize = function (t) {
      return arguments.length ? (u = null != (r = t), n) : u ? r : null;
    }, uu(n, t);
  }, oa.layout.treemap = function () {
    function n(n, t) {
      for (var e, r, u = -1, i = n.length; ++u < i;) r = (e = n[u]).value * (0 > t ? 0 : t), e.area = isNaN(r) || 0 >= r ? 0 : r;
    }
    function t(e) {
      var i = e.children;
      if (i && i.length) {
        var a,
          o,
          l,
          c = f(e),
          s = [],
          h = i.slice(),
          p = 1 / 0,
          v = "slice" === g ? c.dx : "dice" === g ? c.dy : "slice-dice" === g ? 1 & e.depth ? c.dy : c.dx : Math.min(c.dx, c.dy);
        for (n(h, c.dx * c.dy / e.value), s.area = 0; (l = h.length) > 0;) s.push(a = h[l - 1]), s.area += a.area, "squarify" !== g || (o = r(s, v)) <= p ? (h.pop(), p = o) : (s.area -= s.pop().area, u(s, v, c, !1), v = Math.min(c.dx, c.dy), s.length = s.area = 0, p = 1 / 0);
        s.length && (u(s, v, c, !0), s.length = s.area = 0), i.forEach(t);
      }
    }
    function e(t) {
      var r = t.children;
      if (r && r.length) {
        var i,
          a = f(t),
          o = r.slice(),
          l = [];
        for (n(o, a.dx * a.dy / t.value), l.area = 0; i = o.pop();) l.push(i), l.area += i.area, null != i.z && (u(l, i.z ? a.dx : a.dy, a, !o.length), l.length = l.area = 0);
        r.forEach(e);
      }
    }
    function r(n, t) {
      for (var e, r = n.area, u = 0, i = 1 / 0, a = -1, o = n.length; ++a < o;) (e = n[a].area) && (i > e && (i = e), e > u && (u = e));
      return r *= r, t *= t, r ? Math.max(t * u * p / r, r / (t * i * p)) : 1 / 0;
    }
    function u(n, t, e, r) {
      var u,
        i = -1,
        a = n.length,
        o = e.x,
        c = e.y,
        s = t ? l(n.area / t) : 0;
      if (t == e.dx) {
        for ((r || s > e.dy) && (s = e.dy); ++i < a;) u = n[i], u.x = o, u.y = c, u.dy = s, o += u.dx = Math.min(e.x + e.dx - o, s ? l(u.area / s) : 0);
        u.z = !0, u.dx += e.x + e.dx - o, e.y += s, e.dy -= s;
      } else {
        for ((r || s > e.dx) && (s = e.dx); ++i < a;) u = n[i], u.x = o, u.y = c, u.dx = s, c += u.dy = Math.min(e.y + e.dy - c, s ? l(u.area / s) : 0);
        u.z = !1, u.dy += e.y + e.dy - c, e.x += s, e.dx -= s;
      }
    }
    function i(r) {
      var u = a || o(r),
        i = u[0];
      return i.x = i.y = 0, i.value ? (i.dx = c[0], i.dy = c[1]) : i.dx = i.dy = 0, a && o.revalue(i), n([i], i.dx * i.dy / i.value), (a ? e : t)(i), h && (a = u), u;
    }
    var a,
      o = oa.layout.hierarchy(),
      l = Math.round,
      c = [1, 1],
      s = null,
      f = Ou,
      h = !1,
      g = "squarify",
      p = .5 * (1 + Math.sqrt(5));
    return i.size = function (n) {
      return arguments.length ? (c = n, i) : c;
    }, i.padding = function (n) {
      function t(t) {
        var e = n.call(i, t, t.depth);
        return null == e ? Ou(t) : Iu(t, "number" == typeof e ? [e, e, e, e] : e);
      }
      function e(t) {
        return Iu(t, n);
      }
      if (!arguments.length) return s;
      var r;
      return f = null == (s = n) ? Ou : "function" == (r = _typeof(n)) ? t : "number" === r ? (n = [n, n, n, n], e) : e, i;
    }, i.round = function (n) {
      return arguments.length ? (l = n ? Math.round : Number, i) : l != Number;
    }, i.sticky = function (n) {
      return arguments.length ? (h = n, a = null, i) : h;
    }, i.ratio = function (n) {
      return arguments.length ? (p = n, i) : p;
    }, i.mode = function (n) {
      return arguments.length ? (g = n + "", i) : g;
    }, uu(i, o);
  }, oa.random = {
    normal: function normal(n, t) {
      var e = arguments.length;
      return 2 > e && (t = 1), 1 > e && (n = 0), function () {
        var e, r, u;
        do e = 2 * Math.random() - 1, r = 2 * Math.random() - 1, u = e * e + r * r; while (!u || u > 1);
        return n + t * e * Math.sqrt(-2 * Math.log(u) / u);
      };
    },
    logNormal: function logNormal() {
      var n = oa.random.normal.apply(oa, arguments);
      return function () {
        return Math.exp(n());
      };
    },
    bates: function bates(n) {
      var t = oa.random.irwinHall(n);
      return function () {
        return t() / n;
      };
    },
    irwinHall: function irwinHall(n) {
      return function () {
        for (var t = 0, e = 0; n > e; e++) t += Math.random();
        return t;
      };
    }
  }, oa.scale = {};
  var wl = {
    floor: y,
    ceil: y
  };
  oa.scale.linear = function () {
    return Wu([0, 1], [0, 1], Mr, !1);
  };
  var Sl = {
    s: 1,
    g: 1,
    p: 1,
    r: 1,
    e: 1
  };
  oa.scale.log = function () {
    return ri(oa.scale.linear().domain([0, 1]), 10, !0, [1, 10]);
  };
  var kl = oa.format(".0e"),
    Nl = {
      floor: function floor(n) {
        return -Math.ceil(-n);
      },
      ceil: function ceil(n) {
        return -Math.floor(-n);
      }
    };
  oa.scale.pow = function () {
    return ui(oa.scale.linear(), 1, [0, 1]);
  }, oa.scale.sqrt = function () {
    return oa.scale.pow().exponent(.5);
  }, oa.scale.ordinal = function () {
    return ai([], {
      t: "range",
      a: [[]]
    });
  }, oa.scale.category10 = function () {
    return oa.scale.ordinal().range(El);
  }, oa.scale.category20 = function () {
    return oa.scale.ordinal().range(Al);
  }, oa.scale.category20b = function () {
    return oa.scale.ordinal().range(Cl);
  }, oa.scale.category20c = function () {
    return oa.scale.ordinal().range(zl);
  };
  var El = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(xn),
    Al = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(xn),
    Cl = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(xn),
    zl = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(xn);
  oa.scale.quantile = function () {
    return oi([], []);
  }, oa.scale.quantize = function () {
    return li(0, 1, [0, 1]);
  }, oa.scale.threshold = function () {
    return ci([.5], [0, 1]);
  }, oa.scale.identity = function () {
    return si([0, 1]);
  }, oa.svg = {}, oa.svg.arc = function () {
    function n() {
      var n = Math.max(0, +e.apply(this, arguments)),
        c = Math.max(0, +r.apply(this, arguments)),
        s = a.apply(this, arguments) - Ha,
        f = o.apply(this, arguments) - Ha,
        h = Math.abs(f - s),
        g = s > f ? 0 : 1;
      if (n > c && (p = c, c = n, n = p), h >= Fa) return t(c, g) + (n ? t(n, 1 - g) : "") + "Z";
      var p,
        v,
        d,
        m,
        y,
        M,
        x,
        b,
        _,
        w,
        S,
        k,
        N = 0,
        E = 0,
        A = [];
      if ((m = (+l.apply(this, arguments) || 0) / 2) && (d = i === Ll ? Math.sqrt(n * n + c * c) : +i.apply(this, arguments), g || (E *= -1), c && (E = tn(d / c * Math.sin(m))), n && (N = tn(d / n * Math.sin(m)))), c) {
        y = c * Math.cos(s + E), M = c * Math.sin(s + E), x = c * Math.cos(f - E), b = c * Math.sin(f - E);
        var C = Math.abs(f - s - 2 * E) <= ja ? 0 : 1;
        if (E && mi(y, M, x, b) === g ^ C) {
          var z = (s + f) / 2;
          y = c * Math.cos(z), M = c * Math.sin(z), x = b = null;
        }
      } else y = M = 0;
      if (n) {
        _ = n * Math.cos(f - N), w = n * Math.sin(f - N), S = n * Math.cos(s + N), k = n * Math.sin(s + N);
        var L = Math.abs(s - f + 2 * N) <= ja ? 0 : 1;
        if (N && mi(_, w, S, k) === 1 - g ^ L) {
          var q = (s + f) / 2;
          _ = n * Math.cos(q), w = n * Math.sin(q), S = k = null;
        }
      } else _ = w = 0;
      if (h > Da && (p = Math.min(Math.abs(c - n) / 2, +u.apply(this, arguments))) > .001) {
        v = c > n ^ g ? 0 : 1;
        var T = p,
          R = p;
        if (ja > h) {
          var D = null == S ? [_, w] : null == x ? [y, M] : Re([y, M], [S, k], [x, b], [_, w]),
            P = y - D[0],
            j = M - D[1],
            U = x - D[0],
            F = b - D[1],
            H = 1 / Math.sin(Math.acos((P * U + j * F) / (Math.sqrt(P * P + j * j) * Math.sqrt(U * U + F * F))) / 2),
            O = Math.sqrt(D[0] * D[0] + D[1] * D[1]);
          R = Math.min(p, (n - O) / (H - 1)), T = Math.min(p, (c - O) / (H + 1));
        }
        if (null != x) {
          var I = yi(null == S ? [_, w] : [S, k], [y, M], c, T, g),
            Y = yi([x, b], [_, w], c, T, g);
          p === T ? A.push("M", I[0], "A", T, ",", T, " 0 0,", v, " ", I[1], "A", c, ",", c, " 0 ", 1 - g ^ mi(I[1][0], I[1][1], Y[1][0], Y[1][1]), ",", g, " ", Y[1], "A", T, ",", T, " 0 0,", v, " ", Y[0]) : A.push("M", I[0], "A", T, ",", T, " 0 1,", v, " ", Y[0]);
        } else A.push("M", y, ",", M);
        if (null != S) {
          var Z = yi([y, M], [S, k], n, -R, g),
            V = yi([_, w], null == x ? [y, M] : [x, b], n, -R, g);
          p === R ? A.push("L", V[0], "A", R, ",", R, " 0 0,", v, " ", V[1], "A", n, ",", n, " 0 ", g ^ mi(V[1][0], V[1][1], Z[1][0], Z[1][1]), ",", 1 - g, " ", Z[1], "A", R, ",", R, " 0 0,", v, " ", Z[0]) : A.push("L", V[0], "A", R, ",", R, " 0 0,", v, " ", Z[0]);
        } else A.push("L", _, ",", w);
      } else A.push("M", y, ",", M), null != x && A.push("A", c, ",", c, " 0 ", C, ",", g, " ", x, ",", b), A.push("L", _, ",", w), null != S && A.push("A", n, ",", n, " 0 ", L, ",", 1 - g, " ", S, ",", k);
      return A.push("Z"), A.join("");
    }
    function t(n, t) {
      return "M0," + n + "A" + n + "," + n + " 0 1," + t + " 0," + -n + "A" + n + "," + n + " 0 1," + t + " 0," + n;
    }
    var e = hi,
      r = gi,
      u = fi,
      i = Ll,
      a = pi,
      o = vi,
      l = di;
    return n.innerRadius = function (t) {
      return arguments.length ? (e = En(t), n) : e;
    }, n.outerRadius = function (t) {
      return arguments.length ? (r = En(t), n) : r;
    }, n.cornerRadius = function (t) {
      return arguments.length ? (u = En(t), n) : u;
    }, n.padRadius = function (t) {
      return arguments.length ? (i = t == Ll ? Ll : En(t), n) : i;
    }, n.startAngle = function (t) {
      return arguments.length ? (a = En(t), n) : a;
    }, n.endAngle = function (t) {
      return arguments.length ? (o = En(t), n) : o;
    }, n.padAngle = function (t) {
      return arguments.length ? (l = En(t), n) : l;
    }, n.centroid = function () {
      var n = (+e.apply(this, arguments) + +r.apply(this, arguments)) / 2,
        t = (+a.apply(this, arguments) + +o.apply(this, arguments)) / 2 - Ha;
      return [Math.cos(t) * n, Math.sin(t) * n];
    }, n;
  };
  var Ll = "auto";
  oa.svg.line = function () {
    return Mi(y);
  };
  var ql = oa.map({
    linear: xi,
    "linear-closed": bi,
    step: _i,
    "step-before": wi,
    "step-after": Si,
    basis: zi,
    "basis-open": Li,
    "basis-closed": qi,
    bundle: Ti,
    cardinal: Ei,
    "cardinal-open": ki,
    "cardinal-closed": Ni,
    monotone: Fi
  });
  ql.forEach(function (n, t) {
    t.key = n, t.closed = /-closed$/.test(n);
  });
  var Tl = [0, 2 / 3, 1 / 3, 0],
    Rl = [0, 1 / 3, 2 / 3, 0],
    Dl = [0, 1 / 6, 2 / 3, 1 / 6];
  oa.svg.line.radial = function () {
    var n = Mi(Hi);
    return n.radius = n.x, delete n.x, n.angle = n.y, delete n.y, n;
  }, wi.reverse = Si, Si.reverse = wi, oa.svg.area = function () {
    return Oi(y);
  }, oa.svg.area.radial = function () {
    var n = Oi(Hi);
    return n.radius = n.x, delete n.x, n.innerRadius = n.x0, delete n.x0, n.outerRadius = n.x1, delete n.x1, n.angle = n.y, delete n.y, n.startAngle = n.y0, delete n.y0, n.endAngle = n.y1, delete n.y1, n;
  }, oa.svg.chord = function () {
    function n(n, o) {
      var l = t(this, i, n, o),
        c = t(this, a, n, o);
      return "M" + l.p0 + r(l.r, l.p1, l.a1 - l.a0) + (e(l, c) ? u(l.r, l.p1, l.r, l.p0) : u(l.r, l.p1, c.r, c.p0) + r(c.r, c.p1, c.a1 - c.a0) + u(c.r, c.p1, l.r, l.p0)) + "Z";
    }
    function t(n, t, e, r) {
      var u = t.call(n, e, r),
        i = o.call(n, u, r),
        a = l.call(n, u, r) - Ha,
        s = c.call(n, u, r) - Ha;
      return {
        r: i,
        a0: a,
        a1: s,
        p0: [i * Math.cos(a), i * Math.sin(a)],
        p1: [i * Math.cos(s), i * Math.sin(s)]
      };
    }
    function e(n, t) {
      return n.a0 == t.a0 && n.a1 == t.a1;
    }
    function r(n, t, e) {
      return "A" + n + "," + n + " 0 " + +(e > ja) + ",1 " + t;
    }
    function u(n, t, e, r) {
      return "Q 0,0 " + r;
    }
    var i = Me,
      a = xe,
      o = Ii,
      l = pi,
      c = vi;
    return n.radius = function (t) {
      return arguments.length ? (o = En(t), n) : o;
    }, n.source = function (t) {
      return arguments.length ? (i = En(t), n) : i;
    }, n.target = function (t) {
      return arguments.length ? (a = En(t), n) : a;
    }, n.startAngle = function (t) {
      return arguments.length ? (l = En(t), n) : l;
    }, n.endAngle = function (t) {
      return arguments.length ? (c = En(t), n) : c;
    }, n;
  }, oa.svg.diagonal = function () {
    function n(n, u) {
      var i = t.call(this, n, u),
        a = e.call(this, n, u),
        o = (i.y + a.y) / 2,
        l = [i, {
          x: i.x,
          y: o
        }, {
          x: a.x,
          y: o
        }, a];
      return l = l.map(r), "M" + l[0] + "C" + l[1] + " " + l[2] + " " + l[3];
    }
    var t = Me,
      e = xe,
      r = Yi;
    return n.source = function (e) {
      return arguments.length ? (t = En(e), n) : t;
    }, n.target = function (t) {
      return arguments.length ? (e = En(t), n) : e;
    }, n.projection = function (t) {
      return arguments.length ? (r = t, n) : r;
    }, n;
  }, oa.svg.diagonal.radial = function () {
    var n = oa.svg.diagonal(),
      t = Yi,
      e = n.projection;
    return n.projection = function (n) {
      return arguments.length ? e(Zi(t = n)) : t;
    }, n;
  }, oa.svg.symbol = function () {
    function n(n, r) {
      return (Pl.get(t.call(this, n, r)) || $i)(e.call(this, n, r));
    }
    var t = Xi,
      e = Vi;
    return n.type = function (e) {
      return arguments.length ? (t = En(e), n) : t;
    }, n.size = function (t) {
      return arguments.length ? (e = En(t), n) : e;
    }, n;
  };
  var Pl = oa.map({
    circle: $i,
    cross: function cross(n) {
      var t = Math.sqrt(n / 5) / 2;
      return "M" + -3 * t + "," + -t + "H" + -t + "V" + -3 * t + "H" + t + "V" + -t + "H" + 3 * t + "V" + t + "H" + t + "V" + 3 * t + "H" + -t + "V" + t + "H" + -3 * t + "Z";
    },
    diamond: function diamond(n) {
      var t = Math.sqrt(n / (2 * Ul)),
        e = t * Ul;
      return "M0," + -t + "L" + e + ",0 0," + t + " " + -e + ",0Z";
    },
    square: function square(n) {
      var t = Math.sqrt(n) / 2;
      return "M" + -t + "," + -t + "L" + t + "," + -t + " " + t + "," + t + " " + -t + "," + t + "Z";
    },
    "triangle-down": function triangleDown(n) {
      var t = Math.sqrt(n / jl),
        e = t * jl / 2;
      return "M0," + e + "L" + t + "," + -e + " " + -t + "," + -e + "Z";
    },
    "triangle-up": function triangleUp(n) {
      var t = Math.sqrt(n / jl),
        e = t * jl / 2;
      return "M0," + -e + "L" + t + "," + e + " " + -t + "," + e + "Z";
    }
  });
  oa.svg.symbolTypes = Pl.keys();
  var jl = Math.sqrt(3),
    Ul = Math.tan(30 * Oa);
  Aa.transition = function (n) {
    for (var t, e, r = Fl || ++Yl, u = Ki(n), i = [], a = Hl || {
        time: Date.now(),
        ease: Nr,
        delay: 0,
        duration: 250
      }, o = -1, l = this.length; ++o < l;) {
      i.push(t = []);
      for (var c = this[o], s = -1, f = c.length; ++s < f;) (e = c[s]) && Qi(e, s, u, r, a), t.push(e);
    }
    return Wi(i, u, r);
  }, Aa.interrupt = function (n) {
    return this.each(null == n ? Ol : Bi(Ki(n)));
  };
  var Fl,
    Hl,
    Ol = Bi(Ki()),
    Il = [],
    Yl = 0;
  Il.call = Aa.call, Il.empty = Aa.empty, Il.node = Aa.node, Il.size = Aa.size, oa.transition = function (n, t) {
    return n && n.transition ? Fl ? n.transition(t) : n : oa.selection().transition(n);
  }, oa.transition.prototype = Il, Il.select = function (n) {
    var t,
      e,
      r,
      u = this.id,
      i = this.namespace,
      a = [];
    n = A(n);
    for (var o = -1, l = this.length; ++o < l;) {
      a.push(t = []);
      for (var c = this[o], s = -1, f = c.length; ++s < f;) (r = c[s]) && (e = n.call(r, r.__data__, s, o)) ? ("__data__" in r && (e.__data__ = r.__data__), Qi(e, s, i, u, r[i][u]), t.push(e)) : t.push(null);
    }
    return Wi(a, i, u);
  }, Il.selectAll = function (n) {
    var t,
      e,
      r,
      u,
      i,
      a = this.id,
      o = this.namespace,
      l = [];
    n = C(n);
    for (var c = -1, s = this.length; ++c < s;) for (var f = this[c], h = -1, g = f.length; ++h < g;) if (r = f[h]) {
      i = r[o][a], e = n.call(r, r.__data__, h, c), l.push(t = []);
      for (var p = -1, v = e.length; ++p < v;) (u = e[p]) && Qi(u, p, o, a, i), t.push(u);
    }
    return Wi(l, o, a);
  }, Il.filter = function (n) {
    var t,
      e,
      r,
      u = [];
    "function" != typeof n && (n = O(n));
    for (var i = 0, a = this.length; a > i; i++) {
      u.push(t = []);
      for (var e = this[i], o = 0, l = e.length; l > o; o++) (r = e[o]) && n.call(r, r.__data__, o, i) && t.push(r);
    }
    return Wi(u, this.namespace, this.id);
  }, Il.tween = function (n, t) {
    var e = this.id,
      r = this.namespace;
    return arguments.length < 2 ? this.node()[r][e].tween.get(n) : Y(this, null == t ? function (t) {
      t[r][e].tween.remove(n);
    } : function (u) {
      u[r][e].tween.set(n, t);
    });
  }, Il.attr = function (n, t) {
    function e() {
      this.removeAttribute(o);
    }
    function r() {
      this.removeAttributeNS(o.space, o.local);
    }
    function u(n) {
      return null == n ? e : (n += "", function () {
        var t,
          e = this.getAttribute(o);
        return e !== n && (t = a(e, n), function (n) {
          this.setAttribute(o, t(n));
        });
      });
    }
    function i(n) {
      return null == n ? r : (n += "", function () {
        var t,
          e = this.getAttributeNS(o.space, o.local);
        return e !== n && (t = a(e, n), function (n) {
          this.setAttributeNS(o.space, o.local, t(n));
        });
      });
    }
    if (arguments.length < 2) {
      for (t in n) this.attr(t, n[t]);
      return this;
    }
    var a = "transform" == n ? $r : Mr,
      o = oa.ns.qualify(n);
    return Ji(this, "attr." + n, t, o.local ? i : u);
  }, Il.attrTween = function (n, t) {
    function e(n, e) {
      var r = t.call(this, n, e, this.getAttribute(u));
      return r && function (n) {
        this.setAttribute(u, r(n));
      };
    }
    function r(n, e) {
      var r = t.call(this, n, e, this.getAttributeNS(u.space, u.local));
      return r && function (n) {
        this.setAttributeNS(u.space, u.local, r(n));
      };
    }
    var u = oa.ns.qualify(n);
    return this.tween("attr." + n, u.local ? r : e);
  }, Il.style = function (n, e, r) {
    function u() {
      this.style.removeProperty(n);
    }
    function i(e) {
      return null == e ? u : (e += "", function () {
        var u,
          i = t(this).getComputedStyle(this, null).getPropertyValue(n);
        return i !== e && (u = Mr(i, e), function (t) {
          this.style.setProperty(n, u(t), r);
        });
      });
    }
    var a = arguments.length;
    if (3 > a) {
      if ("string" != typeof n) {
        2 > a && (e = "");
        for (r in n) this.style(r, n[r], e);
        return this;
      }
      r = "";
    }
    return Ji(this, "style." + n, e, i);
  }, Il.styleTween = function (n, e, r) {
    function u(u, i) {
      var a = e.call(this, u, i, t(this).getComputedStyle(this, null).getPropertyValue(n));
      return a && function (t) {
        this.style.setProperty(n, a(t), r);
      };
    }
    return arguments.length < 3 && (r = ""), this.tween("style." + n, u);
  }, Il.text = function (n) {
    return Ji(this, "text", n, Gi);
  }, Il.remove = function () {
    var n = this.namespace;
    return this.each("end.transition", function () {
      var t;
      this[n].count < 2 && (t = this.parentNode) && t.removeChild(this);
    });
  }, Il.ease = function (n) {
    var t = this.id,
      e = this.namespace;
    return arguments.length < 1 ? this.node()[e][t].ease : ("function" != typeof n && (n = oa.ease.apply(oa, arguments)), Y(this, function (r) {
      r[e][t].ease = n;
    }));
  }, Il.delay = function (n) {
    var t = this.id,
      e = this.namespace;
    return arguments.length < 1 ? this.node()[e][t].delay : Y(this, "function" == typeof n ? function (r, u, i) {
      r[e][t].delay = +n.call(r, r.__data__, u, i);
    } : (n = +n, function (r) {
      r[e][t].delay = n;
    }));
  }, Il.duration = function (n) {
    var t = this.id,
      e = this.namespace;
    return arguments.length < 1 ? this.node()[e][t].duration : Y(this, "function" == typeof n ? function (r, u, i) {
      r[e][t].duration = Math.max(1, n.call(r, r.__data__, u, i));
    } : (n = Math.max(1, n), function (r) {
      r[e][t].duration = n;
    }));
  }, Il.each = function (n, t) {
    var e = this.id,
      r = this.namespace;
    if (arguments.length < 2) {
      var u = Hl,
        i = Fl;
      try {
        Fl = e, Y(this, function (t, u, i) {
          Hl = t[r][e], n.call(t, t.__data__, u, i);
        });
      } finally {
        Hl = u, Fl = i;
      }
    } else Y(this, function (u) {
      var i = u[r][e];
      (i.event || (i.event = oa.dispatch("start", "end", "interrupt"))).on(n, t);
    });
    return this;
  }, Il.transition = function () {
    for (var n, t, e, r, u = this.id, i = ++Yl, a = this.namespace, o = [], l = 0, c = this.length; c > l; l++) {
      o.push(n = []);
      for (var t = this[l], s = 0, f = t.length; f > s; s++) (e = t[s]) && (r = e[a][u], Qi(e, s, a, i, {
        time: r.time,
        ease: r.ease,
        delay: r.delay + r.duration,
        duration: r.duration
      })), n.push(e);
    }
    return Wi(o, a, i);
  }, oa.svg.axis = function () {
    function n(n) {
      n.each(function () {
        var n,
          c = oa.select(this),
          s = this.__chart__ || e,
          f = this.__chart__ = e.copy(),
          h = null == l ? f.ticks ? f.ticks.apply(f, o) : f.domain() : l,
          g = null == t ? f.tickFormat ? f.tickFormat.apply(f, o) : y : t,
          p = c.selectAll(".tick").data(h, f),
          v = p.enter().insert("g", ".domain").attr("class", "tick").style("opacity", Da),
          d = oa.transition(p.exit()).style("opacity", Da).remove(),
          m = oa.transition(p.order()).style("opacity", 1),
          M = Math.max(u, 0) + a,
          x = Zu(f),
          b = c.selectAll(".domain").data([0]),
          _ = (b.enter().append("path").attr("class", "domain"), oa.transition(b));
        v.append("line"), v.append("text");
        var w,
          S,
          k,
          N,
          E = v.select("line"),
          A = m.select("line"),
          C = p.select("text").text(g),
          z = v.select("text"),
          L = m.select("text"),
          q = "top" === r || "left" === r ? -1 : 1;
        if ("bottom" === r || "top" === r ? (n = na, w = "x", k = "y", S = "x2", N = "y2", C.attr("dy", 0 > q ? "0em" : ".71em").style("text-anchor", "middle"), _.attr("d", "M" + x[0] + "," + q * i + "V0H" + x[1] + "V" + q * i)) : (n = ta, w = "y", k = "x", S = "y2", N = "x2", C.attr("dy", ".32em").style("text-anchor", 0 > q ? "end" : "start"), _.attr("d", "M" + q * i + "," + x[0] + "H0V" + x[1] + "H" + q * i)), E.attr(N, q * u), z.attr(k, q * M), A.attr(S, 0).attr(N, q * u), L.attr(w, 0).attr(k, q * M), f.rangeBand) {
          var T = f,
            R = T.rangeBand() / 2;
          s = f = function f(n) {
            return T(n) + R;
          };
        } else s.rangeBand ? s = f : d.call(n, f, s);
        v.call(n, s, f), m.call(n, f, f);
      });
    }
    var t,
      e = oa.scale.linear(),
      r = Zl,
      u = 6,
      i = 6,
      a = 3,
      o = [10],
      l = null;
    return n.scale = function (t) {
      return arguments.length ? (e = t, n) : e;
    }, n.orient = function (t) {
      return arguments.length ? (r = t in Vl ? t + "" : Zl, n) : r;
    }, n.ticks = function () {
      return arguments.length ? (o = ca(arguments), n) : o;
    }, n.tickValues = function (t) {
      return arguments.length ? (l = t, n) : l;
    }, n.tickFormat = function (e) {
      return arguments.length ? (t = e, n) : t;
    }, n.tickSize = function (t) {
      var e = arguments.length;
      return e ? (u = +t, i = +arguments[e - 1], n) : u;
    }, n.innerTickSize = function (t) {
      return arguments.length ? (u = +t, n) : u;
    }, n.outerTickSize = function (t) {
      return arguments.length ? (i = +t, n) : i;
    }, n.tickPadding = function (t) {
      return arguments.length ? (a = +t, n) : a;
    }, n.tickSubdivide = function () {
      return arguments.length && n;
    }, n;
  };
  var Zl = "bottom",
    Vl = {
      top: 1,
      right: 1,
      bottom: 1,
      left: 1
    };
  oa.svg.brush = function () {
    function n(t) {
      t.each(function () {
        var t = oa.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", i).on("touchstart.brush", i),
          a = t.selectAll(".background").data([0]);
        a.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"), t.selectAll(".extent").data([0]).enter().append("rect").attr("class", "extent").style("cursor", "move");
        var o = t.selectAll(".resize").data(v, y);
        o.exit().remove(), o.enter().append("g").attr("class", function (n) {
          return "resize " + n;
        }).style("cursor", function (n) {
          return Xl[n];
        }).append("rect").attr("x", function (n) {
          return /[ew]$/.test(n) ? -3 : null;
        }).attr("y", function (n) {
          return /^[ns]/.test(n) ? -3 : null;
        }).attr("width", 6).attr("height", 6).style("visibility", "hidden"), o.style("display", n.empty() ? "none" : null);
        var l,
          f = oa.transition(t),
          h = oa.transition(a);
        c && (l = Zu(c), h.attr("x", l[0]).attr("width", l[1] - l[0]), r(f)), s && (l = Zu(s), h.attr("y", l[0]).attr("height", l[1] - l[0]), u(f)), e(f);
      });
    }
    function e(n) {
      n.selectAll(".resize").attr("transform", function (n) {
        return "translate(" + f[+/e$/.test(n)] + "," + h[+/^s/.test(n)] + ")";
      });
    }
    function r(n) {
      n.select(".extent").attr("x", f[0]), n.selectAll(".extent,.n>rect,.s>rect").attr("width", f[1] - f[0]);
    }
    function u(n) {
      n.select(".extent").attr("y", h[0]), n.selectAll(".extent,.e>rect,.w>rect").attr("height", h[1] - h[0]);
    }
    function i() {
      function i() {
        32 == oa.event.keyCode && (C || (M = null, L[0] -= f[1], L[1] -= h[1], C = 2), S());
      }
      function v() {
        32 == oa.event.keyCode && 2 == C && (L[0] += f[1], L[1] += h[1], C = 0, S());
      }
      function d() {
        var n = oa.mouse(b),
          t = !1;
        x && (n[0] += x[0], n[1] += x[1]), C || (oa.event.altKey ? (M || (M = [(f[0] + f[1]) / 2, (h[0] + h[1]) / 2]), L[0] = f[+(n[0] < M[0])], L[1] = h[+(n[1] < M[1])]) : M = null), E && m(n, c, 0) && (r(k), t = !0), A && m(n, s, 1) && (u(k), t = !0), t && (e(k), w({
          type: "brush",
          mode: C ? "move" : "resize"
        }));
      }
      function m(n, t, e) {
        var r,
          u,
          i = Zu(t),
          l = i[0],
          c = i[1],
          s = L[e],
          v = e ? h : f,
          d = v[1] - v[0];
        return C && (l -= s, c -= d + s), r = (e ? p : g) ? Math.max(l, Math.min(c, n[e])) : n[e], C ? u = (r += s) + d : (M && (s = Math.max(l, Math.min(c, 2 * M[e] - r))), r > s ? (u = r, r = s) : u = s), v[0] != r || v[1] != u ? (e ? o = null : a = null, v[0] = r, v[1] = u, !0) : void 0;
      }
      function y() {
        d(), k.style("pointer-events", "all").selectAll(".resize").style("display", n.empty() ? "none" : null), oa.select("body").style("cursor", null), q.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null), z(), w({
          type: "brushend"
        });
      }
      var M,
        x,
        b = this,
        _ = oa.select(oa.event.target),
        w = l.of(b, arguments),
        k = oa.select(b),
        N = _.datum(),
        E = !/^(n|s)$/.test(N) && c,
        A = !/^(e|w)$/.test(N) && s,
        C = _.classed("extent"),
        z = W(b),
        L = oa.mouse(b),
        q = oa.select(t(b)).on("keydown.brush", i).on("keyup.brush", v);
      if (oa.event.changedTouches ? q.on("touchmove.brush", d).on("touchend.brush", y) : q.on("mousemove.brush", d).on("mouseup.brush", y), k.interrupt().selectAll("*").interrupt(), C) L[0] = f[0] - L[0], L[1] = h[0] - L[1];else if (N) {
        var T = +/w$/.test(N),
          R = +/^n/.test(N);
        x = [f[1 - T] - L[0], h[1 - R] - L[1]], L[0] = f[T], L[1] = h[R];
      } else oa.event.altKey && (M = L.slice());
      k.style("pointer-events", "none").selectAll(".resize").style("display", null), oa.select("body").style("cursor", _.style("cursor")), w({
        type: "brushstart"
      }), d();
    }
    var a,
      o,
      l = N(n, "brushstart", "brush", "brushend"),
      c = null,
      s = null,
      f = [0, 0],
      h = [0, 0],
      g = !0,
      p = !0,
      v = $l[0];
    return n.event = function (n) {
      n.each(function () {
        var n = l.of(this, arguments),
          t = {
            x: f,
            y: h,
            i: a,
            j: o
          },
          e = this.__chart__ || t;
        this.__chart__ = t, Fl ? oa.select(this).transition().each("start.brush", function () {
          a = e.i, o = e.j, f = e.x, h = e.y, n({
            type: "brushstart"
          });
        }).tween("brush:brush", function () {
          var e = xr(f, t.x),
            r = xr(h, t.y);
          return a = o = null, function (u) {
            f = t.x = e(u), h = t.y = r(u), n({
              type: "brush",
              mode: "resize"
            });
          };
        }).each("end.brush", function () {
          a = t.i, o = t.j, n({
            type: "brush",
            mode: "resize"
          }), n({
            type: "brushend"
          });
        }) : (n({
          type: "brushstart"
        }), n({
          type: "brush",
          mode: "resize"
        }), n({
          type: "brushend"
        }));
      });
    }, n.x = function (t) {
      return arguments.length ? (c = t, v = $l[!c << 1 | !s], n) : c;
    }, n.y = function (t) {
      return arguments.length ? (s = t, v = $l[!c << 1 | !s], n) : s;
    }, n.clamp = function (t) {
      return arguments.length ? (c && s ? (g = !!t[0], p = !!t[1]) : c ? g = !!t : s && (p = !!t), n) : c && s ? [g, p] : c ? g : s ? p : null;
    }, n.extent = function (t) {
      var e, r, u, i, l;
      return arguments.length ? (c && (e = t[0], r = t[1], s && (e = e[0], r = r[0]), a = [e, r], c.invert && (e = c(e), r = c(r)), e > r && (l = e, e = r, r = l), (e != f[0] || r != f[1]) && (f = [e, r])), s && (u = t[0], i = t[1], c && (u = u[1], i = i[1]), o = [u, i], s.invert && (u = s(u), i = s(i)), u > i && (l = u, u = i, i = l), (u != h[0] || i != h[1]) && (h = [u, i])), n) : (c && (a ? (e = a[0], r = a[1]) : (e = f[0], r = f[1], c.invert && (e = c.invert(e), r = c.invert(r)), e > r && (l = e, e = r, r = l))), s && (o ? (u = o[0], i = o[1]) : (u = h[0], i = h[1], s.invert && (u = s.invert(u), i = s.invert(i)), u > i && (l = u, u = i, i = l))), c && s ? [[e, u], [r, i]] : c ? [e, r] : s && [u, i]);
    }, n.clear = function () {
      return n.empty() || (f = [0, 0], h = [0, 0], a = o = null), n;
    }, n.empty = function () {
      return !!c && f[0] == f[1] || !!s && h[0] == h[1];
    }, oa.rebind(n, l, "on");
  };
  var Xl = {
      n: "ns-resize",
      e: "ew-resize",
      s: "ns-resize",
      w: "ew-resize",
      nw: "nwse-resize",
      ne: "nesw-resize",
      se: "nwse-resize",
      sw: "nesw-resize"
    },
    $l = [["n", "e", "s", "w", "nw", "ne", "se", "sw"], ["e", "w"], ["n", "s"], []],
    Bl = ho.format = Mo.timeFormat,
    Wl = Bl.utc,
    Jl = Wl("%Y-%m-%dT%H:%M:%S.%LZ");
  Bl.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? ea : Jl, ea.parse = function (n) {
    var t = new Date(n);
    return isNaN(t) ? null : t;
  }, ea.toString = Jl.toString, ho.second = On(function (n) {
    return new go(1e3 * Math.floor(n / 1e3));
  }, function (n, t) {
    n.setTime(n.getTime() + 1e3 * Math.floor(t));
  }, function (n) {
    return n.getSeconds();
  }), ho.seconds = ho.second.range, ho.seconds.utc = ho.second.utc.range, ho.minute = On(function (n) {
    return new go(6e4 * Math.floor(n / 6e4));
  }, function (n, t) {
    n.setTime(n.getTime() + 6e4 * Math.floor(t));
  }, function (n) {
    return n.getMinutes();
  }), ho.minutes = ho.minute.range, ho.minutes.utc = ho.minute.utc.range, ho.hour = On(function (n) {
    var t = n.getTimezoneOffset() / 60;
    return new go(36e5 * (Math.floor(n / 36e5 - t) + t));
  }, function (n, t) {
    n.setTime(n.getTime() + 36e5 * Math.floor(t));
  }, function (n) {
    return n.getHours();
  }), ho.hours = ho.hour.range, ho.hours.utc = ho.hour.utc.range, ho.month = On(function (n) {
    return n = ho.day(n), n.setDate(1), n;
  }, function (n, t) {
    n.setMonth(n.getMonth() + t);
  }, function (n) {
    return n.getMonth();
  }), ho.months = ho.month.range, ho.months.utc = ho.month.utc.range;
  var Gl = [1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6],
    Kl = [[ho.second, 1], [ho.second, 5], [ho.second, 15], [ho.second, 30], [ho.minute, 1], [ho.minute, 5], [ho.minute, 15], [ho.minute, 30], [ho.hour, 1], [ho.hour, 3], [ho.hour, 6], [ho.hour, 12], [ho.day, 1], [ho.day, 2], [ho.week, 1], [ho.month, 1], [ho.month, 3], [ho.year, 1]],
    Ql = Bl.multi([[".%L", function (n) {
      return n.getMilliseconds();
    }], [":%S", function (n) {
      return n.getSeconds();
    }], ["%I:%M", function (n) {
      return n.getMinutes();
    }], ["%I %p", function (n) {
      return n.getHours();
    }], ["%a %d", function (n) {
      return n.getDay() && 1 != n.getDate();
    }], ["%b %d", function (n) {
      return 1 != n.getDate();
    }], ["%B", function (n) {
      return n.getMonth();
    }], ["%Y", zt]]),
    nc = {
      range: function range(n, t, e) {
        return oa.range(Math.ceil(n / e) * e, +t, e).map(ua);
      },
      floor: y,
      ceil: y
    };
  Kl.year = ho.year, ho.scale = function () {
    return ra(oa.scale.linear(), Kl, Ql);
  };
  var tc = Kl.map(function (n) {
      return [n[0].utc, n[1]];
    }),
    ec = Wl.multi([[".%L", function (n) {
      return n.getUTCMilliseconds();
    }], [":%S", function (n) {
      return n.getUTCSeconds();
    }], ["%I:%M", function (n) {
      return n.getUTCMinutes();
    }], ["%I %p", function (n) {
      return n.getUTCHours();
    }], ["%a %d", function (n) {
      return n.getUTCDay() && 1 != n.getUTCDate();
    }], ["%b %d", function (n) {
      return 1 != n.getUTCDate();
    }], ["%B", function (n) {
      return n.getUTCMonth();
    }], ["%Y", zt]]);
  tc.year = ho.year.utc, ho.scale.utc = function () {
    return ra(oa.scale.linear(), tc, ec);
  }, oa.text = An(function (n) {
    return n.responseText;
  }), oa.json = function (n, t) {
    return Cn(n, "application/json", ia, t);
  }, oa.html = function (n, t) {
    return Cn(n, "text/html", aa, t);
  }, oa.xml = An(function (n) {
    return n.responseXML;
  }), "function" == typeof define && define.amd ? (this.d3 = oa, define(oa)) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = oa : this.d3 = oa;
}();