1 !
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(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(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(){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)?:)?\/\
2 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(){t.polygonStart(),S.lineStart=l},polygonEnd:
function(){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(){n.sphere()},lineStart:
function(){n.lineStart()},lineEnd:
function(){n.lineEnd()},polygonStart:
function(){n.polygonStart()},polygonEnd:
function(){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(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(t){
return Math.floor(t/n)*n},ceil:
function(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;
3 }: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(t){
for(;e(t=n.floor(t));)t=ua(t-1);
return t},ceil:
function(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.9"},la=[].slice,ca=
function(n){
return la.call(n)},sa=this.document;
if(sa)
try{ca(sa.documentElement.childNodes)[0].nodeType}
catch(fa){ca=
function(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(n){
return this._[s(n)]},set:
function(n,t){
return this._[s(n)]=t},
remove:g,keys:p,values:
function(){var n=[];
for(var t in this._)n.push(this._[t]);
return n},entries:
function(){var n=[];
for(var t in this._)n.push({key:f(t),value:this._[t]});
return n},size:v,empty:d,forEach:
function(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(e,r){s.set(e,n(t,r,o))}):(s={},f=
function(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(n){
return this._[s(n+=
"")]=!0,n},
remove:g,values:p,size:v,empty:d,forEach:
function(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(n,t){
return t.querySelector(n)},Na=
function(n,t){
return t.querySelectorAll(n)},Ea=
function(n,t){var e=n.matches||n[x(n,
"matchesSelector")];
return(Ea=
function(n,t){
return e.call(n,t)})(n,t)};
"function"==typeof Sizzle&&(ka=
function(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(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(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(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(){
return-oa.event.deltaY*(oa.event.deltaMode?120:1)},
"wheel"):
"onmousewheel"in sa?(Xa=function(){
return oa.event.wheelDelta},
"mousewheel"):(Xa=
function(){
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(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(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(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){po.setUTCDate.apply(this._,arguments)},setDay:function(){po.setUTCDay.apply(this._,arguments)},setFullYear:function(){po.setUTCFullYear.apply(this._,arguments)},setHours:function(){po.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){po.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){po.setUTCMinutes.apply(this._,arguments)},setMonth:function(){po.setUTCMonth.apply(this._,arguments)},setSeconds:function(){po.setUTCSeconds.apply(this._,arguments)},setTime:function(){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"],