diff --git a/dist/index.es.js b/dist/index.es.js index 73b61b3..ed20f6e 100644 --- a/dist/index.es.js +++ b/dist/index.es.js @@ -1,4 +1,4 @@ -import t,{useRef as n,useState as e,useEffect as r,useId as i,useContext as o,createContext as a}from"react";var u={exports:{}},c={exports:{}},f={},s="function"==typeof Symbol&&Symbol.for,l=s?Symbol.for("react.element"):60103,h=s?Symbol.for("react.portal"):60106,d=s?Symbol.for("react.fragment"):60107,p=s?Symbol.for("react.strict_mode"):60108,y=s?Symbol.for("react.profiler"):60114,v=s?Symbol.for("react.provider"):60109,g=s?Symbol.for("react.context"):60110,b=s?Symbol.for("react.async_mode"):60111,m=s?Symbol.for("react.concurrent_mode"):60111,_=s?Symbol.for("react.forward_ref"):60112,x=s?Symbol.for("react.suspense"):60113,w=s?Symbol.for("react.suspense_list"):60120,M=s?Symbol.for("react.memo"):60115,E=s?Symbol.for("react.lazy"):60116,A=s?Symbol.for("react.block"):60121,T=s?Symbol.for("react.fundamental"):60117,k=s?Symbol.for("react.responder"):60118,S=s?Symbol.for("react.scope"):60119;function N(t){if("object"==typeof t&&null!==t){var n=t.$$typeof;switch(n){case l:switch(t=t.type){case b:case m:case d:case y:case p:case x:return t;default:switch(t=t&&t.$$typeof){case g:case _:case E:case M:case v:return t;default:return n}}case h:return n}}}function C(t){return N(t)===m}f.AsyncMode=b,f.ConcurrentMode=m,f.ContextConsumer=g,f.ContextProvider=v,f.Element=l,f.ForwardRef=_,f.Fragment=d,f.Lazy=E,f.Memo=M,f.Portal=h,f.Profiler=y,f.StrictMode=p,f.Suspense=x,f.isAsyncMode=function(t){return C(t)||N(t)===b},f.isConcurrentMode=C,f.isContextConsumer=function(t){return N(t)===g},f.isContextProvider=function(t){return N(t)===v},f.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===l},f.isForwardRef=function(t){return N(t)===_},f.isFragment=function(t){return N(t)===d},f.isLazy=function(t){return N(t)===E},f.isMemo=function(t){return N(t)===M},f.isPortal=function(t){return N(t)===h},f.isProfiler=function(t){return N(t)===y},f.isStrictMode=function(t){return N(t)===p},f.isSuspense=function(t){return N(t)===x},f.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===d||t===m||t===y||t===p||t===x||t===w||"object"==typeof t&&null!==t&&(t.$$typeof===E||t.$$typeof===M||t.$$typeof===v||t.$$typeof===g||t.$$typeof===_||t.$$typeof===T||t.$$typeof===k||t.$$typeof===S||t.$$typeof===A)},f.typeOf=N;var P={}; +import e,{useRef as t,useState as n,useEffect as r,useId as o,useContext as i,createContext as a,useCallback as u,useMemo as c}from"react";var s={exports:{}},l={exports:{}},f={},h="function"==typeof Symbol&&Symbol.for,d=h?Symbol.for("react.element"):60103,p=h?Symbol.for("react.portal"):60106,g=h?Symbol.for("react.fragment"):60107,y=h?Symbol.for("react.strict_mode"):60108,m=h?Symbol.for("react.profiler"):60114,v=h?Symbol.for("react.provider"):60109,b=h?Symbol.for("react.context"):60110,x=h?Symbol.for("react.async_mode"):60111,w=h?Symbol.for("react.concurrent_mode"):60111,_=h?Symbol.for("react.forward_ref"):60112,M=h?Symbol.for("react.suspense"):60113,E=h?Symbol.for("react.suspense_list"):60120,T=h?Symbol.for("react.memo"):60115,A=h?Symbol.for("react.lazy"):60116,k=h?Symbol.for("react.block"):60121,S=h?Symbol.for("react.fundamental"):60117,O=h?Symbol.for("react.responder"):60118,C=h?Symbol.for("react.scope"):60119;function N(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case d:switch(e=e.type){case x:case w:case g:case m:case y:case M:return e;default:switch(e=e&&e.$$typeof){case b:case _:case A:case T:case v:return e;default:return t}}case p:return t}}}function L(e){return N(e)===w}f.AsyncMode=x,f.ConcurrentMode=w,f.ContextConsumer=b,f.ContextProvider=v,f.Element=d,f.ForwardRef=_,f.Fragment=g,f.Lazy=A,f.Memo=T,f.Portal=p,f.Profiler=m,f.StrictMode=y,f.Suspense=M,f.isAsyncMode=function(e){return L(e)||N(e)===x},f.isConcurrentMode=L,f.isContextConsumer=function(e){return N(e)===b},f.isContextProvider=function(e){return N(e)===v},f.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===d},f.isForwardRef=function(e){return N(e)===_},f.isFragment=function(e){return N(e)===g},f.isLazy=function(e){return N(e)===A},f.isMemo=function(e){return N(e)===T},f.isPortal=function(e){return N(e)===p},f.isProfiler=function(e){return N(e)===m},f.isStrictMode=function(e){return N(e)===y},f.isSuspense=function(e){return N(e)===M},f.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===g||e===w||e===m||e===y||e===M||e===E||"object"==typeof e&&null!==e&&(e.$$typeof===A||e.$$typeof===T||e.$$typeof===v||e.$$typeof===b||e.$$typeof===_||e.$$typeof===S||e.$$typeof===O||e.$$typeof===C||e.$$typeof===k)},f.typeOf=N;var P={}; /** @license React v16.13.1 * react-is.development.js * @@ -6,10 +6,10 @@ import t,{useRef as n,useState as e,useEffect as r,useId as i,useContext as o,cr * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */"production"!==process.env.NODE_ENV&&function(){var t="function"==typeof Symbol&&Symbol.for,n=t?Symbol.for("react.element"):60103,e=t?Symbol.for("react.portal"):60106,r=t?Symbol.for("react.fragment"):60107,i=t?Symbol.for("react.strict_mode"):60108,o=t?Symbol.for("react.profiler"):60114,a=t?Symbol.for("react.provider"):60109,u=t?Symbol.for("react.context"):60110,c=t?Symbol.for("react.async_mode"):60111,f=t?Symbol.for("react.concurrent_mode"):60111,s=t?Symbol.for("react.forward_ref"):60112,l=t?Symbol.for("react.suspense"):60113,h=t?Symbol.for("react.suspense_list"):60120,d=t?Symbol.for("react.memo"):60115,p=t?Symbol.for("react.lazy"):60116,y=t?Symbol.for("react.block"):60121,v=t?Symbol.for("react.fundamental"):60117,g=t?Symbol.for("react.responder"):60118,b=t?Symbol.for("react.scope"):60119;function m(t){if("object"==typeof t&&null!==t){var h=t.$$typeof;switch(h){case n:var y=t.type;switch(y){case c:case f:case r:case o:case i:case l:return y;default:var v=y&&y.$$typeof;switch(v){case u:case s:case p:case d:case a:return v;default:return h}}case e:return h}}}var _=c,x=f,w=u,M=a,E=n,A=s,T=r,k=p,S=d,N=e,C=o,O=i,R=l,L=!1;function z(t){return m(t)===f}P.AsyncMode=_,P.ConcurrentMode=x,P.ContextConsumer=w,P.ContextProvider=M,P.Element=E,P.ForwardRef=A,P.Fragment=T,P.Lazy=k,P.Memo=S,P.Portal=N,P.Profiler=C,P.StrictMode=O,P.Suspense=R,P.isAsyncMode=function(t){return L||(L=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),z(t)||m(t)===c},P.isConcurrentMode=z,P.isContextConsumer=function(t){return m(t)===u},P.isContextProvider=function(t){return m(t)===a},P.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===n},P.isForwardRef=function(t){return m(t)===s},P.isFragment=function(t){return m(t)===r},P.isLazy=function(t){return m(t)===p},P.isMemo=function(t){return m(t)===d},P.isPortal=function(t){return m(t)===e},P.isProfiler=function(t){return m(t)===o},P.isStrictMode=function(t){return m(t)===i},P.isSuspense=function(t){return m(t)===l},P.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===r||t===f||t===o||t===i||t===l||t===h||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===d||t.$$typeof===a||t.$$typeof===u||t.$$typeof===s||t.$$typeof===v||t.$$typeof===g||t.$$typeof===b||t.$$typeof===y)},P.typeOf=m}(),"production"===process.env.NODE_ENV?c.exports=f:c.exports=P + */"production"!==process.env.NODE_ENV&&function(){var e="function"==typeof Symbol&&Symbol.for,t=e?Symbol.for("react.element"):60103,n=e?Symbol.for("react.portal"):60106,r=e?Symbol.for("react.fragment"):60107,o=e?Symbol.for("react.strict_mode"):60108,i=e?Symbol.for("react.profiler"):60114,a=e?Symbol.for("react.provider"):60109,u=e?Symbol.for("react.context"):60110,c=e?Symbol.for("react.async_mode"):60111,s=e?Symbol.for("react.concurrent_mode"):60111,l=e?Symbol.for("react.forward_ref"):60112,f=e?Symbol.for("react.suspense"):60113,h=e?Symbol.for("react.suspense_list"):60120,d=e?Symbol.for("react.memo"):60115,p=e?Symbol.for("react.lazy"):60116,g=e?Symbol.for("react.block"):60121,y=e?Symbol.for("react.fundamental"):60117,m=e?Symbol.for("react.responder"):60118,v=e?Symbol.for("react.scope"):60119;function b(e){if("object"==typeof e&&null!==e){var h=e.$$typeof;switch(h){case t:var g=e.type;switch(g){case c:case s:case r:case i:case o:case f:return g;default:var y=g&&g.$$typeof;switch(y){case u:case l:case p:case d:case a:return y;default:return h}}case n:return h}}}var x=c,w=s,_=u,M=a,E=t,T=l,A=r,k=p,S=d,O=n,C=i,N=o,L=f,D=!1;function $(e){return b(e)===s}P.AsyncMode=x,P.ConcurrentMode=w,P.ContextConsumer=_,P.ContextProvider=M,P.Element=E,P.ForwardRef=T,P.Fragment=A,P.Lazy=k,P.Memo=S,P.Portal=O,P.Profiler=C,P.StrictMode=N,P.Suspense=L,P.isAsyncMode=function(e){return D||(D=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),$(e)||b(e)===c},P.isConcurrentMode=$,P.isContextConsumer=function(e){return b(e)===u},P.isContextProvider=function(e){return b(e)===a},P.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},P.isForwardRef=function(e){return b(e)===l},P.isFragment=function(e){return b(e)===r},P.isLazy=function(e){return b(e)===p},P.isMemo=function(e){return b(e)===d},P.isPortal=function(e){return b(e)===n},P.isProfiler=function(e){return b(e)===i},P.isStrictMode=function(e){return b(e)===o},P.isSuspense=function(e){return b(e)===f},P.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===r||e===s||e===i||e===o||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===p||e.$$typeof===d||e.$$typeof===a||e.$$typeof===u||e.$$typeof===l||e.$$typeof===y||e.$$typeof===m||e.$$typeof===v||e.$$typeof===g)},P.typeOf=b}(),"production"===process.env.NODE_ENV?l.exports=f:l.exports=P /* object-assign (c) Sindre Sorhus @license MIT -*/;var O=Object.getOwnPropertySymbols,R=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;function z(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}var D=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var n={},e=0;e<10;e++)n["_"+String.fromCharCode(e)]=e;var r=Object.getOwnPropertyNames(n).map((function(t){return n[t]}));if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}()?Object.assign:function(t,n){for(var e,r,i=z(t),o=1;o1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),Q;function n(n,e,r,i,u){for(var c=n[e],f=0;f0?", expected one of type ["+u.join(", ")+"]":"")+".")}))},shape:function(t){return u((function(n,e,r,i,o){var u=n[e],c=l(u);if("object"!==c)return new a("Invalid "+i+" `"+o+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");for(var s in t){var d=t[s];if("function"!=typeof d)return f(r,i,o,s,h(d));var p=d(u,s,r,i,o+"."+s,W);if(p)return p}return null}))},exact:function(t){return u((function(n,e,r,i,o){var u=n[e],c=l(u);if("object"!==c)return new a("Invalid "+i+" `"+o+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");var s=V({},n[e],t);for(var d in s){var p=t[d];if(X(t,d)&&"function"!=typeof p)return f(r,i,o,d,h(p));if(!p)return new a("Invalid "+i+" `"+o+"` key `"+d+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(n[e],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(t),null," "));var y=p(u,d,r,i,o+"."+d,W);if(y)return y}return null}))}};function o(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}function a(t,n){this.message=t,this.data=n&&"object"==typeof n?n:{},this.stack=""}function u(t){if("production"!==process.env.NODE_ENV)var e={},i=0;function o(o,u,c,f,s,l,h){if(f=f||r,l=l||c,h!==W){if(n){var d=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw d.name="Invariant Violation",d}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var p=f+":"+c;!e[p]&&i<3&&(Z("You are manually calling a React.PropTypes validation function for the `"+l+"` prop on `"+f+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),e[p]=!0,i++)}}return null==u[c]?o?null===u[c]?new a("The "+s+" `"+l+"` is marked as required in `"+f+"`, but its value is `null`."):new a("The "+s+" `"+l+"` is marked as required in `"+f+"`, but its value is `undefined`."):null:t(u,c,f,s,l)}var u=o.bind(null,!1);return u.isRequired=o.bind(null,!0),u}function c(t){return u((function(n,e,r,i,o,u){var c=n[e];return l(c)!==t?new a("Invalid "+i+" `"+o+"` of type `"+h(c)+"` supplied to `"+r+"`, expected `"+t+"`.",{expectedType:t}):null}))}function f(t,n,e,r,i){return new a((t||"React class")+": "+n+" type `"+e+"."+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+i+"`.")}function s(n){switch(typeof n){case"number":case"string":case"undefined":return!0;case"boolean":return!n;case"object":if(Array.isArray(n))return n.every(s);if(null===n||t(n))return!0;var r=function(t){var n=t&&(e&&t[e]||t["@@iterator"]);if("function"==typeof n)return n}(n);if(!r)return!1;var i,o=r.call(n);if(r!==n.entries){for(;!(i=o.next()).done;)if(!s(i.value))return!1}else for(;!(i=o.next()).done;){var a=i.value;if(a&&!s(a[1]))return!1}return!0;default:return!1}}function l(t){var n=typeof t;return Array.isArray(t)?"array":t instanceof RegExp?"object":function(t,n){return"symbol"===t||!!n&&("Symbol"===n["@@toStringTag"]||"function"==typeof Symbol&&n instanceof Symbol)}(n,t)?"symbol":n}function h(t){if(null==t)return""+t;var n=l(t);if("object"===n){if(t instanceof Date)return"date";if(t instanceof RegExp)return"regexp"}return n}function d(t){var n=h(t);switch(n){case"array":case"object":return"an "+n;case"boolean":case"date":case"regexp":return"a "+n;default:return n}}return a.prototype=Error.prototype,i.checkPropTypes=G,i.resetWarningCache=G.resetWarningCache,i.PropTypes=i,i}(tt.isElement,!0)}else u.exports=function(){function t(t,n,e,r,i,o){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==o){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function n(){return t}t.isRequired=t;var e={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:n,element:t,elementType:t,instanceOf:n,node:t,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:K,resetWarningCache:J};return e.PropTypes=e,e}();var nt=u.exports;function et(t,n){return tn?1:t>=n?0:NaN}function rt(t){return 1===t.length&&(t=function(t){return function(n,e){return et(t(n),e)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var it=rt(et),ot=it.right,at=it.left;function ut(t,n){return[t,n]}function ct(t){return null===t?NaN:+t}function ft(t,n){var e,r,i=t.length,o=0,a=-1,u=0,c=0;if(null==n)for(;++a1)return c/(o-1)}function st(t,n){var e=ft(t,n);return e?Math.sqrt(e):e}function lt(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a=e)for(r=i=e;++ae&&(r=e),i=e)for(r=i=e;++ae&&(r=e),i0)return[t];if((r=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u=0?(o>=bt?10:o>=mt?5:o>=_t?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=bt?10:o>=mt?5:o>=_t?2:1)}function Mt(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=bt?i*=10:o>=mt?i*=5:o>=_t&&(i*=2),ns;)l.pop(),--h;var d,p=new Array(h+1);for(i=0;i<=h;++i)(d=p[i]=[]).x0=i>0?l[i-1]:f,d.x1=i=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function kt(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r}function St(t){for(var n,e,r,i=t.length,o=-1,a=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function Nt(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}function Ct(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function Ht(t,n){for(var e,r=0,i=t.length;r0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Xt.hasOwnProperty(n)?{space:Xt[n],local:t}:t}function Zt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Wt&&n.documentElement.namespaceURI===Wt?n.createElement(t):n.createElementNS(e,t)}}function Qt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Jt(t){var n=Gt(t);return(n.local?Qt:Zt)(n)}function Kt(){}function tn(t){return null==t?Kt:function(){return this.querySelector(t)}}function nn(){return[]}function en(t){return null==t?nn:function(){return this.querySelectorAll(t)}}function rn(t){return function(){return this.matches(t)}}function on(t){return new Array(t.length)}function an(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}an.prototype={constructor:an,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function un(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;un?1:t>=n?0:NaN}function sn(t){return function(){this.removeAttribute(t)}}function ln(t){return function(){this.removeAttributeNS(t.space,t.local)}}function hn(t,n){return function(){this.setAttribute(t,n)}}function dn(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function pn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function yn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function vn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function bn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function mn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||vn(t).getComputedStyle(t,null).getPropertyValue(n)}function xn(t){return function(){delete this[t]}}function wn(t,n){return function(){this[t]=n}}function Mn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function En(t){return t.trim().split(/^|\s+/)}function An(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=En(t.getAttribute("class")||"")}function kn(t,n){for(var e=An(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var $n={},Hn=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||($n={mouseenter:"mouseover",mouseleave:"mouseout"}));function Vn(t,n,e){return t=Wn(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Wn(t,n,e){return function(r){var i=Hn;Hn=r;try{t.call(this,this.__data__,n,e)}finally{Hn=i}}}function Xn(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function Gn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=_&&(_=m+1);!(b=v[_])&&++_=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=fn);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?gn:"function"==typeof n?mn:bn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?xn:"function"==typeof n?Mn:wn)(t,n)):this.node()[t]},classed:function(t,n){var e=En(t+"");if(arguments.length<2){for(var r=An(this.node()),i=-1,o=e.length;++i>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Ye(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Ye(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Ce.exec(t))?new $e(n[1],n[2],n[3],1):(n=Pe.exec(t))?new $e(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Oe.exec(t))?Ye(n[1],n[2],n[3],n[4]):(n=Re.exec(t))?Ye(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Le.exec(t))?Xe(n[1],n[2]/100,n[3]/100,1):(n=ze.exec(t))?Xe(n[1],n[2]/100,n[3]/100,n[4]):De.hasOwnProperty(t)?Ue(De[t]):"transparent"===t?new $e(NaN,NaN,NaN,0):null}function Ue(t){return new $e(t>>16&255,t>>8&255,255&t,1)}function Ye(t,n,e,r){return r<=0&&(t=n=e=NaN),new $e(t,n,e,r)}function je(t){return t instanceof Ee||(t=Fe(t)),t?new $e((t=t.rgb()).r,t.g,t.b,t.opacity):new $e}function Ie(t,n,e,r){return 1===arguments.length?je(t):new $e(t,n,e,null==r?1:r)}function $e(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function He(){return"#"+We(this.r)+We(this.g)+We(this.b)}function Ve(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function We(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Xe(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Qe(t,n,e,r)}function Ge(t){if(t instanceof Qe)return new Qe(t.h,t.s,t.l,t.opacity);if(t instanceof Ee||(t=Fe(t)),!t)return new Qe;if(t instanceof Qe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&c<1?0:a,new Qe(a,u,c,t.opacity)}function Ze(t,n,e,r){return 1===arguments.length?Ge(t):new Qe(t,n,e,null==r?1:r)}function Qe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Je(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}we(Ee,Fe,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Be,formatHex:Be,formatHsl:function(){return Ge(this).formatHsl()},formatRgb:qe,toString:qe}),we($e,Ie,Me(Ee,{brighter:function(t){return t=null==t?Ae:Math.pow(Ae,t),new $e(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new $e(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:He,formatHex:He,formatRgb:Ve,toString:Ve})),we(Qe,Ze,Me(Ee,{brighter:function(t){return t=null==t?Ae:Math.pow(Ae,t),new Qe(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Qe(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new $e(Je(t>=240?t-240:t+120,i,r),Je(t,i,r),Je(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var Ke=Math.PI/180,tr=180/Math.PI,nr=4/29,er=6/29,rr=3*er*er;function ir(t){if(t instanceof ar)return new ar(t.l,t.a,t.b,t.opacity);if(t instanceof dr)return pr(t);t instanceof $e||(t=je(t));var n,e,r=sr(t.r),i=sr(t.g),o=sr(t.b),a=ur((.2225045*r+.7168786*i+.0606169*o)/1);return r===i&&i===o?n=e=a:(n=ur((.4360747*r+.3850649*i+.1430804*o)/.96422),e=ur((.0139322*r+.0971045*i+.7141733*o)/.82521)),new ar(116*a-16,500*(n-a),200*(a-e),t.opacity)}function or(t,n,e,r){return 1===arguments.length?ir(t):new ar(t,n,e,null==r?1:r)}function ar(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function ur(t){return t>.008856451679035631?Math.pow(t,1/3):t/rr+nr}function cr(t){return t>er?t*t*t:rr*(t-nr)}function fr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function sr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function lr(t){if(t instanceof dr)return new dr(t.h,t.c,t.l,t.opacity);if(t instanceof ar||(t=ir(t)),0===t.a&&0===t.b)return new dr(NaN,0=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r180||e<-180?e-360*Math.round(e/360):e):Nr(isNaN(t)?n:t)}function Or(t){return 1==(t=+t)?Rr:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Nr(isNaN(n)?e:n)}}function Rr(t,n){var e=n-t;return e?Cr(t,e):Nr(isNaN(t)?n:t)}we(Ar,Er,Me(Ee,{brighter:function(t){return t=null==t?Ae:Math.pow(Ae,t),new Ar(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ar(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Ke,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new $e(255*(n+e*(yr*r+vr*i)),255*(n+e*(gr*r+br*i)),255*(n+e*(mr*r)),this.opacity)}}));var Lr=function t(n){var e=Or(n);function r(t,n){var r=e((t=Ie(t)).r,(n=Ie(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=Rr(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function zr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:jr(e,r)})),o=Hr.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:jr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:jr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:jr(t,e)},{i:u-2,x:jr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--mi}function Oi(){Mi=(wi=Ai.now())+Ei,mi=_i=0;try{Pi()}finally{mi=0,function(){var t,n,e=gi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:gi=n);bi=t,Li(r)}(),Mi=0}}function Ri(){var t=Ai.now(),n=t-wi;n>1e3&&(Ei-=n,wi=t)}function Li(t){mi||(_i&&(_i=clearTimeout(_i)),t-Mi>24?(t<1/0&&(_i=setTimeout(Oi,t-Ai.now()-Ei)),xi&&(xi=clearInterval(xi))):(xi||(wi=Ai.now(),xi=setInterval(Ri,1e3)),mi=1,Ti(Oi)))}function zi(t,n,e){var r=new Ni;return n=null==n?0:+n,r.restart((function(e){r.stop(),t(e+n)}),n,e),r}Ni.prototype=Ci.prototype={constructor:Ni,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?ki():+e)+(null==n?0:+n),this._next||bi===this||(bi?bi._next=this:gi=this,bi=this),this._call=t,this._time=e,Li()},stop:function(){this._call&&(this._call=null,this._time=1/0,Li())}};var Di=jt("start","end","cancel","interrupt"),Bi=[];function qi(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(1!==e.state)return c();for(f in i)if((h=i[f]).name===e.name){if(3===h.state)return zi(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f0)throw new Error("too late; already scheduled");return e}function Ui(t,n){var e=Yi(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Yi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function ji(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Ii(t,n){var e,r;return function(){var i=Ui(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?Fi:Ui;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}var fo=re.prototype.constructor;function so(t){return function(){this.style.removeProperty(t)}}function lo(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function ho(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&lo(t,o,e)),r}return o._value=n,o}function po(t){return function(n){this.textContent=t.call(this,n)}}function yo(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&po(r)),n}return r._value=t,r}var vo=0;function go(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function bo(t){return re().transition(t)}function mo(){return++vo}var _o=re.prototype;function xo(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function wo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}go.prototype=bo.prototype={constructor:go,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=tn(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;aMath.abs(t[1]-L[1])?v=!0:y=!0),L=t,p=!0,Xo(),U()}function U(){var t;switch(N=L[0]-R[0],C=L[1]-R[1],m){case Zo:case Go:_&&(N=Math.max(A-e,Math.min(k-c,N)),i=e+N,l=c+N),x&&(C=Math.max(T-a,Math.min(S-h,C)),u=a+C,d=h+C);break;case Qo:_<0?(N=Math.max(A-e,Math.min(k-e,N)),i=e+N,l=c):_>0&&(N=Math.max(A-c,Math.min(k-c,N)),i=e,l=c+N),x<0?(C=Math.max(T-a,Math.min(S-a,C)),u=a+C,d=h):x>0&&(C=Math.max(T-h,Math.min(S-h,C)),u=a,d=h+C);break;case Jo:_&&(i=Math.max(A,Math.min(k,e-N*_)),l=Math.max(A,Math.min(k,c+N*_))),x&&(u=Math.max(T,Math.min(S,a-C*x)),d=Math.max(T,Math.min(S,h+C*x)))}l0&&(e=i-N),x<0?h=d-C:x>0&&(a=u-C),m=Zo,B.attr("cursor",oa.selection),U());break;default:return}Xo()}function I(){switch(Hn.keyCode){case 16:P&&(y=v=P=!1,U());break;case 18:m===Jo&&(_<0?c=l:_>0&&(e=i),x<0?h=d:x>0&&(a=u),m=Qo,U());break;case 32:m===Zo&&(Hn.altKey?(_&&(c=l-N*_,e=i+N*_),x&&(h=d-C*x,a=u+C*x),m=Jo):(_<0?c=l:_>0&&(e=i),x<0?h=d:x>0&&(a=u),m=Qo),B.attr("cursor",oa[b]),U());break;default:return}Xo()}}function d(){s(this,arguments).moved()}function p(){s(this,arguments).ended()}function y(){var n=this.__brush||{selection:null};return n.extent=ta(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e){n.selection?n.on("start.brush",(function(){s(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){s(this,arguments).end()})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Wr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,r=arguments,i=n.__brush,o=t.input("function"==typeof e?e.apply(n,r):e,i.extent),a=s(n,r).beforestart();ji(n),i.selection=null===o?null:o,f.call(n),a.start().brush().end()}))},c.clear=function(t){c.move(t,null)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(n){Qn(new Vo(c,n,t.output(this.state.selection)),a.apply,a,[n,this.that,this.args])}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:Ho(ta(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Ho(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Ho(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var ga=Math.cos,ba=Math.sin,ma=Math.PI,_a=ma/2,xa=2*ma,wa=Math.max;function Ma(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}var Ea=Array.prototype.slice;function Aa(t){return function(){return t}}var Ta=Math.PI,ka=2*Ta,Sa=ka-1e-6;function Na(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ca(){return new Na}function Pa(t){return t.source}function Oa(t){return t.target}function Ra(t){return t.radius}function La(t){return t.startAngle}function za(t){return t.endAngle}Na.prototype=Ca.prototype={constructor:Na,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,y=h*h+d*d,v=Math.sqrt(p),g=Math.sqrt(l),b=i*Math.tan((Ta-Math.acos((p+l-y)/(2*v*g)))/2),m=b/g,_=b/v;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*f)+","+(n+m*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+_*u)+","+(this._y1=n+_*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%ka+ka),l>Sa?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Ta)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};function Da(){}function Ba(t,n){var e=new Da;if(t instanceof Da)t.each((function(t,n){e.set(n,t)}));else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++ir!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function Za(t,n,e){var r;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&function(t,n,e){return t<=n&&n<=e||e<=n&&n<=t}(t[r=+(t[0]===n[0])],e[r],n[r])}function Qa(){}var Ja=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Ka(){var t=1,n=1,e=Et,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Va);else{var r=lt(t),i=r[0],a=r[1];n=Mt(i,a,n),n=gt(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map((function(n){return o(t,n)}))}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,Ja[f<<1].forEach(p);for(;++o=r,Ja[c|f<<1].forEach(p);Ja[f<<0].forEach(p);for(;++u=r,s=e[u*t]>=r,Ja[f<<1|s<<2].forEach(p);++o=r,l=s,s=e[u*t+o+1]>=r,Ja[c|f<<1|s<<2|l<<3].forEach(p);Ja[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,Ja[s<<2].forEach(p);for(;++o=r,Ja[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}Ja[s<<3].forEach(p)}(e,i,(function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n0?o.push([t]):u.push(t)})),u.forEach((function(t){for(var n,e=0,r=o.length;e0&&a0&&u0&&o>0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Wa(Ha.call(t)):Wa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:Qa,i):r===u},i}function tu(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function nu(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function eu(t){return t[0]}function ru(t){return t[1]}function iu(){return 1}var ou={},au={};function uu(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function cu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function fu(t,n){var e=t+"",r=e.length;return r9999?"+"+fu(t,6):fu(t,4)}(t.getUTCFullYear())+"-"+fu(t.getUTCMonth()+1,2)+"-"+fu(t.getUTCDate(),2)+(i?"T"+fu(n,2)+":"+fu(e,2)+":"+fu(r,2)+"."+fu(i,3)+"Z":r?"T"+fu(n,2)+":"+fu(e,2)+":"+fu(r,2)+"Z":e||n?"T"+fu(n,2)+":"+fu(e,2)+"Z":"")}function lu(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return au;if(f)return f=!1,ou;var n,r,i=a;if(34===t.charCodeAt(i)){for(;a++=o?c=!0:10===(r=t.charCodeAt(a++))?f=!0:13===r&&(f=!0,10===t.charCodeAt(a)&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a=(o=(y+g)/2))?y=o:g=o,(s=e>=(a=(v+b)/2))?v=a:b=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(y+g)/2))?y=o:g=o,(s=e>=(a=(v+b)/2))?v=a:b=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function $u(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Hu(t){return t[0]}function Vu(t){return t[1]}function Wu(t,n,e){var r=new Xu(null==n?Hu:n,null==e?Vu:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Xu(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Gu(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Zu=Wu.prototype=Xu.prototype;function Qu(t){return t.x+t.vx}function Ju(t){return t.y+t.vy}function Ku(t){return t.index}function tc(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function nc(t){return t.x}function ec(t){return t.y}Zu.copy=function(){var t,n,e=new Xu(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Gu(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Gu(n));return e},Zu.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return Iu(this.cover(n,e),n,e,t)},Zu.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;es&&(s=r),il&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;et||t>=i||r>n||n>=o;)switch(u=(nh||(o=c.y0)>d||(a=c.x1)=g)<<1|t>=v)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var b=t-+this._x.call(null,y.data),m=n-+this._y.call(null,y.data),_=b*b+m*m;if(_=(u=(p+v)/2))?p=u:v=u,(s=a>=(c=(y+g)/2))?y=c:g=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Zu.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]}function oc(t){return(t=ic(Math.abs(t)))?t[1]:NaN}var ac,uc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function cc(t){if(!(n=uc.exec(t)))throw new Error("invalid format: "+t);var n;return new fc({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function fc(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function sc(t,n){var e=ic(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}cc.prototype=fc.prototype,fc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var lc={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return sc(100*t,n)},r:sc,s:function(t,n){var e=ic(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(ac=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+ic(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function hc(t){return t}var dc,pc,yc,vc=Array.prototype.map,gc=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function bc(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?hc:(n=vc.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?hc:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(vc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"-":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=cc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,y=t.comma,v=t.precision,g=t.trim,b=t.type;"n"===b?(y=!0,b="g"):lc[b]||(void 0===v&&(v=12),g=!0,b="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var m="$"===h?i:"#"===h&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",_="$"===h?o:/[%p]/.test(b)?c:"",x=lc[b],w=/[defgprs%]/.test(b);function M(t){var i,o,c,h=m,M=_;if("c"===b)M=x(t)+M,t="";else{var E=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),v),g&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),E&&0==+t&&"+"!==l&&(E=!1),h=(E?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===b?gc[8+ac/3]:"")+M+(E&&"("===l?")":""),w)for(i=-1,o=t.length;++i(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}y&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,T=A>1)+h+t+M+T.slice(A);break;default:t=T+h+t+M}return u(t)}return v=void 0===v?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=cc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(oc(n)/3))),i=Math.pow(10,-r),o=gc[8+r/3];return function(t){return e(i*t)+o}}}}function mc(t){return dc=bc(t),pc=dc.format,yc=dc.formatPrefix,dc}function _c(t){return Math.max(0,-oc(Math.abs(t)))}function xc(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(oc(n)/3)))-oc(Math.abs(t)))}function wc(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,oc(n)-oc(t))+1}function Mc(){return new Ec}function Ec(){this.reset()}mc({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Ec.prototype={constructor:Ec,reset:function(){this.s=this.t=0},add:function(t){Tc(Ac,t,this.t),Tc(this,Ac.s,this.s),this.s?this.t+=Ac.t:this.s=Ac.t},valueOf:function(){return this.s}};var Ac=new Ec;function Tc(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var kc=Math.PI,Sc=kc/2,Nc=kc/4,Cc=2*kc,Pc=180/kc,Oc=kc/180,Rc=Math.abs,Lc=Math.atan,zc=Math.atan2,Dc=Math.cos,Bc=Math.ceil,qc=Math.exp,Fc=Math.log,Uc=Math.pow,Yc=Math.sin,jc=Math.sign||function(t){return t>0?1:t<0?-1:0},Ic=Math.sqrt,$c=Math.tan;function Hc(t){return t>1?0:t<-1?kc:Math.acos(t)}function Vc(t){return t>1?Sc:t<-1?-Sc:Math.asin(t)}function Wc(t){return(t=Yc(t/2))*t}function Xc(){}function Gc(t,n){t&&Qc.hasOwnProperty(t.type)&&Qc[t.type](t,n)}var Zc={Feature:function(t,n){Gc(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,o=Dc(n=(n*=Oc)/2+Nc),a=Yc(n),u=af*a,c=of*o+u*Dc(i),f=u*r*Yc(i);uf.add(zc(f,c)),rf=t,of=o,af=a}function pf(t){return[zc(t[1],t[0]),Vc(t[2])]}function yf(t){var n=t[0],e=t[1],r=Dc(e);return[r*Dc(n),r*Yc(n),Yc(e)]}function vf(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function gf(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function bf(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function mf(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function _f(t){var n=Ic(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var xf,wf,Mf,Ef,Af,Tf,kf,Sf,Nf,Cf,Pf,Of,Rf,Lf,zf,Df,Bf,qf,Ff,Uf,Yf,jf,If,$f,Hf,Vf,Wf=Mc(),Xf={point:Gf,lineStart:Qf,lineEnd:Jf,polygonStart:function(){Xf.point=Kf,Xf.lineStart=ts,Xf.lineEnd=ns,Wf.reset(),ff.polygonStart()},polygonEnd:function(){ff.polygonEnd(),Xf.point=Gf,Xf.lineStart=Qf,Xf.lineEnd=Jf,uf<0?(xf=-(Mf=180),wf=-(Ef=90)):Wf>1e-6?Ef=90:Wf<-1e-6&&(wf=-90),Cf[0]=xf,Cf[1]=Mf},sphere:function(){xf=-(Mf=180),wf=-(Ef=90)}};function Gf(t,n){Nf.push(Cf=[xf=t,Mf=t]),nEf&&(Ef=n)}function Zf(t,n){var e=yf([t*Oc,n*Oc]);if(Sf){var r=gf(Sf,e),i=gf([r[1],-r[0],0],r);_f(i),i=pf(i);var o,a=t-Af,u=a>0?1:-1,c=i[0]*Pc*u,f=Rc(a)>180;f^(u*AfEf&&(Ef=o):f^(u*Af<(c=(c+360)%360-180)&&cEf&&(Ef=n)),f?tes(xf,Mf)&&(Mf=t):es(t,Mf)>es(xf,Mf)&&(xf=t):Mf>=xf?(tMf&&(Mf=t)):t>Af?es(xf,t)>es(xf,Mf)&&(Mf=t):es(t,Mf)>es(xf,Mf)&&(xf=t)}else Nf.push(Cf=[xf=t,Mf=t]);nEf&&(Ef=n),Sf=e,Af=t}function Qf(){Xf.point=Zf}function Jf(){Cf[0]=xf,Cf[1]=Mf,Xf.point=Gf,Sf=null}function Kf(t,n){if(Sf){var e=t-Af;Wf.add(Rc(e)>180?e+(e>0?360:-360):e)}else Tf=t,kf=n;ff.point(t,n),Zf(t,n)}function ts(){ff.lineStart()}function ns(){Kf(Tf,kf),ff.lineEnd(),Rc(Wf)>1e-6&&(xf=-(Mf=180)),Cf[0]=xf,Cf[1]=Mf,Sf=null}function es(t,n){return(n-=t)<0?n+360:n}function rs(t,n){return t[0]-n[0]}function is(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nkc?t+Math.round(-t/Cc)*Cc:t,n]}function ms(t,n,e){return(t%=Cc)?n||e?gs(xs(t),ws(n,e)):xs(t):n||e?ws(n,e):bs}function _s(t){return function(n,e){return[(n+=t)>kc?n-Cc:n<-kc?n+Cc:n,e]}}function xs(t){var n=_s(t);return n.invert=_s(-t),n}function ws(t,n){var e=Dc(t),r=Yc(t),i=Dc(n),o=Yc(n);function a(t,n){var a=Dc(n),u=Dc(t)*a,c=Yc(t)*a,f=Yc(n),s=f*e+u*r;return[zc(c*i-s*o,u*e-f*r),Vc(s*i+c*o)]}return a.invert=function(t,n){var a=Dc(n),u=Dc(t)*a,c=Yc(t)*a,f=Yc(n),s=f*i-c*o;return[zc(c*i+f*o,u*e+s*r),Vc(s*e-u*r)]},a}function Ms(t){function n(n){return(n=t(n[0]*Oc,n[1]*Oc))[0]*=Pc,n[1]*=Pc,n}return t=ms(t[0]*Oc,t[1]*Oc,t.length>2?t[2]*Oc:0),n.invert=function(n){return(n=t.invert(n[0]*Oc,n[1]*Oc))[0]*=Pc,n[1]*=Pc,n},n}function Es(t,n,e,r,i,o){if(e){var a=Dc(n),u=Yc(n),c=r*e;null==i?(i=n+r*Cc,o=n-c/2):(i=As(a,i),o=As(a,o),(r>0?io)&&(i+=r*Cc));for(var f,s=i;r>0?s>o:s1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function ks(t,n){return Rc(t[0]-n[0])<1e-6&&Rc(t[1]-n[1])<1e-6}function Ss(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Ns(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(ks(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Cs(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r=0?1:-1,A=E*M,T=A>kc,k=y*x;if(Ps.add(zc(k*E*Yc(A),v*w+k*Dc(A))),a+=T?M+E*Cc:M,T^d>=e^m>=e){var S=gf(yf(h),yf(b));_f(S);var N=gf(o,S);_f(N);var C=(T^M>=0?-1:1)*Vc(N[2]);(r>C||r===C&&(S[0]||S[1]))&&(u+=T^M>=0?1:-1)}}return(a<-1e-6||a<1e-6&&Ps<-1e-6)^1&u}function Ls(t,n,e,r){return function(i){var o,a,u,c=n(i),f=Ts(),s=n(f),l=!1,h={point:d,lineStart:y,lineEnd:v,polygonStart:function(){h.point=g,h.lineStart=b,h.lineEnd=m,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=y,h.lineEnd=v,a=St(a);var t=Rs(o,r);a.length?(l||(i.polygonStart(),l=!0),Ns(a,Ds,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function y(){h.point=p,c.lineStart()}function v(){h.point=d,c.lineEnd()}function g(t,n){u.push([t,n]),s.point(t,n)}function b(){s.lineStart(),u=[]}function m(){g(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(zs))}return h}}function zs(t){return t.length>1}function Ds(t,n){return((t=t.x)[0]<0?t[1]-Sc-1e-6:Sc-t[1])-((n=n.x)[0]<0?n[1]-Sc-1e-6:Sc-n[1])}var Bs=Ls((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?kc:-kc,c=Rc(o-e);Rc(c-kc)<1e-6?(t.point(e,r=(r+a)/2>0?Sc:-Sc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=kc&&(Rc(e-i)<1e-6&&(e-=1e-6*i),Rc(o-u)<1e-6&&(o-=1e-6*u),r=function(t,n,e,r){var i,o,a=Yc(t-e);return Rc(a)>1e-6?Lc((Yc(n)*(o=Dc(r))*Yc(e)-Yc(r)*(i=Dc(n))*Yc(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*Sc,r.point(-kc,i),r.point(0,i),r.point(kc,i),r.point(kc,0),r.point(kc,-i),r.point(0,-i),r.point(-kc,-i),r.point(-kc,0),r.point(-kc,i);else if(Rc(t[0]-n[0])>1e-6){var o=t[0]0,i=Rc(n)>1e-6;function o(t,e){return Dc(t)*Dc(e)>n}function a(t,e,r){var i=[1,0,0],o=gf(yf(t),yf(e)),a=vf(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=gf(i,o),h=mf(i,f);bf(h,mf(o,s));var d=l,p=vf(h,d),y=vf(d,d),v=p*p-y*(vf(h,h)-1);if(!(v<0)){var g=Ic(v),b=mf(d,(-p-g)/y);if(bf(b,h),b=pf(b),!r)return b;var m,_=t[0],x=e[0],w=t[1],M=e[1];x<_&&(m=_,_=x,x=m);var E=x-_,A=Rc(E-kc)<1e-6;if(!A&&M0^b[1]<(Rc(b[0]-_)<1e-6?w:M):w<=b[1]&&b[1]<=M:E>kc^(_<=b[0]&&b[0]<=x)){var T=mf(d,(-p+g)/y);return bf(T,h),[b,pf(T)]}}}function u(n,e){var i=r?t:kc-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return Ls(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],y=o(l,h),v=r?y?0:u(l,h):y?u(l+(l<0?kc:-kc),h):0;if(!n&&(f=c=y)&&t.lineStart(),y!==c&&(!(d=a(n,p))||ks(n,d)||ks(p,d))&&(p[2]=1),y!==c)s=0,y?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^y){var g;v&e||!(g=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(g[0][0],g[0][1]),t.point(g[1][0],g[1][1]),t.lineEnd()):(t.point(g[1][0],g[1][1]),t.lineEnd(),t.lineStart(),t.point(g[0][0],g[0][1],3)))}!y||n&&ks(n,p)||t.point(p[0],p[1]),n=p,c=y,e=v},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){Es(o,t,e,i,n,r)}),r?[0,-t]:[-kc,t-kc])}function Fs(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return Rc(r[0]-t)<1e-6?i>0?0:3:Rc(r[0]-e)<1e-6?i>0?2:1:Rc(r[1]-n)<1e-6?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,y,v,g,b,m=a,_=Ts(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);g=!0,v=!1,p=y=NaN},lineEnd:function(){c&&(M(l,h),d&&v&&_.rejoin(),c.push(_.result()));x.point=w,v&&m.lineEnd()},polygonStart:function(){m=_,c=[],f=[],b=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;er&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=b&&n,i=(c=St(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&Ns(c,u,n,o,a),a.polygonEnd());m=a,c=f=s=null}};function w(t,n){i(t,n)&&m.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),g)l=o,h=a,d=u,g=!1,u&&(m.lineStart(),m.point(o,a));else if(u&&v)m.point(o,a);else{var c=[p=Math.max(-1e9,Math.min(1e9,p)),y=Math.max(-1e9,Math.min(1e9,y))],_=[o=Math.max(-1e9,Math.min(1e9,o)),a=Math.max(-1e9,Math.min(1e9,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,_,t,n,e,r)?u&&(m.lineStart(),m.point(o,a),b=!1):(v||(m.lineStart(),m.point(c[0],c[1])),m.point(_[0],_[1]),u||m.lineEnd(),b=!1)}p=o,y=a,v=u}return x}}var Us,Ys,js,Is=Mc(),$s={sphere:Xc,point:Xc,lineStart:function(){$s.point=Vs,$s.lineEnd=Hs},lineEnd:Xc,polygonStart:Xc,polygonEnd:Xc};function Hs(){$s.point=$s.lineEnd=Xc}function Vs(t,n){Us=t*=Oc,Ys=Yc(n*=Oc),js=Dc(n),$s.point=Ws}function Ws(t,n){t*=Oc;var e=Yc(n*=Oc),r=Dc(n),i=Rc(t-Us),o=Dc(i),a=r*Yc(i),u=js*e-Ys*r*o,c=Ys*e+js*r*o;Is.add(zc(Ic(a*a+u*u),c)),Us=t,Ys=e,js=r}function Xs(t){return Is.reset(),tf(t,$s),+Is}var Gs=[null,null],Zs={type:"LineString",coordinates:Gs};function Qs(t,n){return Gs[0]=t,Gs[1]=n,Xs(Zs)}var Js={Feature:function(t,n){return tl(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r0&&(i=Qs(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<1e-12*i)return!0;e=r}return!1}function rl(t,n){return!!Rs(t.map(il),ol(n))}function il(t){return(t=t.map(ol)).pop(),t}function ol(t){return[t[0]*Oc,t[1]*Oc]}function al(t,n,e){var r=gt(t,n-1e-6,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function ul(t,n,e){var r=gt(t,n-1e-6,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function cl(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,y=360,v=2.5;function g(){return{type:"MultiLineString",coordinates:b()}}function b(){return gt(Bc(r/p)*p,e,p).map(s).concat(gt(Bc(u/y)*y,a,y).map(l)).concat(gt(Bc(n/h)*h,t,h).filter((function(t){return Rc(t%p)>1e-6})).map(c)).concat(gt(Bc(o/d)*d,i,d).filter((function(t){return Rc(t%y)>1e-6})).map(f))}return g.lines=function(){return b().map((function(t){return{type:"LineString",coordinates:t}}))},g.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},g.extent=function(t){return arguments.length?g.extentMajor(t).extentMinor(t):g.extentMinor()},g.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),g.precision(v)):[[r,u],[e,a]]},g.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),g.precision(v)):[[n,o],[t,i]]},g.step=function(t){return arguments.length?g.stepMajor(t).stepMinor(t):g.stepMinor()},g.stepMajor=function(t){return arguments.length?(p=+t[0],y=+t[1],g):[p,y]},g.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],g):[h,d]},g.precision=function(h){return arguments.length?(v=+h,c=al(o,i,90),f=ul(n,t,v),s=al(u,a,90),l=ul(r,e,v),g):v},g.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}function fl(t){return t}var sl,ll,hl,dl,pl=Mc(),yl=Mc(),vl={point:Xc,lineStart:Xc,lineEnd:Xc,polygonStart:function(){vl.lineStart=gl,vl.lineEnd=_l},polygonEnd:function(){vl.lineStart=vl.lineEnd=vl.point=Xc,pl.add(Rc(yl)),yl.reset()},result:function(){var t=pl/2;return pl.reset(),t}};function gl(){vl.point=bl}function bl(t,n){vl.point=ml,sl=hl=t,ll=dl=n}function ml(t,n){yl.add(dl*t-hl*n),hl=t,dl=n}function _l(){ml(sl,ll)}var xl=vl,wl=1/0,Ml=wl,El=-wl,Al=El,Tl={point:function(t,n){tEl&&(El=t);nAl&&(Al=n)},lineStart:Xc,lineEnd:Xc,polygonStart:Xc,polygonEnd:Xc,result:function(){var t=[[wl,Ml],[El,Al]];return El=Al=-(Ml=wl=1/0),t}};var kl,Sl,Nl,Cl,Pl=Tl,Ol=0,Rl=0,Ll=0,zl=0,Dl=0,Bl=0,ql=0,Fl=0,Ul=0,Yl={point:jl,lineStart:Il,lineEnd:Vl,polygonStart:function(){Yl.lineStart=Wl,Yl.lineEnd=Xl},polygonEnd:function(){Yl.point=jl,Yl.lineStart=Il,Yl.lineEnd=Vl},result:function(){var t=Ul?[ql/Ul,Fl/Ul]:Bl?[zl/Bl,Dl/Bl]:Ll?[Ol/Ll,Rl/Ll]:[NaN,NaN];return Ol=Rl=Ll=zl=Dl=Bl=ql=Fl=Ul=0,t}};function jl(t,n){Ol+=t,Rl+=n,++Ll}function Il(){Yl.point=$l}function $l(t,n){Yl.point=Hl,jl(Nl=t,Cl=n)}function Hl(t,n){var e=t-Nl,r=n-Cl,i=Ic(e*e+r*r);zl+=i*(Nl+t)/2,Dl+=i*(Cl+n)/2,Bl+=i,jl(Nl=t,Cl=n)}function Vl(){Yl.point=jl}function Wl(){Yl.point=Gl}function Xl(){Zl(kl,Sl)}function Gl(t,n){Yl.point=Zl,jl(kl=Nl=t,Sl=Cl=n)}function Zl(t,n){var e=t-Nl,r=n-Cl,i=Ic(e*e+r*r);zl+=i*(Nl+t)/2,Dl+=i*(Cl+n)/2,Bl+=i,ql+=(i=Cl*t-Nl*n)*(Nl+t),Fl+=i*(Cl+n),Ul+=3*i,jl(Nl=t,Cl=n)}var Ql=Yl;function Jl(t){this._context=t}Jl.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Cc)}},result:Xc};var Kl,th,nh,eh,rh,ih=Mc(),oh={point:Xc,lineStart:function(){oh.point=ah},lineEnd:function(){Kl&&uh(th,nh),oh.point=Xc},polygonStart:function(){Kl=!0},polygonEnd:function(){Kl=null},result:function(){var t=+ih;return ih.reset(),t}};function ah(t,n){oh.point=uh,th=eh=t,nh=rh=n}function uh(t,n){eh-=t,rh-=n,ih.add(Ic(eh*eh+rh*rh)),eh=t,rh=n}var ch=oh;function fh(){this._string=[]}function sh(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function lh(t){return function(n){var e=new hh;for(var r in t)e[r]=t[r];return e.stream=n,e}}function hh(){}function dh(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),tf(e,t.stream(Pl)),n(Pl.result()),null!=r&&t.clipExtent(r),t}function ph(t,n,e){return dh(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function yh(t,n,e){return ph(t,[[0,0],n],e)}function vh(t,n,e){return dh(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function gh(t,n,e){return dh(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}fh.prototype={_radius:4.5,_circle:sh(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=sh(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},hh.prototype={constructor:hh,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var bh=Dc(30*Oc);function mh(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,y,v){var g=f-r,b=s-i,m=g*g+b*b;if(m>4*n&&y--){var _=a+h,x=u+d,w=c+p,M=Ic(_*_+x*x+w*w),E=Vc(w/=M),A=Rc(Rc(w)-1)<1e-6||Rc(o-l)<1e-6?(o+l)/2:zc(x,_),T=t(A,E),k=T[0],S=T[1],N=k-r,C=S-i,P=b*N-g*C;(P*P/m>n||Rc((g*N+b*C)/m-.5)>.3||a*h+u*d+c*p2?t[2]%360*Oc:0,N()):[v*Pc,g*Pc,b*Pc]},k.angle=function(t){return arguments.length?(m=t%360*Oc,N()):m*Pc},k.reflectX=function(t){return arguments.length?(_=t?-1:1,N()):_<0},k.reflectY=function(t){return arguments.length?(x=t?-1:1,N()):x<0},k.precision=function(t){return arguments.length?(a=mh(u,T=t*t),C()):Ic(T)},k.fitExtent=function(t,n){return ph(k,t,n)},k.fitSize=function(t,n){return yh(k,t,n)},k.fitWidth=function(t,n){return vh(k,t,n)},k.fitHeight=function(t,n){return gh(k,t,n)},function(){return n=t.apply(this,arguments),k.invert=n.invert&&S,N()}}function Ah(t){var n=0,e=kc/3,r=Eh(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Oc,e=t[1]*Oc):[n*Pc,e*Pc]},i}function Th(t,n){var e=Yc(t),r=(e+Yc(n))/2;if(Rc(r)<1e-6)return function(t){var n=Dc(t);function e(t,e){return[t*n,Yc(e)/n]}return e.invert=function(t,e){return[t/n,Vc(e*n)]},e}(t);var i=1+e*(2*r-e),o=Ic(i)/r;function a(t,n){var e=Ic(i-2*r*Yc(n))/r;return[e*Yc(t*=r),o-e*Dc(t)]}return a.invert=function(t,n){var e=o-n,a=zc(t,Rc(e))*jc(e);return e*r<0&&(a-=kc*jc(t)*jc(e)),[a/r,Vc((i-(t*t+e*e)*r*r)/(2*r))]},a}function kh(){return Ah(Th).scale(155.424).center([0,33.6442])}function Sh(){return kh().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Nh(t){return function(n,e){var r=Dc(n),i=Dc(e),o=t(r*i);return[o*i*Yc(n),o*Yc(e)]}}function Ch(t){return function(n,e){var r=Ic(n*n+e*e),i=t(r),o=Yc(i),a=Dc(i);return[zc(n*o,r*a),Vc(r&&e*o/r)]}}var Ph=Nh((function(t){return Ic(2/(1+t))}));Ph.invert=Ch((function(t){return 2*Vc(t/2)}));var Oh=Nh((function(t){return(t=Hc(t))&&t/Yc(t)}));function Rh(t,n){return[t,Fc($c((Sc+n)/2))]}function Lh(t){var n,e,r,i=Mh(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=kc*a(),u=i(Ms(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Rh?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function zh(t){return $c((Sc+t)/2)}function Dh(t,n){var e=Dc(t),r=t===n?Yc(t):Fc(e/Dc(n))/Fc(zh(n)/zh(t)),i=e*Uc(zh(t),r)/r;if(!r)return Rh;function o(t,n){i>0?n<1e-6-Sc&&(n=1e-6-Sc):n>Sc-1e-6&&(n=Sc-1e-6);var e=i/Uc(zh(n),r);return[e*Yc(r*t),i-e*Dc(r*t)]}return o.invert=function(t,n){var e=i-n,o=jc(r)*Ic(t*t+e*e),a=zc(t,Rc(e))*jc(e);return e*r<0&&(a-=kc*jc(t)*jc(e)),[a/r,2*Lc(Uc(i/o,1/r))-Sc]},o}function Bh(t,n){return[t,n]}function qh(t,n){var e=Dc(t),r=t===n?Yc(t):(e-Dc(n))/(n-t),i=e/r+t;if(Rc(r)<1e-6)return Bh;function o(t,n){var e=i-n,o=r*t;return[e*Yc(o),i-e*Dc(o)]}return o.invert=function(t,n){var e=i-n,o=zc(t,Rc(e))*jc(e);return e*r<0&&(o-=kc*jc(t)*jc(e)),[o/r,i-jc(r)*Ic(t*t+e*e)]},o}Oh.invert=Ch((function(t){return t})),Rh.invert=function(t,n){return[t,2*Lc(qc(n))-Sc]},Bh.invert=Bh;var Fh=1.340264,Uh=-.081106,Yh=893e-6,jh=.003796,Ih=Ic(3)/2;function $h(t,n){var e=Vc(Ih*Yc(n)),r=e*e,i=r*r*r;return[t*Dc(e)/(Ih*(Fh+3*Uh*r+i*(7*Yh+9*jh*r))),e*(Fh+Uh*r+i*(Yh+jh*r))]}function Hh(t,n){var e=Dc(n),r=Dc(t)*e;return[e*Yc(t)/r,Yc(n)/r]}function Vh(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Wh(t,n){return[Dc(n)*Yc(t),Yc(n)]}function Xh(t,n){var e=Dc(n),r=1+Dc(t)*e;return[e*Yc(t)/r,Yc(n)/r]}function Gh(t,n){return[Fc($c((Sc+n)/2)),-t]}function Zh(t,n){return t.parent===n.parent?1:2}function Qh(t,n){return t+n.x}function Jh(t,n){return Math.max(t,n.y)}function Kh(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function td(t,n){var e,r,i,o,a,u=new id(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=nd);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new id(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(rd)}function nd(t){return t.children}function ed(t){t.data=t.data.data}function rd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function id(t){this.data=t,this.depth=this.height=0,this.parent=null}$h.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(Fh+Uh*i+o*(Yh+jh*i))-n)/(Fh+3*Uh*i+o*(7*Yh+9*jh*i)))*r)*i*i,!(Rc(e)<1e-12));++a);return[Ih*t*(Fh+3*Uh*i+o*(7*Yh+9*jh*i))/Dc(r),Vc(Yc(r)/Ih)]},Hh.invert=Ch(Lc),Vh.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(Rc(e)>1e-6&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Wh.invert=Ch(Vc),Xh.invert=Ch((function(t){return 2*Lc(t)})),Gh.invert=function(t,n){return[-n,2*Lc(qc(t))-Sc]},id.prototype=td.prototype={constructor:id,count:function(){return this.eachAfter(Kh)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each((function(n){t.push(n)})),t},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return td(this).eachBefore(ed)}};var od=Array.prototype.slice;function ad(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(od.call(t))).length,o=[];r0&&e*e>r*r+i*i}function sd(t,n){for(var e=0;e(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yd(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vd(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function gd(t){this._=t,this.next=null,this.previous=null}function bd(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;pd(e,n,r=t[2]),n=new gd(n),e=new gd(e),r=new gd(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;uh&&(h=u),v=s*s*y,(d=Math.max(h/v,v/l))>p){s-=u;break}p=d}g.push(a={value:s,dice:c1?n:1)},e}(Ud);var Id=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l1?n:1)},e}(Ud);function $d(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hd(t,n){return t[0]-n[0]||t[1]-n[1]}function Vd(t){for(var n=t.length,e=[0,1],r=2,i=2;i1&&$d(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function Wd(){return Math.random()}var Xd=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Wd),Gd=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Wd),Zd=function t(n){function e(){var t=Gd.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(Wd),Qd=function t(n){function e(t){return function(){for(var e=0,r=0;rr&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function pp(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i2?yp:pp,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),jr)))(e)))},l.domain=function(t){return arguments.length?(a=rp.call(t,fp),f===lp||(f=dp(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=ip.call(t),s()):u.slice()},l.rangeRound=function(t){return u=ip.call(t),c=Xr,s()},l.clamp=function(t){return arguments.length?(f=t?dp(a):lp,l):f!==lp},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function bp(t,n){return gp()(t,n)}function mp(t,n,e,r){var i,o=Mt(t,n,e);switch((r=cc(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=xc(o,a))||(r.precision=i),yc(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=wc(o,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=_c(o))||(r.precision=i-2*("%"===r.type))}return pc(r)}function _p(t){var n=t.domain;return t.ticks=function(t){var e=n();return xt(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return mp(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c0?r=wt(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=wt(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function xp(){var t=bp(lp,lp);return t.copy=function(){return vp(t,xp())},tp.apply(t,arguments),_p(t)}function wp(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0){for(;hc)break;y.push(l)}}else for(;h=1;--s)if(!((l=f*s)c)break;y.push(l)}}else y=xt(h,d,Math.min(d-h,p)).map(e);return r?y.reverse():y},r.tickFormat=function(t,i){if(null==i&&(i=10===o?".0e":","),"function"!=typeof i&&(i=pc(i)),t===1/0)return i;null==t&&(t=10);var a=Math.max(1,o*t/r.ticks().length);return function(t){var r=t/e(Math.round(n(t)));return r*o0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a=n)for(;t(n),!e(n);)n.setTime(n-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););}))},e&&(i.count=function(n,r){return qp.setTime(+n),Fp.setTime(+r),t(qp),t(Fp),Math.floor(e(qp,Fp))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var Yp=Up((function(){}),(function(t,n){t.setTime(+t+n)}),(function(t,n){return n-t}));Yp.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Up((function(n){n.setTime(Math.floor(n/t)*t)}),(function(n,e){n.setTime(+n+e*t)}),(function(n,e){return(e-n)/t})):Yp:null};var jp=Yp,Ip=Yp.range,$p=Up((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,n){t.setTime(+t+1e3*n)}),(function(t,n){return(n-t)/1e3}),(function(t){return t.getUTCSeconds()})),Hp=$p,Vp=$p.range,Wp=Up((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,n){t.setTime(+t+6e4*n)}),(function(t,n){return(n-t)/6e4}),(function(t){return t.getMinutes()})),Xp=Wp,Gp=Wp.range,Zp=Up((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,n){t.setTime(+t+36e5*n)}),(function(t,n){return(n-t)/36e5}),(function(t){return t.getHours()})),Qp=Zp,Jp=Zp.range,Kp=Up((function(t){t.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+n)}),(function(t,n){return(n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),ty=Kp,ny=Kp.range;function ey(t){return Up((function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+7*n)}),(function(t,n){return(n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var ry=ey(0),iy=ey(1),oy=ey(2),ay=ey(3),uy=ey(4),cy=ey(5),fy=ey(6),sy=ry.range,ly=iy.range,hy=oy.range,dy=ay.range,py=uy.range,yy=cy.range,vy=fy.range,gy=Up((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,n){t.setMonth(t.getMonth()+n)}),(function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),by=gy,my=gy.range,_y=Up((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n)}),(function(t,n){return n.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));_y.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Up((function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),(function(n,e){n.setFullYear(n.getFullYear()+e*t)})):null};var xy=_y,wy=_y.range,My=Up((function(t){t.setUTCSeconds(0,0)}),(function(t,n){t.setTime(+t+6e4*n)}),(function(t,n){return(n-t)/6e4}),(function(t){return t.getUTCMinutes()})),Ey=My,Ay=My.range,Ty=Up((function(t){t.setUTCMinutes(0,0,0)}),(function(t,n){t.setTime(+t+36e5*n)}),(function(t,n){return(n-t)/36e5}),(function(t){return t.getUTCHours()})),ky=Ty,Sy=Ty.range,Ny=Up((function(t){t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+n)}),(function(t,n){return(n-t)/864e5}),(function(t){return t.getUTCDate()-1})),Cy=Ny,Py=Ny.range;function Oy(t){return Up((function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+7*n)}),(function(t,n){return(n-t)/6048e5}))}var Ry=Oy(0),Ly=Oy(1),zy=Oy(2),Dy=Oy(3),By=Oy(4),qy=Oy(5),Fy=Oy(6),Uy=Ry.range,Yy=Ly.range,jy=zy.range,Iy=Dy.range,$y=By.range,Hy=qy.range,Vy=Fy.range,Wy=Up((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCMonth(t.getUTCMonth()+n)}),(function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),Xy=Wy,Gy=Wy.range,Zy=Up((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)}),(function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Zy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Up((function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),(function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null};var Qy=Zy,Jy=Zy.range;function Ky(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function tv(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function nv(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function ev(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=pv(i),s=yv(i),l=pv(o),h=yv(o),d=pv(a),p=yv(a),y=pv(u),v=yv(u),g=pv(c),b=yv(c),m={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Dv,e:Dv,f:Yv,g:Jv,G:tg,H:Bv,I:qv,j:Fv,L:Uv,m:jv,M:Iv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Mg,s:Eg,S:$v,u:Hv,U:Vv,V:Xv,w:Gv,W:Zv,x:null,X:null,y:Qv,Y:Kv,Z:ng,"%":wg},_={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:eg,e:eg,f:ug,g:bg,G:_g,H:rg,I:ig,j:og,L:ag,m:cg,M:fg,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Mg,s:Eg,S:sg,u:lg,U:hg,V:pg,w:yg,W:vg,x:null,X:null,y:gg,Y:mg,Z:xg,"%":wg},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=b[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=v[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return E(t,n,e,r)},d:Tv,e:Tv,f:Ov,g:wv,G:xv,H:Sv,I:Sv,j:kv,L:Pv,m:Av,M:Nv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},q:Ev,Q:Lv,s:zv,S:Cv,u:gv,U:bv,V:mv,w:vv,W:_v,x:function(t,n,r){return E(t,e,n,r)},X:function(t,n,e){return E(t,r,n,e)},y:wv,Y:xv,Z:Mv,"%":Rv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=tv(nv(o.y,0,1))).getUTCDay(),r=i>4||0===i?Ly.ceil(r):Ly(r),r=Cy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=Ky(nv(o.y,0,1))).getDay(),r=i>4||0===i?iy.ceil(r):iy(r),r=ty.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?tv(nv(o.y,0,1)).getUTCDay():Ky(nv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,tv(o)):Ky(o)}}function E(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in cv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),_.x=w(e,_),_.X=w(r,_),_.c=w(n,_),{format:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",_);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var rv,iv,ov,av,uv,cv={"-":"",_:" ",0:"0"},fv=/^\s*\d+/,sv=/^%/,lv=/[\\^$*+?|[\]().{}]/g;function hv(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function Mv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Ev(t,n,e){var r=fv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Av(t,n,e){var r=fv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Tv(t,n,e){var r=fv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function kv(t,n,e){var r=fv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=fv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=fv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Cv(t,n,e){var r=fv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Pv(t,n,e){var r=fv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Ov(t,n,e){var r=fv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Rv(t,n,e){var r=sv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Lv(t,n,e){var r=fv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function zv(t,n,e){var r=fv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Dv(t,n){return hv(t.getDate(),n,2)}function Bv(t,n){return hv(t.getHours(),n,2)}function qv(t,n){return hv(t.getHours()%12||12,n,2)}function Fv(t,n){return hv(1+ty.count(xy(t),t),n,3)}function Uv(t,n){return hv(t.getMilliseconds(),n,3)}function Yv(t,n){return Uv(t,n)+"000"}function jv(t,n){return hv(t.getMonth()+1,n,2)}function Iv(t,n){return hv(t.getMinutes(),n,2)}function $v(t,n){return hv(t.getSeconds(),n,2)}function Hv(t){var n=t.getDay();return 0===n?7:n}function Vv(t,n){return hv(ry.count(xy(t)-1,t),n,2)}function Wv(t){var n=t.getDay();return n>=4||0===n?uy(t):uy.ceil(t)}function Xv(t,n){return t=Wv(t),hv(uy.count(xy(t),t)+(4===xy(t).getDay()),n,2)}function Gv(t){return t.getDay()}function Zv(t,n){return hv(iy.count(xy(t)-1,t),n,2)}function Qv(t,n){return hv(t.getFullYear()%100,n,2)}function Jv(t,n){return hv((t=Wv(t)).getFullYear()%100,n,2)}function Kv(t,n){return hv(t.getFullYear()%1e4,n,4)}function tg(t,n){var e=t.getDay();return hv((t=e>=4||0===e?uy(t):uy.ceil(t)).getFullYear()%1e4,n,4)}function ng(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+hv(n/60|0,"0",2)+hv(n%60,"0",2)}function eg(t,n){return hv(t.getUTCDate(),n,2)}function rg(t,n){return hv(t.getUTCHours(),n,2)}function ig(t,n){return hv(t.getUTCHours()%12||12,n,2)}function og(t,n){return hv(1+Cy.count(Qy(t),t),n,3)}function ag(t,n){return hv(t.getUTCMilliseconds(),n,3)}function ug(t,n){return ag(t,n)+"000"}function cg(t,n){return hv(t.getUTCMonth()+1,n,2)}function fg(t,n){return hv(t.getUTCMinutes(),n,2)}function sg(t,n){return hv(t.getUTCSeconds(),n,2)}function lg(t){var n=t.getUTCDay();return 0===n?7:n}function hg(t,n){return hv(Ry.count(Qy(t)-1,t),n,2)}function dg(t){var n=t.getUTCDay();return n>=4||0===n?By(t):By.ceil(t)}function pg(t,n){return t=dg(t),hv(By.count(Qy(t),t)+(4===Qy(t).getUTCDay()),n,2)}function yg(t){return t.getUTCDay()}function vg(t,n){return hv(Ly.count(Qy(t)-1,t),n,2)}function gg(t,n){return hv(t.getUTCFullYear()%100,n,2)}function bg(t,n){return hv((t=dg(t)).getUTCFullYear()%100,n,2)}function mg(t,n){return hv(t.getUTCFullYear()%1e4,n,4)}function _g(t,n){var e=t.getUTCDay();return hv((t=e>=4||0===e?By(t):By.ceil(t)).getUTCFullYear()%1e4,n,4)}function xg(){return"+0000"}function wg(){return"%"}function Mg(t){return+t}function Eg(t){return Math.floor(+t/1e3)}function Ag(t){return rv=ev(t),iv=rv.format,ov=rv.parse,av=rv.utcFormat,uv=rv.utcParse,rv}Ag({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",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"]});var Tg=Date.prototype.toISOString?function(t){return t.toISOString()}:av("%Y-%m-%dT%H:%M:%S.%LZ"),kg=Tg;var Sg=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:uv("%Y-%m-%dT%H:%M:%S.%LZ"),Ng=Sg;function Cg(t){return new Date(t)}function Pg(t){return t instanceof Date?+t:+new Date(+t)}function Og(t,n,e,r,i,o,a,u,c){var f=bp(lp,lp),s=f.invert,l=f.domain,h=c(".%L"),d=c(":%S"),p=c("%I:%M"),y=c("%I %p"),v=c("%a %d"),g=c("%b %d"),b=c("%B"),m=c("%Y"),_=[[a,1,1e3],[a,5,5e3],[a,15,15e3],[a,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[i,1,36e5],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,864e5],[r,2,1728e5],[e,1,6048e5],[n,1,2592e6],[n,3,7776e6],[t,1,31536e6]];function x(u){return(a(u)1?0:t<-1?gm:Math.acos(t)}function xm(t){return t>=1?bm:t<=-1?-bm:Math.asin(t)}function wm(t){return t.innerRadius}function Mm(t){return t.outerRadius}function Em(t){return t.startAngle}function Am(t){return t.endAngle}function Tm(t){return t&&t.padAngle}function km(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<1e-12))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}function Sm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/vm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,y=r+l,v=(h+p)/2,g=(d+y)/2,b=p-h,m=y-d,_=b*b+m*m,x=i-o,w=h*y-p*d,M=(m<0?-1:1)*vm(dm(0,x*x*_-w*w)),E=(w*m-b*M)/_,A=(-w*b-m*M)/_,T=(w*m+b*M)/_,k=(-w*b+m*M)/_,S=E-v,N=A-g,C=T-v,P=k-g;return S*S+N*N>C*C+P*P&&(E=T,A=k),{cx:E,cy:A,x01:-s,y01:-l,x11:E*(i/x-1),y11:A*(i/x-1)}}function Nm(){var t=wm,n=Mm,e=fm(0),r=null,i=Em,o=Am,a=Tm,u=null;function c(){var c,f,s=+t.apply(this,arguments),l=+n.apply(this,arguments),h=i.apply(this,arguments)-bm,d=o.apply(this,arguments)-bm,p=sm(d-h),y=d>h;if(u||(u=c=Ca()),l1e-12)if(p>mm-1e-12)u.moveTo(l*hm(h),l*ym(h)),u.arc(0,0,l,h,d,!y),s>1e-12&&(u.moveTo(s*hm(d),s*ym(d)),u.arc(0,0,s,d,h,y));else{var v,g,b=h,m=d,_=h,x=d,w=p,M=p,E=a.apply(this,arguments)/2,A=E>1e-12&&(r?+r.apply(this,arguments):vm(s*s+l*l)),T=pm(sm(l-s)/2,+e.apply(this,arguments)),k=T,S=T;if(A>1e-12){var N=xm(A/s*ym(E)),C=xm(A/l*ym(E));(w-=2*N)>1e-12?(_+=N*=y?1:-1,x-=N):(w=0,_=x=(h+d)/2),(M-=2*C)>1e-12?(b+=C*=y?1:-1,m-=C):(M=0,b=m=(h+d)/2)}var P=l*hm(b),O=l*ym(b),R=s*hm(x),L=s*ym(x);if(T>1e-12){var z,D=l*hm(m),B=l*ym(m),q=s*hm(_),F=s*ym(_);if(p1e-12?S>1e-12?(v=Sm(q,F,P,O,l,S,y),g=Sm(D,B,R,L,l,S,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),S1e-12&&w>1e-12?k>1e-12?(v=Sm(R,L,D,B,s,-k,y),g=Sm(P,O,q,F,s,-k,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),k=s;--l)u.point(v[l],g[l]);u.lineEnd(),u.areaEnd()}y&&(v[f]=+t(h,f,c),g[f]=+e(h,f,c),u.point(n?+n(h,f,c):v[f],r?+r(h,f,c):g[f]))}if(d)return u=null,d+""||null}function f(){return Lm().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t="function"==typeof e?e:fm(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:fm(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:fm(+t),c):n},c.y=function(t){return arguments.length?(e="function"==typeof t?t:fm(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:fm(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:fm(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:fm(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function Dm(t,n){return nt?1:n>=t?0:NaN}function Bm(t){return t}function qm(){var t=Bm,n=Dm,e=null,r=fm(0),i=fm(mm),o=fm(0);function a(a){var u,c,f,s,l,h=a.length,d=0,p=new Array(h),y=new Array(h),v=+r.apply(this,arguments),g=Math.min(mm,Math.max(-mm,i.apply(this,arguments)-v)),b=Math.min(Math.abs(g)/h,o.apply(this,arguments)),m=b*(g<0?-1:1);for(u=0;u0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(y[t],y[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(g-h*m)/d:0;u0?l*f:0)+m,y[c]={data:a[c],index:u,value:l,startAngle:v,endAngle:s,padAngle:b};return y}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:fm(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:fm(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:fm(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:fm(+t),a):o},a}Cm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Fm=Ym(Pm);function Um(t){this._curve=t}function Ym(t){function n(n){return new Um(t(n))}return n._curve=t,n}function jm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Ym(t)):n()._curve},t}function Im(){return jm(Lm().curve(Fm))}function $m(){var t=zm().curve(Fm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return jm(e())},delete t.lineX0,t.lineEndAngle=function(){return jm(r())},delete t.lineX1,t.lineInnerRadius=function(){return jm(i())},delete t.lineY0,t.lineOuterRadius=function(){return jm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Ym(t)):n()._curve},t}function Hm(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Um.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Vm=Array.prototype.slice;function Wm(t){return t.source}function Xm(t){return t.target}function Gm(t){var n=Wm,e=Xm,r=Om,i=Rm,o=null;function a(){var a,u=Vm.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=Ca()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:fm(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:fm(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function Zm(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function Qm(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function Jm(t,n,e,r,i){var o=Hm(n,e),a=Hm(n,e=(e+i)/2),u=Hm(r,e),c=Hm(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var Km={draw:function(t,n){var e=Math.sqrt(n/gm);t.moveTo(e,0),t.arc(0,0,e,0,mm)}},t_={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},n_=Math.sqrt(1/3),e_=2*n_,r_={draw:function(t,n){var e=Math.sqrt(n/e_),r=e*n_;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},i_=Math.sin(gm/10)/Math.sin(7*gm/10),o_=Math.sin(mm/10)*i_,a_=-Math.cos(mm/10)*i_,u_={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=o_*e,i=a_*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=mm*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},c_={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},f_=Math.sqrt(3),s_={draw:function(t,n){var e=-Math.sqrt(n/(3*f_));t.moveTo(0,2*e),t.lineTo(-f_*e,-e),t.lineTo(f_*e,-e),t.closePath()}},l_=-.5,h_=Math.sqrt(3)/2,d_=1/Math.sqrt(12),p_=3*(d_/2+1),y_={draw:function(t,n){var e=Math.sqrt(n/p_),r=e/2,i=e*d_,o=r,a=e*d_+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(l_*r-h_*i,h_*r+l_*i),t.lineTo(l_*o-h_*a,h_*o+l_*a),t.lineTo(l_*u-h_*c,h_*u+l_*c),t.lineTo(l_*r+h_*i,l_*i-h_*r),t.lineTo(l_*o+h_*a,l_*a-h_*o),t.lineTo(l_*u+h_*c,l_*c-h_*u),t.closePath()}},v_=[Km,t_,r_,c_,u_,s_,y_];function g_(){}function b_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function m_(t){this._context=t}function __(t){this._context=t}function x_(t){this._context=t}function w_(t,n){this._basis=new m_(t),this._beta=n}m_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:b_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:b_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},__.prototype={areaStart:g_,areaEnd:g_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:b_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},x_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:b_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},w_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var M_=function t(n){function e(t){return 1===n?new m_(t):new w_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function E_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function A_(t,n){this._context=t,this._k=(1-n)/6}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:E_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:E_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var T_=function t(n){function e(t){return new A_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function k_(t,n){this._context=t,this._k=(1-n)/6}k_.prototype={areaStart:g_,areaEnd:g_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:E_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var S_=function t(n){function e(t){return new k_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function N_(t,n){this._context=t,this._k=(1-n)/6}N_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:E_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var C_=function t(n){function e(t){return new N_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function P_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>1e-12){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>1e-12){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function O_(t,n){this._context=t,this._alpha=n}O_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:P_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var R_=function t(n){function e(t){return n?new O_(t,n):new A_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function L_(t,n){this._context=t,this._alpha=n}L_.prototype={areaStart:g_,areaEnd:g_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:P_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var z_=function t(n){function e(t){return n?new L_(t,n):new k_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function D_(t,n){this._context=t,this._alpha=n}D_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:P_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var B_=function t(n){function e(t){return n?new D_(t,n):new N_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function q_(t){this._context=t}function F_(t){return t<0?-1:1}function U_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(F_(o)+F_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function Y_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function j_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function I_(t){this._context=t}function $_(t){this._context=new H_(t)}function H_(t){this._context=t}function V_(t){return new I_(t)}function W_(t){this._context=t}function X_(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o=0;)e[n]=n;return e}function J_(t,n){return t[n]}function K_(){var t=fm([]),n=Q_,e=Z_,r=J_;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;oo&&(o=n,r=e);return r}function ex(t){var n=t.map(rx);return Q_(t).sort((function(t,e){return n[t]-n[e]}))}function rx(t){for(var n,e=0,r=-1,i=t.length;++r0)){if(o/=h,h<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o0)){if(o/=d,d<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function vx(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],y=(l+d)/2,v=(h+p)/2;if(p===h){if(y=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[y,e];o=[y,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},ux.prototype={constructor:ux,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=lx(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(fx(this,e),e=(t=e).U),e.C=!1,r.C=!0,sx(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(sx(this,e),e=(t=e).U),e.C=!1,r.C=!0,fx(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?lx(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,fx(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,sx(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,fx(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,sx(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,fx(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,sx(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var _x,xx=[];function wx(){cx(this),this.x=this.y=this.arc=this.site=this.cy=null}function Mx(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-qx)){var d=c*c+f*f,p=s*s+l*l,y=(l*d-f*p)/h,v=(c*p-s*d)/h,g=xx.pop()||new wx;g.arc=t,g.site=i,g.x=y+a,g.y=(g.cy=v+u)+Math.sqrt(y*y+v*v),t.circle=g;for(var b=null,m=zx._;m;)if(g.yBx)u=u.L;else{if(!((i=o-Ox(u,a))>Bx)){r>-Bx?(n=u.P,e=u):i>-Bx?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){Lx[t.index]={site:t,halfedges:[]}}(t);var c=kx(t);if(Rx.insert(n,c),n||e){if(n===e)return Ex(n),e=kx(n.site),Rx.insert(c,e),c.edge=e.edge=hx(n.site,c.site),Mx(n),void Mx(e);if(e){Ex(n),Ex(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,y=p[0]-s,v=p[1]-l,g=2*(h*v-d*y),b=h*h+d*d,m=y*y+v*v,_=[(v*b-d*m)/g+s,(h*m-y*b)/g+l];px(e.edge,f,p,_),c.edge=hx(f,t,null,_),e.edge=hx(t,p,null,_),Mx(n),Mx(e)}else c.edge=hx(n.site,c.site)}}function Px(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function Ox(t,n){var e=t.N;if(e)return Px(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var Rx,Lx,zx,Dx,Bx=1e-6,qx=1e-12;function Fx(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function Ux(t,n){return n[1]-t[1]||n[0]-t[0]}function Yx(t,n){var e,r,i,o=t.sort(Ux).pop();for(Dx=[],Lx=new Array(t.length),Rx=new ux,zx=new ux;;)if(i=_x,o&&(!i||o[1]Bx||Math.abs(i[0][1]-i[1][1])>Bx)||delete Dx[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,y,v=Lx.length,g=!0;for(i=0;iBx||Math.abs(y-h)>Bx)&&(c.splice(u,0,Dx.push(dx(a,d,Math.abs(p-t)Bx?[t,Math.abs(l-t)Bx?[Math.abs(h-r)Bx?[e,Math.abs(l-e)Bx?[Math.abs(h-n)=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach((function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;lr?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Vx.prototype=$x.prototype;var nw=Object.freeze({__proto__:null,version:"5.16.0",bisect:ot,bisectRight:ot,bisectLeft:at,ascending:et,bisector:rt,cross:function(t,n,e){var r,i,o,a,u=t.length,c=n.length,f=new Array(u*c);for(null==e&&(e=ut),r=o=0;rt?1:n>=t?0:NaN},deviation:st,extent:lt,histogram:At,thresholdFreedmanDiaconis:function(t,n,e){return t=pt.call(t,ct).sort(et),Math.ceil((e-n)/(2*(Tt(t,.75)-Tt(t,.25))*Math.pow(t.length,-1/3)))},thresholdScott:function(t,n,e){return Math.ceil((e-n)/(3.5*st(t)*Math.pow(t.length,-1/3)))},thresholdSturges:Et,max:kt,mean:function(t,n){var e,r=t.length,i=r,o=-1,a=0;if(null==n)for(;++o=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=Ba(),y=a();++lr.length)return t;var o,u=i[e-1];return null!=n&&e>=r.length?o=t.entries():(o=[],t.each((function(t,n){o.push({key:n,values:a(t,e)})}))),null!=u?o.sort((function(t,n){return u(t.key,n.key)})):o}return e={object:function(t){return o(t,0,qa,Fa)},map:function(t){return o(t,0,Ua,Ya)},entries:function(t){return a(o(t,0,Ua,Ya),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},set:$a,map:Ba,keys:function(t){var n=[];for(var e in t)n.push(e);return n},values:function(t){var n=[];for(var e in t)n.push(t[e]);return n},entries:function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},color:Fe,rgb:Ie,hsl:Ze,lab:or,hcl:hr,lch:function(t,n,e,r){return 1===arguments.length?lr(t):new dr(e,n,t,null==r?1:r)},gray:function(t,n){return new ar(t,0,0,null==n?1:n)},cubehelix:Er,contours:Ka,contourDensity:function(){var t=eu,n=ru,e=iu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Wa(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach((function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l=0&&h>a),nu({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),tu({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),nu({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),tu({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),nu({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=kt(i);d=Mt(0,p,d),(d=gt(0,Math.floor(p/d)*d,d)).shift()}return Ka().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(y)}function y(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function v(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:Wa(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:Wa(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:Wa(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,v()},l.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),v()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Wa(Ha.call(t)):Wa(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),v()},l},dispatch:jt,drag:function(){var t,n,e,r,i=be,o=me,a=_e,u=xe,c={},f=jt("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",v).on("touchmove.drag",g).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var a=m("mouse",o.apply(this,arguments),se,this,arguments);a&&(ie(Hn.view).on("mousemove.drag",p,!0).on("mouseup.drag",y,!0),pe(Hn.view),he(),e=!1,t=Hn.clientX,n=Hn.clientY,a("start"))}}function p(){if(de(),!e){var r=Hn.clientX-t,i=Hn.clientY-n;e=r*r+i*i>l}c.mouse("drag")}function y(){ie(Hn.view).on("mousemove.drag mouseup.drag",null),ye(Hn.view,e),de(),c.mouse("end")}function v(){if(i.apply(this,arguments)){var t,n,e=Hn.changedTouches,r=o.apply(this,arguments),a=e.length;for(t=0;tc+d||if+d||ou.index){var p=c-a.x-a.vx,y=f-a.y-a.vy,v=p*p+y*y;vt.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=ju())*s),0===l&&(d+=(l=ju())*l),d1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f1?(f.on(t,e),n):f.on(t)}}},forceX:function(t){var n,e,r,i=Yu(.1);function o(t){for(var i,o=0,a=n.length;oes(r[0],r[1])&&(r[1]=i[1]),es(i[0],r[1])>es(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=es(r[1],i[0]))>a&&(a=u,xf=i[0],Mf=r[1])}return Nf=Cf=null,xf===1/0||wf===1/0?[[NaN,NaN],[NaN,NaN]]:[[xf,wf],[Mf,Ef]]},geoCentroid:function(t){Pf=Of=Rf=Lf=zf=Df=Bf=qf=Ff=Uf=Yf=0,tf(t,os);var n=Ff,e=Uf,r=Yf,i=n*n+e*e+r*r;return i<1e-12&&(n=Df,e=Bf,r=qf,Of<1e-6&&(n=Rf,e=Lf,r=zf),(i=n*n+e*e+r*r)<1e-12)?[NaN,NaN]:[zc(e,n)*Pc,Vc(r/Ic(i))*Pc]},geoCircle:function(){var t,n,e=vs([0,0]),r=vs(90),i=vs(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=Pc,e[1]*=Pc}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*Oc,c=i.apply(this,arguments)*Oc;return t=[],n=ms(-a[0]*Oc,-a[1]*Oc,0).invert,Es(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:vs([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:vs(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:vs(+t),a):i},a},geoClipAntimeridian:Bs,geoClipCircle:qs,geoClipExtent:function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=Fs(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},geoClipRectangle:Fs,geoContains:function(t,n){return(t&&Js.hasOwnProperty(t.type)?Js[t.type]:tl)(t,n)},geoDistance:Qs,geoGraticule:cl,geoGraticule10:function(){return cl()()},geoInterpolate:function(t,n){var e=t[0]*Oc,r=t[1]*Oc,i=n[0]*Oc,o=n[1]*Oc,a=Dc(r),u=Yc(r),c=Dc(o),f=Yc(o),s=a*Dc(e),l=a*Yc(e),h=c*Dc(i),d=c*Yc(i),p=2*Vc(Ic(Wc(o-r)+a*c*Wc(i-e))),y=Yc(p),v=p?function(t){var n=Yc(t*=p)/y,e=Yc(p-t)/y,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[zc(i,r)*Pc,zc(o,Ic(r*r+i*i))*Pc]}:function(){return[e*Pc,r*Pc]};return v.distance=p,v},geoLength:Xs,geoPath:function(t,n){var e,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),tf(t,e(r))),r.result()}return o.area=function(t){return tf(t,e(xl)),xl.result()},o.measure=function(t){return tf(t,e(ch)),ch.result()},o.bounds=function(t){return tf(t,e(Pl)),Pl.result()},o.centroid=function(t){return tf(t,e(Ql)),Ql.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,fl):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new fh):new Jl(n=t),"function"!=typeof i&&r.pointRadius(i),o):n},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(n)},geoAlbers:Sh,geoAlbersUsa:function(){var t,n,e,r,i,o,a=Sh(),u=kh().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=kh().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:t=function(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:Gh,geoRotation:Ms,geoStream:tf,geoTransform:function(t){return{stream:lh(t)}},cluster:function(){var t=Zh,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(Qh,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Jh,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},hierarchy:td,pack:function(){var t=null,n=1,e=1,r=xd;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(Ed(t)).eachAfter(Ad(r,.5)).eachBefore(Td(1)):i.eachBefore(Ed(Md)).eachAfter(Ad(xd,1)).eachAfter(Ad(r,i.r/Math.min(n,e))).eachBefore(Td(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=md(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:wd(+t),i):r},i},packSiblings:function(t){return bd(t),t},packEnclose:ad,partition:function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Sd(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a0)throw new Error("cycle");return o}return e.id=function(n){return arguments.length?(t=_d(n),e):t},e.parentId=function(t){return arguments.length?(n=_d(t),e):n},e},tree:function(){var t=Rd,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new qd(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new qd(r[i],i)),e.parent=n;return(a.parent=new qd(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),y=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*y}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=zd(u),o=Ld(o),u&&o;)c=Ld(c),(a=zd(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Dd(Bd(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!zd(a)&&(a.t=u,a.m+=l-s),o&&!Ld(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},treemap:function(){var t=jd,n=!1,e=1,r=1,i=[0],o=xd,a=xd,u=xd,c=xd,f=xd;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(kd),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d>>1;f[y]c-o){var b=(i*g+a*v)/r;t(n,d,v,i,o,b,c),t(d,e,g,b,o,a,c)}else{var m=(o*g+c*v)/r;t(n,d,v,i,o,a,m),t(d,e,g,i,m,a,c)}}(0,c,t.value,n,e,r,i)},treemapDice:Sd,treemapSlice:Fd,treemapSliceDice:function(t,n,e,r,i){(1&t.depth?Fd:Sd)(t,n,e,r,i)},treemapSquarify:jd,treemapResquarify:Id,interpolate:Wr,interpolateArray:function(t,n){return(Fr(n)?qr:Ur)(t,n)},interpolateBasis:kr,interpolateBasisClosed:Sr,interpolateDate:Yr,interpolateDiscrete:function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},interpolateHue:function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},interpolateNumber:jr,interpolateNumberArray:qr,interpolateObject:Ir,interpolateRound:Xr,interpolateString:Vr,interpolateTransformCss:ri,interpolateTransformSvg:ii,interpolateZoom:ui,interpolateRgb:Lr,interpolateRgbBasis:Dr,interpolateRgbBasisClosed:Br,interpolateHsl:fi,interpolateHslLong:si,interpolateLab:function(t,n){var e=Rr((t=or(t)).l,(n=or(n)).l),r=Rr(t.a,n.a),i=Rr(t.b,n.b),o=Rr(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},interpolateHcl:hi,interpolateHclLong:di,interpolateCubehelix:yi,interpolateCubehelixLong:vi,piecewise:function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;nu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},polygonLength:function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r0?i[n-1]:e[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},tp.apply(_p(u),arguments)},scaleThreshold:function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return t<=t?r[ot(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=ip.call(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=ip.call(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},tp.apply(o,arguments)},scaleTime:Rg,scaleUtc:function(){return tp.apply(Og(Qy,Xy,Ry,Cy,ky,Ey,Hp,jp,av).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scaleSequential:function t(){var n=_p(Lg()(lp));return n.copy=function(){return zg(n,t())},np.apply(n,arguments)},scaleSequentialLog:function t(){var n=Np(Lg()).domain([1,10]);return n.copy=function(){return zg(n,t()).base(n.base())},np.apply(n,arguments)},scaleSequentialPow:Dg,scaleSequentialSqrt:function(){return Dg.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function t(){var n=Op(Lg());return n.copy=function(){return zg(n,t()).constant(n.constant())},np.apply(n,arguments)},scaleSequentialQuantile:function t(){var n=[],e=lp;function r(t){if(!isNaN(t=+t))return e((ot(n,t)-1)/(n.length-1))}return r.domain=function(t){if(!arguments.length)return n.slice();n=[];for(var e,i=0,o=t.length;i1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return tm.h=360*t-100,tm.s=1.5-1.5*n,tm.l=.8-.9*n,tm+""},interpolateWarm:Jb,interpolateCool:Kb,interpolateSinebow:function(t){var n;return t=(.5-t)*Math.PI,nm.r=255*(n=Math.sin(t))*n,nm.g=255*(n=Math.sin(t+em))*n,nm.b=255*(n=Math.sin(t+rm))*n,nm+""},interpolateTurbo:function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},interpolateViridis:om,interpolateMagma:am,interpolateInferno:um,interpolatePlasma:cm,create:function(t){return ie(Jt(t).call(document.documentElement))},creator:Jt,local:ae,matcher:rn,mouse:se,namespace:Gt,namespaces:Xt,clientPoint:fe,select:ie,selectAll:function(t){return"string"==typeof t?new ee([document.querySelectorAll(t)],[document.documentElement]):new ee([null==t?[]:t],ne)},selection:re,selector:tn,selectorAll:en,style:_n,touch:le,touches:function(t,n){null==n&&(n=ce().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e0){for(var e,r,i,o=0,a=t[0].length;o0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},stackOffsetNone:Z_,stackOffsetSilhouette:function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a1&&e.name===n)return new go([[t]],$o,n,+r);return null},interrupt:ji,voronoi:function(){var t=ox,n=ax,e=null;function r(r){return new Yx(r.map((function(e,i){var o=[Math.round(t(e,i,r)/Bx)*Bx,Math.round(n(e,i,r)/Bx)*Bx];return o.index=i,o.data=e,o})),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:ix(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:ix(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},zoom:function(){var t,n,e=Gx,r=Zx,i=tw,o=Jx,a=Kx,u=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],f=250,s=ui,l=jt("start","zoom","end"),h=500,d=0;function p(t){t.property("__zoom",Qx).on("wheel.zoom",x).on("mousedown.zoom",w).on("dblclick.zoom",M).filter(a).on("touchstart.zoom",E).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,n){return(n=Math.max(u[0],Math.min(u[1],n)))===t.k?t:new $x(n,t.x,t.y)}function v(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new $x(t.k,r,i)}function g(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function b(t,n,e){t.on("start.zoom",(function(){m(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){m(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,o=m(t,i),a=r.apply(t,i),u=null==e?g(a):"function"==typeof e?e.apply(t,i):e,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,l="function"==typeof n?n.apply(t,i):n,h=s(f.invert(u).concat(c/f.k),l.invert(u).concat(c/l.k));return function(t){if(1===t)t=l;else{var n=h(t),e=c/n[2];t=new $x(e,u[0]-n[0]*e,u[1]-n[1]*e)}o.zoom(null,t)}}))}function m(t,n,e){return!e&&t.__zooming||new _(t,n)}function _(t,n){this.that=t,this.args=n,this.active=0,this.extent=r.apply(t,n),this.taps=0}function x(){if(e.apply(this,arguments)){var t=m(this,arguments),n=this.__zoom,r=Math.max(u[0],Math.min(u[1],n.k*Math.pow(2,o.apply(this,arguments)))),a=se(this);if(t.wheel)t.mouse[0][0]===a[0]&&t.mouse[0][1]===a[1]||(t.mouse[1]=n.invert(t.mouse[0]=a)),clearTimeout(t.wheel);else{if(n.k===r)return;t.mouse=[a,n.invert(a)],ji(this),t.start()}Xx(),t.wheel=setTimeout(f,150),t.zoom("mouse",i(v(y(n,r),t.mouse[0],t.mouse[1]),t.extent,c))}function f(){t.wheel=null,t.end()}}function w(){if(!n&&e.apply(this,arguments)){var t=m(this,arguments,!0),r=ie(Hn.view).on("mousemove.zoom",f,!0).on("mouseup.zoom",s,!0),o=se(this),a=Hn.clientX,u=Hn.clientY;pe(Hn.view),Wx(),t.mouse=[o,this.__zoom.invert(o)],ji(this),t.start()}function f(){if(Xx(),!t.moved){var n=Hn.clientX-a,e=Hn.clientY-u;t.moved=n*n+e*e>d}t.zoom("mouse",i(v(t.that.__zoom,t.mouse[0]=se(t.that),t.mouse[1]),t.extent,c))}function s(){r.on("mousemove.zoom mouseup.zoom",null),ye(Hn.view,t.moved),Xx(),t.end()}}function M(){if(e.apply(this,arguments)){var t=this.__zoom,n=se(this),o=t.invert(n),a=t.k*(Hn.shiftKey?.5:2),u=i(v(y(t,a),n,o),r.apply(this,arguments),c);Xx(),f>0?ie(this).transition().duration(f).call(b,u,n):ie(this).call(p.transform,u)}}function E(){if(e.apply(this,arguments)){var n,r,i,o,a=Hn.touches,u=a.length,c=m(this,arguments,Hn.changedTouches.length===u);for(Wx(),r=0;r0},t.prototype.connect_=function(){rw&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),uw?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){rw&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var n=t.propertyName,e=void 0===n?"":n;aw.some((function(t){return!!~e.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),fw=function(t,n){for(var e=0,r=Object.keys(n);e0},t}(),xw="undefined"!=typeof WeakMap?new WeakMap:new ew,ww=function t(n){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var e=cw.getInstance(),r=new _w(n,e,this);xw.set(this,r)};["observe","unobserve","disconnect"].forEach((function(t){ww.prototype[t]=function(){var n;return(n=xw.get(this))[t].apply(n,arguments)}}));var Mw=void 0!==iw.ResizeObserver?iw.ResizeObserver:ww;const Ew=nt.oneOfType([nt.func,nt.number]),Aw=(t,n,e)=>"function"==typeof t?t(n,e):t,Tw=nt.shape({height:nt.number,width:nt.number,marginTop:nt.number,marginRight:nt.number,marginBottom:nt.number,marginLeft:nt.number}),kw=t=>{let n={marginTop:40,marginRight:30,marginBottom:40,marginLeft:75,...t};return{...n,boundedHeight:Math.max(n.height-n.marginTop-n.marginBottom,0),boundedWidth:Math.max(n.width-n.marginLeft-n.marginRight,0)}},Sw=t=>{const i=n(),o=kw(t),[a,u]=e(0),[c,f]=e(0);r((()=>{if(o.width&&o.height)return;const t=i.current,n=new Mw((t=>{if(!Array.isArray(t))return;if(!t.length)return;const n=t[0];a!==n.contentRect.width&&u(n.contentRect.width),c!==n.contentRect.height&&f(n.contentRect.height)}));return n.observe(t),()=>n.unobserve(t)}),[t,c,a,o]);const s=kw({...o,width:o.width||a,height:o.height||c});return[i,s]},Nw=(t="")=>`${t}-${i().replace(/:/g,"")}`;!function(t,n){void 0===n&&(n={});var e=n.insertAt;if(t&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===e&&r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i),i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t))}}(".Chart{overflow:visible}.Chart text{fill:#95a5a6}.Line{transition:all .3s ease-out}.Line--type-line{fill:none;stroke:#9980fa;stroke-width:3px;stroke-linecap:round}.Line--type-area{fill:rgba(152,128,250,.185);stroke-width:0}.Axis__line{stroke:#bdc3c7}.Axis__label{text-anchor:middle;font-size:.9em;letter-spacing:.01em}.Axis__tick{font-size:.8em;transition:all .3s ease-out}.AxisHorizontal .Axis__tick{text-anchor:middle}.AxisVertical .Axis__tick{dominant-baseline:middle;text-anchor:end}.Circles__circle{fill:#9980fa;cursor:pointer;transition:opacity .15s ease-out,r .15s ease-out}.Bars__rect{fill:#9980fa}.Bars__rect,.PieChart__slice{cursor:pointer;transition:opacity .15s ease-out}.BarChart:has(.Bars__rect:hover) .Bars__rect:not(:hover),.Histogram:has(.Bars__rect:hover) .Bars__rect:not(:hover){opacity:.35}.ScatterPlot:has(.Circles__circle:hover) .Circles__circle:not(:hover){opacity:.35}.PieChart:has(.PieChart__slice:hover) .PieChart__slice:not(:hover){opacity:.35}.StackedBar__segment{cursor:pointer;transition:opacity .15s ease-out}.StackedBarChart:has(.StackedBar__segment:hover) .StackedBar__segment:not(:hover){opacity:.35}.Timeline__hover-line{stroke:#aaa;stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.Timeline__hover-dot{fill:#fff;stroke-width:2.5px;pointer-events:none}.domain,.tick line{stroke:#dadada}");const Cw=a(),Pw=({dimensions:n,children:e,label:r})=>t.createElement(Cw.Provider,{value:n},t.createElement("svg",{className:"Chart",width:n.width,height:n.height,role:"img","aria-label":r},t.createElement("g",{transform:`translate(${n.marginLeft}, ${n.marginTop})`},e)));function Ow(){return Ow=Object.assign?Object.assign.bind():function(t){for(var n=1;nt.createElement(t.Fragment,null,n.map(((n,l)=>t.createElement("rect",Ow({},s,{className:"Bars__rect",key:e(n,l),x:Aw(r,n,l),y:Aw(i,n,l),width:kt([Aw(o,n,l),0]),height:kt([Aw(a,n,l),0]),onMouseEnter:u?t=>u(n,l,t):void 0,onMouseLeave:c?t=>c(n,l,t):void 0,onMouseMove:f?t=>f(n,l,t):void 0})))));Rw.propTypes={data:nt.array,keyAccessor:Ew,xAccessor:Ew,yAccessor:Ew,widthAccessor:Ew,heightAccessor:Ew},Rw.defaultProps={};const Lw={x:function({dimensions:n,label:e,formatTick:r,scale:i,...o}){if(!i)return null;const a=n.boundedWidth<600?n.boundedWidth/100:n.boundedWidth/250,u="function"==typeof i.ticks?i.ticks(a):i.domain(),c="function"==typeof i.bandwidth?i.bandwidth()/2:0;return t.createElement("g",Ow({className:"Axis AxisHorizontal",transform:`translate(0, ${n.boundedHeight})`},o),t.createElement("line",{className:"Axis__line",x2:n.boundedWidth}),u.map(((n,e)=>t.createElement("text",{key:`${n}-${e}`,className:"Axis__tick",transform:`translate(${i(n)+c}, 25)`},r(n)))),e&&t.createElement("text",{className:"Axis__label",transform:`translate(${n.boundedWidth/2}, 60)`},e))},y:function({dimensions:n,label:e,formatTick:r,scale:i,...o}){if(!i)return null;const a=n.boundedHeight/70,u=i.ticks(a);return t.createElement("g",Ow({className:"Axis AxisVertical"},o),t.createElement("line",{className:"Axis__line",y2:n.boundedHeight}),u.map(((n,e)=>t.createElement("text",{key:`${n}-${e}`,className:"Axis__tick",transform:`translate(-16, ${i(n)})`},r(n)))),e&&t.createElement("text",{className:"Axis__label",style:{transform:`translate(-56px, ${n.boundedHeight/2}px) rotate(-90deg)`}},e))}},zw=({dimension:n,...e})=>{const r=o(Cw),i=Lw[n];return i?t.createElement(i,Ow({dimensions:r},e)):null};zw.propTypes={dimension:nt.oneOf(["x","y"]),scale:nt.func,label:nt.string,formatTick:nt.func},zw.defaultProps={dimension:"x",scale:null,formatTick:pc(",")};const Dw=({items:n,position:e})=>{const r="left"===e||"right"===e;return t.createElement("div",{className:"Legend",style:{display:"flex",flexDirection:r?"column":"row",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:"6px 14px",padding:r?"0 10px":"6px 8px",fontSize:"12px",color:"#555",flexShrink:0}},n.map(((n,e)=>t.createElement("div",{key:e,className:"Legend__item",style:{display:"flex",alignItems:"center",gap:5}},t.createElement("span",{className:"Legend__swatch",style:{display:"inline-block",width:10,height:10,borderRadius:2,background:n.color,flexShrink:0}}),t.createElement("span",{className:"Legend__label"},n.label)))))};Dw.propTypes={items:nt.arrayOf(nt.shape({color:nt.string.isRequired,label:nt.string.isRequired})),position:nt.oneOf(["top","bottom","left","right"])},Dw.defaultProps={items:[],position:"bottom"};const Bw=({visible:n,x:e,y:r,children:i})=>n?t.createElement("div",{className:"Tooltip",style:{position:"absolute",left:e,top:r,transform:"translate(-50%, calc(-100% - 10px))",pointerEvents:"none",background:"#fff",border:"1px solid #e0e0e0",borderRadius:6,padding:"7px 12px",fontSize:12,lineHeight:1.6,boxShadow:"0 4px 12px rgba(0,0,0,0.10)",zIndex:10,whiteSpace:"nowrap",color:"#444"}},i):null;Bw.propTypes={visible:nt.bool,x:nt.number,y:nt.number,children:nt.node};const qw=pc(","),Fw=({data:r,xAccessor:i,yAccessor:o,xLabel:a,yLabel:u,color:c,barPadding:f,formatYTick:s,yMin:l,showLegend:h,legendPosition:d})=>{const[p,y]=Sw({marginBottom:77}),v=n(),[g,b]=e({visible:!1,x:0,y:0,d:null});if(!r||0===r.length)return null;const m=up().domain(r.map(i)).range([0,y.boundedWidth]).padding(void 0!==f?f:.2),_=xp().domain([void 0!==l?l:0,kt(r,o)]).range([y.boundedHeight,0]).nice(),x=t=>{const{left:n,top:e}=v.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},w=u?[{color:c||"#9980FA",label:u}]:[],M=d||"bottom",E="left"===M||"right"===M,A="top"===M||"left"===M,T=t.createElement("div",{className:"BarChart",ref:p,style:{flex:1,minHeight:0,minWidth:0}},t.createElement(Pw,{dimensions:y,label:[a,u].filter(Boolean).join(" / ")},t.createElement(zw,{dimension:"x",scale:m,formatTick:t=>t,label:a}),t.createElement(zw,{dimension:"y",scale:_,formatTick:s,label:u}),t.createElement(Rw,{data:r,keyAccessor:(t,n)=>n,xAccessor:t=>m(i(t)),yAccessor:t=>_(o(t)),widthAccessor:()=>m.bandwidth(),heightAccessor:t=>y.boundedHeight-_(o(t)),style:c?{fill:c}:void 0,onMouseEnter:(t,n,e)=>{const{x:r,y:i}=x(e);b({visible:!0,x:r,y:i,d:t})},onMouseMove:(t,n,e)=>{const{x:r,y:i}=x(e);b((t=>({...t,x:r,y:i})))},onMouseLeave:()=>b((t=>({...t,visible:!1})))}))),k=h&&w.length>0?t.createElement(Dw,{items:w,position:M}):null;return t.createElement("div",{ref:v,style:{width:"100%",height:"100%",display:"flex",flexDirection:E?"row":"column",position:"relative"}},A&&k,T,!A&&k,t.createElement(Bw,{visible:g.visible,x:g.x,y:g.y},g.d&&t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement("strong",null,a||"Category"),": ",i(g.d)),t.createElement("div",null,t.createElement("strong",null,u||"Value"),": ",qw(o(g.d))))))};Fw.propTypes={data:nt.array,xAccessor:Ew,yAccessor:Ew,xLabel:nt.string,yLabel:nt.string,color:nt.string,barPadding:nt.number,formatYTick:nt.func,yMin:nt.number,showLegend:nt.bool,legendPosition:nt.oneOf(["top","bottom","left","right"])},Fw.defaultProps={xAccessor:t=>t.x,yAccessor:t=>t.y};const Uw=({id:n,colors:e,...r})=>t.createElement("linearGradient",Ow({id:n,gradientUnits:"userSpaceOnUse",spreadMethod:"pad"},r),e.map(((n,r)=>t.createElement("stop",{key:`${n}-${r}`,offset:100*r/(e.length-1)+"%",stopColor:n}))));Uw.propTypes={id:nt.string,colors:nt.arrayOf(nt.string)},Uw.defaultProps={id:"Gradient",colors:[]};const Yw=["#9980FA","rgb(226, 222, 243)"],jw=pc(","),Iw=pc(",.2~f"),$w=({data:r,xAccessor:i,xLabel:o,yLabel:a,color:u,gradientColors:c,thresholds:f,formatXTick:s,formatYTick:l,showLegend:h,legendPosition:d})=>{const p=Nw("Histogram-gradient"),[y,v]=Sw({marginBottom:77}),g=n(),[b,m]=e({visible:!1,x:0,y:0,d:null});if(!r||0===r.length)return null;const _=f||9,x=xp().domain(lt(r,i)).range([0,v.boundedWidth]).nice(_),w=At().domain(x.domain()).value(i).thresholds(x.ticks(_))(r),M=t=>t.length,E=xp().domain([0,kt(w,M)]).range([v.boundedHeight,0]).nice(),A=c||Yw,T=u?{fill:u}:{fill:`url(#${p})`},k=s||Iw,S=t=>{const{left:n,top:e}=g.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},N=o?[{color:u||"#9980FA",label:o}]:[],C=d||"bottom",P="left"===C||"right"===C,O="top"===C||"left"===C,R=t.createElement("div",{className:"Histogram",ref:y,style:{flex:1,minHeight:0,minWidth:0}},t.createElement(Pw,{dimensions:v,label:[o,a].filter(Boolean).join(" / ")},t.createElement("defs",null,t.createElement(Uw,{id:p,colors:A,x2:"0",y2:"100%"})),t.createElement(zw,{dimension:"x",scale:x,formatTick:s,label:o}),t.createElement(zw,{dimension:"y",scale:E,formatTick:l,label:a||"Count"}),t.createElement(Rw,{data:w,keyAccessor:(t,n)=>n,xAccessor:t=>x(t.x0)+2,yAccessor:t=>E(M(t)),widthAccessor:t=>x(t.x1)-x(t.x0)-2,heightAccessor:t=>v.boundedHeight-E(M(t)),style:T,onMouseEnter:(t,n,e)=>{const{x:r,y:i}=S(e);m({visible:!0,x:r,y:i,d:t})},onMouseMove:(t,n,e)=>{const{x:r,y:i}=S(e);m((t=>({...t,x:r,y:i})))},onMouseLeave:()=>m((t=>({...t,visible:!1})))}))),L=h&&N.length>0?t.createElement(Dw,{items:N,position:C}):null;return t.createElement("div",{ref:g,style:{width:"100%",height:"100%",display:"flex",flexDirection:P?"row":"column",position:"relative"}},O&&L,R,!O&&L,t.createElement(Bw,{visible:b.visible,x:b.x,y:b.y},b.d&&t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement("strong",null,o||"Range"),": ",k(b.d.x0)," – ",k(b.d.x1)),t.createElement("div",null,t.createElement("strong",null,"Count"),": ",jw(b.d.length)))))};$w.propTypes={data:nt.array,xAccessor:Ew,xLabel:nt.string,yLabel:nt.string,color:nt.string,gradientColors:nt.arrayOf(nt.string),thresholds:nt.number,formatXTick:nt.func,formatYTick:nt.func,showLegend:nt.bool,legendPosition:nt.oneOf(["top","bottom","left","right"])},$w.defaultProps={xAccessor:t=>t.x};const Hw={marginTop:20,marginRight:20,marginBottom:20,marginLeft:20},Vw=pc(","),Ww=({data:r,valueAccessor:i,labelAccessor:o,colors:a,innerRadius:u,padAngle:c,showLabels:f,showLegend:s,legendPosition:l})=>{const[h,d]=Sw(Hw),p=n(),[y,v]=e({visible:!1,x:0,y:0,datum:null,label:null});if(!r||0===r.length)return null;const g=Math.min(d.boundedWidth,d.boundedHeight)/2,b=d.boundedWidth/2,m=d.boundedHeight/2,_=ap(Array.isArray(a)?a:Wg),x="number"==typeof u?g*Math.min(Math.max(u,0),.95):0,w=qm().value(i).padAngle(void 0!==c?c:.02).sort(null),M=Nm().innerRadius(x).outerRadius(g),E=x>0?(x+g)/2:.65*g,A=Nm().innerRadius(E).outerRadius(E),T=w(r),k=!1!==f&&"function"==typeof o,S=Ct(r,i),N="function"==typeof o?r.map(((t,n)=>{const e=o(t);return{color:_(void 0!==e?e:String(n)),label:String(e)}})):[],C=l||"bottom",P="left"===C||"right"===C,O="top"===C||"left"===C,R=t=>{const{left:n,top:e}=p.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},L=()=>v((t=>({...t,visible:!1}))),z=t.createElement("div",{className:"PieChart",ref:h,style:{flex:1,minHeight:0,minWidth:0}},t.createElement(Pw,{dimensions:d,label:"Pie chart"},t.createElement("g",{transform:`translate(${b}, ${m})`},T.map(((n,e)=>{const i=o?o(r[e]):String(e),a=n.endAngle-n.startAngle;return t.createElement("g",{key:e,className:"PieChart__slice-group"},t.createElement("path",{className:"PieChart__slice",d:M(n),style:{fill:_(i)},onMouseEnter:t=>((t,n,e)=>{const{x:r,y:i}=R(e);v({visible:!0,x:r,y:i,datum:t,label:n})})(r[e],i,t),onMouseMove:t=>((t,n,e)=>{const{x:r,y:i}=R(e);v((t=>({...t,x:r,y:i})))})(r[e],0,t),onMouseLeave:L}),k&&a>=.35&&t.createElement("text",{className:"PieChart__label",transform:`translate(${A.centroid(n)})`,style:{textAnchor:"middle",dominantBaseline:"middle",pointerEvents:"none"}},i))}))))),D=s&&N.length>0?t.createElement(Dw,{items:N,position:C}):null,B=y.datum?i(y.datum):0,q=S>0?Math.round(B/S*100):0;return t.createElement("div",{ref:p,style:{width:"100%",height:"100%",display:"flex",flexDirection:P?"row":"column",position:"relative"}},O&&D,z,!O&&D,t.createElement(Bw,{visible:y.visible,x:y.x,y:y.y},y.datum&&t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement("strong",null,y.label)),t.createElement("div",null,Vw(B)," (",q,"%)"))))};Ww.propTypes={data:nt.array,valueAccessor:Ew,labelAccessor:Ew,colors:nt.arrayOf(nt.string),innerRadius:nt.number,padAngle:nt.number,showLabels:nt.bool,showLegend:nt.bool,legendPosition:nt.oneOf(["top","bottom","left","right"])},Ww.defaultProps={valueAccessor:t=>t.value,labelAccessor:t=>t.label};const Xw=({data:n,keyAccessor:e,xAccessor:r,yAccessor:i,radius:o,color:a,onMouseEnter:u,onMouseLeave:c,onMouseMove:f,...s})=>t.createElement(t.Fragment,null,n.map(((n,l)=>t.createElement("circle",Ow({},s,{className:"Circles__circle",key:e(n,l),cx:r(n,l),cy:i(n,l),r:"function"==typeof o?o(n):o,style:a?{fill:a}:void 0,onMouseEnter:u?t=>u(n,l,t):void 0,onMouseLeave:c?t=>c(n,l,t):void 0,onMouseMove:f?t=>f(n,l,t):void 0})))));Xw.propTypes={data:nt.array,keyAccessor:Ew,xAccessor:Ew,yAccessor:Ew,radius:Ew,color:nt.string},Xw.defaultProps={radius:5};const Gw=pc(","),Zw=({data:r,xAccessor:i,yAccessor:o,xLabel:a,yLabel:u,color:c,radius:f,formatXTick:s,formatYTick:l,showLegend:h,legendPosition:d})=>{const[p,y]=Sw({marginBottom:77}),v=n(),[g,b]=e({visible:!1,x:0,y:0,d:null});if(!r||0===r.length)return null;const m=lt(r,i),_=lt(r,o),x=m[0]===m[1]?[m[0]-1,m[0]+1]:m,w=_[0]===_[1]?[_[0]-1,_[0]+1]:_,M=xp().domain(x).range([0,y.boundedWidth]).nice(),E=xp().domain(w).range([y.boundedHeight,0]).nice(),A=t=>{const{left:n,top:e}=v.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},T=u?[{color:c||"#9980FA",label:u}]:[],k=d||"bottom",S="left"===k||"right"===k,N="top"===k||"left"===k,C=t.createElement("div",{className:"ScatterPlot",ref:p,style:{flex:1,minHeight:0,minWidth:0}},t.createElement(Pw,{dimensions:y,label:[a,u].filter(Boolean).join(" / ")},t.createElement(zw,{dimension:"x",scale:M,formatTick:s,label:a}),t.createElement(zw,{dimension:"y",scale:E,formatTick:l,label:u}),t.createElement(Xw,{data:r,keyAccessor:(t,n)=>n,xAccessor:t=>M(i(t)),yAccessor:t=>E(o(t)),radius:f,color:c,onMouseEnter:(t,n,e)=>{const{x:r,y:i}=A(e);b({visible:!0,x:r,y:i,d:t})},onMouseMove:(t,n,e)=>{const{x:r,y:i}=A(e);b((t=>({...t,x:r,y:i})))},onMouseLeave:()=>b((t=>({...t,visible:!1})))}))),P=h&&T.length>0?t.createElement(Dw,{items:T,position:k}):null;return t.createElement("div",{ref:v,style:{width:"100%",height:"100%",display:"flex",flexDirection:S?"row":"column",position:"relative"}},N&&P,C,!N&&P,t.createElement(Bw,{visible:g.visible,x:g.x,y:g.y},g.d&&t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement("strong",null,a||"X"),": ",Gw(i(g.d))),t.createElement("div",null,t.createElement("strong",null,u||"Y"),": ",Gw(o(g.d))))))};Zw.propTypes={data:nt.array,xAccessor:Ew,yAccessor:Ew,xLabel:nt.string,yLabel:nt.string,color:nt.string,radius:nt.oneOfType([nt.number,nt.func]),formatXTick:nt.func,formatYTick:nt.func,showLegend:nt.bool,legendPosition:nt.oneOf(["top","bottom","left","right"])},Zw.defaultProps={xAccessor:t=>t.x,yAccessor:t=>t.y};const Qw=pc(","),Jw=({data:r,xAccessor:i,keys:o,colors:a,xLabel:u,yLabel:c,barPadding:f,formatYTick:s,showLegend:l,legendPosition:h})=>{const[d,p]=Sw({marginBottom:77}),y=n(),[v,g]=e({visible:!1,x:0,y:0,key:null,value:0,category:null,total:0});if(!r||0===r.length||!o||0===o.length)return null;const b=ap(Array.isArray(a)?a:Wg).domain(o),m=K_().keys(o)(r),_=up().domain(r.map(i)).range([0,p.boundedWidth]).padding(void 0!==f?f:.2),x=xp().domain([0,kt(m,(t=>kt(t,(t=>t[1]))))]).range([p.boundedHeight,0]).nice(),w=t=>{const{left:n,top:e}=y.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},M=()=>g((t=>({...t,visible:!1}))),E=o.map((t=>({color:b(t),label:t}))),A=h||"bottom",T="left"===A||"right"===A,k="top"===A||"left"===A,S=t.createElement("div",{className:"StackedBarChart",ref:d,style:{flex:1,minHeight:0,minWidth:0}},t.createElement(Pw,{dimensions:p,label:[u,c].filter(Boolean).join(" / ")},t.createElement(zw,{dimension:"x",scale:_,formatTick:t=>t,label:u}),t.createElement(zw,{dimension:"y",scale:x,formatTick:s,label:c}),m.map((n=>t.createElement("g",{key:n.key,className:"StackedBar__series"},n.map(((e,r)=>t.createElement("rect",{key:r,className:"StackedBar__segment",x:_(i(e.data)),y:x(e[1]),width:_.bandwidth(),height:Math.max(0,x(e[0])-x(e[1])),style:{fill:b(n.key)},onMouseEnter:t=>((t,n,e)=>{const{x:r,y:a}=w(e),u=o.reduce(((t,e)=>t+(n.data[e]||0)),0);g({visible:!0,x:r,y:a,key:t,value:n[1]-n[0],category:i(n.data),total:u})})(n.key,e,t),onMouseMove:t=>((t,n,e)=>{const{x:r,y:i}=w(e);g((t=>({...t,x:r,y:i})))})(n.key,0,t),onMouseLeave:M})))))))),N=!1!==l&&E.length>0?t.createElement(Dw,{items:E,position:A}):null;return t.createElement("div",{ref:y,style:{width:"100%",height:"100%",display:"flex",flexDirection:T?"row":"column",position:"relative"}},k&&N,S,!k&&N,t.createElement(Bw,{visible:v.visible,x:v.x,y:v.y},v.key&&t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement("strong",null,v.category)),t.createElement("div",null,v.key,": ",Qw(v.value)),t.createElement("div",{style:{color:"#888",fontSize:11}},"Total: ",Qw(v.total)))))};Jw.propTypes={data:nt.array,xAccessor:Ew,keys:nt.arrayOf(nt.string).isRequired,colors:nt.arrayOf(nt.string),xLabel:nt.string,yLabel:nt.string,barPadding:nt.number,formatYTick:nt.func,showLegend:nt.bool,legendPosition:nt.oneOf(["top","bottom","left","right"])},Jw.defaultProps={xAccessor:t=>t.x};const Kw=({type:n,data:e,xAccessor:r,yAccessor:i,y0Accessor:o,interpolation:a,...u})=>{const c=nw[n]().x(r).y(i).curve(a);return"area"===n&&c.y0(o).y1(i),t.createElement("path",Ow({},u,{className:`Line Line--type-${n}`,d:c(e)}))};Kw.propTypes={type:nt.oneOf(["line","area"]),data:nt.array,xAccessor:Ew,yAccessor:Ew,y0Accessor:Ew,interpolation:nt.func},Kw.defaultProps={type:"line",y0Accessor:0,interpolation:V_};const tM=iv("%-b %-d"),nM=iv("%-b %-d, %Y"),eM=["rgb(226, 222, 243)","#f8f9fa"],rM=pc(","),iM=({data:r,xAccessor:i,yAccessor:o,xLabel:a,yLabel:u,color:c,gradientColors:f,interpolation:s,showArea:l,showDots:h,formatXTick:d,formatYTick:p,showLegend:y,legendPosition:v})=>{const[g,b]=Sw({marginBottom:77}),m=Nw("Timeline-gradient"),_=n(),[x,w]=e(null),[M,E]=e({visible:!1,x:0,y:0});if(!r||0===r.length)return null;const A=f||(c?[`${c}55`,"rgba(255,255,255,0)"]:eM),T=Rg().domain(lt(r,i)).range([0,b.boundedWidth]),k=xp().domain(lt(r,o)).range([b.boundedHeight,0]).nice(),S=t=>T(i(t)),N=t=>k(o(t)),C=k(k.domain()[0]),P=rt(i).left,O=null!==x?r[x]:null,R=p||rM,L=d||nM,z=u?[{color:c||"#9980FA",label:u}]:[],D=v||"bottom",B="left"===D||"right"===D,q="top"===D||"left"===D,F=t.createElement("div",{className:"Timeline",ref:g,style:{flex:1,minHeight:0,minWidth:0}},t.createElement(Pw,{dimensions:b,label:u||a},t.createElement("defs",null,t.createElement(Uw,{id:m,colors:A,x2:"0",y2:"100%"})),t.createElement(zw,{dimension:"x",scale:T,formatTick:d||tM,label:a}),t.createElement(zw,{dimension:"y",scale:k,formatTick:p,label:u}),!1!==l&&t.createElement(Kw,{type:"area",data:r,xAccessor:S,yAccessor:N,y0Accessor:C,style:{fill:`url(#${m})`},interpolation:s}),t.createElement(Kw,{data:r,xAccessor:S,yAccessor:N,style:c?{stroke:c}:void 0,interpolation:s}),h&&t.createElement(Xw,{data:r,keyAccessor:(t,n)=>n,xAccessor:S,yAccessor:N,color:c}),O&&t.createElement(t.Fragment,null,t.createElement("line",{className:"Timeline__hover-line",x1:S(O),x2:S(O),y1:0,y2:b.boundedHeight}),t.createElement("circle",{className:"Timeline__hover-dot",cx:S(O),cy:N(O),r:5,style:{stroke:c||"#9980FA"}})),t.createElement("rect",{x:0,y:0,width:b.boundedWidth,height:b.boundedHeight,fill:"none",style:{pointerEvents:"all"},onMouseMove:t=>{const n=t.currentTarget.ownerSVGElement.getBoundingClientRect(),e=t.clientX-n.left-b.marginLeft,o=T.invert(e),a=P(r,o,1),u=r[a-1],c=r[a],f=!c||u&&o-i(u){w(null),E((t=>({...t,visible:!1})))}}))),U=y&&z.length>0?t.createElement(Dw,{items:z,position:D}):null;return t.createElement("div",{ref:_,style:{width:"100%",height:"100%",display:"flex",flexDirection:B?"row":"column",position:"relative"}},q&&U,F,!q&&U,t.createElement(Bw,{visible:M.visible,x:M.x,y:M.y},O&&t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement("strong",null,L(i(O)))),t.createElement("div",null,u||"Value",": ",R(o(O))))))};iM.propTypes={data:nt.array,xAccessor:Ew,yAccessor:Ew,xLabel:nt.string,yLabel:nt.string,color:nt.string,gradientColors:nt.arrayOf(nt.string),interpolation:nt.func,showArea:nt.bool,showDots:nt.bool,formatXTick:nt.func,formatYTick:nt.func,showLegend:nt.bool,legendPosition:nt.oneOf(["top","bottom","left","right"])},iM.defaultProps={xAccessor:t=>t.x,yAccessor:t=>t.y,showArea:!0,showDots:!1};export{Fw as BarChart,$w as Histogram,Ww as PieChart,Zw as ScatterPlot,Jw as StackedBarChart,iM as Timeline}; +*/;var D=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,R=Object.prototype.propertyIsEnumerable;function j(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var F=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map((function(e){return t[e]}));if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach((function(e){o[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,r,o=j(e),i=1;i1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),K;function t(t,n,r,o,u){for(var c=t[n],s=0;s0?", expected one of type ["+u.join(", ")+"]":"")+".")}))},shape:function(e){return u((function(t,n,r,o,i){var u=t[n],c=f(u);if("object"!==c)return new a("Invalid "+o+" `"+i+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");for(var l in e){var d=e[l];if("function"!=typeof d)return s(r,o,i,l,h(d));var p=d(u,l,r,o,i+"."+l,Z);if(p)return p}return null}))},exact:function(e){return u((function(t,n,r,o,i){var u=t[n],c=f(u);if("object"!==c)return new a("Invalid "+o+" `"+i+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");var l=X({},t[n],e);for(var d in l){var p=e[d];if(G(e,d)&&"function"!=typeof p)return s(r,o,i,d,h(p));if(!p)return new a("Invalid "+o+" `"+i+"` key `"+d+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var g=p(u,d,r,o,i+"."+d,Z);if(g)return g}return null}))}};function i(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function a(e,t){this.message=e,this.data=t&&"object"==typeof t?t:{},this.stack=""}function u(e){if("production"!==process.env.NODE_ENV)var n={},o=0;function i(i,u,c,s,l,f,h){if(s=s||r,f=f||c,h!==Z){if(t){var d=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw d.name="Invariant Violation",d}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var p=s+":"+c;!n[p]&&o<3&&(Q("You are manually calling a React.PropTypes validation function for the `"+f+"` prop on `"+s+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),n[p]=!0,o++)}}return null==u[c]?i?null===u[c]?new a("The "+l+" `"+f+"` is marked as required in `"+s+"`, but its value is `null`."):new a("The "+l+" `"+f+"` is marked as required in `"+s+"`, but its value is `undefined`."):null:e(u,c,s,l,f)}var u=i.bind(null,!1);return u.isRequired=i.bind(null,!0),u}function c(e){return u((function(t,n,r,o,i,u){var c=t[n];return f(c)!==e?new a("Invalid "+o+" `"+i+"` of type `"+h(c)+"` supplied to `"+r+"`, expected `"+e+"`.",{expectedType:e}):null}))}function s(e,t,n,r,o){return new a((e||"React class")+": "+t+" type `"+n+"."+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+o+"`.")}function l(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(l);if(null===t||e(t))return!0;var r=function(e){var t=e&&(n&&e[n]||e["@@iterator"]);if("function"==typeof t)return t}(t);if(!r)return!1;var o,i=r.call(t);if(r!==t.entries){for(;!(o=i.next()).done;)if(!l(o.value))return!1}else for(;!(o=i.next()).done;){var a=o.value;if(a&&!l(a[1]))return!1}return!0;default:return!1}}function f(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}(t,e)?"symbol":t}function h(e){if(null==e)return""+e;var t=f(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function d(e){var t=h(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return a.prototype=Error.prototype,o.checkPropTypes=J,o.resetWarningCache=J.resetWarningCache,o.PropTypes=o,o}(ne.isElement,!0)}else s.exports=function(){function e(e,t,n,r,o,i){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==i){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:te,resetWarningCache:ee};return n.PropTypes=n,n}();var re=s.exports;function oe(e,t){return et?1:e>=t?0:NaN}function ie(e){return 1===e.length&&(e=function(e){return function(t,n){return oe(e(t),n)}}(e)),{left:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)<0?r=i+1:o=i}return r},right:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)>0?o=i:r=i+1}return r}}}var ae=ie(oe).right;function ue(e,t){var n,r,o,i=e.length,a=-1;if(null==t){for(;++a=n)for(r=o=n;++an&&(r=n),o=n)for(r=o=n;++an&&(r=n),o=0?(i>=he?10:i>=de?5:i>=pe?2:1)*Math.pow(10,o):-Math.pow(10,-o)/(i>=he?10:i>=de?5:i>=pe?2:1)}function ye(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),o=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),i=r/o;return i>=he?o*=10:i>=de?o*=5:i>=pe&&(o*=2),t=n)for(r=n;++ir&&(r=n)}else for(;++i=n)for(r=n;++ir&&(r=n);return r}function be(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function xe(){}function we(e,t){var n=new xe;if(e instanceof xe)e.each((function(e,t){n.set(t,e)}));else if(Array.isArray(e)){var r,o=-1,i=e.length;if(null==t)for(;++o>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?Ze(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?Ze(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Fe.exec(e))?new Qe(t[1],t[2],t[3],1):(t=He.exec(e))?new Qe(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Ue.exec(e))?Ze(t[1],t[2],t[3],t[4]):(t=Ye.exec(e))?Ze(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Ie.exec(e))?nt(t[1],t[2]/100,t[3]/100,1):(t=We.exec(e))?nt(t[1],t[2]/100,t[3]/100,t[4]):Be.hasOwnProperty(e)?Xe(Be[e]):"transparent"===e?new Qe(NaN,NaN,NaN,0):null}function Xe(e){return new Qe(e>>16&255,e>>8&255,255&e,1)}function Ze(e,t,n,r){return r<=0&&(e=t=n=NaN),new Qe(e,t,n,r)}function Ge(e){return e instanceof Le||(e=Ve(e)),e?new Qe((e=e.rgb()).r,e.g,e.b,e.opacity):new Qe}function Je(e,t,n,r){return 1===arguments.length?Ge(e):new Qe(e,t,n,null==r?1:r)}function Qe(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function Ke(){return"#"+tt(this.r)+tt(this.g)+tt(this.b)}function et(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}function tt(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?"0":"")+e.toString(16)}function nt(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ot(e,t,n,r)}function rt(e){if(e instanceof ot)return new ot(e.h,e.s,e.l,e.opacity);if(e instanceof Le||(e=Ve(e)),!e)return new ot;if(e instanceof ot)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,u=i-o,c=(i+o)/2;return u?(a=t===i?(n-r)/u+6*(n0&&c<1?0:a,new ot(a,u,c,e.opacity)}function ot(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function it(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function at(e){return function(){return e}}function ut(e){return 1==(e=+e)?ct:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):at(isNaN(t)?n:t)}}function ct(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):at(isNaN(e)?t:e)}Ce(Le,Ve,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:ze,formatHex:ze,formatHsl:function(){return rt(this).formatHsl()},formatRgb:qe,toString:qe}),Ce(Qe,Je,Ne(Le,{brighter:function(e){return e=null==e?Pe:Math.pow(Pe,e),new Qe(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new Qe(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ke,formatHex:Ke,formatRgb:et,toString:et})),Ce(ot,(function(e,t,n,r){return 1===arguments.length?rt(e):new ot(e,t,n,null==r?1:r)}),Ne(Le,{brighter:function(e){return e=null==e?Pe:Math.pow(Pe,e),new ot(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new ot(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new Qe(it(e>=240?e-240:e+120,o,r),it(e,o,r),it(e<120?e+240:e-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===e?")":", "+e+")")}}));var st=function e(t){var n=ut(t);function r(e,t){var r=n((e=Je(e)).r,(t=Je(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=ct(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+""}}return r.gamma=e,r}(1);function lt(e,t){t||(t=[]);var n,r=e?Math.min(t.length,e.length):0,o=t.slice();return function(i){for(n=0;ni&&(o=t.slice(i,o),u[a]?u[a]+=o:u[++a]=o),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:dt(n,r)})),i=yt.lastIndex;return ir&&(t=n,n=r,r=t),function(e){return Math.max(n,Math.min(r,e))}}function Tt(e,t,n){var r=e[0],o=e[1],i=t[0],a=t[1];return o2?At:Tt,o=i=null,f}function f(t){return isNaN(t=+t)?n:(o||(o=r(a.map(e),u,c)))(e(s(t)))}return f.invert=function(n){return s(t((i||(i=r(u,a.map(e),dt)))(n)))},f.domain=function(e){return arguments.length?(a=Te.call(e,xt),s===_t||(s=Et(a)),l()):a.slice()},f.range=function(e){return arguments.length?(u=Ae.call(e),l()):u.slice()},f.rangeRound=function(e){return u=Ae.call(e),c=bt,l()},f.clamp=function(e){return arguments.length?(s=e?Et(a):_t,f):s!==_t},f.interpolate=function(e){return arguments.length?(c=e,l()):c},f.unknown=function(e){return arguments.length?(n=e,f):n},function(n,r){return e=n,t=r,l()}}()(e,t)}function Ot(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Ct(e){return(e=Ot(Math.abs(e)))?e[1]:NaN}var Nt,Lt=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Pt(e){if(!(t=Lt.exec(e)))throw new Error("invalid format: "+e);var t;return new Dt({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Dt(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function $t(e,t){var n=Ot(e,t);if(!n)return e+"";var r=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+new Array(o-r.length+2).join("0")}Pt.prototype=Dt.prototype,Dt.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Rt={"%":function(e,t){return(100*e).toFixed(t)},b:function(e){return Math.round(e).toString(2)},c:function(e){return e+""},d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},g:function(e,t){return e.toPrecision(t)},o:function(e){return Math.round(e).toString(8)},p:function(e,t){return $t(100*e,t)},r:$t,s:function(e,t){var n=Ot(e,t);if(!n)return e+"";var r=n[0],o=n[1],i=o-(Nt=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=r.length;return i===a?r:i>a?r+new Array(i-a+1).join("0"):i>0?r.slice(0,i)+"."+r.slice(i):"0."+new Array(1-i).join("0")+Ot(e,Math.max(0,t+i-1))[0]},X:function(e){return Math.round(e).toString(16).toUpperCase()},x:function(e){return Math.round(e).toString(16)}};function jt(e){return e}var Ft,Ht,Ut,Yt=Array.prototype.map,It=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Wt(e){var t,n,r=void 0===e.grouping||void 0===e.thousands?jt:(t=Yt.call(e.grouping,Number),n=e.thousands+"",function(e,r){for(var o=e.length,i=[],a=0,u=t[0],c=0;o>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),i.push(e.substring(o-=u,o+u)),!((c+=u+1)>r));)u=t[a=(a+1)%t.length];return i.reverse().join(n)}),o=void 0===e.currency?"":e.currency[0]+"",i=void 0===e.currency?"":e.currency[1]+"",a=void 0===e.decimal?".":e.decimal+"",u=void 0===e.numerals?jt:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(Yt.call(e.numerals,String)),c=void 0===e.percent?"%":e.percent+"",s=void 0===e.minus?"-":e.minus+"",l=void 0===e.nan?"NaN":e.nan+"";function f(e){var t=(e=Pt(e)).fill,n=e.align,f=e.sign,h=e.symbol,d=e.zero,p=e.width,g=e.comma,y=e.precision,m=e.trim,v=e.type;"n"===v?(g=!0,v="g"):Rt[v]||(void 0===y&&(y=12),m=!0,v="g"),(d||"0"===t&&"="===n)&&(d=!0,t="0",n="=");var b="$"===h?o:"#"===h&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===h?i:/[%p]/.test(v)?c:"",w=Rt[v],_=/[defgprs%]/.test(v);function M(e){var o,i,c,h=b,M=x;if("c"===v)M=w(e)+M,e="";else{var E=(e=+e)<0||1/e<0;if(e=isNaN(e)?l:w(Math.abs(e),y),m&&(e=function(e){e:for(var t,n=e.length,r=1,o=-1;r0&&(o=0)}return o>0?e.slice(0,o)+e.slice(t+1):e}(e)),E&&0==+e&&"+"!==f&&(E=!1),h=(E?"("===f?f:s:"-"===f||"("===f?"":f)+h,M=("s"===v?It[8+Nt/3]:"")+M+(E&&"("===f?")":""),_)for(o=-1,i=e.length;++o(c=e.charCodeAt(o))||c>57){M=(46===c?a+e.slice(o+1):e.slice(o))+M,e=e.slice(0,o);break}}g&&!d&&(e=r(e,1/0));var T=h.length+e.length+M.length,A=T>1)+h+e+M+A.slice(T);break;default:e=A+h+e+M}return u(e)}return y=void 0===y?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return e+""},M}return{format:f,formatPrefix:function(e,t){var n=f(((e=Pt(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(Ct(t)/3))),o=Math.pow(10,-r),i=It[8+r/3];return function(e){return n(o*e)+i}}}}function Bt(e,t,n,r){var o,i=ye(e,t,n);switch((r=Pt(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(e),Math.abs(t));return null!=r.precision||isNaN(o=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ct(t)/3)))-Ct(Math.abs(e)))}(i,a))||(r.precision=o),Ut(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(o=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Ct(t)-Ct(e))+1}(i,Math.max(Math.abs(e),Math.abs(t))))||(r.precision=o-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(o=function(e){return Math.max(0,-Ct(Math.abs(e)))}(i))||(r.precision=o-2*("%"===r.type))}return Ht(r)}function zt(e){var t=e.domain;return e.ticks=function(e){var n=t();return function(e,t,n){var r,o,i,a,u=-1;if(n=+n,(e=+e)==(t=+t)&&n>0)return[e];if((r=t0)for(e=Math.ceil(e/a),t=Math.floor(t/a),i=new Array(o=Math.ceil(t-e+1));++u0?r=ge(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,n):r<0&&(r=ge(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,n)),r>0?(o[i]=Math.floor(u/r)*r,o[a]=Math.ceil(c/r)*r,t(o)):r<0&&(o[i]=Math.ceil(u*r)/r,o[a]=Math.floor(c*r)/r,t(o)),e},e}function qt(){var e=St(_t,_t);return e.copy=function(){return kt(e,qt())},be.apply(e,arguments),zt(e)}Ft=Wt({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Ht=Ft.format,Ut=Ft.formatPrefix;var Vt=new Date,Xt=new Date;function Zt(e,t,n,r){function o(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return o.floor=function(t){return e(t=new Date(+t)),t},o.ceil=function(n){return e(n=new Date(n-1)),t(n,1),e(n),n},o.round=function(e){var t=o(e),n=o.ceil(e);return e-t0))return u;do{u.push(a=new Date(+n)),t(n,i),e(n)}while(a=t)for(;e(t),!n(t);)t.setTime(t-1)}),(function(e,r){if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}))},n&&(o.count=function(t,r){return Vt.setTime(+t),Xt.setTime(+r),e(Vt),e(Xt),Math.floor(n(Vt,Xt))},o.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?o.filter(r?function(t){return r(t)%e==0}:function(t){return o.count(0,t)%e==0}):o:null}),o}var Gt=Zt((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e}));Gt.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?Zt((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,n){t.setTime(+t+n*e)}),(function(t,n){return(n-t)/e})):Gt:null};var Jt=Gt,Qt=Zt((function(e){e.setTime(e-e.getMilliseconds())}),(function(e,t){e.setTime(+e+1e3*t)}),(function(e,t){return(t-e)/1e3}),(function(e){return e.getUTCSeconds()})),Kt=Qt,en=Zt((function(e){e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds())}),(function(e,t){e.setTime(+e+6e4*t)}),(function(e,t){return(t-e)/6e4}),(function(e){return e.getMinutes()})),tn=en,nn=Zt((function(e){e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds()-6e4*e.getMinutes())}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getHours()})),rn=nn,on=Zt((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5}),(function(e){return e.getDate()-1})),an=on;function un(e){return Zt((function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/6048e5}))}var cn=un(0),sn=un(1);un(2),un(3);var ln=un(4);un(5),un(6);var fn=Zt((function(e){e.setDate(1),e.setHours(0,0,0,0)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()})),hn=fn,dn=Zt((function(e){e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()}));dn.every=function(e){return isFinite(e=Math.floor(e))&&e>0?Zt((function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n*e)})):null};var pn=dn,gn=Zt((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/864e5}),(function(e){return e.getUTCDate()-1})),yn=gn;function mn(e){return Zt((function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/6048e5}))}var vn=mn(0),bn=mn(1);mn(2),mn(3);var xn=mn(4);mn(5),mn(6);var wn=Zt((function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()}));wn.every=function(e){return isFinite(e=Math.floor(e))&&e>0?Zt((function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null};var _n=wn;function Mn(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function En(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Tn(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}var An,kn,Sn={"-":"",_:" ",0:"0"},On=/^\s*\d+/,Cn=/^%/,Nn=/[\\^$*+?|[\]().{}]/g;function Ln(e,t,n){var r=e<0?"-":"",o=(r?-e:e)+"",i=o.length;return r+(i68?1900:2e3),n+r[0].length):-1}function Wn(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Bn(e,t,n){var r=On.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function zn(e,t,n){var r=On.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function qn(e,t,n){var r=On.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Vn(e,t,n){var r=On.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function Xn(e,t,n){var r=On.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Zn(e,t,n){var r=On.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Gn(e,t,n){var r=On.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function Jn(e,t,n){var r=On.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function Qn(e,t,n){var r=On.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Kn(e,t,n){var r=Cn.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function er(e,t,n){var r=On.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function tr(e,t,n){var r=On.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function nr(e,t){return Ln(e.getDate(),t,2)}function rr(e,t){return Ln(e.getHours(),t,2)}function or(e,t){return Ln(e.getHours()%12||12,t,2)}function ir(e,t){return Ln(1+an.count(pn(e),e),t,3)}function ar(e,t){return Ln(e.getMilliseconds(),t,3)}function ur(e,t){return ar(e,t)+"000"}function cr(e,t){return Ln(e.getMonth()+1,t,2)}function sr(e,t){return Ln(e.getMinutes(),t,2)}function lr(e,t){return Ln(e.getSeconds(),t,2)}function fr(e){var t=e.getDay();return 0===t?7:t}function hr(e,t){return Ln(cn.count(pn(e)-1,e),t,2)}function dr(e){var t=e.getDay();return t>=4||0===t?ln(e):ln.ceil(e)}function pr(e,t){return e=dr(e),Ln(ln.count(pn(e),e)+(4===pn(e).getDay()),t,2)}function gr(e){return e.getDay()}function yr(e,t){return Ln(sn.count(pn(e)-1,e),t,2)}function mr(e,t){return Ln(e.getFullYear()%100,t,2)}function vr(e,t){return Ln((e=dr(e)).getFullYear()%100,t,2)}function br(e,t){return Ln(e.getFullYear()%1e4,t,4)}function xr(e,t){var n=e.getDay();return Ln((e=n>=4||0===n?ln(e):ln.ceil(e)).getFullYear()%1e4,t,4)}function wr(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Ln(t/60|0,"0",2)+Ln(t%60,"0",2)}function _r(e,t){return Ln(e.getUTCDate(),t,2)}function Mr(e,t){return Ln(e.getUTCHours(),t,2)}function Er(e,t){return Ln(e.getUTCHours()%12||12,t,2)}function Tr(e,t){return Ln(1+yn.count(_n(e),e),t,3)}function Ar(e,t){return Ln(e.getUTCMilliseconds(),t,3)}function kr(e,t){return Ar(e,t)+"000"}function Sr(e,t){return Ln(e.getUTCMonth()+1,t,2)}function Or(e,t){return Ln(e.getUTCMinutes(),t,2)}function Cr(e,t){return Ln(e.getUTCSeconds(),t,2)}function Nr(e){var t=e.getUTCDay();return 0===t?7:t}function Lr(e,t){return Ln(vn.count(_n(e)-1,e),t,2)}function Pr(e){var t=e.getUTCDay();return t>=4||0===t?xn(e):xn.ceil(e)}function Dr(e,t){return e=Pr(e),Ln(xn.count(_n(e),e)+(4===_n(e).getUTCDay()),t,2)}function $r(e){return e.getUTCDay()}function Rr(e,t){return Ln(bn.count(_n(e)-1,e),t,2)}function jr(e,t){return Ln(e.getUTCFullYear()%100,t,2)}function Fr(e,t){return Ln((e=Pr(e)).getUTCFullYear()%100,t,2)}function Hr(e,t){return Ln(e.getUTCFullYear()%1e4,t,4)}function Ur(e,t){var n=e.getUTCDay();return Ln((e=n>=4||0===n?xn(e):xn.ceil(e)).getUTCFullYear()%1e4,t,4)}function Yr(){return"+0000"}function Ir(){return"%"}function Wr(e){return+e}function Br(e){return Math.floor(+e/1e3)}!function(e){An=function(e){var t=e.dateTime,n=e.date,r=e.time,o=e.periods,i=e.days,a=e.shortDays,u=e.months,c=e.shortMonths,s=Dn(o),l=$n(o),f=Dn(i),h=$n(i),d=Dn(a),p=$n(a),g=Dn(u),y=$n(u),m=Dn(c),v=$n(c),b={a:function(e){return a[e.getDay()]},A:function(e){return i[e.getDay()]},b:function(e){return c[e.getMonth()]},B:function(e){return u[e.getMonth()]},c:null,d:nr,e:nr,f:ur,g:vr,G:xr,H:rr,I:or,j:ir,L:ar,m:cr,M:sr,p:function(e){return o[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Wr,s:Br,S:lr,u:fr,U:hr,V:pr,w:gr,W:yr,x:null,X:null,y:mr,Y:br,Z:wr,"%":Ir},x={a:function(e){return a[e.getUTCDay()]},A:function(e){return i[e.getUTCDay()]},b:function(e){return c[e.getUTCMonth()]},B:function(e){return u[e.getUTCMonth()]},c:null,d:_r,e:_r,f:kr,g:Fr,G:Ur,H:Mr,I:Er,j:Tr,L:Ar,m:Sr,M:Or,p:function(e){return o[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Wr,s:Br,S:Cr,u:Nr,U:Lr,V:Dr,w:$r,W:Rr,x:null,X:null,y:jr,Y:Hr,Z:Yr,"%":Ir},w={a:function(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(e,t,n){var r=m.exec(t.slice(n));return r?(e.m=v[r[0].toLowerCase()],n+r[0].length):-1},B:function(e,t,n){var r=g.exec(t.slice(n));return r?(e.m=y[r[0].toLowerCase()],n+r[0].length):-1},c:function(e,n,r){return E(e,t,n,r)},d:qn,e:qn,f:Qn,g:In,G:Yn,H:Xn,I:Xn,j:Vn,L:Jn,m:zn,M:Zn,p:function(e,t,n){var r=s.exec(t.slice(n));return r?(e.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:Bn,Q:er,s:tr,S:Gn,u:jn,U:Fn,V:Hn,w:Rn,W:Un,x:function(e,t,r){return E(e,n,t,r)},X:function(e,t,n){return E(e,r,t,n)},y:In,Y:Yn,Z:Wn,"%":Kn};function _(e,t){return function(n){var r,o,i,a=[],u=-1,c=0,s=e.length;for(n instanceof Date||(n=new Date(+n));++u53)return null;"w"in i||(i.w=1),"Z"in i?(o=(r=En(Tn(i.y,0,1))).getUTCDay(),r=o>4||0===o?bn.ceil(r):bn(r),r=yn.offset(r,7*(i.V-1)),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(o=(r=Mn(Tn(i.y,0,1))).getDay(),r=o>4||0===o?sn.ceil(r):sn(r),r=an.offset(r,7*(i.V-1)),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?En(Tn(i.y,0,1)).getUTCDay():Mn(Tn(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,En(i)):Mn(i)}}function E(e,t,n,r){for(var o,i,a=0,u=t.length,c=n.length;a=c)return-1;if(37===(o=t.charCodeAt(a++))){if(o=t.charAt(a++),!(i=w[o in Sn?t.charAt(a++):o])||(r=i(e,n,r))<0)return-1}else if(o!=n.charCodeAt(r++))return-1}return r}return b.x=_(n,b),b.X=_(r,b),b.c=_(t,b),x.x=_(n,x),x.X=_(r,x),x.c=_(t,x),{format:function(e){var t=_(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=M(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=_(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=M(e+="",!0);return t.toString=function(){return e},t}}}(e),kn=An.format}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",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"]});function zr(e){return new Date(e)}function qr(e){return e instanceof Date?+e:+new Date(+e)}function Vr(e,t,n,r,o,i,a,u,c){var s=St(_t,_t),l=s.invert,f=s.domain,h=c(".%L"),d=c(":%S"),p=c("%I:%M"),g=c("%I %p"),y=c("%a %d"),m=c("%b %d"),v=c("%B"),b=c("%Y"),x=[[a,1,1e3],[a,5,5e3],[a,15,15e3],[a,30,3e4],[i,1,6e4],[i,5,3e5],[i,15,9e5],[i,30,18e5],[o,1,36e5],[o,3,108e5],[o,6,216e5],[o,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[t,1,2592e6],[t,3,7776e6],[e,1,31536e6]];function w(u){return(a(u)0},e.prototype.connect_=function(){Zr&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Kr?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){Zr&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;Qr.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),to=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),po="undefined"!=typeof WeakMap?new WeakMap:new Xr,go=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=eo.getInstance(),r=new ho(t,n,this);po.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){go.prototype[e]=function(){var t;return(t=po.get(this))[e].apply(t,arguments)}}));var yo=void 0!==Gr.ResizeObserver?Gr.ResizeObserver:go;const mo=re.oneOfType([re.func,re.number]),vo=(e,t,n)=>"function"==typeof e?e(t,n):e,bo=re.shape({height:re.number,width:re.number,marginTop:re.number,marginRight:re.number,marginBottom:re.number,marginLeft:re.number}),xo=e=>{let t={marginTop:40,marginRight:30,marginBottom:40,marginLeft:75,...e};return{...t,boundedHeight:Math.max(t.height-t.marginTop-t.marginBottom,0),boundedWidth:Math.max(t.width-t.marginLeft-t.marginRight,0)}},wo=e=>{const o=t(),i=xo(e),[a,u]=n(0),[c,s]=n(0);r((()=>{if(i.width&&i.height)return;const e=o.current,t=new yo((e=>{if(!Array.isArray(e))return;if(!e.length)return;const t=e[0];a!==t.contentRect.width&&u(t.contentRect.width),c!==t.contentRect.height&&s(t.contentRect.height)}));return t.observe(e),()=>t.unobserve(e)}),[e,c,a,i]);const l=xo({...i,width:i.width||a,height:i.height||c});return[o,l]},_o=(e="")=>`${e}-${o().replace(/:/g,"")}`;!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}(".Chart{overflow:visible}.Chart text{fill:#95a5a6}.Line{transition:all .3s ease-out}.Line--type-line{fill:none;stroke:#9980fa;stroke-width:3px;stroke-linecap:round}.Line--type-area{fill:rgba(152,128,250,.185);stroke-width:0}.Axis__line{stroke:#bdc3c7}.Axis__label{text-anchor:middle;font-size:.9em;letter-spacing:.01em}.Axis__tick{font-size:.8em;transition:all .3s ease-out}.AxisHorizontal .Axis__tick{text-anchor:middle}.AxisVertical .Axis__tick{dominant-baseline:middle;text-anchor:end}.Circles__circle{fill:#9980fa;cursor:pointer;transition:opacity .15s ease-out,r .15s ease-out}.Bars__rect{fill:#9980fa}.Bars__rect,.PieChart__slice{cursor:pointer;transition:opacity .15s ease-out}.BarChart:has(.Bars__rect:hover) .Bars__rect:not(:hover),.Histogram:has(.Bars__rect:hover) .Bars__rect:not(:hover){opacity:.35}.ScatterPlot:has(.Circles__circle:hover) .Circles__circle:not(:hover){opacity:.35}.PieChart:has(.PieChart__slice:hover) .PieChart__slice:not(:hover){opacity:.35}.StackedBar__segment{cursor:pointer;transition:opacity .15s ease-out}.StackedBarChart:has(.StackedBar__segment:hover) .StackedBar__segment:not(:hover){opacity:.35}.Timeline__hover-line{stroke:#aaa;stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.Timeline__hover-dot{fill:#fff;stroke-width:2.5px;pointer-events:none}.domain,.tick line{stroke:#dadada}");const Mo=a(),Eo=({dimensions:t,children:n,label:r})=>e.createElement(Mo.Provider,{value:t},e.createElement("svg",{className:"Chart",width:t.width,height:t.height,role:"img","aria-label":r},e.createElement("g",{transform:`translate(${t.marginLeft}, ${t.marginTop})`},n)));function To(){return To=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement(e.Fragment,null,t.map(((t,f)=>e.createElement("rect",To({},l,{className:"Bars__rect",key:n(t,f),x:vo(r,t,f),y:vo(o,t,f),width:ve([vo(i,t,f),0]),height:ve([vo(a,t,f),0]),onMouseEnter:u?e=>u(t,f,e):void 0,onMouseLeave:c?e=>c(t,f,e):void 0,onMouseMove:s?e=>s(t,f,e):void 0})))));Ao.propTypes={data:re.array,keyAccessor:mo,xAccessor:mo,yAccessor:mo,widthAccessor:mo,heightAccessor:mo,onMouseEnter:re.func,onMouseLeave:re.func,onMouseMove:re.func},Ao.defaultProps={};const ko={x:function({dimensions:t,label:n,formatTick:r,scale:o,...i}){if(!o)return null;const a=t.boundedWidth<600?t.boundedWidth/100:t.boundedWidth/250,u="function"==typeof o.ticks?o.ticks(a):o.domain(),c="function"==typeof o.bandwidth?o.bandwidth()/2:0;return e.createElement("g",To({className:"Axis AxisHorizontal",transform:`translate(0, ${t.boundedHeight})`},i),e.createElement("line",{className:"Axis__line",x2:t.boundedWidth}),u.map(((t,n)=>e.createElement("text",{key:`${t}-${n}`,className:"Axis__tick",transform:`translate(${o(t)+c}, 25)`},r(t)))),n&&e.createElement("text",{className:"Axis__label",transform:`translate(${t.boundedWidth/2}, 60)`},n))},y:function({dimensions:t,label:n,formatTick:r,scale:o,...i}){if(!o)return null;const a=t.boundedHeight/70,u=o.ticks(a);return e.createElement("g",To({className:"Axis AxisVertical"},i),e.createElement("line",{className:"Axis__line",y2:t.boundedHeight}),u.map(((t,n)=>e.createElement("text",{key:`${t}-${n}`,className:"Axis__tick",transform:`translate(-16, ${o(t)})`},r(t)))),n&&e.createElement("text",{className:"Axis__label",style:{transform:`translate(-56px, ${t.boundedHeight/2}px) rotate(-90deg)`}},n))}},So=({dimension:t,...n})=>{const r=i(Mo),o=ko[t];return o?e.createElement(o,To({dimensions:r},n)):null};So.propTypes={dimension:re.oneOf(["x","y"]),scale:re.func,label:re.string,formatTick:re.func},So.defaultProps={dimension:"x",scale:null,formatTick:Ht(",")};const Oo=({items:t,position:n})=>{const r="left"===n||"right"===n;return e.createElement("div",{className:"Legend",style:{display:"flex",flexDirection:r?"column":"row",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:"6px 14px",padding:r?"0 10px":"6px 8px",fontSize:"12px",color:"#555",flexShrink:0}},t.map(((t,n)=>e.createElement("div",{key:n,className:"Legend__item",style:{display:"flex",alignItems:"center",gap:5}},e.createElement("span",{className:"Legend__swatch",style:{display:"inline-block",width:10,height:10,borderRadius:2,background:t.color,flexShrink:0}}),e.createElement("span",{className:"Legend__label"},t.label)))))};Oo.propTypes={items:re.arrayOf(re.shape({color:re.string.isRequired,label:re.string.isRequired})),position:re.oneOf(["top","bottom","left","right"])},Oo.defaultProps={items:[],position:"bottom"};const Co={width:"100%",height:"100%",display:"flex",flexDirection:"column",position:"relative"},No={width:"100%",height:"100%",display:"flex",flexDirection:"row",position:"relative"},Lo=({wrapperRef:t,legendItems:n,showLegend:r,legendPosition:o,tooltip:i,children:a})=>{const u=o||"bottom",c="left"===u||"right"===u,s="top"===u||"left"===u,l=r&&n&&n.length>0?e.createElement(Oo,{items:n,position:u}):null;return e.createElement("div",{ref:t,style:c?No:Co},s&&l,a,!s&&l,i)};Lo.propTypes={wrapperRef:re.object,legendItems:re.arrayOf(re.shape({color:re.string.isRequired,label:re.string.isRequired})),showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"]),tooltip:re.node,children:re.node};const Po=({visible:t,x:n,y:r,children:o})=>t?e.createElement("div",{className:"Tooltip",style:{position:"absolute",left:n,top:r,transform:"translate(-50%, calc(-100% - 10px))",pointerEvents:"none",background:"#fff",border:"1px solid #e0e0e0",borderRadius:6,padding:"7px 12px",fontSize:12,lineHeight:1.6,boxShadow:"0 4px 12px rgba(0,0,0,0.10)",zIndex:10,whiteSpace:"nowrap",color:"#444"}},o):null;function Do(){const e=t(),[r,o]=n({visible:!1,x:0,y:0}),i=u(((t,n)=>{const{left:r,top:i}=e.current.getBoundingClientRect();o({visible:!0,x:t.clientX-r,y:t.clientY-i,...n})}),[]),a=u((t=>{const{left:n,top:r}=e.current.getBoundingClientRect();o((e=>({...e,x:t.clientX-n,y:t.clientY-r})))}),[]),c=u((()=>{o((e=>({...e,visible:!1})))}),[]);return{wrapperRef:e,tooltip:r,showTooltip:i,moveTooltip:a,hideTooltip:c}}Po.propTypes={visible:re.bool,x:re.number,y:re.number,children:re.node};const $o=Ht(","),Ro=({data:t,xAccessor:n,yAccessor:r,xLabel:o,yLabel:i,color:a,barPadding:s,formatYTick:l,yMin:f,showLegend:h,legendPosition:d})=>{const[p,g]=wo({marginBottom:77}),{wrapperRef:y,tooltip:m,showTooltip:v,moveTooltip:b,hideTooltip:x}=Do(),w=c((()=>Oe().domain(t?t.map(n):[]).range([0,g.boundedWidth]).padding(s??.2)),[t,n,g.boundedWidth,s]),_=c((()=>qt().domain([f??0,ve(t,r)||0]).range([g.boundedHeight,0]).nice()),[t,r,g.boundedHeight,f]),M=c((()=>i?[{color:a||"#9980FA",label:i}]:[]),[i,a]),E=c((()=>a?{fill:a}:void 0),[a]),T=u(((e,t,n)=>v(n,{d:e})),[v]),A=u(((e,t,n)=>b(n)),[b]);if(!t||0===t.length)return null;return e.createElement(Lo,{wrapperRef:y,legendItems:M,showLegend:h,legendPosition:d,tooltip:e.createElement(Po,{visible:m.visible,x:m.x,y:m.y},m.d&&e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement("strong",null,o||"Category"),": ",n(m.d)),e.createElement("div",null,e.createElement("strong",null,i||"Value"),": ",$o(r(m.d)))))},e.createElement("div",{className:"BarChart",ref:p,style:{flex:1,minHeight:0,minWidth:0}},e.createElement(Eo,{dimensions:g,label:[o,i].filter(Boolean).join(" / ")},e.createElement(So,{dimension:"x",scale:w,formatTick:e=>e,label:o}),e.createElement(So,{dimension:"y",scale:_,formatTick:l,label:i}),e.createElement(Ao,{data:t,keyAccessor:(e,t)=>t,xAccessor:e=>w(n(e)),yAccessor:e=>_(r(e)),widthAccessor:()=>w.bandwidth(),heightAccessor:e=>g.boundedHeight-_(r(e)),style:E,onMouseEnter:T,onMouseMove:A,onMouseLeave:x}))))};Ro.propTypes={data:re.array,xAccessor:mo,yAccessor:mo,xLabel:re.string,yLabel:re.string,color:re.string,barPadding:re.number,formatYTick:re.func,yMin:re.number,showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"])},Ro.defaultProps={xAccessor:e=>e.x,yAccessor:e=>e.y};const jo=({id:t,colors:n,...r})=>e.createElement("linearGradient",To({id:t,gradientUnits:"userSpaceOnUse",spreadMethod:"pad"},r),n.map(((t,r)=>e.createElement("stop",{key:`${t}-${r}`,offset:100*r/(n.length-1)+"%",stopColor:t}))));jo.propTypes={id:re.string,colors:re.arrayOf(re.string)},jo.defaultProps={id:"Gradient",colors:[]};const Fo=["#9980FA","rgb(226, 222, 243)"],Ho=Ht(","),Uo=Ht(",.2~f"),Yo=({data:t,xAccessor:n,xLabel:r,yLabel:o,color:i,gradientColors:a,thresholds:s,formatXTick:l,formatYTick:f,showLegend:h,legendPosition:d})=>{const p=_o("Histogram-gradient"),[g,y]=wo({marginBottom:77}),{wrapperRef:m,tooltip:v,showTooltip:b,moveTooltip:x,hideTooltip:w}=Do(),_=s||9,M=c((()=>qt().domain(ue(t,n)).range([0,y.boundedWidth]).nice(_)),[t,n,y.boundedWidth,_]),E=c((()=>function(){var e=le,t=ue,n=me;function r(r){var o,i,a=r.length,u=new Array(a);for(o=0;ol;)f.pop(),--h;var d,p=new Array(h+1);for(o=0;o<=h;++o)(d=p[o]=[]).x0=o>0?f[o-1]:s,d.x1=oqt().domain([0,ve(E,(e=>e.length))||0]).range([y.boundedHeight,0]).nice()),[E,y.boundedHeight]),A=c((()=>r?[{color:i||"#9980FA",label:r}]:[]),[r,i]),k=a||Fo,S=c((()=>i?{fill:i}:{fill:`url(#${p})`}),[i,p]),O=l||Uo,C=u(((e,t,n)=>b(n,{d:e})),[b]),N=u(((e,t,n)=>x(n)),[x]);if(!t||0===t.length)return null;return e.createElement(Lo,{wrapperRef:m,legendItems:A,showLegend:h,legendPosition:d,tooltip:e.createElement(Po,{visible:v.visible,x:v.x,y:v.y},v.d&&e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement("strong",null,r||"Range"),": ",O(v.d.x0)," – ",O(v.d.x1)),e.createElement("div",null,e.createElement("strong",null,"Count"),": ",Ho(v.d.length))))},e.createElement("div",{className:"Histogram",ref:g,style:{flex:1,minHeight:0,minWidth:0}},e.createElement(Eo,{dimensions:y,label:[r,o].filter(Boolean).join(" / ")},e.createElement("defs",null,e.createElement(jo,{id:p,colors:k,x2:"0",y2:"100%"})),e.createElement(So,{dimension:"x",scale:M,formatTick:l,label:r}),e.createElement(So,{dimension:"y",scale:T,formatTick:f,label:o||"Count"}),e.createElement(Ao,{data:E,keyAccessor:(e,t)=>t,xAccessor:e=>M(e.x0)+2,yAccessor:e=>T(e.length),widthAccessor:e=>M(e.x1)-M(e.x0)-2,heightAccessor:e=>y.boundedHeight-T(e.length),style:S,onMouseEnter:C,onMouseMove:N,onMouseLeave:w}))))};Yo.propTypes={data:re.array,xAccessor:mo,xLabel:re.string,yLabel:re.string,color:re.string,gradientColors:re.arrayOf(re.string),thresholds:re.number,formatXTick:re.func,formatYTick:re.func,showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"])},Yo.defaultProps={xAccessor:e=>e.x};var Io=Math.PI,Wo=2*Io,Bo=Wo-1e-6;function zo(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function qo(){return new zo}function Vo(e){return function(){return e}}zo.prototype=qo.prototype={constructor:zo,moveTo:function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},quadraticCurveTo:function(e,t,n,r){this._+="Q"+ +e+","+ +t+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(e,t,n,r,o,i){this._+="C"+ +e+","+ +t+","+ +n+","+ +r+","+(this._x1=+o)+","+(this._y1=+i)},arcTo:function(e,t,n,r,o){e=+e,t=+t,n=+n,r=+r,o=+o;var i=this._x1,a=this._y1,u=n-e,c=r-t,s=i-e,l=a-t,f=s*s+l*l;if(o<0)throw new Error("negative radius: "+o);if(null===this._x1)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(f>1e-6)if(Math.abs(l*u-c*s)>1e-6&&o){var h=n-i,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),m=Math.sqrt(f),v=o*Math.tan((Io-Math.acos((p+f-g)/(2*y*m)))/2),b=v/m,x=v/y;Math.abs(b-1)>1e-6&&(this._+="L"+(e+b*s)+","+(t+b*l)),this._+="A"+o+","+o+",0,0,"+ +(l*h>s*d)+","+(this._x1=e+x*u)+","+(this._y1=t+x*c)}else this._+="L"+(this._x1=e)+","+(this._y1=t);else;},arc:function(e,t,n,r,o,i){e=+e,t=+t,i=!!i;var a=(n=+n)*Math.cos(r),u=n*Math.sin(r),c=e+a,s=t+u,l=1^i,f=i?r-o:o-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+s:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-s)>1e-6)&&(this._+="L"+c+","+s),n&&(f<0&&(f=f%Wo+Wo),f>Bo?this._+="A"+n+","+n+",0,1,"+l+","+(e-a)+","+(t-u)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=s):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Io)+","+l+","+(this._x1=e+n*Math.cos(o))+","+(this._y1=t+n*Math.sin(o))))},rect:function(e,t,n,r){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Xo=Math.abs,Zo=Math.atan2,Go=Math.cos,Jo=Math.max,Qo=Math.min,Ko=Math.sin,ei=Math.sqrt,ti=Math.PI,ni=ti/2,ri=2*ti;function oi(e){return e>1?0:e<-1?ti:Math.acos(e)}function ii(e){return e>=1?ni:e<=-1?-ni:Math.asin(e)}function ai(e){return e.innerRadius}function ui(e){return e.outerRadius}function ci(e){return e.startAngle}function si(e){return e.endAngle}function li(e){return e&&e.padAngle}function fi(e,t,n,r,o,i,a,u){var c=n-e,s=r-t,l=a-o,f=u-i,h=f*c-l*s;if(!(h*h<1e-12))return[e+(h=(l*(t-i)-f*(e-o))/h)*c,t+h*s]}function hi(e,t,n,r,o,i,a){var u=e-n,c=t-r,s=(a?i:-i)/ei(u*u+c*c),l=s*c,f=-s*u,h=e+l,d=t+f,p=n+l,g=r+f,y=(h+p)/2,m=(d+g)/2,v=p-h,b=g-d,x=v*v+b*b,w=o-i,_=h*g-p*d,M=(b<0?-1:1)*ei(Jo(0,w*w*x-_*_)),E=(_*b-v*M)/x,T=(-_*v-b*M)/x,A=(_*b+v*M)/x,k=(-_*v+b*M)/x,S=E-y,O=T-m,C=A-y,N=k-m;return S*S+O*O>C*C+N*N&&(E=A,T=k),{cx:E,cy:T,x01:-l,y01:-f,x11:E*(o/w-1),y11:T*(o/w-1)}}function di(){var e=ai,t=ui,n=Vo(0),r=null,o=ci,i=si,a=li,u=null;function c(){var c,s,l=+e.apply(this,arguments),f=+t.apply(this,arguments),h=o.apply(this,arguments)-ni,d=i.apply(this,arguments)-ni,p=Xo(d-h),g=d>h;if(u||(u=c=qo()),f1e-12)if(p>ri-1e-12)u.moveTo(f*Go(h),f*Ko(h)),u.arc(0,0,f,h,d,!g),l>1e-12&&(u.moveTo(l*Go(d),l*Ko(d)),u.arc(0,0,l,d,h,g));else{var y,m,v=h,b=d,x=h,w=d,_=p,M=p,E=a.apply(this,arguments)/2,T=E>1e-12&&(r?+r.apply(this,arguments):ei(l*l+f*f)),A=Qo(Xo(f-l)/2,+n.apply(this,arguments)),k=A,S=A;if(T>1e-12){var O=ii(T/l*Ko(E)),C=ii(T/f*Ko(E));(_-=2*O)>1e-12?(x+=O*=g?1:-1,w-=O):(_=0,x=w=(h+d)/2),(M-=2*C)>1e-12?(v+=C*=g?1:-1,b-=C):(M=0,v=b=(h+d)/2)}var N=f*Go(v),L=f*Ko(v),P=l*Go(w),D=l*Ko(w);if(A>1e-12){var $,R=f*Go(b),j=f*Ko(b),F=l*Go(x),H=l*Ko(x);if(p1e-12?S>1e-12?(y=hi(F,H,N,L,f,S,g),m=hi(R,j,P,D,f,S,g),u.moveTo(y.cx+y.x01,y.cy+y.y01),S1e-12&&_>1e-12?k>1e-12?(y=hi(P,D,R,j,l,-k,g),m=hi(N,L,F,H,l,-k,g),u.lineTo(y.cx+y.x01,y.cy+y.y01),ke?1:t>=e?0:NaN}function xi(e){return e}pi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var wi=Array.prototype.slice;function _i(e){return e<0?-1:1}function Mi(e,t,n){var r=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(r||o<0&&-0),a=(n-e._y1)/(o||r<0&&-0),u=(i*o+a*r)/(r+o);return(_i(i)+_i(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(u))||0}function Ei(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function Ti(e,t,n){var r=e._x0,o=e._y0,i=e._x1,a=e._y1,u=(i-r)/3;e._context.bezierCurveTo(r+u,o+u*t,i-u,a-u*n,i,a)}function Ai(e){this._context=e}function ki(e,t){if((o=e.length)>1)for(var n,r,o,i=1,a=e[t[0]],u=a.length;i=0;)n[t]=t;return n}function Oi(e,t){return e[t]}Ai.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Ti(this,this._t0,Ei(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Ti(this,Ei(this,n=Mi(this,e,t)),n);break;default:Ti(this,this._t0,n=Mi(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}},Object.create(Ai.prototype).point=function(e,t){Ai.prototype.point.call(this,t,e)};var Ci=function(e){for(var t=e.length/6|0,n=new Array(t),r=0;r{const[h,d]=wo(Ni),{wrapperRef:p,tooltip:g,showTooltip:y,moveTooltip:m,hideTooltip:v}=Do(),b=c((()=>Se(Array.isArray(o)?o:Ci)),[o]),x=Math.min(d.boundedWidth,d.boundedHeight)/2,w=d.boundedWidth/2,_=d.boundedHeight/2,M="number"==typeof i?x*Math.min(Math.max(i,0),.95):0,E=c((()=>di().innerRadius(M).outerRadius(x)),[M,x]),T=c((()=>{const e=M>0?(M+x)/2:.65*x;return di().innerRadius(e).outerRadius(e)}),[M,x]),A=c((()=>t?function(){var e=xi,t=bi,n=null,r=Vo(0),o=Vo(ri),i=Vo(0);function a(a){var u,c,s,l,f,h=a.length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),m=Math.min(ri,Math.max(-ri,o.apply(this,arguments)-y)),v=Math.min(Math.abs(m)/h,i.apply(this,arguments)),b=v*(m<0?-1:1);for(u=0;u0&&(d+=f);for(null!=t?p.sort((function(e,n){return t(g[e],g[n])})):null!=n&&p.sort((function(e,t){return n(a[e],a[t])})),u=0,s=d?(m-h*b)/d:0;u0?f*s:0)+b,g[c]={data:a[c],index:u,value:f,startAngle:y,endAngle:l,padAngle:v};return g}return a.value=function(t){return arguments.length?(e="function"==typeof t?t:Vo(+t),a):e},a.sortValues=function(e){return arguments.length?(t=e,n=null,a):t},a.sort=function(e){return arguments.length?(n=e,t=null,a):n},a.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:Vo(+e),a):r},a.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:Vo(+e),a):o},a.padAngle=function(e){return arguments.length?(i="function"==typeof e?e:Vo(+e),a):i},a}().value(n).padAngle(a??.02).sort(null)(t):[]),[t,n,a]),k=c((()=>t?function(e,t){var n,r=e.length,o=-1,i=0;if(null==t)for(;++o"function"==typeof r?(t||[]).map(((e,t)=>{const n=r(e);return{color:b(void 0!==n?n:String(t)),label:String(n)}})):[]),[t,r,b]),O=u(((e,t,n)=>y(n,{datum:e,label:t})),[y]),C=u(((e,t,n)=>m(n)),[m]);if(!t||0===t.length)return null;const N=!1!==s&&"function"==typeof r,L=g.datum?n(g.datum):0,P=k>0?Math.round(L/k*100):0;return e.createElement(Lo,{wrapperRef:p,legendItems:S,showLegend:l,legendPosition:f,tooltip:e.createElement(Po,{visible:g.visible,x:g.x,y:g.y},g.datum&&e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement("strong",null,g.label)),e.createElement("div",null,Li(L)," (",P,"%)")))},e.createElement("div",{className:"PieChart",ref:h,style:{flex:1,minHeight:0,minWidth:0}},e.createElement(Eo,{dimensions:d,label:"Pie chart"},e.createElement("g",{transform:`translate(${w}, ${_})`},A.map(((n,o)=>{const i=r?r(t[o]):String(o);return e.createElement("g",{key:o,className:"PieChart__slice-group"},e.createElement("path",{className:"PieChart__slice",d:E(n),style:{fill:b(i)},onMouseEnter:e=>O(t[o],i,e),onMouseMove:e=>C(t[o],i,e),onMouseLeave:v}),N&&n.endAngle-n.startAngle>=.35&&e.createElement("text",{className:"PieChart__label",transform:`translate(${T.centroid(n)})`,style:{textAnchor:"middle",dominantBaseline:"middle",pointerEvents:"none"}},i))}))))))};Pi.propTypes={data:re.array,valueAccessor:mo,labelAccessor:mo,colors:re.arrayOf(re.string),innerRadius:re.number,padAngle:re.number,showLabels:re.bool,showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"])},Pi.defaultProps={valueAccessor:e=>e.value,labelAccessor:e=>e.label};const Di=({data:t,keyAccessor:n,xAccessor:r,yAccessor:o,radius:i,color:a,onMouseEnter:u,onMouseLeave:c,onMouseMove:s,...l})=>e.createElement(e.Fragment,null,t.map(((t,f)=>e.createElement("circle",To({},l,{className:"Circles__circle",key:n(t,f),cx:r(t,f),cy:o(t,f),r:"function"==typeof i?i(t):i,style:a?{fill:a}:void 0,onMouseEnter:u?e=>u(t,f,e):void 0,onMouseLeave:c?e=>c(t,f,e):void 0,onMouseMove:s?e=>s(t,f,e):void 0})))));Di.propTypes={data:re.array,keyAccessor:mo,xAccessor:mo,yAccessor:mo,radius:mo,color:re.string,onMouseEnter:re.func,onMouseLeave:re.func,onMouseMove:re.func},Di.defaultProps={radius:5};const $i=Ht(","),Ri=({data:t,xAccessor:n,yAccessor:r,xLabel:o,yLabel:i,color:a,radius:s,formatXTick:l,formatYTick:f,showLegend:h,legendPosition:d})=>{const[p,g]=wo({marginBottom:77}),{wrapperRef:y,tooltip:m,showTooltip:v,moveTooltip:b,hideTooltip:x}=Do(),w=c((()=>{const e=ue(t,n),r=e[0]===e[1]?[e[0]-1,e[0]+1]:e;return qt().domain(r).range([0,g.boundedWidth]).nice()}),[t,n,g.boundedWidth]),_=c((()=>{const e=ue(t,r),n=e[0]===e[1]?[e[0]-1,e[0]+1]:e;return qt().domain(n).range([g.boundedHeight,0]).nice()}),[t,r,g.boundedHeight]),M=c((()=>i?[{color:a||"#9980FA",label:i}]:[]),[i,a]),E=u(((e,t,n)=>v(n,{d:e})),[v]),T=u(((e,t,n)=>b(n)),[b]);if(!t||0===t.length)return null;return e.createElement(Lo,{wrapperRef:y,legendItems:M,showLegend:h,legendPosition:d,tooltip:e.createElement(Po,{visible:m.visible,x:m.x,y:m.y},m.d&&e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement("strong",null,o||"X"),": ",$i(n(m.d))),e.createElement("div",null,e.createElement("strong",null,i||"Y"),": ",$i(r(m.d)))))},e.createElement("div",{className:"ScatterPlot",ref:p,style:{flex:1,minHeight:0,minWidth:0}},e.createElement(Eo,{dimensions:g,label:[o,i].filter(Boolean).join(" / ")},e.createElement(So,{dimension:"x",scale:w,formatTick:l,label:o}),e.createElement(So,{dimension:"y",scale:_,formatTick:f,label:i}),e.createElement(Di,{data:t,keyAccessor:(e,t)=>t,xAccessor:e=>w(n(e)),yAccessor:e=>_(r(e)),radius:s,color:a,onMouseEnter:E,onMouseMove:T,onMouseLeave:x}))))};Ri.propTypes={data:re.array,xAccessor:mo,yAccessor:mo,xLabel:re.string,yLabel:re.string,color:re.string,radius:re.oneOfType([re.number,re.func]),formatXTick:re.func,formatYTick:re.func,showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"])},Ri.defaultProps={xAccessor:e=>e.x,yAccessor:e=>e.y};const ji=Ht(","),Fi=({data:t,xAccessor:n,keys:r,colors:o,xLabel:i,yLabel:a,barPadding:s,formatYTick:l,showLegend:f,legendPosition:h})=>{const[d,p]=wo({marginBottom:77}),{wrapperRef:g,tooltip:y,showTooltip:m,moveTooltip:v,hideTooltip:b}=Do(),x=c((()=>Se(Array.isArray(o)?o:Ci).domain(r)),[o,r]),w=c((()=>t&&r&&r.length?function(){var e=Vo([]),t=Si,n=ki,r=Oi;function o(o){var i,a,u=e.apply(this,arguments),c=o.length,s=u.length,l=new Array(s);for(i=0;iOe().domain(t?t.map(n):[]).range([0,p.boundedWidth]).padding(s??.2)),[t,n,p.boundedWidth,s]),M=c((()=>qt().domain([0,ve(w,(e=>ve(e,(e=>e[1]))))||0]).range([p.boundedHeight,0]).nice()),[w,p.boundedHeight]),E=c((()=>r.map((e=>({color:x(e),label:e})))),[r,x]),T=u(((e,t,o)=>{const i=r.reduce(((e,n)=>e+(t.data[n]||0)),0);m(o,{key:e,value:t[1]-t[0],category:n(t.data),total:i})}),[m,r,n]),A=u(((e,t,n)=>v(n)),[v]);return t&&0!==t.length&&r&&0!==r.length?e.createElement(Lo,{wrapperRef:g,legendItems:E,showLegend:f,legendPosition:h,tooltip:e.createElement(Po,{visible:y.visible,x:y.x,y:y.y},y.key&&e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement("strong",null,y.category)),e.createElement("div",null,y.key,": ",ji(y.value)),e.createElement("div",{style:{color:"#888",fontSize:11}},"Total: ",ji(y.total))))},e.createElement("div",{className:"StackedBarChart",ref:d,style:{flex:1,minHeight:0,minWidth:0}},e.createElement(Eo,{dimensions:p,label:[i,a].filter(Boolean).join(" / ")},e.createElement(So,{dimension:"x",scale:_,formatTick:e=>e,label:i}),e.createElement(So,{dimension:"y",scale:M,formatTick:l,label:a}),w.map((t=>e.createElement("g",{key:t.key,className:"StackedBar__series"},t.map(((r,o)=>e.createElement("rect",{key:`${t.key}-${o}`,className:"StackedBar__segment",x:_(n(r.data)),y:M(r[1]),width:_.bandwidth(),height:Math.max(0,M(r[0])-M(r[1])),style:{fill:x(t.key)},onMouseEnter:e=>T(t.key,r,e),onMouseMove:e=>A(t.key,r,e),onMouseLeave:b}))))))))):null};Fi.propTypes={data:re.array,xAccessor:mo,keys:re.arrayOf(re.string).isRequired,colors:re.arrayOf(re.string),xLabel:re.string,yLabel:re.string,barPadding:re.number,formatYTick:re.func,showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"])},Fi.defaultProps={xAccessor:e=>e.x,showLegend:!0};const Hi={line:vi,area:function(){var e=yi,t=null,n=Vo(0),r=mi,o=Vo(!0),i=null,a=gi,u=null;function c(c){var s,l,f,h,d,p=c.length,g=!1,y=new Array(p),m=new Array(p);for(null==i&&(u=a(d=qo())),s=0;s<=p;++s){if(!(s=l;--f)u.point(y[f],m[f]);u.lineEnd(),u.areaEnd()}g&&(y[s]=+e(h,s,c),m[s]=+n(h,s,c),u.point(t?+t(h,s,c):y[s],r?+r(h,s,c):m[s]))}if(d)return u=null,d+""||null}function s(){return vi().defined(o).curve(a).context(i)}return c.x=function(n){return arguments.length?(e="function"==typeof n?n:Vo(+n),t=null,c):e},c.x0=function(t){return arguments.length?(e="function"==typeof t?t:Vo(+t),c):e},c.x1=function(e){return arguments.length?(t=null==e?null:"function"==typeof e?e:Vo(+e),c):t},c.y=function(e){return arguments.length?(n="function"==typeof e?e:Vo(+e),r=null,c):n},c.y0=function(e){return arguments.length?(n="function"==typeof e?e:Vo(+e),c):n},c.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:Vo(+e),c):r},c.lineX0=c.lineY0=function(){return s().x(e).y(n)},c.lineY1=function(){return s().x(e).y(r)},c.lineX1=function(){return s().x(t).y(n)},c.defined=function(e){return arguments.length?(o="function"==typeof e?e:Vo(!!e),c):o},c.curve=function(e){return arguments.length?(a=e,null!=i&&(u=a(i)),c):a},c.context=function(e){return arguments.length?(null==e?i=u=null:u=a(i=e),c):i},c}},Ui=({type:t,data:n,xAccessor:r,yAccessor:o,y0Accessor:i,interpolation:a,...u})=>{const c=Hi[t]().x(r).y(o).curve(a);return"area"===t&&c.y0(i).y1(o),e.createElement("path",To({},u,{className:`Line Line--type-${t}`,d:c(n)}))};Ui.propTypes={type:re.oneOf(["line","area"]),data:re.array,xAccessor:mo,yAccessor:mo,y0Accessor:mo,interpolation:re.func},Ui.defaultProps={type:"line",y0Accessor:0,interpolation:function(e){return new Ai(e)}};const Yi=kn("%-b %-d"),Ii=kn("%-b %-d, %Y"),Wi=["rgb(226, 222, 243)","#f8f9fa"],Bi=Ht(","),zi=({data:t,xAccessor:r,yAccessor:o,xLabel:i,yLabel:a,color:s,gradientColors:l,interpolation:f,showArea:h,showDots:d,formatXTick:p,formatYTick:g,showLegend:y,legendPosition:m})=>{const[v,b]=wo({marginBottom:77}),x=_o("Timeline-gradient"),{wrapperRef:w,tooltip:_,showTooltip:M,hideTooltip:E}=Do(),[T,A]=n(null),k=l||(s?[`${s}55`,"rgba(255,255,255,0)"]:Wi),S=c((()=>function(){return be.apply(Vr(pn,hn,cn,an,rn,tn,Kt,Jt,kn).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}().domain(ue(t,r)).range([0,b.boundedWidth])),[t,r,b.boundedWidth]),O=c((()=>qt().domain(ue(t,o)).range([b.boundedHeight,0]).nice()),[t,o,b.boundedHeight]),C=c((()=>a?[{color:s||"#9980FA",label:a}]:[]),[a,s]),N=c((()=>ie(r).left),[r]),L=u((e=>{const n=e.currentTarget.ownerSVGElement,{left:o}=n.getBoundingClientRect(),i=e.clientX-o-b.marginLeft,a=S.invert(i),u=N(t,a,1),c=t[u-1],s=t[u],l=!s||c&&a-r(c){A(null),E()}),[E]);if(!t||0===t.length)return null;const D=e=>S(r(e)),$=e=>O(o(e)),R=O(O.domain()[0]),j=null!==T?t[T]:null,F=g||Bi,H=p||Ii;return e.createElement(Lo,{wrapperRef:w,legendItems:C,showLegend:y,legendPosition:m,tooltip:e.createElement(Po,{visible:_.visible,x:_.x,y:_.y},_.datum&&e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement("strong",null,H(r(_.datum)))),e.createElement("div",null,a||"Value",": ",F(o(_.datum)))))},e.createElement("div",{className:"Timeline",ref:v,style:{flex:1,minHeight:0,minWidth:0}},e.createElement(Eo,{dimensions:b,label:a||i},e.createElement("defs",null,e.createElement(jo,{id:x,colors:k,x2:"0",y2:"100%"})),e.createElement(So,{dimension:"x",scale:S,formatTick:p||Yi,label:i}),e.createElement(So,{dimension:"y",scale:O,formatTick:g,label:a}),!1!==h&&e.createElement(Ui,{type:"area",data:t,xAccessor:D,yAccessor:$,y0Accessor:R,style:{fill:`url(#${x})`},interpolation:f}),e.createElement(Ui,{data:t,xAccessor:D,yAccessor:$,style:s?{stroke:s}:void 0,interpolation:f}),d&&e.createElement(Di,{data:t,keyAccessor:(e,t)=>t,xAccessor:D,yAccessor:$,color:s}),j&&e.createElement(e.Fragment,null,e.createElement("line",{className:"Timeline__hover-line",x1:D(j),x2:D(j),y1:0,y2:b.boundedHeight}),e.createElement("circle",{className:"Timeline__hover-dot",cx:D(j),cy:$(j),r:5,style:{stroke:s||"#9980FA"}})),e.createElement("rect",{x:0,y:0,width:b.boundedWidth,height:b.boundedHeight,fill:"none",style:{pointerEvents:"all"},onMouseMove:L,onMouseLeave:P}))))};zi.propTypes={data:re.array,xAccessor:mo,yAccessor:mo,xLabel:re.string,yLabel:re.string,color:re.string,gradientColors:re.arrayOf(re.string),interpolation:re.func,showArea:re.bool,showDots:re.bool,formatXTick:re.func,formatYTick:re.func,showLegend:re.bool,legendPosition:re.oneOf(["top","bottom","left","right"])},zi.defaultProps={xAccessor:e=>e.x,yAccessor:e=>e.y,showArea:!0,showDots:!1};export{Ro as BarChart,Yo as Histogram,Pi as PieChart,Ri as ScatterPlot,Fi as StackedBarChart,zi as Timeline}; //# sourceMappingURL=index.es.js.map diff --git a/dist/index.es.js.map b/dist/index.es.js.map index 5e42993..1d368cf 100644 --- a/dist/index.es.js.map +++ b/dist/index.es.js.map @@ -1 +1 @@ -{"version":3,"file":"index.es.js","sources":["../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/histogram.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-axis/src/array.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/touch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/active.js","../node_modules/d3-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/constant.js","../node_modules/d3-path/src/path.js","../node_modules/d3-chord/src/ribbon.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/nest.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-contour/src/ascending.js","../node_modules/d3-contour/src/constant.js","../node_modules/d3-contour/src/contains.js","../node_modules/d3-contour/src/noop.js","../node_modules/d3-contour/src/contours.js","../node_modules/d3-contour/src/area.js","../node_modules/d3-contour/src/blur.js","../node_modules/d3-contour/src/density.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../node_modules/d3-fetch/src/blob.js","../node_modules/d3-fetch/src/buffer.js","../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/dsv.js","../node_modules/d3-fetch/src/json.js","../node_modules/d3-fetch/src/xml.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-geo/src/adder.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/centroid.js","../node_modules/d3-geo/src/constant.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/d3-geo/src/graticule.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/conicConformal.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/d3-geo/src/projection/conicEquidistant.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/gnomonic.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-geo/src/projection/stereographic.js","../node_modules/d3-geo/src/projection/transverseMercator.js","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-polygon/src/cross.js","../node_modules/d3-polygon/src/hull.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/array.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/link/index.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-voronoi/src/constant.js","../node_modules/d3-voronoi/src/point.js","../node_modules/d3-voronoi/src/RedBlackTree.js","../node_modules/d3-voronoi/src/Edge.js","../node_modules/d3-voronoi/src/Cell.js","../node_modules/d3-voronoi/src/Circle.js","../node_modules/d3-voronoi/src/Beach.js","../node_modules/d3-voronoi/src/Diagram.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/d3/dist/package.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-collection/src/keys.js","../node_modules/d3-collection/src/values.js","../node_modules/d3-collection/src/entries.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-fetch/src/image.js","../node_modules/d3-force/src/center.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/interpolate.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/identity.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-interpolate/src/discrete.js","../node_modules/d3-interpolate/src/hue.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-interpolate/src/quantize.js","../node_modules/d3-polygon/src/area.js","../node_modules/d3-polygon/src/centroid.js","../node_modules/d3-polygon/src/contains.js","../node_modules/d3-polygon/src/length.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-selection/src/touches.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-timer/src/interval.js","../node_modules/d3-voronoi/src/voronoi.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/Utils/utils.js","../node_modules/style-inject/dist/style-inject.es.js","../src/Components/Chart.js","../src/Components/Bars.js","../src/Cartesian/Axis.js","../src/Components/Legend.js","../src/Components/Tooltip.js","../src/Charts/BarChart.js","../src/Components/Gradient.js","../src/Charts/Histogram.js","../src/Charts/PieChart.js","../src/Components/Circles.js","../src/Charts/ScatterPlot.js","../src/Charts/StackedBarChart.js","../src/Components/Line.js","../src/Charts/Timeline.js"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export function linear(t) {\n return +t;\n}\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import PropTypes from 'prop-types'\nimport { useEffect, useState, useRef, useId } from \"react\"\nimport ResizeObserver from \"resize-observer-polyfill\"\n\nexport const accessorPropsType = (\n PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.number,\n ])\n)\n\nexport const callAccessor = (accessor, d, i) => (\n typeof accessor === \"function\" ? accessor(d, i) : accessor\n)\n\nexport const dimensionsPropsType = (\n PropTypes.shape({\n height: PropTypes.number,\n width: PropTypes.number,\n marginTop: PropTypes.number,\n marginRight: PropTypes.number,\n marginBottom: PropTypes.number,\n marginLeft: PropTypes.number,\n })\n)\n\nexport const combineChartDimensions = dimensions => {\n let parsedDimensions = {\n marginTop: 40,\n marginRight: 30,\n marginBottom: 40,\n marginLeft: 75,\n ...dimensions,\n }\n\n return {\n ...parsedDimensions,\n boundedHeight: Math.max(parsedDimensions.height - parsedDimensions.marginTop - parsedDimensions.marginBottom, 0),\n boundedWidth: Math.max(parsedDimensions.width - parsedDimensions.marginLeft - parsedDimensions.marginRight, 0),\n }\n}\n\nexport const useChartDimensions = passedSettings => {\n const ref = useRef()\n const dimensions = combineChartDimensions(passedSettings)\n\n const [width, changeWidth] = useState(0)\n const [height, changeHeight] = useState(0)\n\n useEffect(() => {\n if (dimensions.width && dimensions.height) return\n\n const element = ref.current\n const resizeObserver = new ResizeObserver(entries => {\n if (!Array.isArray(entries)) return\n if (!entries.length) return\n\n const entry = entries[0]\n\n if (width !== entry.contentRect.width) changeWidth(entry.contentRect.width)\n if (height !== entry.contentRect.height) changeHeight(entry.contentRect.height)\n })\n\n resizeObserver.observe(element)\n\n return () => resizeObserver.unobserve(element)\n }, [passedSettings, height, width, dimensions])\n\n const newSettings = combineChartDimensions({\n ...dimensions,\n width: dimensions.width || width,\n height: dimensions.height || height,\n })\n\n return [ref, newSettings]\n}\n\n// Use React's built-in useId (React 18+) for concurrent-safe unique IDs\nexport const useUniqueId = (prefix = \"\") => {\n const id = useId().replace(/:/g, '')\n return `${prefix}-${id}`\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { createContext, useContext } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { dimensionsPropsType } from \"../Utils/utils\";\n\nimport \"./Chart.css\"\n\nconst ChartContext = createContext()\nexport const useDimensionsContext = () => useContext(ChartContext)\n\nconst Chart = ({ dimensions, children, label }) => (\n \n \n \n { children }\n \n \n \n)\n\nChart.propTypes = {\n dimensions: dimensionsPropsType,\n label: PropTypes.string,\n}\n\nChart.defaultProps = {\n dimensions: {}\n}\n\nexport default Chart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from 'd3'\nimport { accessorPropsType, callAccessor } from \"../Utils/utils\";\n\nconst Bars = ({ data, keyAccessor, xAccessor, yAccessor, widthAccessor, heightAccessor, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nBars.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n widthAccessor: accessorPropsType,\n heightAccessor: accessorPropsType,\n}\n\nBars.defaultProps = {\n}\n\nexport default Bars\n\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from 'd3'\nimport { useDimensionsContext } from \"../Components/Chart\";\n\nconst axisComponentsByDimension = {\n x: AxisHorizontal,\n y: AxisVertical,\n}\n\nconst Axis = ({ dimension, ...props }) => {\n const dimensions = useDimensionsContext()\n const Component = axisComponentsByDimension[dimension]\n if (!Component) return null\n\n return (\n \n )\n}\n\nAxis.propTypes = {\n dimension: PropTypes.oneOf([\"x\", \"y\"]),\n scale: PropTypes.func,\n label: PropTypes.string,\n formatTick: PropTypes.func,\n}\n\nAxis.defaultProps = {\n dimension: \"x\",\n scale: null,\n formatTick: d3.format(\",\"),\n}\n\nexport default Axis\n\n\nfunction AxisHorizontal ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedWidth < 600\n ? dimensions.boundedWidth / 100\n : dimensions.boundedWidth / 250\n\n // scaleBand (categorical) has no .ticks() — use .domain() instead\n const ticks = typeof scale.ticks === 'function'\n ? scale.ticks(numberOfTicks)\n : scale.domain()\n\n // Center labels within each band for band/ordinal scales\n const tickOffset = typeof scale.bandwidth === 'function' ? scale.bandwidth() / 2 : 0\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n\nfunction AxisVertical ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedHeight / 70\n\n const ticks = scale.ticks(numberOfTicks)\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Legend = ({ items, position }) => {\n const isVertical = position === 'left' || position === 'right'\n return (\n \n {items.map((item, i) => (\n \n \n {item.label}\n \n ))}\n \n )\n}\n\nLegend.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n position: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nLegend.defaultProps = {\n items: [],\n position: 'bottom',\n}\n\nexport default Legend\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Tooltip = ({ visible, x, y, children }) => {\n if (!visible) return null\n return (\n \n {children}\n \n )\n}\n\nTooltip.propTypes = {\n visible: PropTypes.bool,\n x: PropTypes.number,\n y: PropTypes.number,\n children: PropTypes.node,\n}\n\nexport default Tooltip\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\n\nconst BarChart = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, barPadding, formatYTick, yMin,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, d: null })\n\n if (!data || data.length === 0) return null\n\n const xScale = d3.scaleBand()\n .domain(data.map(xAccessor))\n .range([0, dimensions.boundedWidth])\n .padding(barPadding !== undefined ? barPadding : 0.2)\n\n const yScale = d3.scaleLinear()\n .domain([yMin !== undefined ? yMin : 0, d3.max(data, yAccessor)])\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const widthAccessorScaled = () => xScale.bandwidth()\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(yAccessor(d))\n const keyAccessor = (d, i) => i\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, d })\n }\n const handleMove = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = yLabel\n ? [{ color: color || DEFAULT_COLOR, label: yLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n d} label={xLabel} />\n \n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.d && (\n <>\n
{xLabel || 'Category'}: {xAccessor(tooltip.d)}
\n
{yLabel || 'Value'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n
\n
\n )\n}\n\nBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n yMin: PropTypes.number,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nBarChart.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default BarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Gradient = ({ id, colors, ...props }) => (\n \n {colors.map((color, i) => (\n \n ))}\n \n)\n\nGradient.propTypes = {\n id: PropTypes.string,\n colors: PropTypes.arrayOf(\n PropTypes.string,\n ),\n}\n\nGradient.defaultProps = {\n id: \"Gradient\",\n colors: [],\n}\n\nexport default Gradient\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\n\nconst defaultGradientColors = [\"#9980FA\", \"rgb(226, 222, 243)\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\nconst fmtFixed = d3.format(\",.2~f\")\n\nconst Histogram = ({\n data, xAccessor, xLabel, yLabel,\n color, gradientColors: gradientColorsProp, thresholds,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const gradientId = useUniqueId(\"Histogram-gradient\")\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, d: null })\n\n if (!data || data.length === 0) return null\n\n const numberOfThresholds = thresholds || 9\n\n const xScale = d3.scaleLinear()\n .domain(d3.extent(data, xAccessor))\n .range([0, dimensions.boundedWidth])\n .nice(numberOfThresholds)\n\n const binsGenerator = d3.histogram()\n .domain(xScale.domain())\n .value(xAccessor)\n .thresholds(xScale.ticks(numberOfThresholds))\n\n const bins = binsGenerator(data)\n const yAccessor = d => d.length\n const yScale = d3.scaleLinear()\n .domain([0, d3.max(bins, yAccessor)])\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const barPadding = 2\n const xAccessorScaled = d => xScale(d.x0) + barPadding\n const yAccessorScaled = d => yScale(yAccessor(d))\n const widthAccessorScaled = d => xScale(d.x1) - xScale(d.x0) - barPadding\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(yAccessor(d))\n const keyAccessor = (d, i) => i\n\n const resolvedGradientColors = gradientColorsProp || defaultGradientColors\n const barStyle = color ? { fill: color } : { fill: `url(#${gradientId})` }\n\n const tickFmt = formatXTick || fmtFixed\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, d })\n }\n const handleMove = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = xLabel\n ? [{ color: color || DEFAULT_COLOR, label: xLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n \n \n \n \n \n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.d && (\n <>\n
{xLabel || 'Range'}: {tickFmt(tooltip.d.x0)} – {tickFmt(tooltip.d.x1)}
\n
Count: {fmt(tooltip.d.length)}
\n \n )}\n
\n
\n )\n}\n\nHistogram.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n thresholds: PropTypes.number,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nHistogram.defaultProps = {\n xAccessor: d => d.x,\n}\n\nexport default Histogram\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst defaultMargin = { marginTop: 20, marginRight: 20, marginBottom: 20, marginLeft: 20 }\nconst MIN_LABEL_ANGLE = 0.35\nconst fmt = d3.format(\",\")\n\nconst PieChart = ({\n data, valueAccessor, labelAccessor,\n colors, innerRadius, padAngle, showLabels,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions(defaultMargin)\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, datum: null, label: null })\n\n if (!data || data.length === 0) return null\n\n const outerRadius = Math.min(dimensions.boundedWidth, dimensions.boundedHeight) / 2\n const cx = dimensions.boundedWidth / 2\n const cy = dimensions.boundedHeight / 2\n\n const colorScale = d3.scaleOrdinal(\n Array.isArray(colors) ? colors : d3.schemeSet2\n )\n\n const resolvedInnerRadius = typeof innerRadius === 'number'\n ? outerRadius * Math.min(Math.max(innerRadius, 0), 0.95)\n : 0\n\n const pieGenerator = d3.pie()\n .value(valueAccessor)\n .padAngle(padAngle !== undefined ? padAngle : 0.02)\n .sort(null)\n\n const arcGenerator = d3.arc()\n .innerRadius(resolvedInnerRadius)\n .outerRadius(outerRadius)\n\n const labelRadius = resolvedInnerRadius > 0\n ? (resolvedInnerRadius + outerRadius) / 2\n : outerRadius * 0.65\n\n const labelArc = d3.arc()\n .innerRadius(labelRadius)\n .outerRadius(labelRadius)\n\n const arcs = pieGenerator(data)\n const displayLabels = showLabels !== false && typeof labelAccessor === 'function'\n\n const total = d3.sum(data, valueAccessor)\n\n const legendItems = typeof labelAccessor === 'function'\n ? data.map((d, i) => {\n const label = labelAccessor(d)\n return { color: colorScale(label !== undefined ? label : String(i)), label: String(label) }\n })\n : []\n\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleSliceEnter = (datum, label, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, datum, label })\n }\n const handleSliceMove = (datum, label, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleSliceLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const chart = (\n
\n \n \n {arcs.map((arc, i) => {\n const label = labelAccessor ? labelAccessor(data[i]) : String(i)\n const sliceAngle = arc.endAngle - arc.startAngle\n return (\n \n handleSliceEnter(data[i], label, e)}\n onMouseMove={e => handleSliceMove(data[i], label, e)}\n onMouseLeave={handleSliceLeave}\n />\n {displayLabels && sliceAngle >= MIN_LABEL_ANGLE && (\n \n {label}\n \n )}\n \n )\n })}\n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n const tooltipValue = tooltip.datum ? valueAccessor(tooltip.datum) : 0\n const tooltipPct = total > 0 ? Math.round(tooltipValue / total * 100) : 0\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.datum && (\n <>\n
{tooltip.label}
\n
{fmt(tooltipValue)} ({tooltipPct}%)
\n \n )}\n
\n
\n )\n}\n\nPieChart.propTypes = {\n data: PropTypes.array,\n valueAccessor: accessorPropsType,\n labelAccessor: accessorPropsType,\n colors: PropTypes.arrayOf(PropTypes.string),\n innerRadius: PropTypes.number,\n padAngle: PropTypes.number,\n showLabels: PropTypes.bool,\n /** Show a legend listing each slice's color and label. Default: false. */\n showLegend: PropTypes.bool,\n /** Position of the legend. One of 'top', 'bottom', 'left', 'right'. Default: 'bottom'. */\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nPieChart.defaultProps = {\n valueAccessor: d => d.value,\n labelAccessor: d => d.label,\n}\n\nexport default PieChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst Circles = ({ data, keyAccessor, xAccessor, yAccessor, radius, color, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nCircles.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n radius: accessorPropsType,\n /** Fill color for each circle. */\n color: PropTypes.string,\n}\n\nCircles.defaultProps = {\n radius: 5,\n}\n\nexport default Circles\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\n\nconst ScatterPlot = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, radius, formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, d: null })\n\n if (!data || data.length === 0) return null\n\n const xExtent = d3.extent(data, xAccessor)\n const yExtent = d3.extent(data, yAccessor)\n\n const xDomain = xExtent[0] === xExtent[1]\n ? [xExtent[0] - 1, xExtent[0] + 1]\n : xExtent\n const yDomain = yExtent[0] === yExtent[1]\n ? [yExtent[0] - 1, yExtent[0] + 1]\n : yExtent\n\n const xScale = d3.scaleLinear().domain(xDomain).range([0, dimensions.boundedWidth]).nice()\n const yScale = d3.scaleLinear().domain(yDomain).range([dimensions.boundedHeight, 0]).nice()\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const keyAccessor = (d, i) => i\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, d })\n }\n const handleMove = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = yLabel\n ? [{ color: color || DEFAULT_COLOR, label: yLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n \n \n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.d && (\n <>\n
{xLabel || 'X'}: {fmt(xAccessor(tooltip.d))}
\n
{yLabel || 'Y'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n
\n
\n )\n}\n\nScatterPlot.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nScatterPlot.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default ScatterPlot\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Axis from \"../Cartesian/Axis\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst fmt = d3.format(\",\")\n\nconst StackedBarChart = ({\n data, xAccessor, keys, colors,\n xLabel, yLabel, barPadding, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, key: null, value: 0, category: null, total: 0 })\n\n if (!data || data.length === 0 || !keys || keys.length === 0) return null\n\n const colorScale = d3.scaleOrdinal(Array.isArray(colors) ? colors : d3.schemeSet2).domain(keys)\n\n const series = d3.stack().keys(keys)(data)\n\n const xScale = d3.scaleBand()\n .domain(data.map(xAccessor))\n .range([0, dimensions.boundedWidth])\n .padding(barPadding !== undefined ? barPadding : 0.2)\n\n const yScale = d3.scaleLinear()\n .domain([0, d3.max(series, s => d3.max(s, d => d[1]))])\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (key, d, e) => {\n const { x, y } = getPos(e)\n const total = keys.reduce((sum, k) => sum + (d.data[k] || 0), 0)\n setTooltip({ visible: true, x, y, key, value: d[1] - d[0], category: xAccessor(d.data), total })\n }\n const handleMove = (key, d, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = keys.map(k => ({ color: colorScale(k), label: k }))\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n d} label={xLabel} />\n \n {series.map(s => (\n \n {s.map((d, i) => (\n handleEnter(s.key, d, e)}\n onMouseMove={e => handleMove(s.key, d, e)}\n onMouseLeave={handleLeave}\n />\n ))}\n \n ))}\n \n
\n )\n\n const legend = showLegend !== false && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.key && (\n <>\n
{tooltip.category}
\n
{tooltip.key}: {fmt(tooltip.value)}
\n
Total: {fmt(tooltip.total)}
\n \n )}\n
\n
\n )\n}\n\nStackedBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n /** Series keys to stack — each key must be a numeric property on each datum. Required. */\n keys: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.string),\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nStackedBarChart.defaultProps = {\n xAccessor: d => d.x,\n}\n\nexport default StackedBarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst Line = ({ type, data, xAccessor, yAccessor, y0Accessor, interpolation, ...props }) => {\n const lineGenerator = d3[type]()\n .x(xAccessor)\n .y(yAccessor)\n .curve(interpolation)\n\n if (type === \"area\") {\n lineGenerator\n .y0(y0Accessor)\n .y1(yAccessor)\n }\n\n return (\n \n )\n}\n\nLine.propTypes = {\n type: PropTypes.oneOf([\"line\", \"area\"]),\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n y0Accessor: accessorPropsType,\n interpolation: PropTypes.func,\n}\n\nLine.defaultProps = {\n type: \"line\",\n y0Accessor: 0,\n interpolation: d3.curveMonotoneX,\n}\n\nexport default Line\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Line from \"../Components/Line\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\n\nconst formatDate = d3.timeFormat(\"%-b %-d\")\nconst formatTooltipDate = d3.timeFormat(\"%-b %-d, %Y\")\nconst defaultGradientColors = [\"rgb(226, 222, 243)\", \"#f8f9fa\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\n\nconst Timeline = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, gradientColors: gradientColorsProp,\n interpolation, showArea, showDots,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const gradientId = useUniqueId(\"Timeline-gradient\")\n const wrapperRef = useRef()\n const [hovered, setHovered] = useState(null)\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0 })\n\n if (!data || data.length === 0) return null\n\n const resolvedGradientColors = gradientColorsProp\n || (color ? [`${color}55`, \"rgba(255,255,255,0)\"] : defaultGradientColors)\n\n const xScale = d3.scaleTime()\n .domain(d3.extent(data, xAccessor))\n .range([0, dimensions.boundedWidth])\n\n const yScale = d3.scaleLinear()\n .domain(d3.extent(data, yAccessor))\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const y0AccessorScaled = yScale(yScale.domain()[0])\n\n const bisect = d3.bisector(xAccessor).left\n\n const handleMouseMove = e => {\n const svgEl = e.currentTarget.ownerSVGElement\n const svgBounds = svgEl.getBoundingClientRect()\n const mouseX = e.clientX - svgBounds.left - dimensions.marginLeft\n\n const date = xScale.invert(mouseX)\n const idx = bisect(data, date, 1)\n const d0 = data[idx - 1]\n const d1 = data[idx]\n const hoveredDatum = !d1 || (d0 && date - xAccessor(d0) < xAccessor(d1) - date)\n ? idx - 1 : idx\n\n setHovered(hoveredDatum)\n\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n setTooltip({ visible: true, x: e.clientX - left, y: e.clientY - top })\n }\n\n const handleMouseLeave = () => {\n setHovered(null)\n setTooltip(t => ({ ...t, visible: false }))\n }\n\n const hoveredDatum = hovered !== null ? data[hovered] : null\n const yFmt = formatYTick || fmt\n const xFmt = formatXTick || formatTooltipDate\n\n const legendItems = yLabel\n ? [{ color: color || DEFAULT_COLOR, label: yLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n \n \n \n \n \n {showArea !== false && (\n \n )}\n \n {showDots && (\n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n color={color}\n />\n )}\n {hoveredDatum && (\n <>\n \n \n \n )}\n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {hoveredDatum && (\n <>\n
{xFmt(xAccessor(hoveredDatum))}
\n
{yLabel || 'Value'}: {yFmt(yAccessor(hoveredDatum))}
\n \n )}\n
\n
\n )\n}\n\nTimeline.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n interpolation: PropTypes.func,\n showArea: PropTypes.bool,\n showDots: PropTypes.bool,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nTimeline.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n showArea: true,\n showDots: false,\n}\n\nexport default Timeline\n"],"names":["b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Fragment","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextConsumer","Lazy","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","reactIsModule","exports","require$$0","require$$1","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","s","arguments","length","key","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","propTypesModule","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","push","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","ascending$3","NaN","bisector","compare","ascending","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pair","number$3","variance","valueof","delta","mean","sum","isNaN","deviation","Math","sqrt","extent$1","min","max","slice","constant$d","identity$9","sequence","start","stop","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","floor","power","log","LN10","pow","tickStep","step0","abs","step1","thresholdSturges","LN2","histogram","identity","domain","extent","threshold","sturges","xz","x0","x1","tz","shift","pop","bin","bins","bisect","_","constant","thresholds","threshold$1","i0","value0","max$2","merge","arrays","merged","j","min$1","sum$2","transpose","matrix","row","identity$8","translateX","translateY","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","context","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","insert","transition","getAttribute","parentNode","remove","filter","each","tickSize","noop","dispatch","test","Dispatch","parseTypenames","typenames","types","trim","indexOf","get","set","callback","concat","on","typename","T","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","appendChild","child","insertBefore","bindIndex","group","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","splice","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","match","size","enterGroup","updateGroup","previous","i1","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","sort","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","property","classed","html","create","before","deep","nextId","Local","toString","current","point$5","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","mouse","changedTouches","touch","touches","identifier","nopropagation","stopImmediatePropagation","noevent$2","preventDefault","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","constant$b","DragEvent","subject","id","active","dx","dy","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","define","factory","extend","definition","Color","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl","hsl2rgb","m2","channels","displayable","formatHsl","darker","deg2rad","PI","rad2deg","t0","t1","t2","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","cos","sin","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","basis","v0","v1","v2","v3","t3","basis$2","basisClosed$1","constant$a","linear","hue","gamma","nogamma","exponential","cosh","sinh","interpolateRgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","date$1","setTime","interpolateNumber","object$1","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","one","zero","interpolateValue","date","valueOf","interpolateRound","cssNode","cssRoot","cssView","svgNode","degrees","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","SQRT2","exp","interpolateZoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","tanh","duration","colorHsl","hsl$1","hslLong","colorHcl","hcl$1","hclLong","cubehelixGamma","colorCubehelix","cubehelix$2","cubehelixLong","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","schedule","timing","schedules","__transition","self","tween","state","ease","init","interrupt","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate$1","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","quadInOut","cubicInOut","children","inherit","id0","id1","styleNull","listener0","undefined","styleMaybeRemove","removeFunction","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinInOut","tpmt","expInOut","circleInOut","bounceOut","backIn","overshoot","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","constant$9","BrushEvent","noevent$1","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","toucher","X","handles","input","output","xy","Y","XY","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultExtent","hasAttribute","viewBox","width","height","__brush","brush","dim","touchending","touchable","listeners","handleSize","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","mode","metaKey","altKey","signX","signY","W","N","shifting","shiftKey","pointer","point0","beforestart","moved","ended","keydowned","keyupped","point1","move","dragEnable","keyCode","selection0","selection1","clear","starting","keyModifiers","compareValue","constant$8","tauEpsilon","Path","_x0","_y0","_x1","_y1","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","startAngle","defaultEndAngle","endAngle","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","Map","createObject","setObject","createMap","setMap","Set","proto","ascending$1","constant$7","contains$2","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","noop$2","cases","contours","smooth","smoothLinear","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","isorings","area","polygon","coordinates","xt","yt","_0","_1","blurX","sr","blurY","defaultX","defaultY","defaultWeight","EOL","EOF","objectConverter","columns","inferColumns","rows","columnSet","column","pad","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","year","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","dsvFormat","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","fixtz","getHours","responseBlob","response","ok","status","statusText","blob","responseArrayBuffer","arrayBuffer","responseText","fetch","then","dsvParse","responseJson","json","parser","DOMParser","parseFromString","constant$6","jiggle","random","tree","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","Quad","quadtree","Quadtree","addAll","leaf_copy","treeProto","vx","vy","find","nodeById","nodeId","cover","yz","visit","x3","y3","quads","retainer","removeAll","visitAfter","initialAngle","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","toUpperCase","identity$6","locale","formatPrefix","prefixes","formatLocale$1","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","adder","Adder","reset","temp","bv","av","quarterPi","radians","haversin","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","geoStream","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","phi0","lambda1","phi1","lambda2","ranges","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","angle","rangeCompare","rangeContains","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","constant$5","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","clipBuffer","lines","rejoin","result","pointEqual","Intersection","points","other","clipRejoin","segments","compareIntersection","startInside","clip","segment","link","isSubject","longitude","polygonContains","winding","sinPhi1","cosPhi1","absDelta","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","clipAntimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","clipCircle","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","polar","q1","code","c0","v00","point2","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","polygonInside","cleanInside","ax","ay","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","length$1","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","identity$5","x00","y00","pathArea","bounds","boundsStream$1","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","pathCentroid","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","pathMeasure","PathString","_string","circle","transformer","methods","TransformStream","fit","projection","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","_circle","cosMinDistance","resample","project","delta2","resampleLineTo","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslate","sx","sy","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","ci","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","theta","preclip","postclip","recenter","transformRotate","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","cy0","fy","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","links","enclose","circles","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c3","d3","place","intersects","score","packEnclose","aa","sj","sk","pack","optional","required","constantZero","constant$4","radiusLeaf","packChildren","translateChild","roundNode","treemapDice","preroot","ambiguous","defaultId","defaultParentId","parentId","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treemapSlice","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","dice","squarify","resquarify","_squarify","cross$1","lexicographicOrder","computeUpperHullIndexes","indexes","cross","uniform","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","logNormal","sourceRandomLogNormal","randomLogNormal","irwinHall","sourceRandomIrwinHall","randomIrwinHall","bates","sourceRandomBates","randomBates","sourceRandomExponential","randomExponential","initRange","initInterpolator","interpolator","implicit","ordinal","unknown","band","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","pointish","number$1","unit","normalize","clamper","bimap","d0","polymap","clamp","untransform","piecewise","continuous","linearish","nice","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","transformPow","transformSqrt","transformSquare","powish","newInterval","floori","offseti","field","millisecond","utcMillisecond","second","getMilliseconds","utcSecond","minute","getSeconds","getMinutes","timeMinute","hour","timeHour","day","setHours","setDate","getDate","getTimezoneOffset","timeDay","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month","setMonth","getMonth","getFullYear","timeMonth","months","setFullYear","timeYear","years","utcMinute","setUTCSeconds","utcMinute$1","utcMinutes","utcHour","setUTCMinutes","utcHour$1","utcHours","utcDay","setUTCHours","setUTCDate","utcDay$1","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","utcMonth$1","utcMonths","utcYear","setUTCFullYear","utcYear$1","utcYears","localDate","H","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","G","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","charAt","newParse","week","timeMonday","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","timeSunday","dISO","timeThursday","dow","UTCdISO","formatIso","toISOString","formatIso$1","parseIso","parseIso$1","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","timeWeek","timeSecond","timeMillisecond","k10","sequentialPow","k21","divergingPow","category10","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","Tableau10","ramp$1","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","pi_1_3","pi_2_3","viridis","magma","inferno","plasma","constant$2","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","cx0","cx1","cy1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","buffer","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","bx","by","kc","lc","Linear","curveLinear","pointX","pointY","defined","curve","defined0","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending$1","identity$1","pie","sortValues","descending","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineRadial$1","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","pointRadial","linkSource","linkTarget","argv","curveHorizontal","curveVertical","p2","p3","draw","tan30","tan30_2","diamond","kr","kx","ky","star","square","sqrt3","triangle","wye","Basis","BasisClosed","BasisOpen","Bundle","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","Natural","controlPoints","Step","_t","none$1","series","stackValue","orderNone","offsetNone","oz","kz","sz","sij","ki","si","appearance","peaks","peak","vi","vj","sums","constant$1","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","fx","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","_t0","px","py","after","grandpa","uncle","sibling","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","epsilon2","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","epsilon","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","ZoomEvent","Transform","triangles","_found","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","values0","values1","reduce","quantile","numbers","pairs","permutes","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","di","dj","subindex","ribbon","sa0","sa1","sx0","tr","ta0","ta1","rollup","nest","sortKeys","createResult","setResult","valuesByKey","sortKey","weight","density","Float32Array","wi","transformPolygon","transformRing","transformPoint","resize","cellSize","mousedownx","mousedowny","mousemoving","container","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","sublisteners","clickDistance","image","Image","onerror","onload","src","force","radii","strength","iterations","ri","ri2","prepare","quad","rj","strengths","distances","bias","initializeStrength","initializeDistance","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","radiuses","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","initializeNodes","initializeForce","closest","feature","deltaMax","sy1","kx0","ky0","kx1","ky1","projectionStream","contextStream","measure","pathBounds","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","multiplex","sa","tx","ty","separation","nodeSize","cluster","previousNode","meanX","maxY","leafLeft","leafRight","partition","positionNode","stratify","nodeKey","nodeByKey","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","colorLab","samples","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","symlog","invertExtent","quantiles","quantize","utcWeek","sequential","sequentialLog","sequentialSymlog","sequentialQuantile","diverging","divergingLog","divergingSymlog","ts","yn","s2","sij0","s3","tops","bottoms","total","voronoi","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","wheelidled","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","MapShim","getIndex","arr","some","class_1","__entries__","defineProperty","enumerable","configurable","delete","ctx","_i","_a","isBrowser","global$1","global","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","writable","getWindowOf","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","_this","observation","WeakMap","ResizeObserver","method","accessorPropsType","callAccessor","accessor","dimensionsPropsType","marginTop","marginRight","marginBottom","marginLeft","combineChartDimensions","dimensions","parsedDimensions","boundedHeight","boundedWidth","useChartDimensions","passedSettings","ref","useRef","changeWidth","useState","changeHeight","useEffect","resizeObserver","newSettings","useUniqueId","useId","css","insertAt","head","getElementsByTagName","styleSheet","cssText","createTextNode","ChartContext","createContext","Chart","label","React","Provider","className","role","propTypes","defaultProps","Bars","keyAccessor","xAccessor","yAccessor","widthAccessor","heightAccessor","onMouseEnter","onMouseLeave","onMouseMove","_extends","axisComponentsByDimension","formatTick","numberOfTicks","tickOffset","Axis","dimension","useContext","Component","Legend","items","isVertical","display","flexDirection","flexWrap","justifyContent","alignItems","gap","fontSize","flexShrink","item","borderRadius","background","Tooltip","pointerEvents","border","lineHeight","boxShadow","zIndex","whiteSpace","fmt","BarChart","xLabel","yLabel","barPadding","formatYTick","yMin","showLegend","legendPosition","wrapperRef","tooltip","setTooltip","xScale","yScale","getPos","legendItems","resolvedPosition","isHorizontal","isLeading","chart","flex","minHeight","minWidth","Boolean","widthAccessorScaled","handleEnter","handleMove","handleLeave","legend","Gradient","gradientUnits","spreadMethod","stopColor","defaultGradientColors","fmtFixed","Histogram","gradientColors","gradientColorsProp","formatXTick","gradientId","numberOfThresholds","binsGenerator","resolvedGradientColors","barStyle","tickFmt","defaultMargin","PieChart","valueAccessor","labelAccessor","showLabels","colorScale","resolvedInnerRadius","pieGenerator","arcGenerator","labelRadius","labelArc","displayLabels","handleSliceLeave","sliceAngle","handleSliceEnter","handleSliceMove","textAnchor","dominantBaseline","tooltipValue","tooltipPct","Circles","ScatterPlot","xExtent","yExtent","xDomain","yDomain","StackedBarChart","category","Line","y0Accessor","interpolation","lineGenerator","formatTooltipDate","Timeline","showArea","showDots","hovered","setHovered","xAccessorScaled","yAccessorScaled","y0AccessorScaled","hoveredDatum","yFmt","xFmt","stroke","svgBounds","currentTarget","mouseX","idx","handleMouseLeave"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.es.js","sources":["../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/max.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-scale/src/array.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/nice.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/Utils/utils.js","../node_modules/style-inject/dist/style-inject.es.js","../src/Components/Chart.js","../src/Components/Bars.js","../src/Cartesian/Axis.js","../src/Components/Legend.js","../src/Components/ChartLayout.js","../src/Components/Tooltip.js","../src/Utils/useTooltip.js","../src/Charts/BarChart.js","../src/Components/Gradient.js","../src/Charts/Histogram.js","../node_modules/d3-array/src/histogram.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/colors.js","../src/Charts/PieChart.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-array/src/sum.js","../src/Components/Circles.js","../src/Charts/ScatterPlot.js","../src/Charts/StackedBarChart.js","../src/Components/Line.js","../node_modules/d3-shape/src/area.js","../src/Charts/Timeline.js"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import PropTypes from 'prop-types'\nimport { useEffect, useState, useRef, useId } from \"react\"\nimport ResizeObserver from \"resize-observer-polyfill\"\n\nexport const accessorPropsType = (\n PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.number,\n ])\n)\n\nexport const callAccessor = (accessor, d, i) => (\n typeof accessor === \"function\" ? accessor(d, i) : accessor\n)\n\nexport const dimensionsPropsType = (\n PropTypes.shape({\n height: PropTypes.number,\n width: PropTypes.number,\n marginTop: PropTypes.number,\n marginRight: PropTypes.number,\n marginBottom: PropTypes.number,\n marginLeft: PropTypes.number,\n })\n)\n\nexport const combineChartDimensions = dimensions => {\n let parsedDimensions = {\n marginTop: 40,\n marginRight: 30,\n marginBottom: 40,\n marginLeft: 75,\n ...dimensions,\n }\n\n return {\n ...parsedDimensions,\n boundedHeight: Math.max(parsedDimensions.height - parsedDimensions.marginTop - parsedDimensions.marginBottom, 0),\n boundedWidth: Math.max(parsedDimensions.width - parsedDimensions.marginLeft - parsedDimensions.marginRight, 0),\n }\n}\n\nexport const useChartDimensions = passedSettings => {\n const ref = useRef()\n const dimensions = combineChartDimensions(passedSettings)\n\n const [width, changeWidth] = useState(0)\n const [height, changeHeight] = useState(0)\n\n useEffect(() => {\n if (dimensions.width && dimensions.height) return\n\n const element = ref.current\n const resizeObserver = new ResizeObserver(entries => {\n if (!Array.isArray(entries)) return\n if (!entries.length) return\n\n const entry = entries[0]\n\n if (width !== entry.contentRect.width) changeWidth(entry.contentRect.width)\n if (height !== entry.contentRect.height) changeHeight(entry.contentRect.height)\n })\n\n resizeObserver.observe(element)\n\n return () => resizeObserver.unobserve(element)\n }, [passedSettings, height, width, dimensions])\n\n const newSettings = combineChartDimensions({\n ...dimensions,\n width: dimensions.width || width,\n height: dimensions.height || height,\n })\n\n return [ref, newSettings]\n}\n\n// Use React's built-in useId (React 18+) for concurrent-safe unique IDs\nexport const useUniqueId = (prefix = \"\") => {\n const id = useId().replace(/:/g, '')\n return `${prefix}-${id}`\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { createContext, useContext } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { dimensionsPropsType } from \"../Utils/utils\";\n\nimport \"./Chart.css\"\n\nconst ChartContext = createContext()\nexport const useDimensionsContext = () => useContext(ChartContext)\n\nconst Chart = ({ dimensions, children, label }) => (\n \n \n \n { children }\n \n \n \n)\n\nChart.propTypes = {\n dimensions: dimensionsPropsType,\n label: PropTypes.string,\n}\n\nChart.defaultProps = {\n dimensions: {}\n}\n\nexport default Chart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { max } from 'd3-array'\nimport { accessorPropsType, callAccessor } from \"../Utils/utils\";\n\nconst Bars = ({ data, keyAccessor, xAccessor, yAccessor, widthAccessor, heightAccessor, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nBars.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n widthAccessor: accessorPropsType,\n heightAccessor: accessorPropsType,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseMove: PropTypes.func,\n}\n\nBars.defaultProps = {\n}\n\nexport default Bars\n\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { format } from 'd3-format'\nimport { useDimensionsContext } from \"../Components/Chart\";\n\nconst axisComponentsByDimension = {\n x: AxisHorizontal,\n y: AxisVertical,\n}\n\nconst Axis = ({ dimension, ...props }) => {\n const dimensions = useDimensionsContext()\n const Component = axisComponentsByDimension[dimension]\n if (!Component) return null\n\n return (\n \n )\n}\n\nAxis.propTypes = {\n dimension: PropTypes.oneOf([\"x\", \"y\"]),\n scale: PropTypes.func,\n label: PropTypes.string,\n formatTick: PropTypes.func,\n}\n\nAxis.defaultProps = {\n dimension: \"x\",\n scale: null,\n formatTick: format(\",\"),\n}\n\nexport default Axis\n\n\nfunction AxisHorizontal ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedWidth < 600\n ? dimensions.boundedWidth / 100\n : dimensions.boundedWidth / 250\n\n // scaleBand (categorical) has no .ticks() — use .domain() instead\n const ticks = typeof scale.ticks === 'function'\n ? scale.ticks(numberOfTicks)\n : scale.domain()\n\n // Center labels within each band for band/ordinal scales\n const tickOffset = typeof scale.bandwidth === 'function' ? scale.bandwidth() / 2 : 0\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n\nfunction AxisVertical ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedHeight / 70\n\n const ticks = scale.ticks(numberOfTicks)\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Legend = ({ items, position }) => {\n const isVertical = position === 'left' || position === 'right'\n return (\n \n {items.map((item, i) => (\n \n \n {item.label}\n \n ))}\n \n )\n}\n\nLegend.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n position: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nLegend.defaultProps = {\n items: [],\n position: 'bottom',\n}\n\nexport default Legend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Legend from './Legend'\n\nconst COL_STYLE = { width: '100%', height: '100%', display: 'flex', flexDirection: 'column', position: 'relative' }\nconst ROW_STYLE = { width: '100%', height: '100%', display: 'flex', flexDirection: 'row', position: 'relative' }\n\nconst ChartLayout = ({ wrapperRef, legendItems, showLegend, legendPosition, tooltip, children }) => {\n const position = legendPosition || 'bottom'\n const isHorizontal = position === 'left' || position === 'right'\n const isLeading = position === 'top' || position === 'left'\n\n const legend = showLegend && legendItems && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {children}\n {!isLeading && legend}\n {tooltip}\n
\n )\n}\n\nChartLayout.propTypes = {\n wrapperRef: PropTypes.object,\n legendItems: PropTypes.arrayOf(PropTypes.shape({\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })),\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n tooltip: PropTypes.node,\n children: PropTypes.node,\n}\n\nexport default ChartLayout\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Tooltip = ({ visible, x, y, children }) => {\n if (!visible) return null\n return (\n \n {children}\n \n )\n}\n\nTooltip.propTypes = {\n visible: PropTypes.bool,\n x: PropTypes.number,\n y: PropTypes.number,\n children: PropTypes.node,\n}\n\nexport default Tooltip\n","import { useRef, useState, useCallback } from 'react'\n\nexport function useTooltip() {\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0 })\n\n const showTooltip = useCallback((e, data) => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n setTooltip({ visible: true, x: e.clientX - left, y: e.clientY - top, ...data })\n }, [])\n\n const moveTooltip = useCallback(e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n setTooltip(t => ({ ...t, x: e.clientX - left, y: e.clientY - top }))\n }, [])\n\n const hideTooltip = useCallback(() => {\n setTooltip(t => ({ ...t, visible: false }))\n }, [])\n\n return { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip }\n}\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleBand, scaleLinear } from 'd3-scale'\nimport { max } from 'd3-array'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\n\nconst BarChart = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, barPadding, formatYTick, yMin,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const xScale = useMemo(() =>\n scaleBand()\n .domain(data ? data.map(xAccessor) : [])\n .range([0, dimensions.boundedWidth])\n .padding(barPadding ?? 0.2),\n [data, xAccessor, dimensions.boundedWidth, barPadding]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain([yMin ?? 0, max(data, yAccessor) || 0])\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [data, yAccessor, dimensions.boundedHeight, yMin]\n )\n\n const legendItems = useMemo(() =>\n yLabel ? [{ color: color || DEFAULT_COLOR, label: yLabel }] : [],\n [yLabel, color]\n )\n\n const barStyle = useMemo(() => color ? { fill: color } : undefined, [color])\n\n const handleEnter = useCallback((d, i, e) => showTooltip(e, { d }), [showTooltip])\n const handleMove = useCallback((d, i, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const widthAccessorScaled = () => xScale.bandwidth()\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(yAccessor(d))\n\n return (\n \n {tooltip.d && (\n <>\n
{xLabel || 'Category'}: {xAccessor(tooltip.d)}
\n
{yLabel || 'Value'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n \n }>\n
\n \n d} label={xLabel} />\n \n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n widthAccessor={widthAccessorScaled}\n heightAccessor={heightAccessorScaled}\n style={barStyle}\n onMouseEnter={handleEnter}\n onMouseMove={handleMove}\n onMouseLeave={hideTooltip}\n />\n \n
\n
\n )\n}\n\nBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n yMin: PropTypes.number,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nBarChart.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default BarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Gradient = ({ id, colors, ...props }) => (\n \n {colors.map((color, i) => (\n \n ))}\n \n)\n\nGradient.propTypes = {\n id: PropTypes.string,\n colors: PropTypes.arrayOf(\n PropTypes.string,\n ),\n}\n\nGradient.defaultProps = {\n id: \"Gradient\",\n colors: [],\n}\n\nexport default Gradient\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleLinear } from 'd3-scale'\nimport { extent, max, histogram } from 'd3-array'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_GRADIENT = [\"#9980FA\", \"rgb(226, 222, 243)\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\nconst fmtFixed = format(\",.2~f\")\nconst BAR_PADDING = 2\n\nconst Histogram = ({\n data, xAccessor, xLabel, yLabel,\n color, gradientColors, thresholds,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const gradientId = useUniqueId(\"Histogram-gradient\")\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const numberOfThresholds = thresholds || 9\n\n const xScale = useMemo(() =>\n scaleLinear()\n .domain(extent(data, xAccessor))\n .range([0, dimensions.boundedWidth])\n .nice(numberOfThresholds),\n [data, xAccessor, dimensions.boundedWidth, numberOfThresholds]\n )\n\n const bins = useMemo(() =>\n histogram()\n .domain(xScale.domain())\n .value(xAccessor)\n .thresholds(xScale.ticks(numberOfThresholds))(data),\n [xScale, xAccessor, numberOfThresholds, data]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain([0, max(bins, d => d.length) || 0])\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [bins, dimensions.boundedHeight]\n )\n\n const legendItems = useMemo(() =>\n xLabel ? [{ color: color || DEFAULT_COLOR, label: xLabel }] : [],\n [xLabel, color]\n )\n\n const resolvedGradientColors = gradientColors || DEFAULT_GRADIENT\n const barStyle = useMemo(() =>\n color ? { fill: color } : { fill: `url(#${gradientId})` },\n [color, gradientId]\n )\n\n const tickFmt = formatXTick || fmtFixed\n\n const handleEnter = useCallback((d, i, e) => showTooltip(e, { d }), [showTooltip])\n const handleMove = useCallback((d, i, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(d.x0) + BAR_PADDING\n const yAccessorScaled = d => yScale(d.length)\n const widthAccessorScaled = d => xScale(d.x1) - xScale(d.x0) - BAR_PADDING\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(d.length)\n\n return (\n \n {tooltip.d && (\n <>\n
{xLabel || 'Range'}: {tickFmt(tooltip.d.x0)} – {tickFmt(tooltip.d.x1)}
\n
Count: {fmt(tooltip.d.length)}
\n \n )}\n \n }>\n
\n \n \n \n \n \n \n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n widthAccessor={widthAccessorScaled}\n heightAccessor={heightAccessorScaled}\n style={barStyle}\n onMouseEnter={handleEnter}\n onMouseMove={handleMove}\n onMouseLeave={hideTooltip}\n />\n \n
\n
\n )\n}\n\nHistogram.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n thresholds: PropTypes.number,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nHistogram.defaultProps = {\n xAccessor: d => d.x,\n}\n\nexport default Histogram\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export var slice = Array.prototype.slice;\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleOrdinal } from 'd3-scale'\nimport { arc, pie } from 'd3-shape'\nimport { sum } from 'd3-array'\nimport { schemeSet2 } from 'd3-scale-chromatic'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_MARGIN = { marginTop: 20, marginRight: 20, marginBottom: 20, marginLeft: 20 }\nconst MIN_LABEL_ANGLE = 0.35\nconst fmt = format(\",\")\n\nconst PieChart = ({\n data, valueAccessor, labelAccessor,\n colors, innerRadius, padAngle, showLabels,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions(DEFAULT_MARGIN)\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const colorScale = useMemo(() =>\n scaleOrdinal(Array.isArray(colors) ? colors : schemeSet2),\n [colors]\n )\n\n const outerRadius = Math.min(dimensions.boundedWidth, dimensions.boundedHeight) / 2\n const cx = dimensions.boundedWidth / 2\n const cy = dimensions.boundedHeight / 2\n\n const resolvedInnerRadius = typeof innerRadius === 'number'\n ? outerRadius * Math.min(Math.max(innerRadius, 0), 0.95)\n : 0\n\n const arcGenerator = useMemo(() =>\n arc().innerRadius(resolvedInnerRadius).outerRadius(outerRadius),\n [resolvedInnerRadius, outerRadius]\n )\n\n const labelArc = useMemo(() => {\n const r = resolvedInnerRadius > 0\n ? (resolvedInnerRadius + outerRadius) / 2\n : outerRadius * 0.65\n return arc().innerRadius(r).outerRadius(r)\n }, [resolvedInnerRadius, outerRadius])\n\n const arcs = useMemo(() =>\n data ? pie()\n .value(valueAccessor)\n .padAngle(padAngle ?? 0.02)\n .sort(null)(data)\n : [],\n [data, valueAccessor, padAngle]\n )\n\n const total = useMemo(() =>\n data ? sum(data, valueAccessor) : 0,\n [data, valueAccessor]\n )\n\n const legendItems = useMemo(() =>\n typeof labelAccessor === 'function'\n ? (data || []).map((d, i) => {\n const label = labelAccessor(d)\n return { color: colorScale(label !== undefined ? label : String(i)), label: String(label) }\n })\n : [],\n [data, labelAccessor, colorScale]\n )\n\n const handleSliceEnter = useCallback((datum, label, e) =>\n showTooltip(e, { datum, label }),\n [showTooltip]\n )\n const handleSliceMove = useCallback((datum, label, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const displayLabels = showLabels !== false && typeof labelAccessor === 'function'\n const tooltipValue = tooltip.datum ? valueAccessor(tooltip.datum) : 0\n const tooltipPct = total > 0 ? Math.round(tooltipValue / total * 100) : 0\n\n return (\n \n {tooltip.datum && (\n <>\n
{tooltip.label}
\n
{fmt(tooltipValue)} ({tooltipPct}%)
\n \n )}\n \n }>\n
\n \n \n {arcs.map((a, i) => {\n const label = labelAccessor ? labelAccessor(data[i]) : String(i)\n return (\n \n handleSliceEnter(data[i], label, e)}\n onMouseMove={e => handleSliceMove(data[i], label, e)}\n onMouseLeave={hideTooltip}\n />\n {displayLabels && (a.endAngle - a.startAngle) >= MIN_LABEL_ANGLE && (\n \n {label}\n \n )}\n \n )\n })}\n \n \n
\n
\n )\n}\n\nPieChart.propTypes = {\n data: PropTypes.array,\n valueAccessor: accessorPropsType,\n labelAccessor: accessorPropsType,\n colors: PropTypes.arrayOf(PropTypes.string),\n innerRadius: PropTypes.number,\n padAngle: PropTypes.number,\n showLabels: PropTypes.bool,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nPieChart.defaultProps = {\n valueAccessor: d => d.value,\n labelAccessor: d => d.label,\n}\n\nexport default PieChart\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst Circles = ({ data, keyAccessor, xAccessor, yAccessor, radius, color, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nCircles.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n radius: accessorPropsType,\n color: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseMove: PropTypes.func,\n}\n\nCircles.defaultProps = {\n radius: 5,\n}\n\nexport default Circles\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleLinear } from 'd3-scale'\nimport { extent } from 'd3-array'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\n\nconst ScatterPlot = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, radius, formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const xScale = useMemo(() => {\n const ext = extent(data, xAccessor)\n const domain = ext[0] === ext[1] ? [ext[0] - 1, ext[0] + 1] : ext\n return scaleLinear().domain(domain).range([0, dimensions.boundedWidth]).nice()\n }, [data, xAccessor, dimensions.boundedWidth])\n\n const yScale = useMemo(() => {\n const ext = extent(data, yAccessor)\n const domain = ext[0] === ext[1] ? [ext[0] - 1, ext[0] + 1] : ext\n return scaleLinear().domain(domain).range([dimensions.boundedHeight, 0]).nice()\n }, [data, yAccessor, dimensions.boundedHeight])\n\n const legendItems = useMemo(() =>\n yLabel ? [{ color: color || DEFAULT_COLOR, label: yLabel }] : [],\n [yLabel, color]\n )\n\n const handleEnter = useCallback((d, i, e) => showTooltip(e, { d }), [showTooltip])\n const handleMove = useCallback((d, i, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n\n return (\n \n {tooltip.d && (\n <>\n
{xLabel || 'X'}: {fmt(xAccessor(tooltip.d))}
\n
{yLabel || 'Y'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n \n }>\n
\n \n \n \n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n radius={radius}\n color={color}\n onMouseEnter={handleEnter}\n onMouseMove={handleMove}\n onMouseLeave={hideTooltip}\n />\n \n
\n
\n )\n}\n\nScatterPlot.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nScatterPlot.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default ScatterPlot\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleOrdinal, scaleBand, scaleLinear } from 'd3-scale'\nimport { stack } from 'd3-shape'\nimport { max } from 'd3-array'\nimport { schemeSet2 } from 'd3-scale-chromatic'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Axis from \"../Cartesian/Axis\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst fmt = format(\",\")\n\nconst StackedBarChart = ({\n data, xAccessor, keys, colors,\n xLabel, yLabel, barPadding, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const colorScale = useMemo(() =>\n scaleOrdinal(Array.isArray(colors) ? colors : schemeSet2).domain(keys),\n [colors, keys]\n )\n\n const series = useMemo(() =>\n data && keys && keys.length ? stack().keys(keys)(data) : [],\n [data, keys]\n )\n\n const xScale = useMemo(() =>\n scaleBand()\n .domain(data ? data.map(xAccessor) : [])\n .range([0, dimensions.boundedWidth])\n .padding(barPadding ?? 0.2),\n [data, xAccessor, dimensions.boundedWidth, barPadding]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain([0, max(series, s => max(s, d => d[1])) || 0])\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [series, dimensions.boundedHeight]\n )\n\n const legendItems = useMemo(() =>\n keys.map(k => ({ color: colorScale(k), label: k })),\n [keys, colorScale]\n )\n\n const handleEnter = useCallback((key, d, e) => {\n const total = keys.reduce((sum, k) => sum + (d.data[k] || 0), 0)\n showTooltip(e, { key, value: d[1] - d[0], category: xAccessor(d.data), total })\n }, [showTooltip, keys, xAccessor])\n\n const handleMove = useCallback((key, d, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0 || !keys || keys.length === 0) return null\n\n return (\n \n {tooltip.key && (\n <>\n
{tooltip.category}
\n
{tooltip.key}: {fmt(tooltip.value)}
\n
Total: {fmt(tooltip.total)}
\n \n )}\n \n }>\n
\n \n d} label={xLabel} />\n \n {series.map(s => (\n \n {s.map((d, i) => (\n handleEnter(s.key, d, e)}\n onMouseMove={e => handleMove(s.key, d, e)}\n onMouseLeave={hideTooltip}\n />\n ))}\n \n ))}\n \n
\n
\n )\n}\n\nStackedBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n keys: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.string),\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nStackedBarChart.defaultProps = {\n xAccessor: d => d.x,\n showLegend: true,\n}\n\nexport default StackedBarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { line, area, curveMonotoneX } from 'd3-shape'\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst generators = { line, area }\n\nconst Line = ({ type, data, xAccessor, yAccessor, y0Accessor, interpolation, ...props }) => {\n const lineGenerator = generators[type]()\n .x(xAccessor)\n .y(yAccessor)\n .curve(interpolation)\n\n if (type === \"area\") {\n lineGenerator\n .y0(y0Accessor)\n .y1(yAccessor)\n }\n\n return (\n \n )\n}\n\nLine.propTypes = {\n type: PropTypes.oneOf([\"line\", \"area\"]),\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n y0Accessor: accessorPropsType,\n interpolation: PropTypes.func,\n}\n\nLine.defaultProps = {\n type: \"line\",\n y0Accessor: 0,\n interpolation: curveMonotoneX,\n}\n\nexport default Line\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import React, { useCallback, useMemo, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleTime, scaleLinear } from 'd3-scale'\nimport { extent, bisector } from 'd3-array'\nimport { timeFormat } from 'd3-time-format'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Line from \"../Components/Line\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst formatDate = timeFormat(\"%-b %-d\")\nconst formatTooltipDate = timeFormat(\"%-b %-d, %Y\")\nconst DEFAULT_GRADIENT = [\"rgb(226, 222, 243)\", \"#f8f9fa\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\n\nconst Timeline = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, gradientColors,\n interpolation, showArea, showDots,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const gradientId = useUniqueId(\"Timeline-gradient\")\n const { wrapperRef, tooltip, showTooltip, hideTooltip } = useTooltip()\n const [hoveredIndex, setHoveredIndex] = useState(null)\n\n const resolvedGradientColors = gradientColors\n || (color ? [`${color}55`, \"rgba(255,255,255,0)\"] : DEFAULT_GRADIENT)\n\n const xScale = useMemo(() =>\n scaleTime()\n .domain(extent(data, xAccessor))\n .range([0, dimensions.boundedWidth]),\n [data, xAccessor, dimensions.boundedWidth]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain(extent(data, yAccessor))\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [data, yAccessor, dimensions.boundedHeight]\n )\n\n const legendItems = useMemo(() =>\n yLabel ? [{ color: color || DEFAULT_COLOR, label: yLabel }] : [],\n [yLabel, color]\n )\n\n const dateBisector = useMemo(() => bisector(xAccessor).left, [xAccessor])\n\n const handleMouseMove = useCallback(e => {\n const svgEl = e.currentTarget.ownerSVGElement\n const { left: svgLeft } = svgEl.getBoundingClientRect()\n const mouseX = e.clientX - svgLeft - dimensions.marginLeft\n const date = xScale.invert(mouseX)\n const idx = dateBisector(data, date, 1)\n const d0 = data[idx - 1]\n const d1 = data[idx]\n const i = !d1 || (d0 && date - xAccessor(d0) < xAccessor(d1) - date) ? idx - 1 : idx\n setHoveredIndex(i)\n showTooltip(e, { datum: data[i] })\n }, [data, xAccessor, xScale, dateBisector, dimensions.marginLeft, showTooltip])\n\n const handleMouseLeave = useCallback(() => {\n setHoveredIndex(null)\n hideTooltip()\n }, [hideTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const y0AccessorScaled = yScale(yScale.domain()[0])\n const hoveredDatum = hoveredIndex !== null ? data[hoveredIndex] : null\n const yFmt = formatYTick || fmt\n const xFmt = formatXTick || formatTooltipDate\n\n return (\n \n {tooltip.datum && (\n <>\n
{xFmt(xAccessor(tooltip.datum))}
\n
{yLabel || 'Value'}: {yFmt(yAccessor(tooltip.datum))}
\n \n )}\n \n }>\n
\n \n \n \n \n \n \n {showArea !== false && (\n \n )}\n \n {showDots && (\n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n color={color}\n />\n )}\n {hoveredDatum && (\n <>\n \n \n \n )}\n \n \n
\n
\n )\n}\n\nTimeline.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n interpolation: PropTypes.func,\n showArea: PropTypes.bool,\n showDots: PropTypes.bool,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nTimeline.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n showArea: true,\n showDots: false,\n}\n\nexport default Timeline\n"],"names":["b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Fragment","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextConsumer","Lazy","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","reactIsModule","exports","require$$0","require$$1","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","s","arguments","length","key","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","propTypesModule","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","push","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","ascending","NaN","bisector","compare","ascendingComparator","left","lo","hi","mid","right","bisectRight","extent","valueof","min","max","slice","constant$3","identity$3","sequence","start","stop","Math","ceil","range","e10","sqrt","e5","e2","tickIncrement","count","power","floor","log","LN10","pow","tickStep","step0","abs","step1","sturges","LN2","max$1","initRange","domain","Map","each","set","o","Set","get","remove","property","clear","size","empty","proto","add","implicit","ordinal","index","unknown","scale","_","copy","apply","band","bandwidth","undefined","ordinalRange","round","paddingInner","paddingOuter","align","rescale","reverse","rangeRound","padding","define","factory","extend","parent","definition","create","Color","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","toString","Hsl","hslConvert","hsl2rgb","m1","m2","constant$2","gamma","nogamma","exponential","constant","linear","channels","displayable","formatHsl","darker","rgbGamma","end","colorRgb","numberArray","genericArray","nb","na","date$1","setTime","interpolateNumber","reA","reB","am","bm","bs","bi","lastIndex","one","zero","interpolateValue","date","ArrayBuffer","isView","DataView","isNumberArray","valueOf","interpolateRound","number$1","unit","identity","normalize","clamper","bimap","interpolate","d0","d1","r0","r1","polymap","j","bisect","clamp","continuous","transform","untransform","piecewise","output","input","invert","transformer","formatDecimalParts","toExponential","indexOf","coefficient","exponent","prefixExponent","re","formatSpecifier","specifier","match","FormatSpecifier","fill","sign","width","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","replace","toPrecision","X","toUpperCase","identity$1","locale","formatPrefix","prefixes","formatLocale$1","grouping","thousands","group","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","prefix","test","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i1","i0","formatTrim","charCodeAt","Infinity","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","ticks","isFinite","nice","formatLocale","t0","t1","newInterval","floori","offseti","field","interval","offset","previous","filter","millisecond","utcMillisecond","second","getMilliseconds","getUTCSeconds","utcSecond","minute","getSeconds","getMinutes","timeMinute","hour","getHours","timeHour","day","setHours","setDate","getDate","getTimezoneOffset","timeDay","weekday","getDay","sunday","monday","thursday","month","setMonth","getMonth","getFullYear","timeMonth","year","setFullYear","timeYear","utcDay","setUTCHours","setUTCDate","getUTCDate","utcDay$1","utcWeekday","getUTCDay","utcSunday","utcMonday","utcThursday","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","utcYear$1","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","B","G","I","Y","utcFormats","parses","parseSpecifier","charAt","newParse","week","parse","utcFormat","utcParse","defaultLocale","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","x0","x1","MapShim","getIndex","arr","result","some","class_1","__entries__","defineProperty","enumerable","configurable","delete","splice","callback","ctx","_i","_a","isBrowser","window","document","global$1","global","self","requestAnimationFrame$1","requestAnimationFrame","setTimeout","now","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","addEventListener","observe","attributes","childList","characterData","subtree","removeEventListener","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","writable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","reduce","position","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","top","bottom","height","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","_this","observation","WeakMap","ResizeObserver","method","accessorPropsType","callAccessor","accessor","dimensionsPropsType","marginTop","marginRight","marginBottom","marginLeft","combineChartDimensions","dimensions","parsedDimensions","boundedHeight","boundedWidth","useChartDimensions","passedSettings","ref","useRef","changeWidth","useState","changeHeight","useEffect","current","resizeObserver","newSettings","useUniqueId","useId","css","insertAt","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","ChartContext","createContext","Chart","children","label","React","Provider","className","role","propTypes","defaultProps","Bars","keyAccessor","xAccessor","yAccessor","widthAccessor","heightAccessor","onMouseEnter","onMouseLeave","onMouseMove","_extends","axisComponentsByDimension","formatTick","numberOfTicks","tickOffset","x2","tick","y2","Axis","dimension","useContext","Component","Legend","items","isVertical","display","flexDirection","flexWrap","justifyContent","alignItems","gap","fontSize","flexShrink","item","borderRadius","background","COL_STYLE","ROW_STYLE","ChartLayout","wrapperRef","legendItems","showLegend","legendPosition","tooltip","isHorizontal","isLeading","legend","Tooltip","visible","pointerEvents","border","lineHeight","boxShadow","zIndex","whiteSpace","useTooltip","setTooltip","showTooltip","useCallback","getBoundingClientRect","clientX","clientY","moveTooltip","hideTooltip","fmt","BarChart","xLabel","yLabel","barPadding","formatYTick","yMin","xScale","useMemo","scaleBand","yScale","scaleLinear","barStyle","handleEnter","handleMove","flex","minHeight","minWidth","Boolean","widthAccessorScaled","Gradient","id","colors","gradientUnits","spreadMethod","stopColor","DEFAULT_GRADIENT","fmtFixed","Histogram","gradientColors","thresholds","formatXTick","gradientId","numberOfThresholds","bins","threshold","histogram","xz","tz","shift","pop","bin","resolvedGradientColors","tickFmt","pi","PI","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","atan2","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","context","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","curveLinear","line","pointX","pointY","defined","curve","defined0","lineStart","lineEnd","point","descending","areaStart","_line","areaEnd","_point","slope3","that","h0","h1","s0","s1","slope2","MonotoneX","none$1","series","order","none","stackValue","_t0","schemeSet2","DEFAULT_MARGIN","PieChart","valueAccessor","labelAccessor","showLabels","colorScale","scaleOrdinal","resolvedInnerRadius","arcGenerator","labelArc","arcs","sortValues","sort","pie","sum","pa","total","handleSliceEnter","datum","handleSliceMove","displayLabels","tooltipValue","tooltipPct","textAnchor","dominantBaseline","Circles","radius","ScatterPlot","ext","StackedBarChart","orderNone","offsetNone","oz","kz","sz","sij","ki","si","category","generators","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","Line","y0Accessor","interpolation","lineGenerator","formatDate","formatTooltipDate","Timeline","showArea","showDots","hoveredIndex","setHoveredIndex","timeWeek","timeSecond","timeMillisecond","scaleTime","dateBisector","handleMouseMove","svgEl","currentTarget","ownerSVGElement","svgLeft","mouseX","idx","handleMouseLeave","xAccessorScaled","yAccessorScaled","y0AccessorScaled","hoveredDatum","yFmt","xFmt","stroke"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index d1a4a76..c6bd591 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,4 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react");function n(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var e=n(t),r={exports:{}},i={exports:{}},o={},a="function"==typeof Symbol&&Symbol.for,u=a?Symbol.for("react.element"):60103,c=a?Symbol.for("react.portal"):60106,f=a?Symbol.for("react.fragment"):60107,s=a?Symbol.for("react.strict_mode"):60108,l=a?Symbol.for("react.profiler"):60114,h=a?Symbol.for("react.provider"):60109,d=a?Symbol.for("react.context"):60110,p=a?Symbol.for("react.async_mode"):60111,y=a?Symbol.for("react.concurrent_mode"):60111,v=a?Symbol.for("react.forward_ref"):60112,g=a?Symbol.for("react.suspense"):60113,b=a?Symbol.for("react.suspense_list"):60120,m=a?Symbol.for("react.memo"):60115,_=a?Symbol.for("react.lazy"):60116,x=a?Symbol.for("react.block"):60121,w=a?Symbol.for("react.fundamental"):60117,M=a?Symbol.for("react.responder"):60118,E=a?Symbol.for("react.scope"):60119;function A(t){if("object"==typeof t&&null!==t){var n=t.$$typeof;switch(n){case u:switch(t=t.type){case p:case y:case f:case l:case s:case g:return t;default:switch(t=t&&t.$$typeof){case d:case v:case _:case m:case h:return t;default:return n}}case c:return n}}}function T(t){return A(t)===y}o.AsyncMode=p,o.ConcurrentMode=y,o.ContextConsumer=d,o.ContextProvider=h,o.Element=u,o.ForwardRef=v,o.Fragment=f,o.Lazy=_,o.Memo=m,o.Portal=c,o.Profiler=l,o.StrictMode=s,o.Suspense=g,o.isAsyncMode=function(t){return T(t)||A(t)===p},o.isConcurrentMode=T,o.isContextConsumer=function(t){return A(t)===d},o.isContextProvider=function(t){return A(t)===h},o.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===u},o.isForwardRef=function(t){return A(t)===v},o.isFragment=function(t){return A(t)===f},o.isLazy=function(t){return A(t)===_},o.isMemo=function(t){return A(t)===m},o.isPortal=function(t){return A(t)===c},o.isProfiler=function(t){return A(t)===l},o.isStrictMode=function(t){return A(t)===s},o.isSuspense=function(t){return A(t)===g},o.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===f||t===y||t===l||t===s||t===g||t===b||"object"==typeof t&&null!==t&&(t.$$typeof===_||t.$$typeof===m||t.$$typeof===h||t.$$typeof===d||t.$$typeof===v||t.$$typeof===w||t.$$typeof===M||t.$$typeof===E||t.$$typeof===x)},o.typeOf=A;var k={}; +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),r={exports:{}},o={exports:{}},i={},a="function"==typeof Symbol&&Symbol.for,u=a?Symbol.for("react.element"):60103,s=a?Symbol.for("react.portal"):60106,l=a?Symbol.for("react.fragment"):60107,c=a?Symbol.for("react.strict_mode"):60108,f=a?Symbol.for("react.profiler"):60114,h=a?Symbol.for("react.provider"):60109,d=a?Symbol.for("react.context"):60110,p=a?Symbol.for("react.async_mode"):60111,m=a?Symbol.for("react.concurrent_mode"):60111,g=a?Symbol.for("react.forward_ref"):60112,y=a?Symbol.for("react.suspense"):60113,v=a?Symbol.for("react.suspense_list"):60120,b=a?Symbol.for("react.memo"):60115,x=a?Symbol.for("react.lazy"):60116,w=a?Symbol.for("react.block"):60121,_=a?Symbol.for("react.fundamental"):60117,M=a?Symbol.for("react.responder"):60118,E=a?Symbol.for("react.scope"):60119;function T(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case u:switch(e=e.type){case p:case m:case l:case f:case c:case y:return e;default:switch(e=e&&e.$$typeof){case d:case g:case x:case b:case h:return e;default:return t}}case s:return t}}}function A(e){return T(e)===m}i.AsyncMode=p,i.ConcurrentMode=m,i.ContextConsumer=d,i.ContextProvider=h,i.Element=u,i.ForwardRef=g,i.Fragment=l,i.Lazy=x,i.Memo=b,i.Portal=s,i.Profiler=f,i.StrictMode=c,i.Suspense=y,i.isAsyncMode=function(e){return A(e)||T(e)===p},i.isConcurrentMode=A,i.isContextConsumer=function(e){return T(e)===d},i.isContextProvider=function(e){return T(e)===h},i.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===u},i.isForwardRef=function(e){return T(e)===g},i.isFragment=function(e){return T(e)===l},i.isLazy=function(e){return T(e)===x},i.isMemo=function(e){return T(e)===b},i.isPortal=function(e){return T(e)===s},i.isProfiler=function(e){return T(e)===f},i.isStrictMode=function(e){return T(e)===c},i.isSuspense=function(e){return T(e)===y},i.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===l||e===m||e===f||e===c||e===y||e===v||"object"==typeof e&&null!==e&&(e.$$typeof===x||e.$$typeof===b||e.$$typeof===h||e.$$typeof===d||e.$$typeof===g||e.$$typeof===_||e.$$typeof===M||e.$$typeof===E||e.$$typeof===w)},i.typeOf=T;var k={}; /** @license React v16.13.1 * react-is.development.js * @@ -6,10 +6,10 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */"production"!==process.env.NODE_ENV&&function(){var t="function"==typeof Symbol&&Symbol.for,n=t?Symbol.for("react.element"):60103,e=t?Symbol.for("react.portal"):60106,r=t?Symbol.for("react.fragment"):60107,i=t?Symbol.for("react.strict_mode"):60108,o=t?Symbol.for("react.profiler"):60114,a=t?Symbol.for("react.provider"):60109,u=t?Symbol.for("react.context"):60110,c=t?Symbol.for("react.async_mode"):60111,f=t?Symbol.for("react.concurrent_mode"):60111,s=t?Symbol.for("react.forward_ref"):60112,l=t?Symbol.for("react.suspense"):60113,h=t?Symbol.for("react.suspense_list"):60120,d=t?Symbol.for("react.memo"):60115,p=t?Symbol.for("react.lazy"):60116,y=t?Symbol.for("react.block"):60121,v=t?Symbol.for("react.fundamental"):60117,g=t?Symbol.for("react.responder"):60118,b=t?Symbol.for("react.scope"):60119;function m(t){if("object"==typeof t&&null!==t){var h=t.$$typeof;switch(h){case n:var y=t.type;switch(y){case c:case f:case r:case o:case i:case l:return y;default:var v=y&&y.$$typeof;switch(v){case u:case s:case p:case d:case a:return v;default:return h}}case e:return h}}}var _=c,x=f,w=u,M=a,E=n,A=s,T=r,S=p,N=d,C=e,P=o,O=i,R=l,L=!1;function z(t){return m(t)===f}k.AsyncMode=_,k.ConcurrentMode=x,k.ContextConsumer=w,k.ContextProvider=M,k.Element=E,k.ForwardRef=A,k.Fragment=T,k.Lazy=S,k.Memo=N,k.Portal=C,k.Profiler=P,k.StrictMode=O,k.Suspense=R,k.isAsyncMode=function(t){return L||(L=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),z(t)||m(t)===c},k.isConcurrentMode=z,k.isContextConsumer=function(t){return m(t)===u},k.isContextProvider=function(t){return m(t)===a},k.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===n},k.isForwardRef=function(t){return m(t)===s},k.isFragment=function(t){return m(t)===r},k.isLazy=function(t){return m(t)===p},k.isMemo=function(t){return m(t)===d},k.isPortal=function(t){return m(t)===e},k.isProfiler=function(t){return m(t)===o},k.isStrictMode=function(t){return m(t)===i},k.isSuspense=function(t){return m(t)===l},k.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===r||t===f||t===o||t===i||t===l||t===h||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===d||t.$$typeof===a||t.$$typeof===u||t.$$typeof===s||t.$$typeof===v||t.$$typeof===g||t.$$typeof===b||t.$$typeof===y)},k.typeOf=m}(),"production"===process.env.NODE_ENV?i.exports=o:i.exports=k + */"production"!==process.env.NODE_ENV&&function(){var e="function"==typeof Symbol&&Symbol.for,t=e?Symbol.for("react.element"):60103,n=e?Symbol.for("react.portal"):60106,r=e?Symbol.for("react.fragment"):60107,o=e?Symbol.for("react.strict_mode"):60108,i=e?Symbol.for("react.profiler"):60114,a=e?Symbol.for("react.provider"):60109,u=e?Symbol.for("react.context"):60110,s=e?Symbol.for("react.async_mode"):60111,l=e?Symbol.for("react.concurrent_mode"):60111,c=e?Symbol.for("react.forward_ref"):60112,f=e?Symbol.for("react.suspense"):60113,h=e?Symbol.for("react.suspense_list"):60120,d=e?Symbol.for("react.memo"):60115,p=e?Symbol.for("react.lazy"):60116,m=e?Symbol.for("react.block"):60121,g=e?Symbol.for("react.fundamental"):60117,y=e?Symbol.for("react.responder"):60118,v=e?Symbol.for("react.scope"):60119;function b(e){if("object"==typeof e&&null!==e){var h=e.$$typeof;switch(h){case t:var m=e.type;switch(m){case s:case l:case r:case i:case o:case f:return m;default:var g=m&&m.$$typeof;switch(g){case u:case c:case p:case d:case a:return g;default:return h}}case n:return h}}}var x=s,w=l,_=u,M=a,E=t,T=c,A=r,C=p,S=d,O=n,N=i,L=o,P=f,D=!1;function R(e){return b(e)===l}k.AsyncMode=x,k.ConcurrentMode=w,k.ContextConsumer=_,k.ContextProvider=M,k.Element=E,k.ForwardRef=T,k.Fragment=A,k.Lazy=C,k.Memo=S,k.Portal=O,k.Profiler=N,k.StrictMode=L,k.Suspense=P,k.isAsyncMode=function(e){return D||(D=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),R(e)||b(e)===s},k.isConcurrentMode=R,k.isContextConsumer=function(e){return b(e)===u},k.isContextProvider=function(e){return b(e)===a},k.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},k.isForwardRef=function(e){return b(e)===c},k.isFragment=function(e){return b(e)===r},k.isLazy=function(e){return b(e)===p},k.isMemo=function(e){return b(e)===d},k.isPortal=function(e){return b(e)===n},k.isProfiler=function(e){return b(e)===i},k.isStrictMode=function(e){return b(e)===o},k.isSuspense=function(e){return b(e)===f},k.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===r||e===l||e===i||e===o||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===p||e.$$typeof===d||e.$$typeof===a||e.$$typeof===u||e.$$typeof===c||e.$$typeof===g||e.$$typeof===y||e.$$typeof===v||e.$$typeof===m)},k.typeOf=b}(),"production"===process.env.NODE_ENV?o.exports=i:o.exports=k /* object-assign (c) Sindre Sorhus @license MIT -*/;var S=Object.getOwnPropertySymbols,N=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;function P(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}var O=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var n={},e=0;e<10;e++)n["_"+String.fromCharCode(e)]=e;var r=Object.getOwnPropertyNames(n).map((function(t){return n[t]}));if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}()?Object.assign:function(t,n){for(var e,r,i=P(t),o=1;o1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),W;function n(n,e,r,i,u){for(var c=n[e],f=0;f0?", expected one of type ["+u.join(", ")+"]":"")+".")}))},shape:function(t){return u((function(n,e,r,i,o){var u=n[e],c=l(u);if("object"!==c)return new a("Invalid "+i+" `"+o+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");for(var s in t){var d=t[s];if("function"!=typeof d)return f(r,i,o,s,h(d));var p=d(u,s,r,i,o+"."+s,Y);if(p)return p}return null}))},exact:function(t){return u((function(n,e,r,i,o){var u=n[e],c=l(u);if("object"!==c)return new a("Invalid "+i+" `"+o+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");var s=I({},n[e],t);for(var d in s){var p=t[d];if($(t,d)&&"function"!=typeof p)return f(r,i,o,d,h(p));if(!p)return new a("Invalid "+i+" `"+o+"` key `"+d+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(n[e],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(t),null," "));var y=p(u,d,r,i,o+"."+d,Y);if(y)return y}return null}))}};function o(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}function a(t,n){this.message=t,this.data=n&&"object"==typeof n?n:{},this.stack=""}function u(t){if("production"!==process.env.NODE_ENV)var e={},i=0;function o(o,u,c,f,s,l,h){if(f=f||r,l=l||c,h!==Y){if(n){var d=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw d.name="Invariant Violation",d}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var p=f+":"+c;!e[p]&&i<3&&(V("You are manually calling a React.PropTypes validation function for the `"+l+"` prop on `"+f+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),e[p]=!0,i++)}}return null==u[c]?o?null===u[c]?new a("The "+s+" `"+l+"` is marked as required in `"+f+"`, but its value is `null`."):new a("The "+s+" `"+l+"` is marked as required in `"+f+"`, but its value is `undefined`."):null:t(u,c,f,s,l)}var u=o.bind(null,!1);return u.isRequired=o.bind(null,!0),u}function c(t){return u((function(n,e,r,i,o,u){var c=n[e];return l(c)!==t?new a("Invalid "+i+" `"+o+"` of type `"+h(c)+"` supplied to `"+r+"`, expected `"+t+"`.",{expectedType:t}):null}))}function f(t,n,e,r,i){return new a((t||"React class")+": "+n+" type `"+e+"."+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+i+"`.")}function s(n){switch(typeof n){case"number":case"string":case"undefined":return!0;case"boolean":return!n;case"object":if(Array.isArray(n))return n.every(s);if(null===n||t(n))return!0;var r=function(t){var n=t&&(e&&t[e]||t["@@iterator"]);if("function"==typeof n)return n}(n);if(!r)return!1;var i,o=r.call(n);if(r!==n.entries){for(;!(i=o.next()).done;)if(!s(i.value))return!1}else for(;!(i=o.next()).done;){var a=i.value;if(a&&!s(a[1]))return!1}return!0;default:return!1}}function l(t){var n=typeof t;return Array.isArray(t)?"array":t instanceof RegExp?"object":function(t,n){return"symbol"===t||!!n&&("Symbol"===n["@@toStringTag"]||"function"==typeof Symbol&&n instanceof Symbol)}(n,t)?"symbol":n}function h(t){if(null==t)return""+t;var n=l(t);if("object"===n){if(t instanceof Date)return"date";if(t instanceof RegExp)return"regexp"}return n}function d(t){var n=h(t);switch(n){case"array":case"object":return"an "+n;case"boolean":case"date":case"regexp":return"a "+n;default:return n}}return a.prototype=Error.prototype,i.checkPropTypes=H,i.resetWarningCache=H.resetWarningCache,i.PropTypes=i,i}(Z.isElement,!0)}else r.exports=function(){function t(t,n,e,r,i,o){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==o){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function n(){return t}t.isRequired=t;var e={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:n,element:t,elementType:t,instanceOf:n,node:t,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:G,resetWarningCache:X};return e.PropTypes=e,e}();var Q=r.exports;function J(t,n){return tn?1:t>=n?0:NaN}function K(t){return 1===t.length&&(t=function(t){return function(n,e){return J(t(n),e)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var tt=K(J),nt=tt.right,et=tt.left;function rt(t,n){return[t,n]}function it(t){return null===t?NaN:+t}function ot(t,n){var e,r,i=t.length,o=0,a=-1,u=0,c=0;if(null==n)for(;++a1)return c/(o-1)}function at(t,n){var e=ot(t,n);return e?Math.sqrt(e):e}function ut(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a=e)for(r=i=e;++ae&&(r=e),i=e)for(r=i=e;++ae&&(r=e),i0)return[t];if((r=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u=0?(o>=pt?10:o>=yt?5:o>=vt?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=pt?10:o>=yt?5:o>=vt?2:1)}function mt(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=pt?i*=10:o>=yt?i*=5:o>=vt&&(i*=2),ns;)l.pop(),--h;var d,p=new Array(h+1);for(i=0;i<=h;++i)(d=p[i]=[]).x0=i>0?l[i-1]:f,d.x1=i=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function Mt(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r}function Et(t){for(var n,e,r,i=t.length,o=-1,a=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function At(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}function Tt(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function jt(t,n){for(var e,r=0,i=t.length;r0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),$t.hasOwnProperty(n)?{space:$t[n],local:t}:t}function Vt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Yt&&n.documentElement.namespaceURI===Yt?n.createElement(t):n.createElementNS(e,t)}}function Wt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Xt(t){var n=Ht(t);return(n.local?Wt:Vt)(n)}function Gt(){}function Zt(t){return null==t?Gt:function(){return this.querySelector(t)}}function Qt(){return[]}function Jt(t){return null==t?Qt:function(){return this.querySelectorAll(t)}}function Kt(t){return function(){return this.matches(t)}}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}nn.prototype={constructor:nn,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;un?1:t>=n?0:NaN}function an(t){return function(){this.removeAttribute(t)}}function un(t){return function(){this.removeAttributeNS(t.space,t.local)}}function cn(t,n){return function(){this.setAttribute(t,n)}}function fn(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function sn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function ln(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function hn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function dn(t){return function(){this.style.removeProperty(t)}}function pn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function yn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function vn(t,n){return t.style.getPropertyValue(n)||hn(t).getComputedStyle(t,null).getPropertyValue(n)}function gn(t){return function(){delete this[t]}}function bn(t,n){return function(){this[t]=n}}function mn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function _n(t){return t.trim().split(/^|\s+/)}function xn(t){return t.classList||new wn(t)}function wn(t){this._node=t,this._names=_n(t.getAttribute("class")||"")}function Mn(t,n){for(var e=xn(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Un={},jn=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(Un={mouseenter:"mouseover",mouseleave:"mouseout"}));function In(t,n,e){return t=Yn(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Yn(t,n,e){return function(r){var i=jn;jn=r;try{t.call(this,this.__data__,n,e)}finally{jn=i}}}function $n(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function Hn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=_&&(_=m+1);!(b=v[_])&&++_=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=on);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?dn:"function"==typeof n?yn:pn)(t,n,null==e?"":e)):vn(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?gn:"function"==typeof n?mn:bn)(t,n)):this.node()[t]},classed:function(t,n){var e=_n(t+"");if(arguments.length<2){for(var r=xn(this.node()),i=-1,o=e.length;++i>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Be(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Be(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Te.exec(t))?new Ue(n[1],n[2],n[3],1):(n=ke.exec(t))?new Ue(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Se.exec(t))?Be(n[1],n[2],n[3],n[4]):(n=Ne.exec(t))?Be(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ce.exec(t))?$e(n[1],n[2]/100,n[3]/100,1):(n=Pe.exec(t))?$e(n[1],n[2]/100,n[3]/100,n[4]):Oe.hasOwnProperty(t)?De(Oe[t]):"transparent"===t?new Ue(NaN,NaN,NaN,0):null}function De(t){return new Ue(t>>16&255,t>>8&255,255&t,1)}function Be(t,n,e,r){return r<=0&&(t=n=e=NaN),new Ue(t,n,e,r)}function qe(t){return t instanceof _e||(t=ze(t)),t?new Ue((t=t.rgb()).r,t.g,t.b,t.opacity):new Ue}function Fe(t,n,e,r){return 1===arguments.length?qe(t):new Ue(t,n,e,null==r?1:r)}function Ue(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function je(){return"#"+Ye(this.r)+Ye(this.g)+Ye(this.b)}function Ie(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Ye(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function $e(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new We(t,n,e,r)}function He(t){if(t instanceof We)return new We(t.h,t.s,t.l,t.opacity);if(t instanceof _e||(t=ze(t)),!t)return new We;if(t instanceof We)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&c<1?0:a,new We(a,u,c,t.opacity)}function Ve(t,n,e,r){return 1===arguments.length?He(t):new We(t,n,e,null==r?1:r)}function We(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Xe(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}be(_e,ze,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Re,formatHex:Re,formatHsl:function(){return He(this).formatHsl()},formatRgb:Le,toString:Le}),be(Ue,Fe,me(_e,{brighter:function(t){return t=null==t?xe:Math.pow(xe,t),new Ue(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ue(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:je,formatHex:je,formatRgb:Ie,toString:Ie})),be(We,Ve,me(_e,{brighter:function(t){return t=null==t?xe:Math.pow(xe,t),new We(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new We(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Ue(Xe(t>=240?t-240:t+120,i,r),Xe(t,i,r),Xe(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var Ge=Math.PI/180,Ze=180/Math.PI,Qe=4/29,Je=6/29,Ke=3*Je*Je;function tr(t){if(t instanceof er)return new er(t.l,t.a,t.b,t.opacity);if(t instanceof fr)return sr(t);t instanceof Ue||(t=qe(t));var n,e,r=ar(t.r),i=ar(t.g),o=ar(t.b),a=rr((.2225045*r+.7168786*i+.0606169*o)/1);return r===i&&i===o?n=e=a:(n=rr((.4360747*r+.3850649*i+.1430804*o)/.96422),e=rr((.0139322*r+.0971045*i+.7141733*o)/.82521)),new er(116*a-16,500*(n-a),200*(a-e),t.opacity)}function nr(t,n,e,r){return 1===arguments.length?tr(t):new er(t,n,e,null==r?1:r)}function er(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function rr(t){return t>.008856451679035631?Math.pow(t,1/3):t/Ke+Qe}function ir(t){return t>Je?t*t*t:Ke*(t-Qe)}function or(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ar(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ur(t){if(t instanceof fr)return new fr(t.h,t.c,t.l,t.opacity);if(t instanceof er||(t=tr(t)),0===t.a&&0===t.b)return new fr(NaN,0=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r180||e<-180?e-360*Math.round(e/360):e):Ar(isNaN(t)?n:t)}function Sr(t){return 1==(t=+t)?Nr:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Ar(isNaN(n)?e:n)}}function Nr(t,n){var e=n-t;return e?Tr(t,e):Ar(isNaN(t)?n:t)}be(xr,_r,me(_e,{brighter:function(t){return t=null==t?xe:Math.pow(xe,t),new xr(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new xr(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Ge,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new Ue(255*(n+e*(lr*r+hr*i)),255*(n+e*(dr*r+pr*i)),255*(n+e*(yr*r)),this.opacity)}}));var Cr=function t(n){var e=Sr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=Nr(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Pr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:qr(e,r)})),o=jr.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:qr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:qr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:qr(t,e)},{i:u-2,x:qr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--yi}function Si(){mi=(bi=xi.now())+_i,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=di,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:di=n);pi=t,Ci(r)}(),mi=0}}function Ni(){var t=xi.now(),n=t-bi;n>1e3&&(_i-=n,bi=t)}function Ci(t){yi||(vi&&(vi=clearTimeout(vi)),t-mi>24?(t<1/0&&(vi=setTimeout(Si,t-xi.now()-_i)),gi&&(gi=clearInterval(gi))):(gi||(bi=xi.now(),gi=setInterval(Ni,1e3)),yi=1,wi(Si)))}function Pi(t,n,e){var r=new Ai;return n=null==n?0:+n,r.restart((function(e){r.stop(),t(e+n)}),n,e),r}Ai.prototype=Ti.prototype={constructor:Ai,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Mi():+e)+(null==n?0:+n),this._next||pi===this||(pi?pi._next=this:di=this,pi=this),this._call=t,this._time=e,Ci()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ci())}};var Oi=qt("start","end","cancel","interrupt"),Ri=[];function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(1!==e.state)return c();for(f in i)if((h=i[f]).name===e.name){if(3===h.state)return Pi(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f0)throw new Error("too late; already scheduled");return e}function Di(t,n){var e=Bi(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Bi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function qi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Fi(t,n){var e,r;return function(){var i=Di(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?zi:Di;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}var oo=Kn.prototype.constructor;function ao(t){return function(){this.style.removeProperty(t)}}function uo(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function co(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&uo(t,o,e)),r}return o._value=n,o}function fo(t){return function(n){this.textContent=t.call(this,n)}}function so(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&fo(r)),n}return r._value=t,r}var lo=0;function ho(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function po(t){return Kn().transition(t)}function yo(){return++lo}var vo=Kn.prototype;function go(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function bo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}ho.prototype=po.prototype={constructor:ho,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Zt(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;aMath.abs(t[1]-L[1])?v=!0:y=!0),L=t,p=!0,$o(),U()}function U(){var t;switch(N=L[0]-R[0],C=L[1]-R[1],m){case Vo:case Ho:_&&(N=Math.max(A-e,Math.min(k-c,N)),i=e+N,l=c+N),x&&(C=Math.max(T-a,Math.min(S-h,C)),u=a+C,d=h+C);break;case Wo:_<0?(N=Math.max(A-e,Math.min(k-e,N)),i=e+N,l=c):_>0&&(N=Math.max(A-c,Math.min(k-c,N)),i=e,l=c+N),x<0?(C=Math.max(T-a,Math.min(S-a,C)),u=a+C,d=h):x>0&&(C=Math.max(T-h,Math.min(S-h,C)),u=a,d=h+C);break;case Xo:_&&(i=Math.max(A,Math.min(k,e-N*_)),l=Math.max(A,Math.min(k,c+N*_))),x&&(u=Math.max(T,Math.min(S,a-C*x)),d=Math.max(T,Math.min(S,h+C*x)))}l0&&(e=i-N),x<0?h=d-C:x>0&&(a=u-C),m=Vo,B.attr("cursor",na.selection),U());break;default:return}$o()}function Y(){switch(jn.keyCode){case 16:P&&(y=v=P=!1,U());break;case 18:m===Xo&&(_<0?c=l:_>0&&(e=i),x<0?h=d:x>0&&(a=u),m=Wo,U());break;case 32:m===Vo&&(jn.altKey?(_&&(c=l-N*_,e=i+N*_),x&&(h=d-C*x,a=u+C*x),m=Xo):(_<0?c=l:_>0&&(e=i),x<0?h=d:x>0&&(a=u),m=Wo),B.attr("cursor",na[b]),U());break;default:return}$o()}}function d(){s(this,arguments).moved()}function p(){s(this,arguments).ended()}function y(){var n=this.__brush||{selection:null};return n.extent=Zo(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e){n.selection?n.on("start.brush",(function(){s(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){s(this,arguments).end()})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Yr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,r=arguments,i=n.__brush,o=t.input("function"==typeof e?e.apply(n,r):e,i.extent),a=s(n,r).beforestart();qi(n),i.selection=null===o?null:o,f.call(n),a.start().brush().end()}))},c.clear=function(t){c.move(t,null)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(n){Wn(new Io(c,n,t.output(this.state.selection)),a.apply,a,[n,this.that,this.args])}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:jo(Zo(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:jo(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:jo(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var da=Math.cos,pa=Math.sin,ya=Math.PI,va=ya/2,ga=2*ya,ba=Math.max;function ma(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}var _a=Array.prototype.slice;function xa(t){return function(){return t}}var wa=Math.PI,Ma=2*wa,Ea=Ma-1e-6;function Aa(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ta(){return new Aa}function ka(t){return t.source}function Sa(t){return t.target}function Na(t){return t.radius}function Ca(t){return t.startAngle}function Pa(t){return t.endAngle}Aa.prototype=Ta.prototype={constructor:Aa,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,y=h*h+d*d,v=Math.sqrt(p),g=Math.sqrt(l),b=i*Math.tan((wa-Math.acos((p+l-y)/(2*v*g)))/2),m=b/g,_=b/v;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*f)+","+(n+m*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+_*u)+","+(this._y1=n+_*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%Ma+Ma),l>Ea?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=wa)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};function Oa(){}function Ra(t,n){var e=new Oa;if(t instanceof Oa)t.each((function(t,n){e.set(n,t)}));else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++ir!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function Va(t,n,e){var r;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&function(t,n,e){return t<=n&&n<=e||e<=n&&n<=t}(t[r=+(t[0]===n[0])],e[r],n[r])}function Wa(){}var Xa=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Ga(){var t=1,n=1,e=_t,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ia);else{var r=ut(t),i=r[0],a=r[1];n=mt(i,a,n),n=dt(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map((function(n){return o(t,n)}))}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,Xa[f<<1].forEach(p);for(;++o=r,Xa[c|f<<1].forEach(p);Xa[f<<0].forEach(p);for(;++u=r,s=e[u*t]>=r,Xa[f<<1|s<<2].forEach(p);++o=r,l=s,s=e[u*t+o+1]>=r,Xa[c|f<<1|s<<2|l<<3].forEach(p);Xa[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,Xa[s<<2].forEach(p);for(;++o=r,Xa[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}Xa[s<<3].forEach(p)}(e,i,(function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n0?o.push([t]):u.push(t)})),u.forEach((function(t){for(var n,e=0,r=o.length;e0&&a0&&u0&&o>0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Ya(ja.call(t)):Ya(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:Wa,i):r===u},i}function Za(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function Qa(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function Ja(t){return t[0]}function Ka(t){return t[1]}function tu(){return 1}var nu={},eu={};function ru(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function iu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function ou(t,n){var e=t+"",r=e.length;return r9999?"+"+ou(t,6):ou(t,4)}(t.getUTCFullYear())+"-"+ou(t.getUTCMonth()+1,2)+"-"+ou(t.getUTCDate(),2)+(i?"T"+ou(n,2)+":"+ou(e,2)+":"+ou(r,2)+"."+ou(i,3)+"Z":r?"T"+ou(n,2)+":"+ou(e,2)+":"+ou(r,2)+"Z":e||n?"T"+ou(n,2)+":"+ou(e,2)+"Z":"")}function uu(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return eu;if(f)return f=!1,nu;var n,r,i=a;if(34===t.charCodeAt(i)){for(;a++=o?c=!0:10===(r=t.charCodeAt(a++))?f=!0:13===r&&(f=!0,10===t.charCodeAt(a)&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a=(o=(y+g)/2))?y=o:g=o,(s=e>=(a=(v+b)/2))?v=a:b=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(y+g)/2))?y=o:g=o,(s=e>=(a=(v+b)/2))?v=a:b=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Uu(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function ju(t){return t[0]}function Iu(t){return t[1]}function Yu(t,n,e){var r=new $u(null==n?ju:n,null==e?Iu:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function $u(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Hu(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Vu=Yu.prototype=$u.prototype;function Wu(t){return t.x+t.vx}function Xu(t){return t.y+t.vy}function Gu(t){return t.index}function Zu(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function Qu(t){return t.x}function Ju(t){return t.y}Vu.copy=function(){var t,n,e=new $u(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Hu(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Hu(n));return e},Vu.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return Fu(this.cover(n,e),n,e,t)},Vu.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;es&&(s=r),il&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;et||t>=i||r>n||n>=o;)switch(u=(nh||(o=c.y0)>d||(a=c.x1)=g)<<1|t>=v)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var b=t-+this._x.call(null,y.data),m=n-+this._y.call(null,y.data),_=b*b+m*m;if(_=(u=(p+v)/2))?p=u:v=u,(s=a>=(c=(y+g)/2))?y=c:g=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Vu.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]}function nc(t){return(t=tc(Math.abs(t)))?t[1]:NaN}var ec,rc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ic(t){if(!(n=rc.exec(t)))throw new Error("invalid format: "+t);var n;return new oc({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function oc(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function ac(t,n){var e=tc(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}ic.prototype=oc.prototype,oc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var uc={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return ac(100*t,n)},r:ac,s:function(t,n){var e=tc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(ec=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+tc(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function cc(t){return t}var fc,sc,lc,hc=Array.prototype.map,dc=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function pc(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?cc:(n=hc.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?cc:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(hc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"-":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=ic(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,y=t.comma,v=t.precision,g=t.trim,b=t.type;"n"===b?(y=!0,b="g"):uc[b]||(void 0===v&&(v=12),g=!0,b="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var m="$"===h?i:"#"===h&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",_="$"===h?o:/[%p]/.test(b)?c:"",x=uc[b],w=/[defgprs%]/.test(b);function M(t){var i,o,c,h=m,M=_;if("c"===b)M=x(t)+M,t="";else{var E=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),v),g&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),E&&0==+t&&"+"!==l&&(E=!1),h=(E?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===b?dc[8+ec/3]:"")+M+(E&&"("===l?")":""),w)for(i=-1,o=t.length;++i(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}y&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,T=A>1)+h+t+M+T.slice(A);break;default:t=T+h+t+M}return u(t)}return v=void 0===v?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=ic(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(nc(n)/3))),i=Math.pow(10,-r),o=dc[8+r/3];return function(t){return e(i*t)+o}}}}function yc(t){return fc=pc(t),sc=fc.format,lc=fc.formatPrefix,fc}function vc(t){return Math.max(0,-nc(Math.abs(t)))}function gc(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(nc(n)/3)))-nc(Math.abs(t)))}function bc(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,nc(n)-nc(t))+1}function mc(){return new _c}function _c(){this.reset()}yc({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),_c.prototype={constructor:_c,reset:function(){this.s=this.t=0},add:function(t){wc(xc,t,this.t),wc(this,xc.s,this.s),this.s?this.t+=xc.t:this.s=xc.t},valueOf:function(){return this.s}};var xc=new _c;function wc(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var Mc=Math.PI,Ec=Mc/2,Ac=Mc/4,Tc=2*Mc,kc=180/Mc,Sc=Mc/180,Nc=Math.abs,Cc=Math.atan,Pc=Math.atan2,Oc=Math.cos,Rc=Math.ceil,Lc=Math.exp,zc=Math.log,Dc=Math.pow,Bc=Math.sin,qc=Math.sign||function(t){return t>0?1:t<0?-1:0},Fc=Math.sqrt,Uc=Math.tan;function jc(t){return t>1?0:t<-1?Mc:Math.acos(t)}function Ic(t){return t>1?Ec:t<-1?-Ec:Math.asin(t)}function Yc(t){return(t=Bc(t/2))*t}function $c(){}function Hc(t,n){t&&Wc.hasOwnProperty(t.type)&&Wc[t.type](t,n)}var Vc={Feature:function(t,n){Hc(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,o=Oc(n=(n*=Sc)/2+Ac),a=Bc(n),u=nf*a,c=tf*o+u*Oc(i),f=u*r*Bc(i);ef.add(Pc(f,c)),Kc=t,tf=o,nf=a}function sf(t){return[Pc(t[1],t[0]),Ic(t[2])]}function lf(t){var n=t[0],e=t[1],r=Oc(e);return[r*Oc(n),r*Bc(n),Bc(e)]}function hf(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function df(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function pf(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function yf(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function vf(t){var n=Fc(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var gf,bf,mf,_f,xf,wf,Mf,Ef,Af,Tf,kf,Sf,Nf,Cf,Pf,Of,Rf,Lf,zf,Df,Bf,qf,Ff,Uf,jf,If,Yf=mc(),$f={point:Hf,lineStart:Wf,lineEnd:Xf,polygonStart:function(){$f.point=Gf,$f.lineStart=Zf,$f.lineEnd=Qf,Yf.reset(),of.polygonStart()},polygonEnd:function(){of.polygonEnd(),$f.point=Hf,$f.lineStart=Wf,$f.lineEnd=Xf,ef<0?(gf=-(mf=180),bf=-(_f=90)):Yf>1e-6?_f=90:Yf<-1e-6&&(bf=-90),Tf[0]=gf,Tf[1]=mf},sphere:function(){gf=-(mf=180),bf=-(_f=90)}};function Hf(t,n){Af.push(Tf=[gf=t,mf=t]),n_f&&(_f=n)}function Vf(t,n){var e=lf([t*Sc,n*Sc]);if(Ef){var r=df(Ef,e),i=df([r[1],-r[0],0],r);vf(i),i=sf(i);var o,a=t-xf,u=a>0?1:-1,c=i[0]*kc*u,f=Nc(a)>180;f^(u*xf_f&&(_f=o):f^(u*xf<(c=(c+360)%360-180)&&c_f&&(_f=n)),f?tJf(gf,mf)&&(mf=t):Jf(t,mf)>Jf(gf,mf)&&(gf=t):mf>=gf?(tmf&&(mf=t)):t>xf?Jf(gf,t)>Jf(gf,mf)&&(mf=t):Jf(t,mf)>Jf(gf,mf)&&(gf=t)}else Af.push(Tf=[gf=t,mf=t]);n_f&&(_f=n),Ef=e,xf=t}function Wf(){$f.point=Vf}function Xf(){Tf[0]=gf,Tf[1]=mf,$f.point=Hf,Ef=null}function Gf(t,n){if(Ef){var e=t-xf;Yf.add(Nc(e)>180?e+(e>0?360:-360):e)}else wf=t,Mf=n;of.point(t,n),Vf(t,n)}function Zf(){of.lineStart()}function Qf(){Gf(wf,Mf),of.lineEnd(),Nc(Yf)>1e-6&&(gf=-(mf=180)),Tf[0]=gf,Tf[1]=mf,Ef=null}function Jf(t,n){return(n-=t)<0?n+360:n}function Kf(t,n){return t[0]-n[0]}function ts(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nMc?t+Math.round(-t/Tc)*Tc:t,n]}function ys(t,n,e){return(t%=Tc)?n||e?ds(gs(t),bs(n,e)):gs(t):n||e?bs(n,e):ps}function vs(t){return function(n,e){return[(n+=t)>Mc?n-Tc:n<-Mc?n+Tc:n,e]}}function gs(t){var n=vs(t);return n.invert=vs(-t),n}function bs(t,n){var e=Oc(t),r=Bc(t),i=Oc(n),o=Bc(n);function a(t,n){var a=Oc(n),u=Oc(t)*a,c=Bc(t)*a,f=Bc(n),s=f*e+u*r;return[Pc(c*i-s*o,u*e-f*r),Ic(s*i+c*o)]}return a.invert=function(t,n){var a=Oc(n),u=Oc(t)*a,c=Bc(t)*a,f=Bc(n),s=f*i-c*o;return[Pc(c*i+f*o,u*e+s*r),Ic(s*e-u*r)]},a}function ms(t){function n(n){return(n=t(n[0]*Sc,n[1]*Sc))[0]*=kc,n[1]*=kc,n}return t=ys(t[0]*Sc,t[1]*Sc,t.length>2?t[2]*Sc:0),n.invert=function(n){return(n=t.invert(n[0]*Sc,n[1]*Sc))[0]*=kc,n[1]*=kc,n},n}function _s(t,n,e,r,i,o){if(e){var a=Oc(n),u=Bc(n),c=r*e;null==i?(i=n+r*Tc,o=n-c/2):(i=xs(a,i),o=xs(a,o),(r>0?io)&&(i+=r*Tc));for(var f,s=i;r>0?s>o:s1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Ms(t,n){return Nc(t[0]-n[0])<1e-6&&Nc(t[1]-n[1])<1e-6}function Es(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function As(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(Ms(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Ts(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r=0?1:-1,A=E*M,T=A>Mc,k=y*x;if(ks.add(Pc(k*E*Bc(A),v*w+k*Oc(A))),a+=T?M+E*Tc:M,T^d>=e^m>=e){var S=df(lf(h),lf(b));vf(S);var N=df(o,S);vf(N);var C=(T^M>=0?-1:1)*Ic(N[2]);(r>C||r===C&&(S[0]||S[1]))&&(u+=T^M>=0?1:-1)}}return(a<-1e-6||a<1e-6&&ks<-1e-6)^1&u}function Cs(t,n,e,r){return function(i){var o,a,u,c=n(i),f=ws(),s=n(f),l=!1,h={point:d,lineStart:y,lineEnd:v,polygonStart:function(){h.point=g,h.lineStart=b,h.lineEnd=m,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=y,h.lineEnd=v,a=Et(a);var t=Ns(o,r);a.length?(l||(i.polygonStart(),l=!0),As(a,Os,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function y(){h.point=p,c.lineStart()}function v(){h.point=d,c.lineEnd()}function g(t,n){u.push([t,n]),s.point(t,n)}function b(){s.lineStart(),u=[]}function m(){g(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(Ps))}return h}}function Ps(t){return t.length>1}function Os(t,n){return((t=t.x)[0]<0?t[1]-Ec-1e-6:Ec-t[1])-((n=n.x)[0]<0?n[1]-Ec-1e-6:Ec-n[1])}var Rs=Cs((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?Mc:-Mc,c=Nc(o-e);Nc(c-Mc)<1e-6?(t.point(e,r=(r+a)/2>0?Ec:-Ec),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=Mc&&(Nc(e-i)<1e-6&&(e-=1e-6*i),Nc(o-u)<1e-6&&(o-=1e-6*u),r=function(t,n,e,r){var i,o,a=Bc(t-e);return Nc(a)>1e-6?Cc((Bc(n)*(o=Oc(r))*Bc(e)-Bc(r)*(i=Oc(n))*Bc(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*Ec,r.point(-Mc,i),r.point(0,i),r.point(Mc,i),r.point(Mc,0),r.point(Mc,-i),r.point(0,-i),r.point(-Mc,-i),r.point(-Mc,0),r.point(-Mc,i);else if(Nc(t[0]-n[0])>1e-6){var o=t[0]0,i=Nc(n)>1e-6;function o(t,e){return Oc(t)*Oc(e)>n}function a(t,e,r){var i=[1,0,0],o=df(lf(t),lf(e)),a=hf(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=df(i,o),h=yf(i,f);pf(h,yf(o,s));var d=l,p=hf(h,d),y=hf(d,d),v=p*p-y*(hf(h,h)-1);if(!(v<0)){var g=Fc(v),b=yf(d,(-p-g)/y);if(pf(b,h),b=sf(b),!r)return b;var m,_=t[0],x=e[0],w=t[1],M=e[1];x<_&&(m=_,_=x,x=m);var E=x-_,A=Nc(E-Mc)<1e-6;if(!A&&M0^b[1]<(Nc(b[0]-_)<1e-6?w:M):w<=b[1]&&b[1]<=M:E>Mc^(_<=b[0]&&b[0]<=x)){var T=yf(d,(-p+g)/y);return pf(T,h),[b,sf(T)]}}}function u(n,e){var i=r?t:Mc-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return Cs(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],y=o(l,h),v=r?y?0:u(l,h):y?u(l+(l<0?Mc:-Mc),h):0;if(!n&&(f=c=y)&&t.lineStart(),y!==c&&(!(d=a(n,p))||Ms(n,d)||Ms(p,d))&&(p[2]=1),y!==c)s=0,y?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^y){var g;v&e||!(g=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(g[0][0],g[0][1]),t.point(g[1][0],g[1][1]),t.lineEnd()):(t.point(g[1][0],g[1][1]),t.lineEnd(),t.lineStart(),t.point(g[0][0],g[0][1],3)))}!y||n&&Ms(n,p)||t.point(p[0],p[1]),n=p,c=y,e=v},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){_s(o,t,e,i,n,r)}),r?[0,-t]:[-Mc,t-Mc])}function zs(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return Nc(r[0]-t)<1e-6?i>0?0:3:Nc(r[0]-e)<1e-6?i>0?2:1:Nc(r[1]-n)<1e-6?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,y,v,g,b,m=a,_=ws(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);g=!0,v=!1,p=y=NaN},lineEnd:function(){c&&(M(l,h),d&&v&&_.rejoin(),c.push(_.result()));x.point=w,v&&m.lineEnd()},polygonStart:function(){m=_,c=[],f=[],b=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;er&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=b&&n,i=(c=Et(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&As(c,u,n,o,a),a.polygonEnd());m=a,c=f=s=null}};function w(t,n){i(t,n)&&m.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),g)l=o,h=a,d=u,g=!1,u&&(m.lineStart(),m.point(o,a));else if(u&&v)m.point(o,a);else{var c=[p=Math.max(-1e9,Math.min(1e9,p)),y=Math.max(-1e9,Math.min(1e9,y))],_=[o=Math.max(-1e9,Math.min(1e9,o)),a=Math.max(-1e9,Math.min(1e9,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,_,t,n,e,r)?u&&(m.lineStart(),m.point(o,a),b=!1):(v||(m.lineStart(),m.point(c[0],c[1])),m.point(_[0],_[1]),u||m.lineEnd(),b=!1)}p=o,y=a,v=u}return x}}var Ds,Bs,qs,Fs=mc(),Us={sphere:$c,point:$c,lineStart:function(){Us.point=Is,Us.lineEnd=js},lineEnd:$c,polygonStart:$c,polygonEnd:$c};function js(){Us.point=Us.lineEnd=$c}function Is(t,n){Ds=t*=Sc,Bs=Bc(n*=Sc),qs=Oc(n),Us.point=Ys}function Ys(t,n){t*=Sc;var e=Bc(n*=Sc),r=Oc(n),i=Nc(t-Ds),o=Oc(i),a=r*Bc(i),u=qs*e-Bs*r*o,c=Bs*e+qs*r*o;Fs.add(Pc(Fc(a*a+u*u),c)),Ds=t,Bs=e,qs=r}function $s(t){return Fs.reset(),Zc(t,Us),+Fs}var Hs=[null,null],Vs={type:"LineString",coordinates:Hs};function Ws(t,n){return Hs[0]=t,Hs[1]=n,$s(Vs)}var Xs={Feature:function(t,n){return Zs(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r0&&(i=Ws(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<1e-12*i)return!0;e=r}return!1}function Ks(t,n){return!!Ns(t.map(tl),nl(n))}function tl(t){return(t=t.map(nl)).pop(),t}function nl(t){return[t[0]*Sc,t[1]*Sc]}function el(t,n,e){var r=dt(t,n-1e-6,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function rl(t,n,e){var r=dt(t,n-1e-6,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function il(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,y=360,v=2.5;function g(){return{type:"MultiLineString",coordinates:b()}}function b(){return dt(Rc(r/p)*p,e,p).map(s).concat(dt(Rc(u/y)*y,a,y).map(l)).concat(dt(Rc(n/h)*h,t,h).filter((function(t){return Nc(t%p)>1e-6})).map(c)).concat(dt(Rc(o/d)*d,i,d).filter((function(t){return Nc(t%y)>1e-6})).map(f))}return g.lines=function(){return b().map((function(t){return{type:"LineString",coordinates:t}}))},g.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},g.extent=function(t){return arguments.length?g.extentMajor(t).extentMinor(t):g.extentMinor()},g.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),g.precision(v)):[[r,u],[e,a]]},g.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),g.precision(v)):[[n,o],[t,i]]},g.step=function(t){return arguments.length?g.stepMajor(t).stepMinor(t):g.stepMinor()},g.stepMajor=function(t){return arguments.length?(p=+t[0],y=+t[1],g):[p,y]},g.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],g):[h,d]},g.precision=function(h){return arguments.length?(v=+h,c=el(o,i,90),f=rl(n,t,v),s=el(u,a,90),l=rl(r,e,v),g):v},g.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}function ol(t){return t}var al,ul,cl,fl,sl=mc(),ll=mc(),hl={point:$c,lineStart:$c,lineEnd:$c,polygonStart:function(){hl.lineStart=dl,hl.lineEnd=vl},polygonEnd:function(){hl.lineStart=hl.lineEnd=hl.point=$c,sl.add(Nc(ll)),ll.reset()},result:function(){var t=sl/2;return sl.reset(),t}};function dl(){hl.point=pl}function pl(t,n){hl.point=yl,al=cl=t,ul=fl=n}function yl(t,n){ll.add(fl*t-cl*n),cl=t,fl=n}function vl(){yl(al,ul)}var gl=hl,bl=1/0,ml=bl,_l=-bl,xl=_l,wl={point:function(t,n){t_l&&(_l=t);nxl&&(xl=n)},lineStart:$c,lineEnd:$c,polygonStart:$c,polygonEnd:$c,result:function(){var t=[[bl,ml],[_l,xl]];return _l=xl=-(ml=bl=1/0),t}};var Ml,El,Al,Tl,kl=wl,Sl=0,Nl=0,Cl=0,Pl=0,Ol=0,Rl=0,Ll=0,zl=0,Dl=0,Bl={point:ql,lineStart:Fl,lineEnd:Il,polygonStart:function(){Bl.lineStart=Yl,Bl.lineEnd=$l},polygonEnd:function(){Bl.point=ql,Bl.lineStart=Fl,Bl.lineEnd=Il},result:function(){var t=Dl?[Ll/Dl,zl/Dl]:Rl?[Pl/Rl,Ol/Rl]:Cl?[Sl/Cl,Nl/Cl]:[NaN,NaN];return Sl=Nl=Cl=Pl=Ol=Rl=Ll=zl=Dl=0,t}};function ql(t,n){Sl+=t,Nl+=n,++Cl}function Fl(){Bl.point=Ul}function Ul(t,n){Bl.point=jl,ql(Al=t,Tl=n)}function jl(t,n){var e=t-Al,r=n-Tl,i=Fc(e*e+r*r);Pl+=i*(Al+t)/2,Ol+=i*(Tl+n)/2,Rl+=i,ql(Al=t,Tl=n)}function Il(){Bl.point=ql}function Yl(){Bl.point=Hl}function $l(){Vl(Ml,El)}function Hl(t,n){Bl.point=Vl,ql(Ml=Al=t,El=Tl=n)}function Vl(t,n){var e=t-Al,r=n-Tl,i=Fc(e*e+r*r);Pl+=i*(Al+t)/2,Ol+=i*(Tl+n)/2,Rl+=i,Ll+=(i=Tl*t-Al*n)*(Al+t),zl+=i*(Tl+n),Dl+=3*i,ql(Al=t,Tl=n)}var Wl=Bl;function Xl(t){this._context=t}Xl.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Tc)}},result:$c};var Gl,Zl,Ql,Jl,Kl,th=mc(),nh={point:$c,lineStart:function(){nh.point=eh},lineEnd:function(){Gl&&rh(Zl,Ql),nh.point=$c},polygonStart:function(){Gl=!0},polygonEnd:function(){Gl=null},result:function(){var t=+th;return th.reset(),t}};function eh(t,n){nh.point=rh,Zl=Jl=t,Ql=Kl=n}function rh(t,n){Jl-=t,Kl-=n,th.add(Fc(Jl*Jl+Kl*Kl)),Jl=t,Kl=n}var ih=nh;function oh(){this._string=[]}function ah(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function uh(t){return function(n){var e=new ch;for(var r in t)e[r]=t[r];return e.stream=n,e}}function ch(){}function fh(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Zc(e,t.stream(kl)),n(kl.result()),null!=r&&t.clipExtent(r),t}function sh(t,n,e){return fh(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function lh(t,n,e){return sh(t,[[0,0],n],e)}function hh(t,n,e){return fh(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function dh(t,n,e){return fh(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}oh.prototype={_radius:4.5,_circle:ah(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=ah(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},ch.prototype={constructor:ch,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var ph=Oc(30*Sc);function yh(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,y,v){var g=f-r,b=s-i,m=g*g+b*b;if(m>4*n&&y--){var _=a+h,x=u+d,w=c+p,M=Fc(_*_+x*x+w*w),E=Ic(w/=M),A=Nc(Nc(w)-1)<1e-6||Nc(o-l)<1e-6?(o+l)/2:Pc(x,_),T=t(A,E),k=T[0],S=T[1],N=k-r,C=S-i,P=b*N-g*C;(P*P/m>n||Nc((g*N+b*C)/m-.5)>.3||a*h+u*d+c*p2?t[2]%360*Sc:0,N()):[v*kc,g*kc,b*kc]},k.angle=function(t){return arguments.length?(m=t%360*Sc,N()):m*kc},k.reflectX=function(t){return arguments.length?(_=t?-1:1,N()):_<0},k.reflectY=function(t){return arguments.length?(x=t?-1:1,N()):x<0},k.precision=function(t){return arguments.length?(a=yh(u,T=t*t),C()):Fc(T)},k.fitExtent=function(t,n){return sh(k,t,n)},k.fitSize=function(t,n){return lh(k,t,n)},k.fitWidth=function(t,n){return hh(k,t,n)},k.fitHeight=function(t,n){return dh(k,t,n)},function(){return n=t.apply(this,arguments),k.invert=n.invert&&S,N()}}function xh(t){var n=0,e=Mc/3,r=_h(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Sc,e=t[1]*Sc):[n*kc,e*kc]},i}function wh(t,n){var e=Bc(t),r=(e+Bc(n))/2;if(Nc(r)<1e-6)return function(t){var n=Oc(t);function e(t,e){return[t*n,Bc(e)/n]}return e.invert=function(t,e){return[t/n,Ic(e*n)]},e}(t);var i=1+e*(2*r-e),o=Fc(i)/r;function a(t,n){var e=Fc(i-2*r*Bc(n))/r;return[e*Bc(t*=r),o-e*Oc(t)]}return a.invert=function(t,n){var e=o-n,a=Pc(t,Nc(e))*qc(e);return e*r<0&&(a-=Mc*qc(t)*qc(e)),[a/r,Ic((i-(t*t+e*e)*r*r)/(2*r))]},a}function Mh(){return xh(wh).scale(155.424).center([0,33.6442])}function Eh(){return Mh().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Ah(t){return function(n,e){var r=Oc(n),i=Oc(e),o=t(r*i);return[o*i*Bc(n),o*Bc(e)]}}function Th(t){return function(n,e){var r=Fc(n*n+e*e),i=t(r),o=Bc(i),a=Oc(i);return[Pc(n*o,r*a),Ic(r&&e*o/r)]}}var kh=Ah((function(t){return Fc(2/(1+t))}));kh.invert=Th((function(t){return 2*Ic(t/2)}));var Sh=Ah((function(t){return(t=jc(t))&&t/Bc(t)}));function Nh(t,n){return[t,zc(Uc((Ec+n)/2))]}function Ch(t){var n,e,r,i=mh(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=Mc*a(),u=i(ms(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Nh?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Ph(t){return Uc((Ec+t)/2)}function Oh(t,n){var e=Oc(t),r=t===n?Bc(t):zc(e/Oc(n))/zc(Ph(n)/Ph(t)),i=e*Dc(Ph(t),r)/r;if(!r)return Nh;function o(t,n){i>0?n<1e-6-Ec&&(n=1e-6-Ec):n>Ec-1e-6&&(n=Ec-1e-6);var e=i/Dc(Ph(n),r);return[e*Bc(r*t),i-e*Oc(r*t)]}return o.invert=function(t,n){var e=i-n,o=qc(r)*Fc(t*t+e*e),a=Pc(t,Nc(e))*qc(e);return e*r<0&&(a-=Mc*qc(t)*qc(e)),[a/r,2*Cc(Dc(i/o,1/r))-Ec]},o}function Rh(t,n){return[t,n]}function Lh(t,n){var e=Oc(t),r=t===n?Bc(t):(e-Oc(n))/(n-t),i=e/r+t;if(Nc(r)<1e-6)return Rh;function o(t,n){var e=i-n,o=r*t;return[e*Bc(o),i-e*Oc(o)]}return o.invert=function(t,n){var e=i-n,o=Pc(t,Nc(e))*qc(e);return e*r<0&&(o-=Mc*qc(t)*qc(e)),[o/r,i-qc(r)*Fc(t*t+e*e)]},o}Sh.invert=Th((function(t){return t})),Nh.invert=function(t,n){return[t,2*Cc(Lc(n))-Ec]},Rh.invert=Rh;var zh=1.340264,Dh=-.081106,Bh=893e-6,qh=.003796,Fh=Fc(3)/2;function Uh(t,n){var e=Ic(Fh*Bc(n)),r=e*e,i=r*r*r;return[t*Oc(e)/(Fh*(zh+3*Dh*r+i*(7*Bh+9*qh*r))),e*(zh+Dh*r+i*(Bh+qh*r))]}function jh(t,n){var e=Oc(n),r=Oc(t)*e;return[e*Bc(t)/r,Bc(n)/r]}function Ih(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Yh(t,n){return[Oc(n)*Bc(t),Bc(n)]}function $h(t,n){var e=Oc(n),r=1+Oc(t)*e;return[e*Bc(t)/r,Bc(n)/r]}function Hh(t,n){return[zc(Uc((Ec+n)/2)),-t]}function Vh(t,n){return t.parent===n.parent?1:2}function Wh(t,n){return t+n.x}function Xh(t,n){return Math.max(t,n.y)}function Gh(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Zh(t,n){var e,r,i,o,a,u=new td(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=Qh);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new td(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kh)}function Qh(t){return t.children}function Jh(t){t.data=t.data.data}function Kh(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function td(t){this.data=t,this.depth=this.height=0,this.parent=null}Uh.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zh+Dh*i+o*(Bh+qh*i))-n)/(zh+3*Dh*i+o*(7*Bh+9*qh*i)))*r)*i*i,!(Nc(e)<1e-12));++a);return[Fh*t*(zh+3*Dh*i+o*(7*Bh+9*qh*i))/Oc(r),Ic(Bc(r)/Fh)]},jh.invert=Th(Cc),Ih.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(Nc(e)>1e-6&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Yh.invert=Th(Ic),$h.invert=Th((function(t){return 2*Cc(t)})),Hh.invert=function(t,n){return[-n,2*Cc(Lc(t))-Ec]},td.prototype=Zh.prototype={constructor:td,count:function(){return this.eachAfter(Gh)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each((function(n){t.push(n)})),t},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Zh(this).eachBefore(Jh)}};var nd=Array.prototype.slice;function ed(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(nd.call(t))).length,o=[];r0&&e*e>r*r+i*i}function ad(t,n){for(var e=0;e(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function ld(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function hd(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function dd(t){this._=t,this.next=null,this.previous=null}function pd(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;sd(e,n,r=t[2]),n=new dd(n),e=new dd(e),r=new dd(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;uh&&(h=u),v=s*s*y,(d=Math.max(h/v,v/l))>p){s-=u;break}p=d}g.push(a={value:s,dice:c1?n:1)},e}(Dd);var Fd=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l1?n:1)},e}(Dd);function Ud(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function jd(t,n){return t[0]-n[0]||t[1]-n[1]}function Id(t){for(var n=t.length,e=[0,1],r=2,i=2;i1&&Ud(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function Yd(){return Math.random()}var $d=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Yd),Hd=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Yd),Vd=function t(n){function e(){var t=Hd.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(Yd),Wd=function t(n){function e(t){return function(){for(var e=0,r=0;rr&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function sp(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i2?lp:sp,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),qr)))(e)))},l.domain=function(t){return arguments.length?(a=Kd.call(t,op),f===up||(f=fp(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=tp.call(t),s()):u.slice()},l.rangeRound=function(t){return u=tp.call(t),c=$r,s()},l.clamp=function(t){return arguments.length?(f=t?fp(a):up,l):f!==up},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function pp(t,n){return dp()(t,n)}function yp(t,n,e,r){var i,o=mt(t,n,e);switch((r=ic(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=gc(o,a))||(r.precision=i),lc(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=bc(o,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=vc(o))||(r.precision=i-2*("%"===r.type))}return sc(r)}function vp(t){var n=t.domain;return t.ticks=function(t){var e=n();return gt(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return yp(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c0?r=bt(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=bt(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function gp(){var t=pp(up,up);return t.copy=function(){return hp(t,gp())},Zd.apply(t,arguments),vp(t)}function bp(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0){for(;hc)break;y.push(l)}}else for(;h=1;--s)if(!((l=f*s)c)break;y.push(l)}}else y=gt(h,d,Math.min(d-h,p)).map(e);return r?y.reverse():y},r.tickFormat=function(t,i){if(null==i&&(i=10===o?".0e":","),"function"!=typeof i&&(i=sc(i)),t===1/0)return i;null==t&&(t=10);var a=Math.max(1,o*t/r.ticks().length);return function(t){var r=t/e(Math.round(n(t)));return r*o0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a=n)for(;t(n),!e(n);)n.setTime(n-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););}))},e&&(i.count=function(n,r){return Lp.setTime(+n),zp.setTime(+r),t(Lp),t(zp),Math.floor(e(Lp,zp))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var Bp=Dp((function(){}),(function(t,n){t.setTime(+t+n)}),(function(t,n){return n-t}));Bp.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Dp((function(n){n.setTime(Math.floor(n/t)*t)}),(function(n,e){n.setTime(+n+e*t)}),(function(n,e){return(e-n)/t})):Bp:null};var qp=Bp,Fp=Bp.range,Up=Dp((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,n){t.setTime(+t+1e3*n)}),(function(t,n){return(n-t)/1e3}),(function(t){return t.getUTCSeconds()})),jp=Up,Ip=Up.range,Yp=Dp((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,n){t.setTime(+t+6e4*n)}),(function(t,n){return(n-t)/6e4}),(function(t){return t.getMinutes()})),$p=Yp,Hp=Yp.range,Vp=Dp((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,n){t.setTime(+t+36e5*n)}),(function(t,n){return(n-t)/36e5}),(function(t){return t.getHours()})),Wp=Vp,Xp=Vp.range,Gp=Dp((function(t){t.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+n)}),(function(t,n){return(n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),Zp=Gp,Qp=Gp.range;function Jp(t){return Dp((function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+7*n)}),(function(t,n){return(n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var Kp=Jp(0),ty=Jp(1),ny=Jp(2),ey=Jp(3),ry=Jp(4),iy=Jp(5),oy=Jp(6),ay=Kp.range,uy=ty.range,cy=ny.range,fy=ey.range,sy=ry.range,ly=iy.range,hy=oy.range,dy=Dp((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,n){t.setMonth(t.getMonth()+n)}),(function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),py=dy,yy=dy.range,vy=Dp((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n)}),(function(t,n){return n.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));vy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Dp((function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),(function(n,e){n.setFullYear(n.getFullYear()+e*t)})):null};var gy=vy,by=vy.range,my=Dp((function(t){t.setUTCSeconds(0,0)}),(function(t,n){t.setTime(+t+6e4*n)}),(function(t,n){return(n-t)/6e4}),(function(t){return t.getUTCMinutes()})),_y=my,xy=my.range,wy=Dp((function(t){t.setUTCMinutes(0,0,0)}),(function(t,n){t.setTime(+t+36e5*n)}),(function(t,n){return(n-t)/36e5}),(function(t){return t.getUTCHours()})),My=wy,Ey=wy.range,Ay=Dp((function(t){t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+n)}),(function(t,n){return(n-t)/864e5}),(function(t){return t.getUTCDate()-1})),Ty=Ay,ky=Ay.range;function Sy(t){return Dp((function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+7*n)}),(function(t,n){return(n-t)/6048e5}))}var Ny=Sy(0),Cy=Sy(1),Py=Sy(2),Oy=Sy(3),Ry=Sy(4),Ly=Sy(5),zy=Sy(6),Dy=Ny.range,By=Cy.range,qy=Py.range,Fy=Oy.range,Uy=Ry.range,jy=Ly.range,Iy=zy.range,Yy=Dp((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCMonth(t.getUTCMonth()+n)}),(function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),$y=Yy,Hy=Yy.range,Vy=Dp((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)}),(function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Vy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Dp((function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),(function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null};var Wy=Vy,Xy=Vy.range;function Gy(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Zy(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Qy(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function Jy(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=sv(i),s=lv(i),l=sv(o),h=lv(o),d=sv(a),p=lv(a),y=sv(u),v=lv(u),g=sv(c),b=lv(c),m={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Ov,e:Ov,f:Bv,g:Xv,G:Zv,H:Rv,I:Lv,j:zv,L:Dv,m:qv,M:Fv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:mg,s:_g,S:Uv,u:jv,U:Iv,V:$v,w:Hv,W:Vv,x:null,X:null,y:Wv,Y:Gv,Z:Qv,"%":bg},_={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:Jv,e:Jv,f:rg,g:pg,G:vg,H:Kv,I:tg,j:ng,L:eg,m:ig,M:og,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:mg,s:_g,S:ag,u:ug,U:cg,V:sg,w:lg,W:hg,x:null,X:null,y:dg,Y:yg,Z:gg,"%":bg},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=b[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=v[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return E(t,n,e,r)},d:wv,e:wv,f:Sv,g:bv,G:gv,H:Ev,I:Ev,j:Mv,L:kv,m:xv,M:Av,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},q:_v,Q:Cv,s:Pv,S:Tv,u:dv,U:pv,V:yv,w:hv,W:vv,x:function(t,n,r){return E(t,e,n,r)},X:function(t,n,e){return E(t,r,n,e)},y:bv,Y:gv,Z:mv,"%":Nv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=Zy(Qy(o.y,0,1))).getUTCDay(),r=i>4||0===i?Cy.ceil(r):Cy(r),r=Ty.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=Gy(Qy(o.y,0,1))).getDay(),r=i>4||0===i?ty.ceil(r):ty(r),r=Zp.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?Zy(Qy(o.y,0,1)).getUTCDay():Gy(Qy(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Zy(o)):Gy(o)}}function E(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in iv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),_.x=w(e,_),_.X=w(r,_),_.c=w(n,_),{format:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",_);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var Ky,tv,nv,ev,rv,iv={"-":"",_:" ",0:"0"},ov=/^\s*\d+/,av=/^%/,uv=/[\\^$*+?|[\]().{}]/g;function cv(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function mv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function _v(t,n,e){var r=ov.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function xv(t,n,e){var r=ov.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function wv(t,n,e){var r=ov.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=ov.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=ov.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=ov.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=ov.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function kv(t,n,e){var r=ov.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=ov.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Nv(t,n,e){var r=av.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Cv(t,n,e){var r=ov.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Pv(t,n,e){var r=ov.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Ov(t,n){return cv(t.getDate(),n,2)}function Rv(t,n){return cv(t.getHours(),n,2)}function Lv(t,n){return cv(t.getHours()%12||12,n,2)}function zv(t,n){return cv(1+Zp.count(gy(t),t),n,3)}function Dv(t,n){return cv(t.getMilliseconds(),n,3)}function Bv(t,n){return Dv(t,n)+"000"}function qv(t,n){return cv(t.getMonth()+1,n,2)}function Fv(t,n){return cv(t.getMinutes(),n,2)}function Uv(t,n){return cv(t.getSeconds(),n,2)}function jv(t){var n=t.getDay();return 0===n?7:n}function Iv(t,n){return cv(Kp.count(gy(t)-1,t),n,2)}function Yv(t){var n=t.getDay();return n>=4||0===n?ry(t):ry.ceil(t)}function $v(t,n){return t=Yv(t),cv(ry.count(gy(t),t)+(4===gy(t).getDay()),n,2)}function Hv(t){return t.getDay()}function Vv(t,n){return cv(ty.count(gy(t)-1,t),n,2)}function Wv(t,n){return cv(t.getFullYear()%100,n,2)}function Xv(t,n){return cv((t=Yv(t)).getFullYear()%100,n,2)}function Gv(t,n){return cv(t.getFullYear()%1e4,n,4)}function Zv(t,n){var e=t.getDay();return cv((t=e>=4||0===e?ry(t):ry.ceil(t)).getFullYear()%1e4,n,4)}function Qv(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+cv(n/60|0,"0",2)+cv(n%60,"0",2)}function Jv(t,n){return cv(t.getUTCDate(),n,2)}function Kv(t,n){return cv(t.getUTCHours(),n,2)}function tg(t,n){return cv(t.getUTCHours()%12||12,n,2)}function ng(t,n){return cv(1+Ty.count(Wy(t),t),n,3)}function eg(t,n){return cv(t.getUTCMilliseconds(),n,3)}function rg(t,n){return eg(t,n)+"000"}function ig(t,n){return cv(t.getUTCMonth()+1,n,2)}function og(t,n){return cv(t.getUTCMinutes(),n,2)}function ag(t,n){return cv(t.getUTCSeconds(),n,2)}function ug(t){var n=t.getUTCDay();return 0===n?7:n}function cg(t,n){return cv(Ny.count(Wy(t)-1,t),n,2)}function fg(t){var n=t.getUTCDay();return n>=4||0===n?Ry(t):Ry.ceil(t)}function sg(t,n){return t=fg(t),cv(Ry.count(Wy(t),t)+(4===Wy(t).getUTCDay()),n,2)}function lg(t){return t.getUTCDay()}function hg(t,n){return cv(Cy.count(Wy(t)-1,t),n,2)}function dg(t,n){return cv(t.getUTCFullYear()%100,n,2)}function pg(t,n){return cv((t=fg(t)).getUTCFullYear()%100,n,2)}function yg(t,n){return cv(t.getUTCFullYear()%1e4,n,4)}function vg(t,n){var e=t.getUTCDay();return cv((t=e>=4||0===e?Ry(t):Ry.ceil(t)).getUTCFullYear()%1e4,n,4)}function gg(){return"+0000"}function bg(){return"%"}function mg(t){return+t}function _g(t){return Math.floor(+t/1e3)}function xg(t){return Ky=Jy(t),tv=Ky.format,nv=Ky.parse,ev=Ky.utcFormat,rv=Ky.utcParse,Ky}xg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",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"]});var wg=Date.prototype.toISOString?function(t){return t.toISOString()}:ev("%Y-%m-%dT%H:%M:%S.%LZ"),Mg=wg;var Eg=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:rv("%Y-%m-%dT%H:%M:%S.%LZ"),Ag=Eg;function Tg(t){return new Date(t)}function kg(t){return t instanceof Date?+t:+new Date(+t)}function Sg(t,n,e,r,i,o,a,u,c){var f=pp(up,up),s=f.invert,l=f.domain,h=c(".%L"),d=c(":%S"),p=c("%I:%M"),y=c("%I %p"),v=c("%a %d"),g=c("%b %d"),b=c("%B"),m=c("%Y"),_=[[a,1,1e3],[a,5,5e3],[a,15,15e3],[a,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[i,1,36e5],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,864e5],[r,2,1728e5],[e,1,6048e5],[n,1,2592e6],[n,3,7776e6],[t,1,31536e6]];function x(u){return(a(u)1?0:t<-1?dm:Math.acos(t)}function gm(t){return t>=1?pm:t<=-1?-pm:Math.asin(t)}function bm(t){return t.innerRadius}function mm(t){return t.outerRadius}function _m(t){return t.startAngle}function xm(t){return t.endAngle}function wm(t){return t&&t.padAngle}function Mm(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<1e-12))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}function Em(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/hm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,y=r+l,v=(h+p)/2,g=(d+y)/2,b=p-h,m=y-d,_=b*b+m*m,x=i-o,w=h*y-p*d,M=(m<0?-1:1)*hm(fm(0,x*x*_-w*w)),E=(w*m-b*M)/_,A=(-w*b-m*M)/_,T=(w*m+b*M)/_,k=(-w*b+m*M)/_,S=E-v,N=A-g,C=T-v,P=k-g;return S*S+N*N>C*C+P*P&&(E=T,A=k),{cx:E,cy:A,x01:-s,y01:-l,x11:E*(i/x-1),y11:A*(i/x-1)}}function Am(){var t=bm,n=mm,e=om(0),r=null,i=_m,o=xm,a=wm,u=null;function c(){var c,f,s=+t.apply(this,arguments),l=+n.apply(this,arguments),h=i.apply(this,arguments)-pm,d=o.apply(this,arguments)-pm,p=am(d-h),y=d>h;if(u||(u=c=Ta()),l1e-12)if(p>ym-1e-12)u.moveTo(l*cm(h),l*lm(h)),u.arc(0,0,l,h,d,!y),s>1e-12&&(u.moveTo(s*cm(d),s*lm(d)),u.arc(0,0,s,d,h,y));else{var v,g,b=h,m=d,_=h,x=d,w=p,M=p,E=a.apply(this,arguments)/2,A=E>1e-12&&(r?+r.apply(this,arguments):hm(s*s+l*l)),T=sm(am(l-s)/2,+e.apply(this,arguments)),k=T,S=T;if(A>1e-12){var N=gm(A/s*lm(E)),C=gm(A/l*lm(E));(w-=2*N)>1e-12?(_+=N*=y?1:-1,x-=N):(w=0,_=x=(h+d)/2),(M-=2*C)>1e-12?(b+=C*=y?1:-1,m-=C):(M=0,b=m=(h+d)/2)}var P=l*cm(b),O=l*lm(b),R=s*cm(x),L=s*lm(x);if(T>1e-12){var z,D=l*cm(m),B=l*lm(m),q=s*cm(_),F=s*lm(_);if(p1e-12?S>1e-12?(v=Em(q,F,P,O,l,S,y),g=Em(D,B,R,L,l,S,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),S1e-12&&w>1e-12?k>1e-12?(v=Em(R,L,D,B,s,-k,y),g=Em(P,O,q,F,s,-k,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),k=s;--l)u.point(v[l],g[l]);u.lineEnd(),u.areaEnd()}y&&(v[f]=+t(h,f,c),g[f]=+e(h,f,c),u.point(n?+n(h,f,c):v[f],r?+r(h,f,c):g[f]))}if(d)return u=null,d+""||null}function f(){return Cm().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t="function"==typeof e?e:om(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:om(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:om(+t),c):n},c.y=function(t){return arguments.length?(e="function"==typeof t?t:om(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:om(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:om(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:om(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function Om(t,n){return nt?1:n>=t?0:NaN}function Rm(t){return t}function Lm(){var t=Rm,n=Om,e=null,r=om(0),i=om(ym),o=om(0);function a(a){var u,c,f,s,l,h=a.length,d=0,p=new Array(h),y=new Array(h),v=+r.apply(this,arguments),g=Math.min(ym,Math.max(-ym,i.apply(this,arguments)-v)),b=Math.min(Math.abs(g)/h,o.apply(this,arguments)),m=b*(g<0?-1:1);for(u=0;u0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(y[t],y[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(g-h*m)/d:0;u0?l*f:0)+m,y[c]={data:a[c],index:u,value:l,startAngle:v,endAngle:s,padAngle:b};return y}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:om(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:om(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:om(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:om(+t),a):o},a}Tm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var zm=Bm(km);function Dm(t){this._curve=t}function Bm(t){function n(n){return new Dm(t(n))}return n._curve=t,n}function qm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Bm(t)):n()._curve},t}function Fm(){return qm(Cm().curve(zm))}function Um(){var t=Pm().curve(zm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return qm(e())},delete t.lineX0,t.lineEndAngle=function(){return qm(r())},delete t.lineX1,t.lineInnerRadius=function(){return qm(i())},delete t.lineY0,t.lineOuterRadius=function(){return qm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Bm(t)):n()._curve},t}function jm(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Dm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Im=Array.prototype.slice;function Ym(t){return t.source}function $m(t){return t.target}function Hm(t){var n=Ym,e=$m,r=Sm,i=Nm,o=null;function a(){var a,u=Im.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=Ta()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:om(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:om(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function Vm(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function Wm(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function Xm(t,n,e,r,i){var o=jm(n,e),a=jm(n,e=(e+i)/2),u=jm(r,e),c=jm(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var Gm={draw:function(t,n){var e=Math.sqrt(n/dm);t.moveTo(e,0),t.arc(0,0,e,0,ym)}},Zm={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Qm=Math.sqrt(1/3),Jm=2*Qm,Km={draw:function(t,n){var e=Math.sqrt(n/Jm),r=e*Qm;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},t_=Math.sin(dm/10)/Math.sin(7*dm/10),n_=Math.sin(ym/10)*t_,e_=-Math.cos(ym/10)*t_,r_={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=n_*e,i=e_*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=ym*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},i_={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},o_=Math.sqrt(3),a_={draw:function(t,n){var e=-Math.sqrt(n/(3*o_));t.moveTo(0,2*e),t.lineTo(-o_*e,-e),t.lineTo(o_*e,-e),t.closePath()}},u_=-.5,c_=Math.sqrt(3)/2,f_=1/Math.sqrt(12),s_=3*(f_/2+1),l_={draw:function(t,n){var e=Math.sqrt(n/s_),r=e/2,i=e*f_,o=r,a=e*f_+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(u_*r-c_*i,c_*r+u_*i),t.lineTo(u_*o-c_*a,c_*o+u_*a),t.lineTo(u_*u-c_*c,c_*u+u_*c),t.lineTo(u_*r+c_*i,u_*i-c_*r),t.lineTo(u_*o+c_*a,u_*a-c_*o),t.lineTo(u_*u+c_*c,u_*c-c_*u),t.closePath()}},h_=[Gm,Zm,Km,i_,r_,a_,l_];function d_(){}function p_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function y_(t){this._context=t}function v_(t){this._context=t}function g_(t){this._context=t}function b_(t,n){this._basis=new y_(t),this._beta=n}y_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:p_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:p_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},v_.prototype={areaStart:d_,areaEnd:d_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:p_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},g_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:p_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},b_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var m_=function t(n){function e(t){return 1===n?new y_(t):new b_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function __(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function x_(t,n){this._context=t,this._k=(1-n)/6}x_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:__(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:__(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var w_=function t(n){function e(t){return new x_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function M_(t,n){this._context=t,this._k=(1-n)/6}M_.prototype={areaStart:d_,areaEnd:d_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:__(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var E_=function t(n){function e(t){return new M_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function A_(t,n){this._context=t,this._k=(1-n)/6}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:__(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var T_=function t(n){function e(t){return new A_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function k_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>1e-12){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>1e-12){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function S_(t,n){this._context=t,this._alpha=n}S_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:k_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var N_=function t(n){function e(t){return n?new S_(t,n):new x_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function C_(t,n){this._context=t,this._alpha=n}C_.prototype={areaStart:d_,areaEnd:d_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:k_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var P_=function t(n){function e(t){return n?new C_(t,n):new M_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function O_(t,n){this._context=t,this._alpha=n}O_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:k_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var R_=function t(n){function e(t){return n?new O_(t,n):new A_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function L_(t){this._context=t}function z_(t){return t<0?-1:1}function D_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(z_(o)+z_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function B_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function q_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function F_(t){this._context=t}function U_(t){this._context=new j_(t)}function j_(t){this._context=t}function I_(t){return new F_(t)}function Y_(t){this._context=t}function $_(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o=0;)e[n]=n;return e}function X_(t,n){return t[n]}function G_(){var t=om([]),n=W_,e=V_,r=X_;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;oo&&(o=n,r=e);return r}function J_(t){var n=t.map(K_);return W_(t).sort((function(t,e){return n[t]-n[e]}))}function K_(t){for(var n,e=0,r=-1,i=t.length;++r0)){if(o/=h,h<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o0)){if(o/=d,d<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function hx(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],y=(l+d)/2,v=(h+p)/2;if(p===h){if(y=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[y,e];o=[y,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},rx.prototype={constructor:rx,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=ux(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(ox(this,e),e=(t=e).U),e.C=!1,r.C=!0,ax(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(ax(this,e),e=(t=e).U),e.C=!1,r.C=!0,ox(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?ux(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,ox(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,ax(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,ox(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,ax(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,ox(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,ax(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var vx,gx=[];function bx(){ix(this),this.x=this.y=this.arc=this.site=this.cy=null}function mx(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-Lx)){var d=c*c+f*f,p=s*s+l*l,y=(l*d-f*p)/h,v=(c*p-s*d)/h,g=gx.pop()||new bx;g.arc=t,g.site=i,g.x=y+a,g.y=(g.cy=v+u)+Math.sqrt(y*y+v*v),t.circle=g;for(var b=null,m=Px._;m;)if(g.yRx)u=u.L;else{if(!((i=o-Sx(u,a))>Rx)){r>-Rx?(n=u.P,e=u):i>-Rx?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){Cx[t.index]={site:t,halfedges:[]}}(t);var c=Mx(t);if(Nx.insert(n,c),n||e){if(n===e)return _x(n),e=Mx(n.site),Nx.insert(c,e),c.edge=e.edge=cx(n.site,c.site),mx(n),void mx(e);if(e){_x(n),_x(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,y=p[0]-s,v=p[1]-l,g=2*(h*v-d*y),b=h*h+d*d,m=y*y+v*v,_=[(v*b-d*m)/g+s,(h*m-y*b)/g+l];sx(e.edge,f,p,_),c.edge=cx(f,t,null,_),e.edge=cx(t,p,null,_),mx(n),mx(e)}else c.edge=cx(n.site,c.site)}}function kx(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function Sx(t,n){var e=t.N;if(e)return kx(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var Nx,Cx,Px,Ox,Rx=1e-6,Lx=1e-12;function zx(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function Dx(t,n){return n[1]-t[1]||n[0]-t[0]}function Bx(t,n){var e,r,i,o=t.sort(Dx).pop();for(Ox=[],Cx=new Array(t.length),Nx=new rx,Px=new rx;;)if(i=vx,o&&(!i||o[1]Rx||Math.abs(i[0][1]-i[1][1])>Rx)||delete Ox[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,y,v=Cx.length,g=!0;for(i=0;iRx||Math.abs(y-h)>Rx)&&(c.splice(u,0,Ox.push(fx(a,d,Math.abs(p-t)Rx?[t,Math.abs(l-t)Rx?[Math.abs(h-r)Rx?[e,Math.abs(l-e)Rx?[Math.abs(h-n)=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach((function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;lr?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Ix.prototype=Ux.prototype;var Qx=Object.freeze({__proto__:null,version:"5.16.0",bisect:nt,bisectRight:nt,bisectLeft:et,ascending:J,bisector:K,cross:function(t,n,e){var r,i,o,a,u=t.length,c=n.length,f=new Array(u*c);for(null==e&&(e=rt),r=o=0;rt?1:n>=t?0:NaN},deviation:at,extent:ut,histogram:xt,thresholdFreedmanDiaconis:function(t,n,e){return t=st.call(t,it).sort(J),Math.ceil((e-n)/(2*(wt(t,.75)-wt(t,.25))*Math.pow(t.length,-1/3)))},thresholdScott:function(t,n,e){return Math.ceil((e-n)/(3.5*at(t)*Math.pow(t.length,-1/3)))},thresholdSturges:_t,max:Mt,mean:function(t,n){var e,r=t.length,i=r,o=-1,a=0;if(null==n)for(;++o=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=Ra(),y=a();++lr.length)return t;var o,u=i[e-1];return null!=n&&e>=r.length?o=t.entries():(o=[],t.each((function(t,n){o.push({key:n,values:a(t,e)})}))),null!=u?o.sort((function(t,n){return u(t.key,n.key)})):o}return e={object:function(t){return o(t,0,La,za)},map:function(t){return o(t,0,Da,Ba)},entries:function(t){return a(o(t,0,Da,Ba),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},set:Ua,map:Ra,keys:function(t){var n=[];for(var e in t)n.push(e);return n},values:function(t){var n=[];for(var e in t)n.push(t[e]);return n},entries:function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},color:ze,rgb:Fe,hsl:Ve,lab:nr,hcl:cr,lch:function(t,n,e,r){return 1===arguments.length?ur(t):new fr(e,n,t,null==r?1:r)},gray:function(t,n){return new er(t,0,0,null==n?1:n)},cubehelix:_r,contours:Ga,contourDensity:function(){var t=Ja,n=Ka,e=tu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Ya(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach((function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l=0&&h>a),Qa({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Za({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),Qa({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Za({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),Qa({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=Mt(i);d=mt(0,p,d),(d=dt(0,Math.floor(p/d)*d,d)).shift()}return Ga().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(y)}function y(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function v(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:Ya(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:Ya(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:Ya(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,v()},l.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),v()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Ya(ja.call(t)):Ya(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),v()},l},dispatch:qt,drag:function(){var t,n,e,r,i=pe,o=ye,a=ve,u=ge,c={},f=qt("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",v).on("touchmove.drag",g).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var a=m("mouse",o.apply(this,arguments),ae,this,arguments);a&&(te(jn.view).on("mousemove.drag",p,!0).on("mouseup.drag",y,!0),se(jn.view),ce(),e=!1,t=jn.clientX,n=jn.clientY,a("start"))}}function p(){if(fe(),!e){var r=jn.clientX-t,i=jn.clientY-n;e=r*r+i*i>l}c.mouse("drag")}function y(){te(jn.view).on("mousemove.drag mouseup.drag",null),le(jn.view,e),fe(),c.mouse("end")}function v(){if(i.apply(this,arguments)){var t,n,e=jn.changedTouches,r=o.apply(this,arguments),a=e.length;for(t=0;tc+d||if+d||ou.index){var p=c-a.x-a.vx,y=f-a.y-a.vy,v=p*p+y*y;vt.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=qu())*s),0===l&&(d+=(l=qu())*l),d1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f1?(f.on(t,e),n):f.on(t)}}},forceX:function(t){var n,e,r,i=Bu(.1);function o(t){for(var i,o=0,a=n.length;oJf(r[0],r[1])&&(r[1]=i[1]),Jf(i[0],r[1])>Jf(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=Jf(r[1],i[0]))>a&&(a=u,gf=i[0],mf=r[1])}return Af=Tf=null,gf===1/0||bf===1/0?[[NaN,NaN],[NaN,NaN]]:[[gf,bf],[mf,_f]]},geoCentroid:function(t){kf=Sf=Nf=Cf=Pf=Of=Rf=Lf=zf=Df=Bf=0,Zc(t,ns);var n=zf,e=Df,r=Bf,i=n*n+e*e+r*r;return i<1e-12&&(n=Of,e=Rf,r=Lf,Sf<1e-6&&(n=Nf,e=Cf,r=Pf),(i=n*n+e*e+r*r)<1e-12)?[NaN,NaN]:[Pc(e,n)*kc,Ic(r/Fc(i))*kc]},geoCircle:function(){var t,n,e=hs([0,0]),r=hs(90),i=hs(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=kc,e[1]*=kc}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*Sc,c=i.apply(this,arguments)*Sc;return t=[],n=ys(-a[0]*Sc,-a[1]*Sc,0).invert,_s(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:hs([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:hs(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:hs(+t),a):i},a},geoClipAntimeridian:Rs,geoClipCircle:Ls,geoClipExtent:function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=zs(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},geoClipRectangle:zs,geoContains:function(t,n){return(t&&Xs.hasOwnProperty(t.type)?Xs[t.type]:Zs)(t,n)},geoDistance:Ws,geoGraticule:il,geoGraticule10:function(){return il()()},geoInterpolate:function(t,n){var e=t[0]*Sc,r=t[1]*Sc,i=n[0]*Sc,o=n[1]*Sc,a=Oc(r),u=Bc(r),c=Oc(o),f=Bc(o),s=a*Oc(e),l=a*Bc(e),h=c*Oc(i),d=c*Bc(i),p=2*Ic(Fc(Yc(o-r)+a*c*Yc(i-e))),y=Bc(p),v=p?function(t){var n=Bc(t*=p)/y,e=Bc(p-t)/y,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[Pc(i,r)*kc,Pc(o,Fc(r*r+i*i))*kc]}:function(){return[e*kc,r*kc]};return v.distance=p,v},geoLength:$s,geoPath:function(t,n){var e,r,i=4.5;function o(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),Zc(t,e(r))),r.result()}return o.area=function(t){return Zc(t,e(gl)),gl.result()},o.measure=function(t){return Zc(t,e(ih)),ih.result()},o.bounds=function(t){return Zc(t,e(kl)),kl.result()},o.centroid=function(t){return Zc(t,e(Wl)),Wl.result()},o.projection=function(n){return arguments.length?(e=null==n?(t=null,ol):(t=n).stream,o):t},o.context=function(t){return arguments.length?(r=null==t?(n=null,new oh):new Xl(n=t),"function"!=typeof i&&r.pointRadius(i),o):n},o.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),o):i},o.projection(t).context(n)},geoAlbers:Eh,geoAlbersUsa:function(){var t,n,e,r,i,o,a=Eh(),u=Mh().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=Mh().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:t=function(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},geoTransverseMercatorRaw:Hh,geoRotation:ms,geoStream:Zc,geoTransform:function(t){return{stream:uh(t)}},cluster:function(){var t=Vh,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(Wh,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Xh,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},hierarchy:Zh,pack:function(){var t=null,n=1,e=1,r=gd;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(_d(t)).eachAfter(xd(r,.5)).eachBefore(wd(1)):i.eachBefore(_d(md)).eachAfter(xd(gd,1)).eachAfter(xd(r,i.r/Math.min(n,e))).eachBefore(wd(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=yd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:bd(+t),i):r},i},packSiblings:function(t){return pd(t),t},packEnclose:ed,partition:function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ed(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a0)throw new Error("cycle");return o}return e.id=function(n){return arguments.length?(t=vd(n),e):t},e.parentId=function(t){return arguments.length?(n=vd(t),e):n},e},tree:function(){var t=Nd,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Ld(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Ld(r[i],i)),e.parent=n;return(a.parent=new Ld(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.xs.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),y=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*y}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Pd(u),o=Cd(o),u&&o;)c=Cd(c),(a=Pd(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Od(Rd(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Pd(a)&&(a.t=u,a.m+=l-s),o&&!Cd(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},treemap:function(){var t=qd,n=!1,e=1,r=1,i=[0],o=gd,a=gd,u=gd,c=gd,f=gd;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Md),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d>>1;f[y]c-o){var b=(i*g+a*v)/r;t(n,d,v,i,o,b,c),t(d,e,g,b,o,a,c)}else{var m=(o*g+c*v)/r;t(n,d,v,i,o,a,m),t(d,e,g,i,m,a,c)}}(0,c,t.value,n,e,r,i)},treemapDice:Ed,treemapSlice:zd,treemapSliceDice:function(t,n,e,r,i){(1&t.depth?zd:Ed)(t,n,e,r,i)},treemapSquarify:qd,treemapResquarify:Fd,interpolate:Yr,interpolateArray:function(t,n){return(zr(n)?Lr:Dr)(t,n)},interpolateBasis:Mr,interpolateBasisClosed:Er,interpolateDate:Br,interpolateDiscrete:function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},interpolateHue:function(t,n){var e=kr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},interpolateNumber:qr,interpolateNumberArray:Lr,interpolateObject:Fr,interpolateRound:$r,interpolateString:Ir,interpolateTransformCss:Kr,interpolateTransformSvg:ti,interpolateZoom:ri,interpolateRgb:Cr,interpolateRgbBasis:Or,interpolateRgbBasisClosed:Rr,interpolateHsl:oi,interpolateHslLong:ai,interpolateLab:function(t,n){var e=Nr((t=nr(t)).l,(n=nr(n)).l),r=Nr(t.a,n.a),i=Nr(t.b,n.b),o=Nr(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},interpolateHcl:ci,interpolateHclLong:fi,interpolateCubehelix:li,interpolateCubehelixLong:hi,piecewise:function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;nu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},polygonLength:function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r0?i[n-1]:e[0],n=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},Zd.apply(vp(u),arguments)},scaleThreshold:function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return t<=t?r[nt(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=tp.call(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=tp.call(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},Zd.apply(o,arguments)},scaleTime:Ng,scaleUtc:function(){return Zd.apply(Sg(Wy,$y,Ny,Ty,My,_y,jp,qp,ev).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},scaleSequential:function t(){var n=vp(Cg()(up));return n.copy=function(){return Pg(n,t())},Qd.apply(n,arguments)},scaleSequentialLog:function t(){var n=Ap(Cg()).domain([1,10]);return n.copy=function(){return Pg(n,t()).base(n.base())},Qd.apply(n,arguments)},scaleSequentialPow:Og,scaleSequentialSqrt:function(){return Og.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function t(){var n=Sp(Cg());return n.copy=function(){return Pg(n,t()).constant(n.constant())},Qd.apply(n,arguments)},scaleSequentialQuantile:function t(){var n=[],e=up;function r(t){if(!isNaN(t=+t))return e((nt(n,t)-1)/(n.length-1))}return r.domain=function(t){if(!arguments.length)return n.slice();n=[];for(var e,i=0,o=t.length;i1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return Zb.h=360*t-100,Zb.s=1.5-1.5*n,Zb.l=.8-.9*n,Zb+""},interpolateWarm:Xb,interpolateCool:Gb,interpolateSinebow:function(t){var n;return t=(.5-t)*Math.PI,Qb.r=255*(n=Math.sin(t))*n,Qb.g=255*(n=Math.sin(t+Jb))*n,Qb.b=255*(n=Math.sin(t+Kb))*n,Qb+""},interpolateTurbo:function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},interpolateViridis:nm,interpolateMagma:em,interpolateInferno:rm,interpolatePlasma:im,create:function(t){return te(Xt(t).call(document.documentElement))},creator:Xt,local:ee,matcher:Kt,mouse:ae,namespace:Ht,namespaces:$t,clientPoint:oe,select:te,selectAll:function(t){return"string"==typeof t?new Jn([document.querySelectorAll(t)],[document.documentElement]):new Jn([null==t?[]:t],Qn)},selection:Kn,selector:Zt,selectorAll:Jt,style:vn,touch:ue,touches:function(t,n){null==n&&(n=ie().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e0){for(var e,r,i,o=0,a=t[0].length;o0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},stackOffsetNone:V_,stackOffsetSilhouette:function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a1&&e.name===n)return new ho([[t]],Uo,n,+r);return null},interrupt:qi,voronoi:function(){var t=nx,n=ex,e=null;function r(r){return new Bx(r.map((function(e,i){var o=[Math.round(t(e,i,r)/Rx)*Rx,Math.round(n(e,i,r)/Rx)*Rx];return o.index=i,o.data=e,o})),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:tx(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:tx(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},zoom:function(){var t,n,e=Hx,r=Vx,i=Zx,o=Xx,a=Gx,u=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],f=250,s=ri,l=qt("start","zoom","end"),h=500,d=0;function p(t){t.property("__zoom",Wx).on("wheel.zoom",x).on("mousedown.zoom",w).on("dblclick.zoom",M).filter(a).on("touchstart.zoom",E).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",T).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,n){return(n=Math.max(u[0],Math.min(u[1],n)))===t.k?t:new Ux(n,t.x,t.y)}function v(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Ux(t.k,r,i)}function g(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function b(t,n,e){t.on("start.zoom",(function(){m(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){m(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,o=m(t,i),a=r.apply(t,i),u=null==e?g(a):"function"==typeof e?e.apply(t,i):e,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,l="function"==typeof n?n.apply(t,i):n,h=s(f.invert(u).concat(c/f.k),l.invert(u).concat(c/l.k));return function(t){if(1===t)t=l;else{var n=h(t),e=c/n[2];t=new Ux(e,u[0]-n[0]*e,u[1]-n[1]*e)}o.zoom(null,t)}}))}function m(t,n,e){return!e&&t.__zooming||new _(t,n)}function _(t,n){this.that=t,this.args=n,this.active=0,this.extent=r.apply(t,n),this.taps=0}function x(){if(e.apply(this,arguments)){var t=m(this,arguments),n=this.__zoom,r=Math.max(u[0],Math.min(u[1],n.k*Math.pow(2,o.apply(this,arguments)))),a=ae(this);if(t.wheel)t.mouse[0][0]===a[0]&&t.mouse[0][1]===a[1]||(t.mouse[1]=n.invert(t.mouse[0]=a)),clearTimeout(t.wheel);else{if(n.k===r)return;t.mouse=[a,n.invert(a)],qi(this),t.start()}$x(),t.wheel=setTimeout(f,150),t.zoom("mouse",i(v(y(n,r),t.mouse[0],t.mouse[1]),t.extent,c))}function f(){t.wheel=null,t.end()}}function w(){if(!n&&e.apply(this,arguments)){var t=m(this,arguments,!0),r=te(jn.view).on("mousemove.zoom",f,!0).on("mouseup.zoom",s,!0),o=ae(this),a=jn.clientX,u=jn.clientY;se(jn.view),Yx(),t.mouse=[o,this.__zoom.invert(o)],qi(this),t.start()}function f(){if($x(),!t.moved){var n=jn.clientX-a,e=jn.clientY-u;t.moved=n*n+e*e>d}t.zoom("mouse",i(v(t.that.__zoom,t.mouse[0]=ae(t.that),t.mouse[1]),t.extent,c))}function s(){r.on("mousemove.zoom mouseup.zoom",null),le(jn.view,t.moved),$x(),t.end()}}function M(){if(e.apply(this,arguments)){var t=this.__zoom,n=ae(this),o=t.invert(n),a=t.k*(jn.shiftKey?.5:2),u=i(v(y(t,a),n,o),r.apply(this,arguments),c);$x(),f>0?te(this).transition().duration(f).call(b,u,n):te(this).call(p.transform,u)}}function E(){if(e.apply(this,arguments)){var n,r,i,o,a=jn.touches,u=a.length,c=m(this,arguments,jn.changedTouches.length===u);for(Yx(),r=0;r0},t.prototype.connect_=function(){Kx&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),rw?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){Kx&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var n=t.propertyName,e=void 0===n?"":n;ew.some((function(t){return!!~e.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),ow=function(t,n){for(var e=0,r=Object.keys(n);e0},t}(),gw="undefined"!=typeof WeakMap?new WeakMap:new Jx,bw=function t(n){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var e=iw.getInstance(),r=new vw(n,e,this);gw.set(this,r)};["observe","unobserve","disconnect"].forEach((function(t){bw.prototype[t]=function(){var n;return(n=gw.get(this))[t].apply(n,arguments)}}));var mw=void 0!==tw.ResizeObserver?tw.ResizeObserver:bw;const _w=Q.oneOfType([Q.func,Q.number]),xw=(t,n,e)=>"function"==typeof t?t(n,e):t,ww=Q.shape({height:Q.number,width:Q.number,marginTop:Q.number,marginRight:Q.number,marginBottom:Q.number,marginLeft:Q.number}),Mw=t=>{let n={marginTop:40,marginRight:30,marginBottom:40,marginLeft:75,...t};return{...n,boundedHeight:Math.max(n.height-n.marginTop-n.marginBottom,0),boundedWidth:Math.max(n.width-n.marginLeft-n.marginRight,0)}},Ew=n=>{const e=t.useRef(),r=Mw(n),[i,o]=t.useState(0),[a,u]=t.useState(0);t.useEffect((()=>{if(r.width&&r.height)return;const t=e.current,n=new mw((t=>{if(!Array.isArray(t))return;if(!t.length)return;const n=t[0];i!==n.contentRect.width&&o(n.contentRect.width),a!==n.contentRect.height&&u(n.contentRect.height)}));return n.observe(t),()=>n.unobserve(t)}),[n,a,i,r]);const c=Mw({...r,width:r.width||i,height:r.height||a});return[e,c]},Aw=(n="")=>`${n}-${t.useId().replace(/:/g,"")}`;!function(t,n){void 0===n&&(n={});var e=n.insertAt;if(t&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===e&&r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i),i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t))}}(".Chart{overflow:visible}.Chart text{fill:#95a5a6}.Line{transition:all .3s ease-out}.Line--type-line{fill:none;stroke:#9980fa;stroke-width:3px;stroke-linecap:round}.Line--type-area{fill:rgba(152,128,250,.185);stroke-width:0}.Axis__line{stroke:#bdc3c7}.Axis__label{text-anchor:middle;font-size:.9em;letter-spacing:.01em}.Axis__tick{font-size:.8em;transition:all .3s ease-out}.AxisHorizontal .Axis__tick{text-anchor:middle}.AxisVertical .Axis__tick{dominant-baseline:middle;text-anchor:end}.Circles__circle{fill:#9980fa;cursor:pointer;transition:opacity .15s ease-out,r .15s ease-out}.Bars__rect{fill:#9980fa}.Bars__rect,.PieChart__slice{cursor:pointer;transition:opacity .15s ease-out}.BarChart:has(.Bars__rect:hover) .Bars__rect:not(:hover),.Histogram:has(.Bars__rect:hover) .Bars__rect:not(:hover){opacity:.35}.ScatterPlot:has(.Circles__circle:hover) .Circles__circle:not(:hover){opacity:.35}.PieChart:has(.PieChart__slice:hover) .PieChart__slice:not(:hover){opacity:.35}.StackedBar__segment{cursor:pointer;transition:opacity .15s ease-out}.StackedBarChart:has(.StackedBar__segment:hover) .StackedBar__segment:not(:hover){opacity:.35}.Timeline__hover-line{stroke:#aaa;stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.Timeline__hover-dot{fill:#fff;stroke-width:2.5px;pointer-events:none}.domain,.tick line{stroke:#dadada}");const Tw=t.createContext(),kw=({dimensions:t,children:n,label:r})=>e.default.createElement(Tw.Provider,{value:t},e.default.createElement("svg",{className:"Chart",width:t.width,height:t.height,role:"img","aria-label":r},e.default.createElement("g",{transform:`translate(${t.marginLeft}, ${t.marginTop})`},n)));function Sw(){return Sw=Object.assign?Object.assign.bind():function(t){for(var n=1;ne.default.createElement(e.default.Fragment,null,t.map(((t,l)=>e.default.createElement("rect",Sw({},s,{className:"Bars__rect",key:n(t,l),x:xw(r,t,l),y:xw(i,t,l),width:Mt([xw(o,t,l),0]),height:Mt([xw(a,t,l),0]),onMouseEnter:u?n=>u(t,l,n):void 0,onMouseLeave:c?n=>c(t,l,n):void 0,onMouseMove:f?n=>f(t,l,n):void 0})))));Nw.propTypes={data:Q.array,keyAccessor:_w,xAccessor:_w,yAccessor:_w,widthAccessor:_w,heightAccessor:_w},Nw.defaultProps={};const Cw={x:function({dimensions:t,label:n,formatTick:r,scale:i,...o}){if(!i)return null;const a=t.boundedWidth<600?t.boundedWidth/100:t.boundedWidth/250,u="function"==typeof i.ticks?i.ticks(a):i.domain(),c="function"==typeof i.bandwidth?i.bandwidth()/2:0;return e.default.createElement("g",Sw({className:"Axis AxisHorizontal",transform:`translate(0, ${t.boundedHeight})`},o),e.default.createElement("line",{className:"Axis__line",x2:t.boundedWidth}),u.map(((t,n)=>e.default.createElement("text",{key:`${t}-${n}`,className:"Axis__tick",transform:`translate(${i(t)+c}, 25)`},r(t)))),n&&e.default.createElement("text",{className:"Axis__label",transform:`translate(${t.boundedWidth/2}, 60)`},n))},y:function({dimensions:t,label:n,formatTick:r,scale:i,...o}){if(!i)return null;const a=t.boundedHeight/70,u=i.ticks(a);return e.default.createElement("g",Sw({className:"Axis AxisVertical"},o),e.default.createElement("line",{className:"Axis__line",y2:t.boundedHeight}),u.map(((t,n)=>e.default.createElement("text",{key:`${t}-${n}`,className:"Axis__tick",transform:`translate(-16, ${i(t)})`},r(t)))),n&&e.default.createElement("text",{className:"Axis__label",style:{transform:`translate(-56px, ${t.boundedHeight/2}px) rotate(-90deg)`}},n))}},Pw=({dimension:n,...r})=>{const i=t.useContext(Tw),o=Cw[n];return o?e.default.createElement(o,Sw({dimensions:i},r)):null};Pw.propTypes={dimension:Q.oneOf(["x","y"]),scale:Q.func,label:Q.string,formatTick:Q.func},Pw.defaultProps={dimension:"x",scale:null,formatTick:sc(",")};const Ow=({items:t,position:n})=>{const r="left"===n||"right"===n;return e.default.createElement("div",{className:"Legend",style:{display:"flex",flexDirection:r?"column":"row",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:"6px 14px",padding:r?"0 10px":"6px 8px",fontSize:"12px",color:"#555",flexShrink:0}},t.map(((t,n)=>e.default.createElement("div",{key:n,className:"Legend__item",style:{display:"flex",alignItems:"center",gap:5}},e.default.createElement("span",{className:"Legend__swatch",style:{display:"inline-block",width:10,height:10,borderRadius:2,background:t.color,flexShrink:0}}),e.default.createElement("span",{className:"Legend__label"},t.label)))))};Ow.propTypes={items:Q.arrayOf(Q.shape({color:Q.string.isRequired,label:Q.string.isRequired})),position:Q.oneOf(["top","bottom","left","right"])},Ow.defaultProps={items:[],position:"bottom"};const Rw=({visible:t,x:n,y:r,children:i})=>t?e.default.createElement("div",{className:"Tooltip",style:{position:"absolute",left:n,top:r,transform:"translate(-50%, calc(-100% - 10px))",pointerEvents:"none",background:"#fff",border:"1px solid #e0e0e0",borderRadius:6,padding:"7px 12px",fontSize:12,lineHeight:1.6,boxShadow:"0 4px 12px rgba(0,0,0,0.10)",zIndex:10,whiteSpace:"nowrap",color:"#444"}},i):null;Rw.propTypes={visible:Q.bool,x:Q.number,y:Q.number,children:Q.node};const Lw=sc(","),zw=({data:n,xAccessor:r,yAccessor:i,xLabel:o,yLabel:a,color:u,barPadding:c,formatYTick:f,yMin:s,showLegend:l,legendPosition:h})=>{const[d,p]=Ew({marginBottom:77}),y=t.useRef(),[v,g]=t.useState({visible:!1,x:0,y:0,d:null});if(!n||0===n.length)return null;const b=rp().domain(n.map(r)).range([0,p.boundedWidth]).padding(void 0!==c?c:.2),m=gp().domain([void 0!==s?s:0,Mt(n,i)]).range([p.boundedHeight,0]).nice(),_=t=>{const{left:n,top:e}=y.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},x=a?[{color:u||"#9980FA",label:a}]:[],w=h||"bottom",M="left"===w||"right"===w,E="top"===w||"left"===w,A=e.default.createElement("div",{className:"BarChart",ref:d,style:{flex:1,minHeight:0,minWidth:0}},e.default.createElement(kw,{dimensions:p,label:[o,a].filter(Boolean).join(" / ")},e.default.createElement(Pw,{dimension:"x",scale:b,formatTick:t=>t,label:o}),e.default.createElement(Pw,{dimension:"y",scale:m,formatTick:f,label:a}),e.default.createElement(Nw,{data:n,keyAccessor:(t,n)=>n,xAccessor:t=>b(r(t)),yAccessor:t=>m(i(t)),widthAccessor:()=>b.bandwidth(),heightAccessor:t=>p.boundedHeight-m(i(t)),style:u?{fill:u}:void 0,onMouseEnter:(t,n,e)=>{const{x:r,y:i}=_(e);g({visible:!0,x:r,y:i,d:t})},onMouseMove:(t,n,e)=>{const{x:r,y:i}=_(e);g((t=>({...t,x:r,y:i})))},onMouseLeave:()=>g((t=>({...t,visible:!1})))}))),T=l&&x.length>0?e.default.createElement(Ow,{items:x,position:w}):null;return e.default.createElement("div",{ref:y,style:{width:"100%",height:"100%",display:"flex",flexDirection:M?"row":"column",position:"relative"}},E&&T,A,!E&&T,e.default.createElement(Rw,{visible:v.visible,x:v.x,y:v.y},v.d&&e.default.createElement(e.default.Fragment,null,e.default.createElement("div",null,e.default.createElement("strong",null,o||"Category"),": ",r(v.d)),e.default.createElement("div",null,e.default.createElement("strong",null,a||"Value"),": ",Lw(i(v.d))))))};zw.propTypes={data:Q.array,xAccessor:_w,yAccessor:_w,xLabel:Q.string,yLabel:Q.string,color:Q.string,barPadding:Q.number,formatYTick:Q.func,yMin:Q.number,showLegend:Q.bool,legendPosition:Q.oneOf(["top","bottom","left","right"])},zw.defaultProps={xAccessor:t=>t.x,yAccessor:t=>t.y};const Dw=({id:t,colors:n,...r})=>e.default.createElement("linearGradient",Sw({id:t,gradientUnits:"userSpaceOnUse",spreadMethod:"pad"},r),n.map(((t,r)=>e.default.createElement("stop",{key:`${t}-${r}`,offset:100*r/(n.length-1)+"%",stopColor:t}))));Dw.propTypes={id:Q.string,colors:Q.arrayOf(Q.string)},Dw.defaultProps={id:"Gradient",colors:[]};const Bw=["#9980FA","rgb(226, 222, 243)"],qw=sc(","),Fw=sc(",.2~f"),Uw=({data:n,xAccessor:r,xLabel:i,yLabel:o,color:a,gradientColors:u,thresholds:c,formatXTick:f,formatYTick:s,showLegend:l,legendPosition:h})=>{const d=Aw("Histogram-gradient"),[p,y]=Ew({marginBottom:77}),v=t.useRef(),[g,b]=t.useState({visible:!1,x:0,y:0,d:null});if(!n||0===n.length)return null;const m=c||9,_=gp().domain(ut(n,r)).range([0,y.boundedWidth]).nice(m),x=xt().domain(_.domain()).value(r).thresholds(_.ticks(m))(n),w=t=>t.length,M=gp().domain([0,Mt(x,w)]).range([y.boundedHeight,0]).nice(),E=u||Bw,A=a?{fill:a}:{fill:`url(#${d})`},T=f||Fw,k=t=>{const{left:n,top:e}=v.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},S=i?[{color:a||"#9980FA",label:i}]:[],N=h||"bottom",C="left"===N||"right"===N,P="top"===N||"left"===N,O=e.default.createElement("div",{className:"Histogram",ref:p,style:{flex:1,minHeight:0,minWidth:0}},e.default.createElement(kw,{dimensions:y,label:[i,o].filter(Boolean).join(" / ")},e.default.createElement("defs",null,e.default.createElement(Dw,{id:d,colors:E,x2:"0",y2:"100%"})),e.default.createElement(Pw,{dimension:"x",scale:_,formatTick:f,label:i}),e.default.createElement(Pw,{dimension:"y",scale:M,formatTick:s,label:o||"Count"}),e.default.createElement(Nw,{data:x,keyAccessor:(t,n)=>n,xAccessor:t=>_(t.x0)+2,yAccessor:t=>M(w(t)),widthAccessor:t=>_(t.x1)-_(t.x0)-2,heightAccessor:t=>y.boundedHeight-M(w(t)),style:A,onMouseEnter:(t,n,e)=>{const{x:r,y:i}=k(e);b({visible:!0,x:r,y:i,d:t})},onMouseMove:(t,n,e)=>{const{x:r,y:i}=k(e);b((t=>({...t,x:r,y:i})))},onMouseLeave:()=>b((t=>({...t,visible:!1})))}))),R=l&&S.length>0?e.default.createElement(Ow,{items:S,position:N}):null;return e.default.createElement("div",{ref:v,style:{width:"100%",height:"100%",display:"flex",flexDirection:C?"row":"column",position:"relative"}},P&&R,O,!P&&R,e.default.createElement(Rw,{visible:g.visible,x:g.x,y:g.y},g.d&&e.default.createElement(e.default.Fragment,null,e.default.createElement("div",null,e.default.createElement("strong",null,i||"Range"),": ",T(g.d.x0)," – ",T(g.d.x1)),e.default.createElement("div",null,e.default.createElement("strong",null,"Count"),": ",qw(g.d.length)))))};Uw.propTypes={data:Q.array,xAccessor:_w,xLabel:Q.string,yLabel:Q.string,color:Q.string,gradientColors:Q.arrayOf(Q.string),thresholds:Q.number,formatXTick:Q.func,formatYTick:Q.func,showLegend:Q.bool,legendPosition:Q.oneOf(["top","bottom","left","right"])},Uw.defaultProps={xAccessor:t=>t.x};const jw={marginTop:20,marginRight:20,marginBottom:20,marginLeft:20},Iw=sc(","),Yw=({data:n,valueAccessor:r,labelAccessor:i,colors:o,innerRadius:a,padAngle:u,showLabels:c,showLegend:f,legendPosition:s})=>{const[l,h]=Ew(jw),d=t.useRef(),[p,y]=t.useState({visible:!1,x:0,y:0,datum:null,label:null});if(!n||0===n.length)return null;const v=Math.min(h.boundedWidth,h.boundedHeight)/2,g=h.boundedWidth/2,b=h.boundedHeight/2,m=ep(Array.isArray(o)?o:Yg),_="number"==typeof a?v*Math.min(Math.max(a,0),.95):0,x=Lm().value(r).padAngle(void 0!==u?u:.02).sort(null),w=Am().innerRadius(_).outerRadius(v),M=_>0?(_+v)/2:.65*v,E=Am().innerRadius(M).outerRadius(M),A=x(n),T=!1!==c&&"function"==typeof i,k=Tt(n,r),S="function"==typeof i?n.map(((t,n)=>{const e=i(t);return{color:m(void 0!==e?e:String(n)),label:String(e)}})):[],N=s||"bottom",C="left"===N||"right"===N,P="top"===N||"left"===N,O=t=>{const{left:n,top:e}=d.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},R=()=>y((t=>({...t,visible:!1}))),L=e.default.createElement("div",{className:"PieChart",ref:l,style:{flex:1,minHeight:0,minWidth:0}},e.default.createElement(kw,{dimensions:h,label:"Pie chart"},e.default.createElement("g",{transform:`translate(${g}, ${b})`},A.map(((t,r)=>{const o=i?i(n[r]):String(r),a=t.endAngle-t.startAngle;return e.default.createElement("g",{key:r,className:"PieChart__slice-group"},e.default.createElement("path",{className:"PieChart__slice",d:w(t),style:{fill:m(o)},onMouseEnter:t=>((t,n,e)=>{const{x:r,y:i}=O(e);y({visible:!0,x:r,y:i,datum:t,label:n})})(n[r],o,t),onMouseMove:t=>((t,n,e)=>{const{x:r,y:i}=O(e);y((t=>({...t,x:r,y:i})))})(n[r],0,t),onMouseLeave:R}),T&&a>=.35&&e.default.createElement("text",{className:"PieChart__label",transform:`translate(${E.centroid(t)})`,style:{textAnchor:"middle",dominantBaseline:"middle",pointerEvents:"none"}},o))}))))),z=f&&S.length>0?e.default.createElement(Ow,{items:S,position:N}):null,D=p.datum?r(p.datum):0,B=k>0?Math.round(D/k*100):0;return e.default.createElement("div",{ref:d,style:{width:"100%",height:"100%",display:"flex",flexDirection:C?"row":"column",position:"relative"}},P&&z,L,!P&&z,e.default.createElement(Rw,{visible:p.visible,x:p.x,y:p.y},p.datum&&e.default.createElement(e.default.Fragment,null,e.default.createElement("div",null,e.default.createElement("strong",null,p.label)),e.default.createElement("div",null,Iw(D)," (",B,"%)"))))};Yw.propTypes={data:Q.array,valueAccessor:_w,labelAccessor:_w,colors:Q.arrayOf(Q.string),innerRadius:Q.number,padAngle:Q.number,showLabels:Q.bool,showLegend:Q.bool,legendPosition:Q.oneOf(["top","bottom","left","right"])},Yw.defaultProps={valueAccessor:t=>t.value,labelAccessor:t=>t.label};const $w=({data:t,keyAccessor:n,xAccessor:r,yAccessor:i,radius:o,color:a,onMouseEnter:u,onMouseLeave:c,onMouseMove:f,...s})=>e.default.createElement(e.default.Fragment,null,t.map(((t,l)=>e.default.createElement("circle",Sw({},s,{className:"Circles__circle",key:n(t,l),cx:r(t,l),cy:i(t,l),r:"function"==typeof o?o(t):o,style:a?{fill:a}:void 0,onMouseEnter:u?n=>u(t,l,n):void 0,onMouseLeave:c?n=>c(t,l,n):void 0,onMouseMove:f?n=>f(t,l,n):void 0})))));$w.propTypes={data:Q.array,keyAccessor:_w,xAccessor:_w,yAccessor:_w,radius:_w,color:Q.string},$w.defaultProps={radius:5};const Hw=sc(","),Vw=({data:n,xAccessor:r,yAccessor:i,xLabel:o,yLabel:a,color:u,radius:c,formatXTick:f,formatYTick:s,showLegend:l,legendPosition:h})=>{const[d,p]=Ew({marginBottom:77}),y=t.useRef(),[v,g]=t.useState({visible:!1,x:0,y:0,d:null});if(!n||0===n.length)return null;const b=ut(n,r),m=ut(n,i),_=b[0]===b[1]?[b[0]-1,b[0]+1]:b,x=m[0]===m[1]?[m[0]-1,m[0]+1]:m,w=gp().domain(_).range([0,p.boundedWidth]).nice(),M=gp().domain(x).range([p.boundedHeight,0]).nice(),E=t=>{const{left:n,top:e}=y.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},A=a?[{color:u||"#9980FA",label:a}]:[],T=h||"bottom",k="left"===T||"right"===T,S="top"===T||"left"===T,N=e.default.createElement("div",{className:"ScatterPlot",ref:d,style:{flex:1,minHeight:0,minWidth:0}},e.default.createElement(kw,{dimensions:p,label:[o,a].filter(Boolean).join(" / ")},e.default.createElement(Pw,{dimension:"x",scale:w,formatTick:f,label:o}),e.default.createElement(Pw,{dimension:"y",scale:M,formatTick:s,label:a}),e.default.createElement($w,{data:n,keyAccessor:(t,n)=>n,xAccessor:t=>w(r(t)),yAccessor:t=>M(i(t)),radius:c,color:u,onMouseEnter:(t,n,e)=>{const{x:r,y:i}=E(e);g({visible:!0,x:r,y:i,d:t})},onMouseMove:(t,n,e)=>{const{x:r,y:i}=E(e);g((t=>({...t,x:r,y:i})))},onMouseLeave:()=>g((t=>({...t,visible:!1})))}))),C=l&&A.length>0?e.default.createElement(Ow,{items:A,position:T}):null;return e.default.createElement("div",{ref:y,style:{width:"100%",height:"100%",display:"flex",flexDirection:k?"row":"column",position:"relative"}},S&&C,N,!S&&C,e.default.createElement(Rw,{visible:v.visible,x:v.x,y:v.y},v.d&&e.default.createElement(e.default.Fragment,null,e.default.createElement("div",null,e.default.createElement("strong",null,o||"X"),": ",Hw(r(v.d))),e.default.createElement("div",null,e.default.createElement("strong",null,a||"Y"),": ",Hw(i(v.d))))))};Vw.propTypes={data:Q.array,xAccessor:_w,yAccessor:_w,xLabel:Q.string,yLabel:Q.string,color:Q.string,radius:Q.oneOfType([Q.number,Q.func]),formatXTick:Q.func,formatYTick:Q.func,showLegend:Q.bool,legendPosition:Q.oneOf(["top","bottom","left","right"])},Vw.defaultProps={xAccessor:t=>t.x,yAccessor:t=>t.y};const Ww=sc(","),Xw=({data:n,xAccessor:r,keys:i,colors:o,xLabel:a,yLabel:u,barPadding:c,formatYTick:f,showLegend:s,legendPosition:l})=>{const[h,d]=Ew({marginBottom:77}),p=t.useRef(),[y,v]=t.useState({visible:!1,x:0,y:0,key:null,value:0,category:null,total:0});if(!n||0===n.length||!i||0===i.length)return null;const g=ep(Array.isArray(o)?o:Yg).domain(i),b=G_().keys(i)(n),m=rp().domain(n.map(r)).range([0,d.boundedWidth]).padding(void 0!==c?c:.2),_=gp().domain([0,Mt(b,(t=>Mt(t,(t=>t[1]))))]).range([d.boundedHeight,0]).nice(),x=t=>{const{left:n,top:e}=p.current.getBoundingClientRect();return{x:t.clientX-n,y:t.clientY-e}},w=()=>v((t=>({...t,visible:!1}))),M=i.map((t=>({color:g(t),label:t}))),E=l||"bottom",A="left"===E||"right"===E,T="top"===E||"left"===E,k=e.default.createElement("div",{className:"StackedBarChart",ref:h,style:{flex:1,minHeight:0,minWidth:0}},e.default.createElement(kw,{dimensions:d,label:[a,u].filter(Boolean).join(" / ")},e.default.createElement(Pw,{dimension:"x",scale:m,formatTick:t=>t,label:a}),e.default.createElement(Pw,{dimension:"y",scale:_,formatTick:f,label:u}),b.map((t=>e.default.createElement("g",{key:t.key,className:"StackedBar__series"},t.map(((n,o)=>e.default.createElement("rect",{key:o,className:"StackedBar__segment",x:m(r(n.data)),y:_(n[1]),width:m.bandwidth(),height:Math.max(0,_(n[0])-_(n[1])),style:{fill:g(t.key)},onMouseEnter:e=>((t,n,e)=>{const{x:o,y:a}=x(e),u=i.reduce(((t,e)=>t+(n.data[e]||0)),0);v({visible:!0,x:o,y:a,key:t,value:n[1]-n[0],category:r(n.data),total:u})})(t.key,n,e),onMouseMove:n=>((t,n,e)=>{const{x:r,y:i}=x(e);v((t=>({...t,x:r,y:i})))})(t.key,0,n),onMouseLeave:w})))))))),S=!1!==s&&M.length>0?e.default.createElement(Ow,{items:M,position:E}):null;return e.default.createElement("div",{ref:p,style:{width:"100%",height:"100%",display:"flex",flexDirection:A?"row":"column",position:"relative"}},T&&S,k,!T&&S,e.default.createElement(Rw,{visible:y.visible,x:y.x,y:y.y},y.key&&e.default.createElement(e.default.Fragment,null,e.default.createElement("div",null,e.default.createElement("strong",null,y.category)),e.default.createElement("div",null,y.key,": ",Ww(y.value)),e.default.createElement("div",{style:{color:"#888",fontSize:11}},"Total: ",Ww(y.total)))))};Xw.propTypes={data:Q.array,xAccessor:_w,keys:Q.arrayOf(Q.string).isRequired,colors:Q.arrayOf(Q.string),xLabel:Q.string,yLabel:Q.string,barPadding:Q.number,formatYTick:Q.func,showLegend:Q.bool,legendPosition:Q.oneOf(["top","bottom","left","right"])},Xw.defaultProps={xAccessor:t=>t.x};const Gw=({type:t,data:n,xAccessor:r,yAccessor:i,y0Accessor:o,interpolation:a,...u})=>{const c=Qx[t]().x(r).y(i).curve(a);return"area"===t&&c.y0(o).y1(i),e.default.createElement("path",Sw({},u,{className:`Line Line--type-${t}`,d:c(n)}))};Gw.propTypes={type:Q.oneOf(["line","area"]),data:Q.array,xAccessor:_w,yAccessor:_w,y0Accessor:_w,interpolation:Q.func},Gw.defaultProps={type:"line",y0Accessor:0,interpolation:I_};const Zw=tv("%-b %-d"),Qw=tv("%-b %-d, %Y"),Jw=["rgb(226, 222, 243)","#f8f9fa"],Kw=sc(","),tM=({data:n,xAccessor:r,yAccessor:i,xLabel:o,yLabel:a,color:u,gradientColors:c,interpolation:f,showArea:s,showDots:l,formatXTick:h,formatYTick:d,showLegend:p,legendPosition:y})=>{const[v,g]=Ew({marginBottom:77}),b=Aw("Timeline-gradient"),m=t.useRef(),[_,x]=t.useState(null),[w,M]=t.useState({visible:!1,x:0,y:0});if(!n||0===n.length)return null;const E=c||(u?[`${u}55`,"rgba(255,255,255,0)"]:Jw),A=Ng().domain(ut(n,r)).range([0,g.boundedWidth]),T=gp().domain(ut(n,i)).range([g.boundedHeight,0]).nice(),k=t=>A(r(t)),S=t=>T(i(t)),N=T(T.domain()[0]),C=K(r).left,P=null!==_?n[_]:null,O=d||Kw,R=h||Qw,L=a?[{color:u||"#9980FA",label:a}]:[],z=y||"bottom",D="left"===z||"right"===z,B="top"===z||"left"===z,q=e.default.createElement("div",{className:"Timeline",ref:v,style:{flex:1,minHeight:0,minWidth:0}},e.default.createElement(kw,{dimensions:g,label:a||o},e.default.createElement("defs",null,e.default.createElement(Dw,{id:b,colors:E,x2:"0",y2:"100%"})),e.default.createElement(Pw,{dimension:"x",scale:A,formatTick:h||Zw,label:o}),e.default.createElement(Pw,{dimension:"y",scale:T,formatTick:d,label:a}),!1!==s&&e.default.createElement(Gw,{type:"area",data:n,xAccessor:k,yAccessor:S,y0Accessor:N,style:{fill:`url(#${b})`},interpolation:f}),e.default.createElement(Gw,{data:n,xAccessor:k,yAccessor:S,style:u?{stroke:u}:void 0,interpolation:f}),l&&e.default.createElement($w,{data:n,keyAccessor:(t,n)=>n,xAccessor:k,yAccessor:S,color:u}),P&&e.default.createElement(e.default.Fragment,null,e.default.createElement("line",{className:"Timeline__hover-line",x1:k(P),x2:k(P),y1:0,y2:g.boundedHeight}),e.default.createElement("circle",{className:"Timeline__hover-dot",cx:k(P),cy:S(P),r:5,style:{stroke:u||"#9980FA"}})),e.default.createElement("rect",{x:0,y:0,width:g.boundedWidth,height:g.boundedHeight,fill:"none",style:{pointerEvents:"all"},onMouseMove:t=>{const e=t.currentTarget.ownerSVGElement.getBoundingClientRect(),i=t.clientX-e.left-g.marginLeft,o=A.invert(i),a=C(n,o,1),u=n[a-1],c=n[a],f=!c||u&&o-r(u){x(null),M((t=>({...t,visible:!1})))}}))),F=p&&L.length>0?e.default.createElement(Ow,{items:L,position:z}):null;return e.default.createElement("div",{ref:m,style:{width:"100%",height:"100%",display:"flex",flexDirection:D?"row":"column",position:"relative"}},B&&F,q,!B&&F,e.default.createElement(Rw,{visible:w.visible,x:w.x,y:w.y},P&&e.default.createElement(e.default.Fragment,null,e.default.createElement("div",null,e.default.createElement("strong",null,R(r(P)))),e.default.createElement("div",null,a||"Value",": ",O(i(P))))))};tM.propTypes={data:Q.array,xAccessor:_w,yAccessor:_w,xLabel:Q.string,yLabel:Q.string,color:Q.string,gradientColors:Q.arrayOf(Q.string),interpolation:Q.func,showArea:Q.bool,showDots:Q.bool,formatXTick:Q.func,formatYTick:Q.func,showLegend:Q.bool,legendPosition:Q.oneOf(["top","bottom","left","right"])},tM.defaultProps={xAccessor:t=>t.x,yAccessor:t=>t.y,showArea:!0,showDots:!1},exports.BarChart=zw,exports.Histogram=Uw,exports.PieChart=Yw,exports.ScatterPlot=Vw,exports.StackedBarChart=Xw,exports.Timeline=tM; +*/;var C=Object.getOwnPropertySymbols,S=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;function N(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var L=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map((function(e){return t[e]}));if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach((function(e){o[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,r,o=N(e),i=1;i1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),V;function t(t,n,r,o,u){for(var s=t[n],l=0;l0?", expected one of type ["+u.join(", ")+"]":"")+".")}))},shape:function(e){return u((function(t,n,r,o,i){var u=t[n],s=f(u);if("object"!==s)return new a("Invalid "+o+" `"+i+"` of type `"+s+"` supplied to `"+r+"`, expected `object`.");for(var c in e){var d=e[c];if("function"!=typeof d)return l(r,o,i,c,h(d));var p=d(u,c,r,o,i+"."+c,W);if(p)return p}return null}))},exact:function(e){return u((function(t,n,r,o,i){var u=t[n],s=f(u);if("object"!==s)return new a("Invalid "+o+" `"+i+"` of type `"+s+"` supplied to `"+r+"`, expected `object`.");var c=I({},t[n],e);for(var d in c){var p=e[d];if(B(e,d)&&"function"!=typeof p)return l(r,o,i,d,h(p));if(!p)return new a("Invalid "+o+" `"+i+"` key `"+d+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var m=p(u,d,r,o,i+"."+d,W);if(m)return m}return null}))}};function i(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function a(e,t){this.message=e,this.data=t&&"object"==typeof t?t:{},this.stack=""}function u(e){if("production"!==process.env.NODE_ENV)var n={},o=0;function i(i,u,s,l,c,f,h){if(l=l||r,f=f||s,h!==W){if(t){var d=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw d.name="Invariant Violation",d}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var p=l+":"+s;!n[p]&&o<3&&(q("You are manually calling a React.PropTypes validation function for the `"+f+"` prop on `"+l+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),n[p]=!0,o++)}}return null==u[s]?i?null===u[s]?new a("The "+c+" `"+f+"` is marked as required in `"+l+"`, but its value is `null`."):new a("The "+c+" `"+f+"` is marked as required in `"+l+"`, but its value is `undefined`."):null:e(u,s,l,c,f)}var u=i.bind(null,!1);return u.isRequired=i.bind(null,!0),u}function s(e){return u((function(t,n,r,o,i,u){var s=t[n];return f(s)!==e?new a("Invalid "+o+" `"+i+"` of type `"+h(s)+"` supplied to `"+r+"`, expected `"+e+"`.",{expectedType:e}):null}))}function l(e,t,n,r,o){return new a((e||"React class")+": "+t+" type `"+n+"."+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+o+"`.")}function c(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(c);if(null===t||e(t))return!0;var r=function(e){var t=e&&(n&&e[n]||e["@@iterator"]);if("function"==typeof t)return t}(t);if(!r)return!1;var o,i=r.call(t);if(r!==t.entries){for(;!(o=i.next()).done;)if(!c(o.value))return!1}else for(;!(o=i.next()).done;){var a=o.value;if(a&&!c(a[1]))return!1}return!0;default:return!1}}function f(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}(t,e)?"symbol":t}function h(e){if(null==e)return""+e;var t=f(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function d(e){var t=h(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return a.prototype=Error.prototype,o.checkPropTypes=z,o.resetWarningCache=z.resetWarningCache,o.PropTypes=o,o}(G.isElement,!0)}else r.exports=function(){function e(e,t,n,r,o,i){if("SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"!==i){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Z,resetWarningCache:X};return n.PropTypes=n,n}();var J=r.exports;function Q(e,t){return et?1:e>=t?0:NaN}function K(e){return 1===e.length&&(e=function(e){return function(t,n){return Q(e(t),n)}}(e)),{left:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)<0?r=i+1:o=i}return r},right:function(t,n,r,o){for(null==r&&(r=0),null==o&&(o=t.length);r>>1;e(t[i],n)>0?o=i:r=i+1}return r}}}var ee=K(Q).right;function te(e,t){var n,r,o,i=e.length,a=-1;if(null==t){for(;++a=n)for(r=o=n;++an&&(r=n),o=n)for(r=o=n;++an&&(r=n),o=0?(i>=ae?10:i>=ue?5:i>=se?2:1)*Math.pow(10,o):-Math.pow(10,-o)/(i>=ae?10:i>=ue?5:i>=se?2:1)}function ce(e,t,n){var r=Math.abs(t-e)/Math.max(0,n),o=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),i=r/o;return i>=ae?o*=10:i>=ue?o*=5:i>=se&&(o*=2),t=n)for(r=n;++ir&&(r=n)}else for(;++i=n)for(r=n;++ir&&(r=n);return r}function de(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function pe(){}function me(e,t){var n=new pe;if(e instanceof pe)e.each((function(e,t){n.set(t,e)}));else if(Array.isArray(e)){var r,o=-1,i=e.length;if(null==t)for(;++o>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?We(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?We(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Le.exec(e))?new qe(t[1],t[2],t[3],1):(t=Pe.exec(e))?new qe(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=De.exec(e))?We(t[1],t[2],t[3],t[4]):(t=Re.exec(e))?We(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=$e.exec(e))?Ge(t[1],t[2]/100,t[3]/100,1):(t=je.exec(e))?Ge(t[1],t[2]/100,t[3]/100,t[4]):Fe.hasOwnProperty(e)?Ie(Fe[e]):"transparent"===e?new qe(NaN,NaN,NaN,0):null}function Ie(e){return new qe(e>>16&255,e>>8&255,255&e,1)}function We(e,t,n,r){return r<=0&&(e=t=n=NaN),new qe(e,t,n,r)}function Be(e){return e instanceof Ae||(e=Ye(e)),e?new qe((e=e.rgb()).r,e.g,e.b,e.opacity):new qe}function ze(e,t,n,r){return 1===arguments.length?Be(e):new qe(e,t,n,null==r?1:r)}function qe(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function Ve(){return"#"+Ze(this.r)+Ze(this.g)+Ze(this.b)}function Xe(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}function Ze(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?"0":"")+e.toString(16)}function Ge(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Qe(e,t,n,r)}function Je(e){if(e instanceof Qe)return new Qe(e.h,e.s,e.l,e.opacity);if(e instanceof Ae||(e=Ye(e)),!e)return new Qe;if(e instanceof Qe)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,u=i-o,s=(i+o)/2;return u?(a=t===i?(n-r)/u+6*(n0&&s<1?0:a,new Qe(a,u,s,e.opacity)}function Qe(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function Ke(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function et(e){return function(){return e}}function tt(e){return 1==(e=+e)?nt:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):et(isNaN(t)?n:t)}}function nt(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):et(isNaN(e)?t:e)}Ee(Ae,Ye,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:He,formatHex:He,formatHsl:function(){return Je(this).formatHsl()},formatRgb:Ue,toString:Ue}),Ee(qe,ze,Te(Ae,{brighter:function(e){return e=null==e?ke:Math.pow(ke,e),new qe(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new qe(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ve,formatHex:Ve,formatRgb:Xe,toString:Xe})),Ee(Qe,(function(e,t,n,r){return 1===arguments.length?Je(e):new Qe(e,t,n,null==r?1:r)}),Te(Ae,{brighter:function(e){return e=null==e?ke:Math.pow(ke,e),new Qe(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new Qe(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new qe(Ke(e>=240?e-240:e+120,o,r),Ke(e,o,r),Ke(e<120?e+240:e-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===e?")":", "+e+")")}}));var rt=function e(t){var n=tt(t);function r(e,t){var r=n((e=ze(e)).r,(t=ze(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=nt(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+""}}return r.gamma=e,r}(1);function ot(e,t){t||(t=[]);var n,r=e?Math.min(t.length,e.length):0,o=t.slice();return function(i){for(n=0;ni&&(o=t.slice(i,o),u[a]?u[a]+=o:u[++a]=o),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,s.push({i:a,x:ut(n,r)})),i=ct.lastIndex;return ir&&(t=n,n=r,r=t),function(e){return Math.max(n,Math.min(r,e))}}function bt(e,t,n){var r=e[0],o=e[1],i=t[0],a=t[1];return o2?xt:bt,o=i=null,f}function f(t){return isNaN(t=+t)?n:(o||(o=r(a.map(e),u,s)))(e(l(t)))}return f.invert=function(n){return l(t((i||(i=r(u,a.map(e),ut)))(n)))},f.domain=function(e){return arguments.length?(a=be.call(e,pt),l===gt||(l=vt(a)),c()):a.slice()},f.range=function(e){return arguments.length?(u=xe.call(e),c()):u.slice()},f.rangeRound=function(e){return u=xe.call(e),s=dt,c()},f.clamp=function(e){return arguments.length?(l=e?vt(a):gt,f):l!==gt},f.interpolate=function(e){return arguments.length?(s=e,c()):s},f.unknown=function(e){return arguments.length?(n=e,f):n},function(n,r){return e=n,t=r,c()}}()(e,t)}function Mt(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Et(e){return(e=Mt(Math.abs(e)))?e[1]:NaN}var Tt,At=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function kt(e){if(!(t=At.exec(e)))throw new Error("invalid format: "+e);var t;return new Ct({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Ct(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function St(e,t){var n=Mt(e,t);if(!n)return e+"";var r=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+r:r.length>o+1?r.slice(0,o+1)+"."+r.slice(o+1):r+new Array(o-r.length+2).join("0")}kt.prototype=Ct.prototype,Ct.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ot={"%":function(e,t){return(100*e).toFixed(t)},b:function(e){return Math.round(e).toString(2)},c:function(e){return e+""},d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},g:function(e,t){return e.toPrecision(t)},o:function(e){return Math.round(e).toString(8)},p:function(e,t){return St(100*e,t)},r:St,s:function(e,t){var n=Mt(e,t);if(!n)return e+"";var r=n[0],o=n[1],i=o-(Tt=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=r.length;return i===a?r:i>a?r+new Array(i-a+1).join("0"):i>0?r.slice(0,i)+"."+r.slice(i):"0."+new Array(1-i).join("0")+Mt(e,Math.max(0,t+i-1))[0]},X:function(e){return Math.round(e).toString(16).toUpperCase()},x:function(e){return Math.round(e).toString(16)}};function Nt(e){return e}var Lt,Pt,Dt,Rt=Array.prototype.map,$t=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function jt(e){var t,n,r=void 0===e.grouping||void 0===e.thousands?Nt:(t=Rt.call(e.grouping,Number),n=e.thousands+"",function(e,r){for(var o=e.length,i=[],a=0,u=t[0],s=0;o>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),i.push(e.substring(o-=u,o+u)),!((s+=u+1)>r));)u=t[a=(a+1)%t.length];return i.reverse().join(n)}),o=void 0===e.currency?"":e.currency[0]+"",i=void 0===e.currency?"":e.currency[1]+"",a=void 0===e.decimal?".":e.decimal+"",u=void 0===e.numerals?Nt:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(Rt.call(e.numerals,String)),s=void 0===e.percent?"%":e.percent+"",l=void 0===e.minus?"-":e.minus+"",c=void 0===e.nan?"NaN":e.nan+"";function f(e){var t=(e=kt(e)).fill,n=e.align,f=e.sign,h=e.symbol,d=e.zero,p=e.width,m=e.comma,g=e.precision,y=e.trim,v=e.type;"n"===v?(m=!0,v="g"):Ot[v]||(void 0===g&&(g=12),y=!0,v="g"),(d||"0"===t&&"="===n)&&(d=!0,t="0",n="=");var b="$"===h?o:"#"===h&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===h?i:/[%p]/.test(v)?s:"",w=Ot[v],_=/[defgprs%]/.test(v);function M(e){var o,i,s,h=b,M=x;if("c"===v)M=w(e)+M,e="";else{var E=(e=+e)<0||1/e<0;if(e=isNaN(e)?c:w(Math.abs(e),g),y&&(e=function(e){e:for(var t,n=e.length,r=1,o=-1;r0&&(o=0)}return o>0?e.slice(0,o)+e.slice(t+1):e}(e)),E&&0==+e&&"+"!==f&&(E=!1),h=(E?"("===f?f:l:"-"===f||"("===f?"":f)+h,M=("s"===v?$t[8+Tt/3]:"")+M+(E&&"("===f?")":""),_)for(o=-1,i=e.length;++o(s=e.charCodeAt(o))||s>57){M=(46===s?a+e.slice(o+1):e.slice(o))+M,e=e.slice(0,o);break}}m&&!d&&(e=r(e,1/0));var T=h.length+e.length+M.length,A=T>1)+h+e+M+A.slice(T);break;default:e=A+h+e+M}return u(e)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),M.toString=function(){return e+""},M}return{format:f,formatPrefix:function(e,t){var n=f(((e=kt(e)).type="f",e)),r=3*Math.max(-8,Math.min(8,Math.floor(Et(t)/3))),o=Math.pow(10,-r),i=$t[8+r/3];return function(e){return n(o*e)+i}}}}function Ft(e,t,n,r){var o,i=ce(e,t,n);switch((r=kt(null==r?",f":r)).type){case"s":var a=Math.max(Math.abs(e),Math.abs(t));return null!=r.precision||isNaN(o=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Et(t)/3)))-Et(Math.abs(e)))}(i,a))||(r.precision=o),Dt(r,a);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(o=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Et(t)-Et(e))+1}(i,Math.max(Math.abs(e),Math.abs(t))))||(r.precision=o-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(o=function(e){return Math.max(0,-Et(Math.abs(e)))}(i))||(r.precision=o-2*("%"===r.type))}return Pt(r)}function Ht(e){var t=e.domain;return e.ticks=function(e){var n=t();return function(e,t,n){var r,o,i,a,u=-1;if(n=+n,(e=+e)==(t=+t)&&n>0)return[e];if((r=t0)for(e=Math.ceil(e/a),t=Math.floor(t/a),i=new Array(o=Math.ceil(t-e+1));++u0?r=le(u=Math.floor(u/r)*r,s=Math.ceil(s/r)*r,n):r<0&&(r=le(u=Math.ceil(u*r)/r,s=Math.floor(s*r)/r,n)),r>0?(o[i]=Math.floor(u/r)*r,o[a]=Math.ceil(s/r)*r,t(o)):r<0&&(o[i]=Math.ceil(u*r)/r,o[a]=Math.floor(s*r)/r,t(o)),e},e}function Ut(){var e=_t(gt,gt);return e.copy=function(){return wt(e,Ut())},de.apply(e,arguments),Ht(e)}Lt=jt({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Pt=Lt.format,Dt=Lt.formatPrefix;var Yt=new Date,It=new Date;function Wt(e,t,n,r){function o(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return o.floor=function(t){return e(t=new Date(+t)),t},o.ceil=function(n){return e(n=new Date(n-1)),t(n,1),e(n),n},o.round=function(e){var t=o(e),n=o.ceil(e);return e-t0))return u;do{u.push(a=new Date(+n)),t(n,i),e(n)}while(a=t)for(;e(t),!n(t);)t.setTime(t-1)}),(function(e,r){if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}))},n&&(o.count=function(t,r){return Yt.setTime(+t),It.setTime(+r),e(Yt),e(It),Math.floor(n(Yt,It))},o.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?o.filter(r?function(t){return r(t)%e==0}:function(t){return o.count(0,t)%e==0}):o:null}),o}var Bt=Wt((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e}));Bt.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?Wt((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,n){t.setTime(+t+n*e)}),(function(t,n){return(n-t)/e})):Bt:null};var zt=Bt,qt=Wt((function(e){e.setTime(e-e.getMilliseconds())}),(function(e,t){e.setTime(+e+1e3*t)}),(function(e,t){return(t-e)/1e3}),(function(e){return e.getUTCSeconds()})),Vt=qt,Xt=Wt((function(e){e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds())}),(function(e,t){e.setTime(+e+6e4*t)}),(function(e,t){return(t-e)/6e4}),(function(e){return e.getMinutes()})),Zt=Xt,Gt=Wt((function(e){e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds()-6e4*e.getMinutes())}),(function(e,t){e.setTime(+e+36e5*t)}),(function(e,t){return(t-e)/36e5}),(function(e){return e.getHours()})),Jt=Gt,Qt=Wt((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5}),(function(e){return e.getDate()-1})),Kt=Qt;function en(e){return Wt((function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/6048e5}))}var tn=en(0),nn=en(1);en(2),en(3);var rn=en(4);en(5),en(6);var on=Wt((function(e){e.setDate(1),e.setHours(0,0,0,0)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()})),an=on,un=Wt((function(e){e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()}));un.every=function(e){return isFinite(e=Math.floor(e))&&e>0?Wt((function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n*e)})):null};var sn=un,ln=Wt((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/864e5}),(function(e){return e.getUTCDate()-1})),cn=ln;function fn(e){return Wt((function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/6048e5}))}var hn=fn(0),dn=fn(1);fn(2),fn(3);var pn=fn(4);fn(5),fn(6);var mn=Wt((function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()}));mn.every=function(e){return isFinite(e=Math.floor(e))&&e>0?Wt((function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null};var gn=mn;function yn(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function vn(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function bn(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}var xn,wn,_n={"-":"",_:" ",0:"0"},Mn=/^\s*\d+/,En=/^%/,Tn=/[\\^$*+?|[\]().{}]/g;function An(e,t,n){var r=e<0?"-":"",o=(r?-e:e)+"",i=o.length;return r+(i68?1900:2e3),n+r[0].length):-1}function jn(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Fn(e,t,n){var r=Mn.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function Hn(e,t,n){var r=Mn.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Un(e,t,n){var r=Mn.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Yn(e,t,n){var r=Mn.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function In(e,t,n){var r=Mn.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function Wn(e,t,n){var r=Mn.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function Bn(e,t,n){var r=Mn.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function zn(e,t,n){var r=Mn.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function qn(e,t,n){var r=Mn.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Vn(e,t,n){var r=En.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function Xn(e,t,n){var r=Mn.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function Zn(e,t,n){var r=Mn.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Gn(e,t){return An(e.getDate(),t,2)}function Jn(e,t){return An(e.getHours(),t,2)}function Qn(e,t){return An(e.getHours()%12||12,t,2)}function Kn(e,t){return An(1+Kt.count(sn(e),e),t,3)}function er(e,t){return An(e.getMilliseconds(),t,3)}function tr(e,t){return er(e,t)+"000"}function nr(e,t){return An(e.getMonth()+1,t,2)}function rr(e,t){return An(e.getMinutes(),t,2)}function or(e,t){return An(e.getSeconds(),t,2)}function ir(e){var t=e.getDay();return 0===t?7:t}function ar(e,t){return An(tn.count(sn(e)-1,e),t,2)}function ur(e){var t=e.getDay();return t>=4||0===t?rn(e):rn.ceil(e)}function sr(e,t){return e=ur(e),An(rn.count(sn(e),e)+(4===sn(e).getDay()),t,2)}function lr(e){return e.getDay()}function cr(e,t){return An(nn.count(sn(e)-1,e),t,2)}function fr(e,t){return An(e.getFullYear()%100,t,2)}function hr(e,t){return An((e=ur(e)).getFullYear()%100,t,2)}function dr(e,t){return An(e.getFullYear()%1e4,t,4)}function pr(e,t){var n=e.getDay();return An((e=n>=4||0===n?rn(e):rn.ceil(e)).getFullYear()%1e4,t,4)}function mr(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+An(t/60|0,"0",2)+An(t%60,"0",2)}function gr(e,t){return An(e.getUTCDate(),t,2)}function yr(e,t){return An(e.getUTCHours(),t,2)}function vr(e,t){return An(e.getUTCHours()%12||12,t,2)}function br(e,t){return An(1+cn.count(gn(e),e),t,3)}function xr(e,t){return An(e.getUTCMilliseconds(),t,3)}function wr(e,t){return xr(e,t)+"000"}function _r(e,t){return An(e.getUTCMonth()+1,t,2)}function Mr(e,t){return An(e.getUTCMinutes(),t,2)}function Er(e,t){return An(e.getUTCSeconds(),t,2)}function Tr(e){var t=e.getUTCDay();return 0===t?7:t}function Ar(e,t){return An(hn.count(gn(e)-1,e),t,2)}function kr(e){var t=e.getUTCDay();return t>=4||0===t?pn(e):pn.ceil(e)}function Cr(e,t){return e=kr(e),An(pn.count(gn(e),e)+(4===gn(e).getUTCDay()),t,2)}function Sr(e){return e.getUTCDay()}function Or(e,t){return An(dn.count(gn(e)-1,e),t,2)}function Nr(e,t){return An(e.getUTCFullYear()%100,t,2)}function Lr(e,t){return An((e=kr(e)).getUTCFullYear()%100,t,2)}function Pr(e,t){return An(e.getUTCFullYear()%1e4,t,4)}function Dr(e,t){var n=e.getUTCDay();return An((e=n>=4||0===n?pn(e):pn.ceil(e)).getUTCFullYear()%1e4,t,4)}function Rr(){return"+0000"}function $r(){return"%"}function jr(e){return+e}function Fr(e){return Math.floor(+e/1e3)}!function(e){xn=function(e){var t=e.dateTime,n=e.date,r=e.time,o=e.periods,i=e.days,a=e.shortDays,u=e.months,s=e.shortMonths,l=Cn(o),c=Sn(o),f=Cn(i),h=Sn(i),d=Cn(a),p=Sn(a),m=Cn(u),g=Sn(u),y=Cn(s),v=Sn(s),b={a:function(e){return a[e.getDay()]},A:function(e){return i[e.getDay()]},b:function(e){return s[e.getMonth()]},B:function(e){return u[e.getMonth()]},c:null,d:Gn,e:Gn,f:tr,g:hr,G:pr,H:Jn,I:Qn,j:Kn,L:er,m:nr,M:rr,p:function(e){return o[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:jr,s:Fr,S:or,u:ir,U:ar,V:sr,w:lr,W:cr,x:null,X:null,y:fr,Y:dr,Z:mr,"%":$r},x={a:function(e){return a[e.getUTCDay()]},A:function(e){return i[e.getUTCDay()]},b:function(e){return s[e.getUTCMonth()]},B:function(e){return u[e.getUTCMonth()]},c:null,d:gr,e:gr,f:wr,g:Lr,G:Dr,H:yr,I:vr,j:br,L:xr,m:_r,M:Mr,p:function(e){return o[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:jr,s:Fr,S:Er,u:Tr,U:Ar,V:Cr,w:Sr,W:Or,x:null,X:null,y:Nr,Y:Pr,Z:Rr,"%":$r},w={a:function(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(e,t,n){var r=f.exec(t.slice(n));return r?(e.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(e,t,n){var r=y.exec(t.slice(n));return r?(e.m=v[r[0].toLowerCase()],n+r[0].length):-1},B:function(e,t,n){var r=m.exec(t.slice(n));return r?(e.m=g[r[0].toLowerCase()],n+r[0].length):-1},c:function(e,n,r){return E(e,t,n,r)},d:Un,e:Un,f:qn,g:$n,G:Rn,H:In,I:In,j:Yn,L:zn,m:Hn,M:Wn,p:function(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=c[r[0].toLowerCase()],n+r[0].length):-1},q:Fn,Q:Xn,s:Zn,S:Bn,u:Nn,U:Ln,V:Pn,w:On,W:Dn,x:function(e,t,r){return E(e,n,t,r)},X:function(e,t,n){return E(e,r,t,n)},y:$n,Y:Rn,Z:jn,"%":Vn};function _(e,t){return function(n){var r,o,i,a=[],u=-1,s=0,l=e.length;for(n instanceof Date||(n=new Date(+n));++u53)return null;"w"in i||(i.w=1),"Z"in i?(o=(r=vn(bn(i.y,0,1))).getUTCDay(),r=o>4||0===o?dn.ceil(r):dn(r),r=cn.offset(r,7*(i.V-1)),i.y=r.getUTCFullYear(),i.m=r.getUTCMonth(),i.d=r.getUTCDate()+(i.w+6)%7):(o=(r=yn(bn(i.y,0,1))).getDay(),r=o>4||0===o?nn.ceil(r):nn(r),r=Kt.offset(r,7*(i.V-1)),i.y=r.getFullYear(),i.m=r.getMonth(),i.d=r.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?vn(bn(i.y,0,1)).getUTCDay():yn(bn(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,vn(i)):yn(i)}}function E(e,t,n,r){for(var o,i,a=0,u=t.length,s=n.length;a=s)return-1;if(37===(o=t.charCodeAt(a++))){if(o=t.charAt(a++),!(i=w[o in _n?t.charAt(a++):o])||(r=i(e,n,r))<0)return-1}else if(o!=n.charCodeAt(r++))return-1}return r}return b.x=_(n,b),b.X=_(r,b),b.c=_(t,b),x.x=_(n,x),x.X=_(r,x),x.c=_(t,x),{format:function(e){var t=_(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=M(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=_(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=M(e+="",!0);return t.toString=function(){return e},t}}}(e),wn=xn.format}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",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"]});function Hr(e){return new Date(e)}function Ur(e){return e instanceof Date?+e:+new Date(+e)}function Yr(e,t,n,r,o,i,a,u,s){var l=_t(gt,gt),c=l.invert,f=l.domain,h=s(".%L"),d=s(":%S"),p=s("%I:%M"),m=s("%I %p"),g=s("%a %d"),y=s("%b %d"),v=s("%B"),b=s("%Y"),x=[[a,1,1e3],[a,5,5e3],[a,15,15e3],[a,30,3e4],[i,1,6e4],[i,5,3e5],[i,15,9e5],[i,30,18e5],[o,1,36e5],[o,3,108e5],[o,6,216e5],[o,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[t,1,2592e6],[t,3,7776e6],[e,1,31536e6]];function w(u){return(a(u)0},e.prototype.connect_=function(){Wr&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Vr?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){Wr&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;qr.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Zr=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),uo="undefined"!=typeof WeakMap?new WeakMap:new Ir,so=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Xr.getInstance(),r=new ao(t,n,this);uo.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){so.prototype[e]=function(){var t;return(t=uo.get(this))[e].apply(t,arguments)}}));var lo=void 0!==Br.ResizeObserver?Br.ResizeObserver:so;const co=J.oneOfType([J.func,J.number]),fo=(e,t,n)=>"function"==typeof e?e(t,n):e,ho=J.shape({height:J.number,width:J.number,marginTop:J.number,marginRight:J.number,marginBottom:J.number,marginLeft:J.number}),po=e=>{let t={marginTop:40,marginRight:30,marginBottom:40,marginLeft:75,...e};return{...t,boundedHeight:Math.max(t.height-t.marginTop-t.marginBottom,0),boundedWidth:Math.max(t.width-t.marginLeft-t.marginRight,0)}},mo=t=>{const n=e.useRef(),r=po(t),[o,i]=e.useState(0),[a,u]=e.useState(0);e.useEffect((()=>{if(r.width&&r.height)return;const e=n.current,t=new lo((e=>{if(!Array.isArray(e))return;if(!e.length)return;const t=e[0];o!==t.contentRect.width&&i(t.contentRect.width),a!==t.contentRect.height&&u(t.contentRect.height)}));return t.observe(e),()=>t.unobserve(e)}),[t,a,o,r]);const s=po({...r,width:r.width||o,height:r.height||a});return[n,s]},go=(t="")=>`${t}-${e.useId().replace(/:/g,"")}`;!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}(".Chart{overflow:visible}.Chart text{fill:#95a5a6}.Line{transition:all .3s ease-out}.Line--type-line{fill:none;stroke:#9980fa;stroke-width:3px;stroke-linecap:round}.Line--type-area{fill:rgba(152,128,250,.185);stroke-width:0}.Axis__line{stroke:#bdc3c7}.Axis__label{text-anchor:middle;font-size:.9em;letter-spacing:.01em}.Axis__tick{font-size:.8em;transition:all .3s ease-out}.AxisHorizontal .Axis__tick{text-anchor:middle}.AxisVertical .Axis__tick{dominant-baseline:middle;text-anchor:end}.Circles__circle{fill:#9980fa;cursor:pointer;transition:opacity .15s ease-out,r .15s ease-out}.Bars__rect{fill:#9980fa}.Bars__rect,.PieChart__slice{cursor:pointer;transition:opacity .15s ease-out}.BarChart:has(.Bars__rect:hover) .Bars__rect:not(:hover),.Histogram:has(.Bars__rect:hover) .Bars__rect:not(:hover){opacity:.35}.ScatterPlot:has(.Circles__circle:hover) .Circles__circle:not(:hover){opacity:.35}.PieChart:has(.PieChart__slice:hover) .PieChart__slice:not(:hover){opacity:.35}.StackedBar__segment{cursor:pointer;transition:opacity .15s ease-out}.StackedBarChart:has(.StackedBar__segment:hover) .StackedBar__segment:not(:hover){opacity:.35}.Timeline__hover-line{stroke:#aaa;stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.Timeline__hover-dot{fill:#fff;stroke-width:2.5px;pointer-events:none}.domain,.tick line{stroke:#dadada}");const yo=e.createContext(),vo=({dimensions:e,children:t,label:r})=>n.default.createElement(yo.Provider,{value:e},n.default.createElement("svg",{className:"Chart",width:e.width,height:e.height,role:"img","aria-label":r},n.default.createElement("g",{transform:`translate(${e.marginLeft}, ${e.marginTop})`},t)));function bo(){return bo=Object.assign?Object.assign.bind():function(e){for(var t=1;tn.default.createElement(n.default.Fragment,null,e.map(((e,f)=>n.default.createElement("rect",bo({},c,{className:"Bars__rect",key:t(e,f),x:fo(r,e,f),y:fo(o,e,f),width:he([fo(i,e,f),0]),height:he([fo(a,e,f),0]),onMouseEnter:u?t=>u(e,f,t):void 0,onMouseLeave:s?t=>s(e,f,t):void 0,onMouseMove:l?t=>l(e,f,t):void 0})))));xo.propTypes={data:J.array,keyAccessor:co,xAccessor:co,yAccessor:co,widthAccessor:co,heightAccessor:co,onMouseEnter:J.func,onMouseLeave:J.func,onMouseMove:J.func},xo.defaultProps={};const wo={x:function({dimensions:e,label:t,formatTick:r,scale:o,...i}){if(!o)return null;const a=e.boundedWidth<600?e.boundedWidth/100:e.boundedWidth/250,u="function"==typeof o.ticks?o.ticks(a):o.domain(),s="function"==typeof o.bandwidth?o.bandwidth()/2:0;return n.default.createElement("g",bo({className:"Axis AxisHorizontal",transform:`translate(0, ${e.boundedHeight})`},i),n.default.createElement("line",{className:"Axis__line",x2:e.boundedWidth}),u.map(((e,t)=>n.default.createElement("text",{key:`${e}-${t}`,className:"Axis__tick",transform:`translate(${o(e)+s}, 25)`},r(e)))),t&&n.default.createElement("text",{className:"Axis__label",transform:`translate(${e.boundedWidth/2}, 60)`},t))},y:function({dimensions:e,label:t,formatTick:r,scale:o,...i}){if(!o)return null;const a=e.boundedHeight/70,u=o.ticks(a);return n.default.createElement("g",bo({className:"Axis AxisVertical"},i),n.default.createElement("line",{className:"Axis__line",y2:e.boundedHeight}),u.map(((e,t)=>n.default.createElement("text",{key:`${e}-${t}`,className:"Axis__tick",transform:`translate(-16, ${o(e)})`},r(e)))),t&&n.default.createElement("text",{className:"Axis__label",style:{transform:`translate(-56px, ${e.boundedHeight/2}px) rotate(-90deg)`}},t))}},_o=({dimension:t,...r})=>{const o=e.useContext(yo),i=wo[t];return i?n.default.createElement(i,bo({dimensions:o},r)):null};_o.propTypes={dimension:J.oneOf(["x","y"]),scale:J.func,label:J.string,formatTick:J.func},_o.defaultProps={dimension:"x",scale:null,formatTick:Pt(",")};const Mo=({items:e,position:t})=>{const r="left"===t||"right"===t;return n.default.createElement("div",{className:"Legend",style:{display:"flex",flexDirection:r?"column":"row",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:"6px 14px",padding:r?"0 10px":"6px 8px",fontSize:"12px",color:"#555",flexShrink:0}},e.map(((e,t)=>n.default.createElement("div",{key:t,className:"Legend__item",style:{display:"flex",alignItems:"center",gap:5}},n.default.createElement("span",{className:"Legend__swatch",style:{display:"inline-block",width:10,height:10,borderRadius:2,background:e.color,flexShrink:0}}),n.default.createElement("span",{className:"Legend__label"},e.label)))))};Mo.propTypes={items:J.arrayOf(J.shape({color:J.string.isRequired,label:J.string.isRequired})),position:J.oneOf(["top","bottom","left","right"])},Mo.defaultProps={items:[],position:"bottom"};const Eo={width:"100%",height:"100%",display:"flex",flexDirection:"column",position:"relative"},To={width:"100%",height:"100%",display:"flex",flexDirection:"row",position:"relative"},Ao=({wrapperRef:e,legendItems:t,showLegend:r,legendPosition:o,tooltip:i,children:a})=>{const u=o||"bottom",s="left"===u||"right"===u,l="top"===u||"left"===u,c=r&&t&&t.length>0?n.default.createElement(Mo,{items:t,position:u}):null;return n.default.createElement("div",{ref:e,style:s?To:Eo},l&&c,a,!l&&c,i)};Ao.propTypes={wrapperRef:J.object,legendItems:J.arrayOf(J.shape({color:J.string.isRequired,label:J.string.isRequired})),showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"]),tooltip:J.node,children:J.node};const ko=({visible:e,x:t,y:r,children:o})=>e?n.default.createElement("div",{className:"Tooltip",style:{position:"absolute",left:t,top:r,transform:"translate(-50%, calc(-100% - 10px))",pointerEvents:"none",background:"#fff",border:"1px solid #e0e0e0",borderRadius:6,padding:"7px 12px",fontSize:12,lineHeight:1.6,boxShadow:"0 4px 12px rgba(0,0,0,0.10)",zIndex:10,whiteSpace:"nowrap",color:"#444"}},o):null;function Co(){const t=e.useRef(),[n,r]=e.useState({visible:!1,x:0,y:0}),o=e.useCallback(((e,n)=>{const{left:o,top:i}=t.current.getBoundingClientRect();r({visible:!0,x:e.clientX-o,y:e.clientY-i,...n})}),[]),i=e.useCallback((e=>{const{left:n,top:o}=t.current.getBoundingClientRect();r((t=>({...t,x:e.clientX-n,y:e.clientY-o})))}),[]),a=e.useCallback((()=>{r((e=>({...e,visible:!1})))}),[]);return{wrapperRef:t,tooltip:n,showTooltip:o,moveTooltip:i,hideTooltip:a}}ko.propTypes={visible:J.bool,x:J.number,y:J.number,children:J.node};const So=Pt(","),Oo=({data:t,xAccessor:r,yAccessor:o,xLabel:i,yLabel:a,color:u,barPadding:s,formatYTick:l,yMin:c,showLegend:f,legendPosition:h})=>{const[d,p]=mo({marginBottom:77}),{wrapperRef:m,tooltip:g,showTooltip:y,moveTooltip:v,hideTooltip:b}=Co(),x=e.useMemo((()=>Me().domain(t?t.map(r):[]).range([0,p.boundedWidth]).padding(s??.2)),[t,r,p.boundedWidth,s]),w=e.useMemo((()=>Ut().domain([c??0,he(t,o)||0]).range([p.boundedHeight,0]).nice()),[t,o,p.boundedHeight,c]),_=e.useMemo((()=>a?[{color:u||"#9980FA",label:a}]:[]),[a,u]),M=e.useMemo((()=>u?{fill:u}:void 0),[u]),E=e.useCallback(((e,t,n)=>y(n,{d:e})),[y]),T=e.useCallback(((e,t,n)=>v(n)),[v]);if(!t||0===t.length)return null;return n.default.createElement(Ao,{wrapperRef:m,legendItems:_,showLegend:f,legendPosition:h,tooltip:n.default.createElement(ko,{visible:g.visible,x:g.x,y:g.y},g.d&&n.default.createElement(n.default.Fragment,null,n.default.createElement("div",null,n.default.createElement("strong",null,i||"Category"),": ",r(g.d)),n.default.createElement("div",null,n.default.createElement("strong",null,a||"Value"),": ",So(o(g.d)))))},n.default.createElement("div",{className:"BarChart",ref:d,style:{flex:1,minHeight:0,minWidth:0}},n.default.createElement(vo,{dimensions:p,label:[i,a].filter(Boolean).join(" / ")},n.default.createElement(_o,{dimension:"x",scale:x,formatTick:e=>e,label:i}),n.default.createElement(_o,{dimension:"y",scale:w,formatTick:l,label:a}),n.default.createElement(xo,{data:t,keyAccessor:(e,t)=>t,xAccessor:e=>x(r(e)),yAccessor:e=>w(o(e)),widthAccessor:()=>x.bandwidth(),heightAccessor:e=>p.boundedHeight-w(o(e)),style:M,onMouseEnter:E,onMouseMove:T,onMouseLeave:b}))))};Oo.propTypes={data:J.array,xAccessor:co,yAccessor:co,xLabel:J.string,yLabel:J.string,color:J.string,barPadding:J.number,formatYTick:J.func,yMin:J.number,showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"])},Oo.defaultProps={xAccessor:e=>e.x,yAccessor:e=>e.y};const No=({id:e,colors:t,...r})=>n.default.createElement("linearGradient",bo({id:e,gradientUnits:"userSpaceOnUse",spreadMethod:"pad"},r),t.map(((e,r)=>n.default.createElement("stop",{key:`${e}-${r}`,offset:100*r/(t.length-1)+"%",stopColor:e}))));No.propTypes={id:J.string,colors:J.arrayOf(J.string)},No.defaultProps={id:"Gradient",colors:[]};const Lo=["#9980FA","rgb(226, 222, 243)"],Po=Pt(","),Do=Pt(",.2~f"),Ro=({data:t,xAccessor:r,xLabel:o,yLabel:i,color:a,gradientColors:u,thresholds:s,formatXTick:l,formatYTick:c,showLegend:f,legendPosition:h})=>{const d=go("Histogram-gradient"),[p,m]=mo({marginBottom:77}),{wrapperRef:g,tooltip:y,showTooltip:v,moveTooltip:b,hideTooltip:x}=Co(),w=s||9,_=e.useMemo((()=>Ut().domain(te(t,r)).range([0,m.boundedWidth]).nice(w)),[t,r,m.boundedWidth,w]),M=e.useMemo((()=>function(){var e=oe,t=te,n=fe;function r(r){var o,i,a=r.length,u=new Array(a);for(o=0;oc;)f.pop(),--h;var d,p=new Array(h+1);for(o=0;o<=h;++o)(d=p[o]=[]).x0=o>0?f[o-1]:l,d.x1=oUt().domain([0,he(M,(e=>e.length))||0]).range([m.boundedHeight,0]).nice()),[M,m.boundedHeight]),T=e.useMemo((()=>o?[{color:a||"#9980FA",label:o}]:[]),[o,a]),A=u||Lo,k=e.useMemo((()=>a?{fill:a}:{fill:`url(#${d})`}),[a,d]),C=l||Do,S=e.useCallback(((e,t,n)=>v(n,{d:e})),[v]),O=e.useCallback(((e,t,n)=>b(n)),[b]);if(!t||0===t.length)return null;return n.default.createElement(Ao,{wrapperRef:g,legendItems:T,showLegend:f,legendPosition:h,tooltip:n.default.createElement(ko,{visible:y.visible,x:y.x,y:y.y},y.d&&n.default.createElement(n.default.Fragment,null,n.default.createElement("div",null,n.default.createElement("strong",null,o||"Range"),": ",C(y.d.x0)," – ",C(y.d.x1)),n.default.createElement("div",null,n.default.createElement("strong",null,"Count"),": ",Po(y.d.length))))},n.default.createElement("div",{className:"Histogram",ref:p,style:{flex:1,minHeight:0,minWidth:0}},n.default.createElement(vo,{dimensions:m,label:[o,i].filter(Boolean).join(" / ")},n.default.createElement("defs",null,n.default.createElement(No,{id:d,colors:A,x2:"0",y2:"100%"})),n.default.createElement(_o,{dimension:"x",scale:_,formatTick:l,label:o}),n.default.createElement(_o,{dimension:"y",scale:E,formatTick:c,label:i||"Count"}),n.default.createElement(xo,{data:M,keyAccessor:(e,t)=>t,xAccessor:e=>_(e.x0)+2,yAccessor:e=>E(e.length),widthAccessor:e=>_(e.x1)-_(e.x0)-2,heightAccessor:e=>m.boundedHeight-E(e.length),style:k,onMouseEnter:S,onMouseMove:O,onMouseLeave:x}))))};Ro.propTypes={data:J.array,xAccessor:co,xLabel:J.string,yLabel:J.string,color:J.string,gradientColors:J.arrayOf(J.string),thresholds:J.number,formatXTick:J.func,formatYTick:J.func,showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"])},Ro.defaultProps={xAccessor:e=>e.x};var $o=Math.PI,jo=2*$o,Fo=jo-1e-6;function Ho(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Uo(){return new Ho}function Yo(e){return function(){return e}}Ho.prototype=Uo.prototype={constructor:Ho,moveTo:function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},quadraticCurveTo:function(e,t,n,r){this._+="Q"+ +e+","+ +t+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(e,t,n,r,o,i){this._+="C"+ +e+","+ +t+","+ +n+","+ +r+","+(this._x1=+o)+","+(this._y1=+i)},arcTo:function(e,t,n,r,o){e=+e,t=+t,n=+n,r=+r,o=+o;var i=this._x1,a=this._y1,u=n-e,s=r-t,l=i-e,c=a-t,f=l*l+c*c;if(o<0)throw new Error("negative radius: "+o);if(null===this._x1)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(f>1e-6)if(Math.abs(c*u-s*l)>1e-6&&o){var h=n-i,d=r-a,p=u*u+s*s,m=h*h+d*d,g=Math.sqrt(p),y=Math.sqrt(f),v=o*Math.tan(($o-Math.acos((p+f-m)/(2*g*y)))/2),b=v/y,x=v/g;Math.abs(b-1)>1e-6&&(this._+="L"+(e+b*l)+","+(t+b*c)),this._+="A"+o+","+o+",0,0,"+ +(c*h>l*d)+","+(this._x1=e+x*u)+","+(this._y1=t+x*s)}else this._+="L"+(this._x1=e)+","+(this._y1=t);else;},arc:function(e,t,n,r,o,i){e=+e,t=+t,i=!!i;var a=(n=+n)*Math.cos(r),u=n*Math.sin(r),s=e+a,l=t+u,c=1^i,f=i?r-o:o-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+s+","+l:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+s+","+l),n&&(f<0&&(f=f%jo+jo),f>Fo?this._+="A"+n+","+n+",0,1,"+c+","+(e-a)+","+(t-u)+"A"+n+","+n+",0,1,"+c+","+(this._x1=s)+","+(this._y1=l):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=$o)+","+c+","+(this._x1=e+n*Math.cos(o))+","+(this._y1=t+n*Math.sin(o))))},rect:function(e,t,n,r){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Io=Math.abs,Wo=Math.atan2,Bo=Math.cos,zo=Math.max,qo=Math.min,Vo=Math.sin,Xo=Math.sqrt,Zo=Math.PI,Go=Zo/2,Jo=2*Zo;function Qo(e){return e>1?0:e<-1?Zo:Math.acos(e)}function Ko(e){return e>=1?Go:e<=-1?-Go:Math.asin(e)}function ei(e){return e.innerRadius}function ti(e){return e.outerRadius}function ni(e){return e.startAngle}function ri(e){return e.endAngle}function oi(e){return e&&e.padAngle}function ii(e,t,n,r,o,i,a,u){var s=n-e,l=r-t,c=a-o,f=u-i,h=f*s-c*l;if(!(h*h<1e-12))return[e+(h=(c*(t-i)-f*(e-o))/h)*s,t+h*l]}function ai(e,t,n,r,o,i,a){var u=e-n,s=t-r,l=(a?i:-i)/Xo(u*u+s*s),c=l*s,f=-l*u,h=e+c,d=t+f,p=n+c,m=r+f,g=(h+p)/2,y=(d+m)/2,v=p-h,b=m-d,x=v*v+b*b,w=o-i,_=h*m-p*d,M=(b<0?-1:1)*Xo(zo(0,w*w*x-_*_)),E=(_*b-v*M)/x,T=(-_*v-b*M)/x,A=(_*b+v*M)/x,k=(-_*v+b*M)/x,C=E-g,S=T-y,O=A-g,N=k-y;return C*C+S*S>O*O+N*N&&(E=A,T=k),{cx:E,cy:T,x01:-c,y01:-f,x11:E*(o/w-1),y11:T*(o/w-1)}}function ui(){var e=ei,t=ti,n=Yo(0),r=null,o=ni,i=ri,a=oi,u=null;function s(){var s,l,c=+e.apply(this,arguments),f=+t.apply(this,arguments),h=o.apply(this,arguments)-Go,d=i.apply(this,arguments)-Go,p=Io(d-h),m=d>h;if(u||(u=s=Uo()),f1e-12)if(p>Jo-1e-12)u.moveTo(f*Bo(h),f*Vo(h)),u.arc(0,0,f,h,d,!m),c>1e-12&&(u.moveTo(c*Bo(d),c*Vo(d)),u.arc(0,0,c,d,h,m));else{var g,y,v=h,b=d,x=h,w=d,_=p,M=p,E=a.apply(this,arguments)/2,T=E>1e-12&&(r?+r.apply(this,arguments):Xo(c*c+f*f)),A=qo(Io(f-c)/2,+n.apply(this,arguments)),k=A,C=A;if(T>1e-12){var S=Ko(T/c*Vo(E)),O=Ko(T/f*Vo(E));(_-=2*S)>1e-12?(x+=S*=m?1:-1,w-=S):(_=0,x=w=(h+d)/2),(M-=2*O)>1e-12?(v+=O*=m?1:-1,b-=O):(M=0,v=b=(h+d)/2)}var N=f*Bo(v),L=f*Vo(v),P=c*Bo(w),D=c*Vo(w);if(A>1e-12){var R,$=f*Bo(b),j=f*Vo(b),F=c*Bo(x),H=c*Vo(x);if(p1e-12?C>1e-12?(g=ai(F,H,N,L,f,C,m),y=ai($,j,P,D,f,C,m),u.moveTo(g.cx+g.x01,g.cy+g.y01),C1e-12&&_>1e-12?k>1e-12?(g=ai(P,D,$,j,c,-k,m),y=ai(N,L,F,H,c,-k,m),u.lineTo(g.cx+g.x01,g.cy+g.y01),ke?1:t>=e?0:NaN}function pi(e){return e}si.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var mi=Array.prototype.slice;function gi(e){return e<0?-1:1}function yi(e,t,n){var r=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(r||o<0&&-0),a=(n-e._y1)/(o||r<0&&-0),u=(i*o+a*r)/(r+o);return(gi(i)+gi(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(u))||0}function vi(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function bi(e,t,n){var r=e._x0,o=e._y0,i=e._x1,a=e._y1,u=(i-r)/3;e._context.bezierCurveTo(r+u,o+u*t,i-u,a-u*n,i,a)}function xi(e){this._context=e}function wi(e,t){if((o=e.length)>1)for(var n,r,o,i=1,a=e[t[0]],u=a.length;i=0;)n[t]=t;return n}function Mi(e,t){return e[t]}xi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:bi(this,this._t0,vi(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,bi(this,vi(this,n=yi(this,e,t)),n);break;default:bi(this,this._t0,n=yi(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}},Object.create(xi.prototype).point=function(e,t){xi.prototype.point.call(this,t,e)};var Ei=function(e){for(var t=e.length/6|0,n=new Array(t),r=0;r{const[f,h]=mo(Ti),{wrapperRef:d,tooltip:p,showTooltip:m,moveTooltip:g,hideTooltip:y}=Co(),v=e.useMemo((()=>_e(Array.isArray(i)?i:Ei)),[i]),b=Math.min(h.boundedWidth,h.boundedHeight)/2,x=h.boundedWidth/2,w=h.boundedHeight/2,_="number"==typeof a?b*Math.min(Math.max(a,0),.95):0,M=e.useMemo((()=>ui().innerRadius(_).outerRadius(b)),[_,b]),E=e.useMemo((()=>{const e=_>0?(_+b)/2:.65*b;return ui().innerRadius(e).outerRadius(e)}),[_,b]),T=e.useMemo((()=>t?function(){var e=pi,t=di,n=null,r=Yo(0),o=Yo(Jo),i=Yo(0);function a(a){var u,s,l,c,f,h=a.length,d=0,p=new Array(h),m=new Array(h),g=+r.apply(this,arguments),y=Math.min(Jo,Math.max(-Jo,o.apply(this,arguments)-g)),v=Math.min(Math.abs(y)/h,i.apply(this,arguments)),b=v*(y<0?-1:1);for(u=0;u0&&(d+=f);for(null!=t?p.sort((function(e,n){return t(m[e],m[n])})):null!=n&&p.sort((function(e,t){return n(a[e],a[t])})),u=0,l=d?(y-h*b)/d:0;u0?f*l:0)+b,m[s]={data:a[s],index:u,value:f,startAngle:g,endAngle:c,padAngle:v};return m}return a.value=function(t){return arguments.length?(e="function"==typeof t?t:Yo(+t),a):e},a.sortValues=function(e){return arguments.length?(t=e,n=null,a):t},a.sort=function(e){return arguments.length?(n=e,t=null,a):n},a.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:Yo(+e),a):r},a.endAngle=function(e){return arguments.length?(o="function"==typeof e?e:Yo(+e),a):o},a.padAngle=function(e){return arguments.length?(i="function"==typeof e?e:Yo(+e),a):i},a}().value(r).padAngle(u??.02).sort(null)(t):[]),[t,r,u]),A=e.useMemo((()=>t?function(e,t){var n,r=e.length,o=-1,i=0;if(null==t)for(;++o"function"==typeof o?(t||[]).map(((e,t)=>{const n=o(e);return{color:v(void 0!==n?n:String(t)),label:String(n)}})):[]),[t,o,v]),C=e.useCallback(((e,t,n)=>m(n,{datum:e,label:t})),[m]),S=e.useCallback(((e,t,n)=>g(n)),[g]);if(!t||0===t.length)return null;const O=!1!==s&&"function"==typeof o,N=p.datum?r(p.datum):0,L=A>0?Math.round(N/A*100):0;return n.default.createElement(Ao,{wrapperRef:d,legendItems:k,showLegend:l,legendPosition:c,tooltip:n.default.createElement(ko,{visible:p.visible,x:p.x,y:p.y},p.datum&&n.default.createElement(n.default.Fragment,null,n.default.createElement("div",null,n.default.createElement("strong",null,p.label)),n.default.createElement("div",null,Ai(N)," (",L,"%)")))},n.default.createElement("div",{className:"PieChart",ref:f,style:{flex:1,minHeight:0,minWidth:0}},n.default.createElement(vo,{dimensions:h,label:"Pie chart"},n.default.createElement("g",{transform:`translate(${x}, ${w})`},T.map(((e,r)=>{const i=o?o(t[r]):String(r);return n.default.createElement("g",{key:r,className:"PieChart__slice-group"},n.default.createElement("path",{className:"PieChart__slice",d:M(e),style:{fill:v(i)},onMouseEnter:e=>C(t[r],i,e),onMouseMove:e=>S(t[r],i,e),onMouseLeave:y}),O&&e.endAngle-e.startAngle>=.35&&n.default.createElement("text",{className:"PieChart__label",transform:`translate(${E.centroid(e)})`,style:{textAnchor:"middle",dominantBaseline:"middle",pointerEvents:"none"}},i))}))))))};ki.propTypes={data:J.array,valueAccessor:co,labelAccessor:co,colors:J.arrayOf(J.string),innerRadius:J.number,padAngle:J.number,showLabels:J.bool,showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"])},ki.defaultProps={valueAccessor:e=>e.value,labelAccessor:e=>e.label};const Ci=({data:e,keyAccessor:t,xAccessor:r,yAccessor:o,radius:i,color:a,onMouseEnter:u,onMouseLeave:s,onMouseMove:l,...c})=>n.default.createElement(n.default.Fragment,null,e.map(((e,f)=>n.default.createElement("circle",bo({},c,{className:"Circles__circle",key:t(e,f),cx:r(e,f),cy:o(e,f),r:"function"==typeof i?i(e):i,style:a?{fill:a}:void 0,onMouseEnter:u?t=>u(e,f,t):void 0,onMouseLeave:s?t=>s(e,f,t):void 0,onMouseMove:l?t=>l(e,f,t):void 0})))));Ci.propTypes={data:J.array,keyAccessor:co,xAccessor:co,yAccessor:co,radius:co,color:J.string,onMouseEnter:J.func,onMouseLeave:J.func,onMouseMove:J.func},Ci.defaultProps={radius:5};const Si=Pt(","),Oi=({data:t,xAccessor:r,yAccessor:o,xLabel:i,yLabel:a,color:u,radius:s,formatXTick:l,formatYTick:c,showLegend:f,legendPosition:h})=>{const[d,p]=mo({marginBottom:77}),{wrapperRef:m,tooltip:g,showTooltip:y,moveTooltip:v,hideTooltip:b}=Co(),x=e.useMemo((()=>{const e=te(t,r),n=e[0]===e[1]?[e[0]-1,e[0]+1]:e;return Ut().domain(n).range([0,p.boundedWidth]).nice()}),[t,r,p.boundedWidth]),w=e.useMemo((()=>{const e=te(t,o),n=e[0]===e[1]?[e[0]-1,e[0]+1]:e;return Ut().domain(n).range([p.boundedHeight,0]).nice()}),[t,o,p.boundedHeight]),_=e.useMemo((()=>a?[{color:u||"#9980FA",label:a}]:[]),[a,u]),M=e.useCallback(((e,t,n)=>y(n,{d:e})),[y]),E=e.useCallback(((e,t,n)=>v(n)),[v]);if(!t||0===t.length)return null;return n.default.createElement(Ao,{wrapperRef:m,legendItems:_,showLegend:f,legendPosition:h,tooltip:n.default.createElement(ko,{visible:g.visible,x:g.x,y:g.y},g.d&&n.default.createElement(n.default.Fragment,null,n.default.createElement("div",null,n.default.createElement("strong",null,i||"X"),": ",Si(r(g.d))),n.default.createElement("div",null,n.default.createElement("strong",null,a||"Y"),": ",Si(o(g.d)))))},n.default.createElement("div",{className:"ScatterPlot",ref:d,style:{flex:1,minHeight:0,minWidth:0}},n.default.createElement(vo,{dimensions:p,label:[i,a].filter(Boolean).join(" / ")},n.default.createElement(_o,{dimension:"x",scale:x,formatTick:l,label:i}),n.default.createElement(_o,{dimension:"y",scale:w,formatTick:c,label:a}),n.default.createElement(Ci,{data:t,keyAccessor:(e,t)=>t,xAccessor:e=>x(r(e)),yAccessor:e=>w(o(e)),radius:s,color:u,onMouseEnter:M,onMouseMove:E,onMouseLeave:b}))))};Oi.propTypes={data:J.array,xAccessor:co,yAccessor:co,xLabel:J.string,yLabel:J.string,color:J.string,radius:J.oneOfType([J.number,J.func]),formatXTick:J.func,formatYTick:J.func,showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"])},Oi.defaultProps={xAccessor:e=>e.x,yAccessor:e=>e.y};const Ni=Pt(","),Li=({data:t,xAccessor:r,keys:o,colors:i,xLabel:a,yLabel:u,barPadding:s,formatYTick:l,showLegend:c,legendPosition:f})=>{const[h,d]=mo({marginBottom:77}),{wrapperRef:p,tooltip:m,showTooltip:g,moveTooltip:y,hideTooltip:v}=Co(),b=e.useMemo((()=>_e(Array.isArray(i)?i:Ei).domain(o)),[i,o]),x=e.useMemo((()=>t&&o&&o.length?function(){var e=Yo([]),t=_i,n=wi,r=Mi;function o(o){var i,a,u=e.apply(this,arguments),s=o.length,l=u.length,c=new Array(l);for(i=0;iMe().domain(t?t.map(r):[]).range([0,d.boundedWidth]).padding(s??.2)),[t,r,d.boundedWidth,s]),_=e.useMemo((()=>Ut().domain([0,he(x,(e=>he(e,(e=>e[1]))))||0]).range([d.boundedHeight,0]).nice()),[x,d.boundedHeight]),M=e.useMemo((()=>o.map((e=>({color:b(e),label:e})))),[o,b]),E=e.useCallback(((e,t,n)=>{const i=o.reduce(((e,n)=>e+(t.data[n]||0)),0);g(n,{key:e,value:t[1]-t[0],category:r(t.data),total:i})}),[g,o,r]),T=e.useCallback(((e,t,n)=>y(n)),[y]);return t&&0!==t.length&&o&&0!==o.length?n.default.createElement(Ao,{wrapperRef:p,legendItems:M,showLegend:c,legendPosition:f,tooltip:n.default.createElement(ko,{visible:m.visible,x:m.x,y:m.y},m.key&&n.default.createElement(n.default.Fragment,null,n.default.createElement("div",null,n.default.createElement("strong",null,m.category)),n.default.createElement("div",null,m.key,": ",Ni(m.value)),n.default.createElement("div",{style:{color:"#888",fontSize:11}},"Total: ",Ni(m.total))))},n.default.createElement("div",{className:"StackedBarChart",ref:h,style:{flex:1,minHeight:0,minWidth:0}},n.default.createElement(vo,{dimensions:d,label:[a,u].filter(Boolean).join(" / ")},n.default.createElement(_o,{dimension:"x",scale:w,formatTick:e=>e,label:a}),n.default.createElement(_o,{dimension:"y",scale:_,formatTick:l,label:u}),x.map((e=>n.default.createElement("g",{key:e.key,className:"StackedBar__series"},e.map(((t,o)=>n.default.createElement("rect",{key:`${e.key}-${o}`,className:"StackedBar__segment",x:w(r(t.data)),y:_(t[1]),width:w.bandwidth(),height:Math.max(0,_(t[0])-_(t[1])),style:{fill:b(e.key)},onMouseEnter:n=>E(e.key,t,n),onMouseMove:n=>T(e.key,t,n),onMouseLeave:v}))))))))):null};Li.propTypes={data:J.array,xAccessor:co,keys:J.arrayOf(J.string).isRequired,colors:J.arrayOf(J.string),xLabel:J.string,yLabel:J.string,barPadding:J.number,formatYTick:J.func,showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"])},Li.defaultProps={xAccessor:e=>e.x,showLegend:!0};const Pi={line:hi,area:function(){var e=ci,t=null,n=Yo(0),r=fi,o=Yo(!0),i=null,a=li,u=null;function s(s){var l,c,f,h,d,p=s.length,m=!1,g=new Array(p),y=new Array(p);for(null==i&&(u=a(d=Uo())),l=0;l<=p;++l){if(!(l=c;--f)u.point(g[f],y[f]);u.lineEnd(),u.areaEnd()}m&&(g[l]=+e(h,l,s),y[l]=+n(h,l,s),u.point(t?+t(h,l,s):g[l],r?+r(h,l,s):y[l]))}if(d)return u=null,d+""||null}function l(){return hi().defined(o).curve(a).context(i)}return s.x=function(n){return arguments.length?(e="function"==typeof n?n:Yo(+n),t=null,s):e},s.x0=function(t){return arguments.length?(e="function"==typeof t?t:Yo(+t),s):e},s.x1=function(e){return arguments.length?(t=null==e?null:"function"==typeof e?e:Yo(+e),s):t},s.y=function(e){return arguments.length?(n="function"==typeof e?e:Yo(+e),r=null,s):n},s.y0=function(e){return arguments.length?(n="function"==typeof e?e:Yo(+e),s):n},s.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:Yo(+e),s):r},s.lineX0=s.lineY0=function(){return l().x(e).y(n)},s.lineY1=function(){return l().x(e).y(r)},s.lineX1=function(){return l().x(t).y(n)},s.defined=function(e){return arguments.length?(o="function"==typeof e?e:Yo(!!e),s):o},s.curve=function(e){return arguments.length?(a=e,null!=i&&(u=a(i)),s):a},s.context=function(e){return arguments.length?(null==e?i=u=null:u=a(i=e),s):i},s}},Di=({type:e,data:t,xAccessor:r,yAccessor:o,y0Accessor:i,interpolation:a,...u})=>{const s=Pi[e]().x(r).y(o).curve(a);return"area"===e&&s.y0(i).y1(o),n.default.createElement("path",bo({},u,{className:`Line Line--type-${e}`,d:s(t)}))};Di.propTypes={type:J.oneOf(["line","area"]),data:J.array,xAccessor:co,yAccessor:co,y0Accessor:co,interpolation:J.func},Di.defaultProps={type:"line",y0Accessor:0,interpolation:function(e){return new xi(e)}};const Ri=wn("%-b %-d"),$i=wn("%-b %-d, %Y"),ji=["rgb(226, 222, 243)","#f8f9fa"],Fi=Pt(","),Hi=({data:t,xAccessor:r,yAccessor:o,xLabel:i,yLabel:a,color:u,gradientColors:s,interpolation:l,showArea:c,showDots:f,formatXTick:h,formatYTick:d,showLegend:p,legendPosition:m})=>{const[g,y]=mo({marginBottom:77}),v=go("Timeline-gradient"),{wrapperRef:b,tooltip:x,showTooltip:w,hideTooltip:_}=Co(),[M,E]=e.useState(null),T=s||(u?[`${u}55`,"rgba(255,255,255,0)"]:ji),A=e.useMemo((()=>function(){return de.apply(Yr(sn,an,tn,Kt,Jt,Zt,Vt,zt,wn).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}().domain(te(t,r)).range([0,y.boundedWidth])),[t,r,y.boundedWidth]),k=e.useMemo((()=>Ut().domain(te(t,o)).range([y.boundedHeight,0]).nice()),[t,o,y.boundedHeight]),C=e.useMemo((()=>a?[{color:u||"#9980FA",label:a}]:[]),[a,u]),S=e.useMemo((()=>K(r).left),[r]),O=e.useCallback((e=>{const n=e.currentTarget.ownerSVGElement,{left:o}=n.getBoundingClientRect(),i=e.clientX-o-y.marginLeft,a=A.invert(i),u=S(t,a,1),s=t[u-1],l=t[u],c=!l||s&&a-r(s){E(null),_()}),[_]);if(!t||0===t.length)return null;const L=e=>A(r(e)),P=e=>k(o(e)),D=k(k.domain()[0]),R=null!==M?t[M]:null,$=d||Fi,j=h||$i;return n.default.createElement(Ao,{wrapperRef:b,legendItems:C,showLegend:p,legendPosition:m,tooltip:n.default.createElement(ko,{visible:x.visible,x:x.x,y:x.y},x.datum&&n.default.createElement(n.default.Fragment,null,n.default.createElement("div",null,n.default.createElement("strong",null,j(r(x.datum)))),n.default.createElement("div",null,a||"Value",": ",$(o(x.datum)))))},n.default.createElement("div",{className:"Timeline",ref:g,style:{flex:1,minHeight:0,minWidth:0}},n.default.createElement(vo,{dimensions:y,label:a||i},n.default.createElement("defs",null,n.default.createElement(No,{id:v,colors:T,x2:"0",y2:"100%"})),n.default.createElement(_o,{dimension:"x",scale:A,formatTick:h||Ri,label:i}),n.default.createElement(_o,{dimension:"y",scale:k,formatTick:d,label:a}),!1!==c&&n.default.createElement(Di,{type:"area",data:t,xAccessor:L,yAccessor:P,y0Accessor:D,style:{fill:`url(#${v})`},interpolation:l}),n.default.createElement(Di,{data:t,xAccessor:L,yAccessor:P,style:u?{stroke:u}:void 0,interpolation:l}),f&&n.default.createElement(Ci,{data:t,keyAccessor:(e,t)=>t,xAccessor:L,yAccessor:P,color:u}),R&&n.default.createElement(n.default.Fragment,null,n.default.createElement("line",{className:"Timeline__hover-line",x1:L(R),x2:L(R),y1:0,y2:y.boundedHeight}),n.default.createElement("circle",{className:"Timeline__hover-dot",cx:L(R),cy:P(R),r:5,style:{stroke:u||"#9980FA"}})),n.default.createElement("rect",{x:0,y:0,width:y.boundedWidth,height:y.boundedHeight,fill:"none",style:{pointerEvents:"all"},onMouseMove:O,onMouseLeave:N}))))};Hi.propTypes={data:J.array,xAccessor:co,yAccessor:co,xLabel:J.string,yLabel:J.string,color:J.string,gradientColors:J.arrayOf(J.string),interpolation:J.func,showArea:J.bool,showDots:J.bool,formatXTick:J.func,formatYTick:J.func,showLegend:J.bool,legendPosition:J.oneOf(["top","bottom","left","right"])},Hi.defaultProps={xAccessor:e=>e.x,yAccessor:e=>e.y,showArea:!0,showDots:!1},exports.BarChart=Oo,exports.Histogram=Ro,exports.PieChart=ki,exports.ScatterPlot=Oi,exports.StackedBarChart=Li,exports.Timeline=Hi; //# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map index 9b76c0b..366e39f 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/histogram.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-axis/src/array.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/touch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/active.js","../node_modules/d3-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/constant.js","../node_modules/d3-path/src/path.js","../node_modules/d3-chord/src/ribbon.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/nest.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-contour/src/ascending.js","../node_modules/d3-contour/src/constant.js","../node_modules/d3-contour/src/contains.js","../node_modules/d3-contour/src/noop.js","../node_modules/d3-contour/src/contours.js","../node_modules/d3-contour/src/area.js","../node_modules/d3-contour/src/blur.js","../node_modules/d3-contour/src/density.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../node_modules/d3-fetch/src/blob.js","../node_modules/d3-fetch/src/buffer.js","../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/dsv.js","../node_modules/d3-fetch/src/json.js","../node_modules/d3-fetch/src/xml.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-geo/src/adder.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/centroid.js","../node_modules/d3-geo/src/constant.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/d3-geo/src/graticule.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/conicConformal.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/d3-geo/src/projection/conicEquidistant.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/gnomonic.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-geo/src/projection/stereographic.js","../node_modules/d3-geo/src/projection/transverseMercator.js","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-polygon/src/cross.js","../node_modules/d3-polygon/src/hull.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/array.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/link/index.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-voronoi/src/constant.js","../node_modules/d3-voronoi/src/point.js","../node_modules/d3-voronoi/src/RedBlackTree.js","../node_modules/d3-voronoi/src/Edge.js","../node_modules/d3-voronoi/src/Cell.js","../node_modules/d3-voronoi/src/Circle.js","../node_modules/d3-voronoi/src/Beach.js","../node_modules/d3-voronoi/src/Diagram.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/d3/dist/package.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-collection/src/keys.js","../node_modules/d3-collection/src/values.js","../node_modules/d3-collection/src/entries.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-fetch/src/image.js","../node_modules/d3-force/src/center.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/interpolate.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/identity.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-interpolate/src/discrete.js","../node_modules/d3-interpolate/src/hue.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-interpolate/src/quantize.js","../node_modules/d3-polygon/src/area.js","../node_modules/d3-polygon/src/centroid.js","../node_modules/d3-polygon/src/contains.js","../node_modules/d3-polygon/src/length.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-selection/src/touches.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-timer/src/interval.js","../node_modules/d3-voronoi/src/voronoi.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/Utils/utils.js","../node_modules/style-inject/dist/style-inject.es.js","../src/Components/Chart.js","../src/Components/Bars.js","../src/Cartesian/Axis.js","../src/Components/Legend.js","../src/Components/Tooltip.js","../src/Charts/BarChart.js","../src/Components/Gradient.js","../src/Charts/Histogram.js","../src/Charts/PieChart.js","../src/Components/Circles.js","../src/Charts/ScatterPlot.js","../src/Charts/StackedBarChart.js","../src/Components/Line.js","../src/Charts/Timeline.js"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export function linear(t) {\n return +t;\n}\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import PropTypes from 'prop-types'\nimport { useEffect, useState, useRef, useId } from \"react\"\nimport ResizeObserver from \"resize-observer-polyfill\"\n\nexport const accessorPropsType = (\n PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.number,\n ])\n)\n\nexport const callAccessor = (accessor, d, i) => (\n typeof accessor === \"function\" ? accessor(d, i) : accessor\n)\n\nexport const dimensionsPropsType = (\n PropTypes.shape({\n height: PropTypes.number,\n width: PropTypes.number,\n marginTop: PropTypes.number,\n marginRight: PropTypes.number,\n marginBottom: PropTypes.number,\n marginLeft: PropTypes.number,\n })\n)\n\nexport const combineChartDimensions = dimensions => {\n let parsedDimensions = {\n marginTop: 40,\n marginRight: 30,\n marginBottom: 40,\n marginLeft: 75,\n ...dimensions,\n }\n\n return {\n ...parsedDimensions,\n boundedHeight: Math.max(parsedDimensions.height - parsedDimensions.marginTop - parsedDimensions.marginBottom, 0),\n boundedWidth: Math.max(parsedDimensions.width - parsedDimensions.marginLeft - parsedDimensions.marginRight, 0),\n }\n}\n\nexport const useChartDimensions = passedSettings => {\n const ref = useRef()\n const dimensions = combineChartDimensions(passedSettings)\n\n const [width, changeWidth] = useState(0)\n const [height, changeHeight] = useState(0)\n\n useEffect(() => {\n if (dimensions.width && dimensions.height) return\n\n const element = ref.current\n const resizeObserver = new ResizeObserver(entries => {\n if (!Array.isArray(entries)) return\n if (!entries.length) return\n\n const entry = entries[0]\n\n if (width !== entry.contentRect.width) changeWidth(entry.contentRect.width)\n if (height !== entry.contentRect.height) changeHeight(entry.contentRect.height)\n })\n\n resizeObserver.observe(element)\n\n return () => resizeObserver.unobserve(element)\n }, [passedSettings, height, width, dimensions])\n\n const newSettings = combineChartDimensions({\n ...dimensions,\n width: dimensions.width || width,\n height: dimensions.height || height,\n })\n\n return [ref, newSettings]\n}\n\n// Use React's built-in useId (React 18+) for concurrent-safe unique IDs\nexport const useUniqueId = (prefix = \"\") => {\n const id = useId().replace(/:/g, '')\n return `${prefix}-${id}`\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { createContext, useContext } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { dimensionsPropsType } from \"../Utils/utils\";\n\nimport \"./Chart.css\"\n\nconst ChartContext = createContext()\nexport const useDimensionsContext = () => useContext(ChartContext)\n\nconst Chart = ({ dimensions, children, label }) => (\n \n \n \n { children }\n \n \n \n)\n\nChart.propTypes = {\n dimensions: dimensionsPropsType,\n label: PropTypes.string,\n}\n\nChart.defaultProps = {\n dimensions: {}\n}\n\nexport default Chart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from 'd3'\nimport { accessorPropsType, callAccessor } from \"../Utils/utils\";\n\nconst Bars = ({ data, keyAccessor, xAccessor, yAccessor, widthAccessor, heightAccessor, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nBars.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n widthAccessor: accessorPropsType,\n heightAccessor: accessorPropsType,\n}\n\nBars.defaultProps = {\n}\n\nexport default Bars\n\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from 'd3'\nimport { useDimensionsContext } from \"../Components/Chart\";\n\nconst axisComponentsByDimension = {\n x: AxisHorizontal,\n y: AxisVertical,\n}\n\nconst Axis = ({ dimension, ...props }) => {\n const dimensions = useDimensionsContext()\n const Component = axisComponentsByDimension[dimension]\n if (!Component) return null\n\n return (\n \n )\n}\n\nAxis.propTypes = {\n dimension: PropTypes.oneOf([\"x\", \"y\"]),\n scale: PropTypes.func,\n label: PropTypes.string,\n formatTick: PropTypes.func,\n}\n\nAxis.defaultProps = {\n dimension: \"x\",\n scale: null,\n formatTick: d3.format(\",\"),\n}\n\nexport default Axis\n\n\nfunction AxisHorizontal ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedWidth < 600\n ? dimensions.boundedWidth / 100\n : dimensions.boundedWidth / 250\n\n // scaleBand (categorical) has no .ticks() — use .domain() instead\n const ticks = typeof scale.ticks === 'function'\n ? scale.ticks(numberOfTicks)\n : scale.domain()\n\n // Center labels within each band for band/ordinal scales\n const tickOffset = typeof scale.bandwidth === 'function' ? scale.bandwidth() / 2 : 0\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n\nfunction AxisVertical ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedHeight / 70\n\n const ticks = scale.ticks(numberOfTicks)\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Legend = ({ items, position }) => {\n const isVertical = position === 'left' || position === 'right'\n return (\n \n {items.map((item, i) => (\n \n \n {item.label}\n \n ))}\n \n )\n}\n\nLegend.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n position: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nLegend.defaultProps = {\n items: [],\n position: 'bottom',\n}\n\nexport default Legend\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Tooltip = ({ visible, x, y, children }) => {\n if (!visible) return null\n return (\n \n {children}\n \n )\n}\n\nTooltip.propTypes = {\n visible: PropTypes.bool,\n x: PropTypes.number,\n y: PropTypes.number,\n children: PropTypes.node,\n}\n\nexport default Tooltip\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\n\nconst BarChart = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, barPadding, formatYTick, yMin,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, d: null })\n\n if (!data || data.length === 0) return null\n\n const xScale = d3.scaleBand()\n .domain(data.map(xAccessor))\n .range([0, dimensions.boundedWidth])\n .padding(barPadding !== undefined ? barPadding : 0.2)\n\n const yScale = d3.scaleLinear()\n .domain([yMin !== undefined ? yMin : 0, d3.max(data, yAccessor)])\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const widthAccessorScaled = () => xScale.bandwidth()\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(yAccessor(d))\n const keyAccessor = (d, i) => i\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, d })\n }\n const handleMove = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = yLabel\n ? [{ color: color || DEFAULT_COLOR, label: yLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n d} label={xLabel} />\n \n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.d && (\n <>\n
{xLabel || 'Category'}: {xAccessor(tooltip.d)}
\n
{yLabel || 'Value'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n
\n
\n )\n}\n\nBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n yMin: PropTypes.number,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nBarChart.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default BarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Gradient = ({ id, colors, ...props }) => (\n \n {colors.map((color, i) => (\n \n ))}\n \n)\n\nGradient.propTypes = {\n id: PropTypes.string,\n colors: PropTypes.arrayOf(\n PropTypes.string,\n ),\n}\n\nGradient.defaultProps = {\n id: \"Gradient\",\n colors: [],\n}\n\nexport default Gradient\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\n\nconst defaultGradientColors = [\"#9980FA\", \"rgb(226, 222, 243)\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\nconst fmtFixed = d3.format(\",.2~f\")\n\nconst Histogram = ({\n data, xAccessor, xLabel, yLabel,\n color, gradientColors: gradientColorsProp, thresholds,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const gradientId = useUniqueId(\"Histogram-gradient\")\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, d: null })\n\n if (!data || data.length === 0) return null\n\n const numberOfThresholds = thresholds || 9\n\n const xScale = d3.scaleLinear()\n .domain(d3.extent(data, xAccessor))\n .range([0, dimensions.boundedWidth])\n .nice(numberOfThresholds)\n\n const binsGenerator = d3.histogram()\n .domain(xScale.domain())\n .value(xAccessor)\n .thresholds(xScale.ticks(numberOfThresholds))\n\n const bins = binsGenerator(data)\n const yAccessor = d => d.length\n const yScale = d3.scaleLinear()\n .domain([0, d3.max(bins, yAccessor)])\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const barPadding = 2\n const xAccessorScaled = d => xScale(d.x0) + barPadding\n const yAccessorScaled = d => yScale(yAccessor(d))\n const widthAccessorScaled = d => xScale(d.x1) - xScale(d.x0) - barPadding\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(yAccessor(d))\n const keyAccessor = (d, i) => i\n\n const resolvedGradientColors = gradientColorsProp || defaultGradientColors\n const barStyle = color ? { fill: color } : { fill: `url(#${gradientId})` }\n\n const tickFmt = formatXTick || fmtFixed\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, d })\n }\n const handleMove = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = xLabel\n ? [{ color: color || DEFAULT_COLOR, label: xLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n \n \n \n \n \n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.d && (\n <>\n
{xLabel || 'Range'}: {tickFmt(tooltip.d.x0)} – {tickFmt(tooltip.d.x1)}
\n
Count: {fmt(tooltip.d.length)}
\n \n )}\n
\n
\n )\n}\n\nHistogram.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n thresholds: PropTypes.number,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nHistogram.defaultProps = {\n xAccessor: d => d.x,\n}\n\nexport default Histogram\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst defaultMargin = { marginTop: 20, marginRight: 20, marginBottom: 20, marginLeft: 20 }\nconst MIN_LABEL_ANGLE = 0.35\nconst fmt = d3.format(\",\")\n\nconst PieChart = ({\n data, valueAccessor, labelAccessor,\n colors, innerRadius, padAngle, showLabels,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions(defaultMargin)\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, datum: null, label: null })\n\n if (!data || data.length === 0) return null\n\n const outerRadius = Math.min(dimensions.boundedWidth, dimensions.boundedHeight) / 2\n const cx = dimensions.boundedWidth / 2\n const cy = dimensions.boundedHeight / 2\n\n const colorScale = d3.scaleOrdinal(\n Array.isArray(colors) ? colors : d3.schemeSet2\n )\n\n const resolvedInnerRadius = typeof innerRadius === 'number'\n ? outerRadius * Math.min(Math.max(innerRadius, 0), 0.95)\n : 0\n\n const pieGenerator = d3.pie()\n .value(valueAccessor)\n .padAngle(padAngle !== undefined ? padAngle : 0.02)\n .sort(null)\n\n const arcGenerator = d3.arc()\n .innerRadius(resolvedInnerRadius)\n .outerRadius(outerRadius)\n\n const labelRadius = resolvedInnerRadius > 0\n ? (resolvedInnerRadius + outerRadius) / 2\n : outerRadius * 0.65\n\n const labelArc = d3.arc()\n .innerRadius(labelRadius)\n .outerRadius(labelRadius)\n\n const arcs = pieGenerator(data)\n const displayLabels = showLabels !== false && typeof labelAccessor === 'function'\n\n const total = d3.sum(data, valueAccessor)\n\n const legendItems = typeof labelAccessor === 'function'\n ? data.map((d, i) => {\n const label = labelAccessor(d)\n return { color: colorScale(label !== undefined ? label : String(i)), label: String(label) }\n })\n : []\n\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleSliceEnter = (datum, label, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, datum, label })\n }\n const handleSliceMove = (datum, label, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleSliceLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const chart = (\n
\n \n \n {arcs.map((arc, i) => {\n const label = labelAccessor ? labelAccessor(data[i]) : String(i)\n const sliceAngle = arc.endAngle - arc.startAngle\n return (\n \n handleSliceEnter(data[i], label, e)}\n onMouseMove={e => handleSliceMove(data[i], label, e)}\n onMouseLeave={handleSliceLeave}\n />\n {displayLabels && sliceAngle >= MIN_LABEL_ANGLE && (\n \n {label}\n \n )}\n \n )\n })}\n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n const tooltipValue = tooltip.datum ? valueAccessor(tooltip.datum) : 0\n const tooltipPct = total > 0 ? Math.round(tooltipValue / total * 100) : 0\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.datum && (\n <>\n
{tooltip.label}
\n
{fmt(tooltipValue)} ({tooltipPct}%)
\n \n )}\n
\n
\n )\n}\n\nPieChart.propTypes = {\n data: PropTypes.array,\n valueAccessor: accessorPropsType,\n labelAccessor: accessorPropsType,\n colors: PropTypes.arrayOf(PropTypes.string),\n innerRadius: PropTypes.number,\n padAngle: PropTypes.number,\n showLabels: PropTypes.bool,\n /** Show a legend listing each slice's color and label. Default: false. */\n showLegend: PropTypes.bool,\n /** Position of the legend. One of 'top', 'bottom', 'left', 'right'. Default: 'bottom'. */\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nPieChart.defaultProps = {\n valueAccessor: d => d.value,\n labelAccessor: d => d.label,\n}\n\nexport default PieChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst Circles = ({ data, keyAccessor, xAccessor, yAccessor, radius, color, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nCircles.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n radius: accessorPropsType,\n /** Fill color for each circle. */\n color: PropTypes.string,\n}\n\nCircles.defaultProps = {\n radius: 5,\n}\n\nexport default Circles\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\n\nconst ScatterPlot = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, radius, formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, d: null })\n\n if (!data || data.length === 0) return null\n\n const xExtent = d3.extent(data, xAccessor)\n const yExtent = d3.extent(data, yAccessor)\n\n const xDomain = xExtent[0] === xExtent[1]\n ? [xExtent[0] - 1, xExtent[0] + 1]\n : xExtent\n const yDomain = yExtent[0] === yExtent[1]\n ? [yExtent[0] - 1, yExtent[0] + 1]\n : yExtent\n\n const xScale = d3.scaleLinear().domain(xDomain).range([0, dimensions.boundedWidth]).nice()\n const yScale = d3.scaleLinear().domain(yDomain).range([dimensions.boundedHeight, 0]).nice()\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const keyAccessor = (d, i) => i\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip({ visible: true, x, y, d })\n }\n const handleMove = (d, i, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = yLabel\n ? [{ color: color || DEFAULT_COLOR, label: yLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n \n \n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.d && (\n <>\n
{xLabel || 'X'}: {fmt(xAccessor(tooltip.d))}
\n
{yLabel || 'Y'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n
\n
\n )\n}\n\nScatterPlot.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nScatterPlot.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default ScatterPlot\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Axis from \"../Cartesian/Axis\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\n\nconst fmt = d3.format(\",\")\n\nconst StackedBarChart = ({\n data, xAccessor, keys, colors,\n xLabel, yLabel, barPadding, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0, key: null, value: 0, category: null, total: 0 })\n\n if (!data || data.length === 0 || !keys || keys.length === 0) return null\n\n const colorScale = d3.scaleOrdinal(Array.isArray(colors) ? colors : d3.schemeSet2).domain(keys)\n\n const series = d3.stack().keys(keys)(data)\n\n const xScale = d3.scaleBand()\n .domain(data.map(xAccessor))\n .range([0, dimensions.boundedWidth])\n .padding(barPadding !== undefined ? barPadding : 0.2)\n\n const yScale = d3.scaleLinear()\n .domain([0, d3.max(series, s => d3.max(s, d => d[1]))])\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const getPos = e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n return { x: e.clientX - left, y: e.clientY - top }\n }\n\n const handleEnter = (key, d, e) => {\n const { x, y } = getPos(e)\n const total = keys.reduce((sum, k) => sum + (d.data[k] || 0), 0)\n setTooltip({ visible: true, x, y, key, value: d[1] - d[0], category: xAccessor(d.data), total })\n }\n const handleMove = (key, d, e) => {\n const { x, y } = getPos(e)\n setTooltip(t => ({ ...t, x, y }))\n }\n const handleLeave = () => setTooltip(t => ({ ...t, visible: false }))\n\n const legendItems = keys.map(k => ({ color: colorScale(k), label: k }))\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n d} label={xLabel} />\n \n {series.map(s => (\n \n {s.map((d, i) => (\n handleEnter(s.key, d, e)}\n onMouseMove={e => handleMove(s.key, d, e)}\n onMouseLeave={handleLeave}\n />\n ))}\n \n ))}\n \n
\n )\n\n const legend = showLegend !== false && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {tooltip.key && (\n <>\n
{tooltip.category}
\n
{tooltip.key}: {fmt(tooltip.value)}
\n
Total: {fmt(tooltip.total)}
\n \n )}\n
\n
\n )\n}\n\nStackedBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n /** Series keys to stack — each key must be a numeric property on each datum. Required. */\n keys: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.string),\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nStackedBarChart.defaultProps = {\n xAccessor: d => d.x,\n}\n\nexport default StackedBarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst Line = ({ type, data, xAccessor, yAccessor, y0Accessor, interpolation, ...props }) => {\n const lineGenerator = d3[type]()\n .x(xAccessor)\n .y(yAccessor)\n .curve(interpolation)\n\n if (type === \"area\") {\n lineGenerator\n .y0(y0Accessor)\n .y1(yAccessor)\n }\n\n return (\n \n )\n}\n\nLine.propTypes = {\n type: PropTypes.oneOf([\"line\", \"area\"]),\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n y0Accessor: accessorPropsType,\n interpolation: PropTypes.func,\n}\n\nLine.defaultProps = {\n type: \"line\",\n y0Accessor: 0,\n interpolation: d3.curveMonotoneX,\n}\n\nexport default Line\n","import React, { useRef, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport * as d3 from \"d3\"\n\nimport Chart from \"../Components/Chart\"\nimport Line from \"../Components/Line\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport Legend from \"../Components/Legend\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\n\nconst formatDate = d3.timeFormat(\"%-b %-d\")\nconst formatTooltipDate = d3.timeFormat(\"%-b %-d, %Y\")\nconst defaultGradientColors = [\"rgb(226, 222, 243)\", \"#f8f9fa\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = d3.format(\",\")\n\nconst Timeline = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, gradientColors: gradientColorsProp,\n interpolation, showArea, showDots,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const gradientId = useUniqueId(\"Timeline-gradient\")\n const wrapperRef = useRef()\n const [hovered, setHovered] = useState(null)\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0 })\n\n if (!data || data.length === 0) return null\n\n const resolvedGradientColors = gradientColorsProp\n || (color ? [`${color}55`, \"rgba(255,255,255,0)\"] : defaultGradientColors)\n\n const xScale = d3.scaleTime()\n .domain(d3.extent(data, xAccessor))\n .range([0, dimensions.boundedWidth])\n\n const yScale = d3.scaleLinear()\n .domain(d3.extent(data, yAccessor))\n .range([dimensions.boundedHeight, 0])\n .nice()\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const y0AccessorScaled = yScale(yScale.domain()[0])\n\n const bisect = d3.bisector(xAccessor).left\n\n const handleMouseMove = e => {\n const svgEl = e.currentTarget.ownerSVGElement\n const svgBounds = svgEl.getBoundingClientRect()\n const mouseX = e.clientX - svgBounds.left - dimensions.marginLeft\n\n const date = xScale.invert(mouseX)\n const idx = bisect(data, date, 1)\n const d0 = data[idx - 1]\n const d1 = data[idx]\n const hoveredDatum = !d1 || (d0 && date - xAccessor(d0) < xAccessor(d1) - date)\n ? idx - 1 : idx\n\n setHovered(hoveredDatum)\n\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n setTooltip({ visible: true, x: e.clientX - left, y: e.clientY - top })\n }\n\n const handleMouseLeave = () => {\n setHovered(null)\n setTooltip(t => ({ ...t, visible: false }))\n }\n\n const hoveredDatum = hovered !== null ? data[hovered] : null\n const yFmt = formatYTick || fmt\n const xFmt = formatXTick || formatTooltipDate\n\n const legendItems = yLabel\n ? [{ color: color || DEFAULT_COLOR, label: yLabel }]\n : []\n const resolvedPosition = legendPosition || 'bottom'\n const isHorizontal = resolvedPosition === 'left' || resolvedPosition === 'right'\n const isLeading = resolvedPosition === 'top' || resolvedPosition === 'left'\n\n const chart = (\n
\n \n \n \n \n \n \n {showArea !== false && (\n \n )}\n \n {showDots && (\n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n color={color}\n />\n )}\n {hoveredDatum && (\n <>\n \n \n \n )}\n \n \n
\n )\n\n const legend = showLegend && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {chart}\n {!isLeading && legend}\n \n {hoveredDatum && (\n <>\n
{xFmt(xAccessor(hoveredDatum))}
\n
{yLabel || 'Value'}: {yFmt(yAccessor(hoveredDatum))}
\n \n )}\n
\n
\n )\n}\n\nTimeline.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n interpolation: PropTypes.func,\n showArea: PropTypes.bool,\n showDots: PropTypes.bool,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nTimeline.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n showArea: true,\n showDots: false,\n}\n\nexport default Timeline\n"],"names":["b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Fragment","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextConsumer","Lazy","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","reactIsModule","exports","require$$0","require$$1","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","s","arguments","length","key","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","propTypesModule","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","push","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","ascending$3","NaN","bisector","compare","ascending","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","pair","number$3","variance","valueof","delta","mean","sum","isNaN","deviation","Math","sqrt","extent$1","min","max","slice","constant$d","identity$9","sequence","start","stop","ceil","range","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","floor","power","log","LN10","pow","tickStep","step0","abs","step1","thresholdSturges","LN2","histogram","identity","domain","extent","threshold","sturges","xz","x0","x1","tz","shift","pop","bin","bins","bisect","_","constant","thresholds","threshold$1","i0","value0","max$2","merge","arrays","merged","j","min$1","sum$2","transpose","matrix","row","identity$8","translateX","translateY","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","transform","context","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","insert","transition","getAttribute","parentNode","remove","filter","each","tickSize","noop","dispatch","test","Dispatch","parseTypenames","typenames","types","trim","indexOf","get","set","callback","concat","on","typename","T","that","args","xhtml","namespaces","svg","xlink","xml","xmlns","namespace","prefix","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","creator","none","selector","querySelector","empty","selectorAll","querySelectorAll","matcher","matches","sparse","update","EnterNode","parent","datum","_next","_parent","__data__","appendChild","child","insertBefore","bindIndex","group","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","splice","contains","filterEvents","event","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","match","size","enterGroup","updateGroup","previous","i1","_enter","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","sort","compareNode","sortgroups","sortgroup","nodes","getAttributeNS","property","classed","html","create","before","deep","nextId","Local","toString","current","point$5","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","mouse","changedTouches","touch","touches","identifier","nopropagation","stopImmediatePropagation","noevent$2","preventDefault","dragDisable","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","constant$b","DragEvent","subject","id","active","dx","dy","defaultFilter","ctrlKey","button","defaultContainer","defaultSubject","defaultTouchable","navigator","maxTouchPoints","define","factory","extend","definition","Color","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl","hsl2rgb","m2","channels","displayable","formatHsl","darker","deg2rad","PI","rad2deg","t0","t1","t2","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","hcl","cos","sin","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","basis","v0","v1","v2","v3","t3","basis$2","basisClosed$1","constant$a","linear","hue","gamma","nogamma","exponential","cosh","sinh","interpolateRgb","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","numberArray","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","date$1","setTime","interpolateNumber","object$1","reA","reB","interpolateString","am","bm","bs","bi","lastIndex","one","zero","interpolateValue","date","valueOf","interpolateRound","cssNode","cssRoot","cssView","svgNode","degrees","rotate","skewX","scaleX","scaleY","decompose","atan","interpolateTransform","parse","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","interpolateTransformSvg","baseVal","consolidate","rho","SQRT2","exp","interpolateZoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","d2","d1","b0","b1","r0","r1","coshr0","tanh","duration","colorHsl","hsl$1","hslLong","colorHcl","hcl$1","hclLong","cubehelixGamma","colorCubehelix","cubehelix$2","cubehelixLong","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","schedule","timing","schedules","__transition","self","tween","state","ease","init","interrupt","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate$1","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","quadInOut","cubicInOut","children","inherit","id0","id1","styleNull","listener0","undefined","styleMaybeRemove","removeFunction","Promise","resolve","reject","cancel","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinInOut","tpmt","expInOut","circleInOut","bounceOut","backIn","overshoot","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","constant$9","BrushEvent","noevent$1","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","toucher","X","handles","input","output","xy","Y","XY","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultExtent","hasAttribute","viewBox","width","height","__brush","brush","dim","touchending","touchable","listeners","handleSize","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","mode","metaKey","altKey","signX","signY","W","N","shifting","shiftKey","pointer","point0","beforestart","moved","ended","keydowned","keyupped","point1","move","dragEnable","keyCode","selection0","selection1","clear","starting","keyModifiers","compareValue","constant$8","tauEpsilon","Path","_x0","_y0","_x1","_y1","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","startAngle","defaultEndAngle","endAngle","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","Map","createObject","setObject","createMap","setMap","Set","proto","ascending$1","constant$7","contains$2","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","within","noop$2","cases","contours","smooth","smoothLinear","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","isorings","area","polygon","coordinates","xt","yt","_0","_1","blurX","sr","blurY","defaultX","defaultY","defaultWeight","EOL","EOF","objectConverter","columns","inferColumns","rows","columnSet","column","pad","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","year","formatYear","getUTCFullYear","getUTCMonth","getUTCDate","dsvFormat","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","fixtz","getHours","responseBlob","response","ok","status","statusText","blob","responseArrayBuffer","arrayBuffer","responseText","fetch","then","dsvParse","responseJson","json","parser","DOMParser","parseFromString","constant$6","jiggle","random","tree","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","Quad","quadtree","Quadtree","addAll","leaf_copy","treeProto","vx","vy","find","nodeById","nodeId","cover","yz","visit","x3","y3","quads","retainer","removeAll","visitAfter","initialAngle","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","toPrecision","toUpperCase","identity$6","locale","formatPrefix","prefixes","formatLocale$1","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","defaultLocale","formatLocale","precisionFixed","precisionPrefix","precisionRound","adder","Adder","reset","temp","bv","av","quarterPi","radians","haversin","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","geoStream","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","phi0","lambda1","phi1","lambda2","ranges","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","angle","rangeCompare","rangeContains","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","constant$5","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","clipBuffer","lines","rejoin","result","pointEqual","Intersection","points","other","clipRejoin","segments","compareIntersection","startInside","clip","segment","link","isSubject","longitude","polygonContains","winding","sinPhi1","cosPhi1","absDelta","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","pointLine","ringSegments","validSegment","clipAntimeridian","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","clipCircle","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","polar","q1","code","c0","v00","point2","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","polygonInside","cleanInside","ax","ay","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","length$1","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","identity$5","x00","y00","pathArea","bounds","boundsStream$1","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","pathCentroid","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","pathMeasure","PathString","_string","circle","transformer","methods","TransformStream","fit","projection","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","_circle","cosMinDistance","resample","project","delta2","resampleLineTo","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslate","sx","sy","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","ci","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","theta","preclip","postclip","recenter","transformRotate","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","sy0","cylindricalEqualAreaRaw","r0y","conicEqualArea","albers","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","cy0","fy","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","hierarchy","childs","Node","valued","defaultChildren","eachBefore","computeHeight","copyData","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","links","enclose","circles","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","b2","b3","c3","d3","place","intersects","score","packEnclose","aa","sj","sk","pack","optional","required","constantZero","constant$4","radiusLeaf","packChildren","translateChild","roundNode","treemapDice","preroot","ambiguous","defaultId","defaultParentId","parentId","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treemapSlice","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","dice","squarify","resquarify","_squarify","cross$1","lexicographicOrder","computeUpperHullIndexes","indexes","cross","uniform","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","logNormal","sourceRandomLogNormal","randomLogNormal","irwinHall","sourceRandomIrwinHall","randomIrwinHall","bates","sourceRandomBates","randomBates","sourceRandomExponential","randomExponential","initRange","initInterpolator","interpolator","implicit","ordinal","unknown","band","ordinalRange","paddingInner","paddingOuter","rescale","rangeRound","pointish","number$1","unit","normalize","clamper","bimap","d0","polymap","clamp","untransform","piecewise","continuous","linearish","nice","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","base","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","transformPow","transformSqrt","transformSquare","powish","newInterval","floori","offseti","field","millisecond","utcMillisecond","second","getMilliseconds","utcSecond","minute","getSeconds","getMinutes","timeMinute","hour","timeHour","day","setHours","setDate","getDate","getTimezoneOffset","timeDay","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month","setMonth","getMonth","getFullYear","timeMonth","months","setFullYear","timeYear","years","utcMinute","setUTCSeconds","utcMinute$1","utcMinutes","utcHour","setUTCMinutes","utcHour$1","utcHours","utcDay","setUTCHours","setUTCDate","utcDay$1","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","utcMonth$1","utcMonths","utcYear","setUTCFullYear","utcYear$1","utcYears","localDate","H","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","G","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","Q","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","U","formatWeekNumberSunday","V","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","Z","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","charAt","newParse","week","timeMonday","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","timeSunday","dISO","timeThursday","dow","UTCdISO","formatIso","toISOString","formatIso$1","parseIso","parseIso$1","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","timeWeek","timeSecond","timeMillisecond","k10","sequentialPow","k21","divergingPow","category10","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","Tableau10","ramp$1","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","pi_1_3","pi_2_3","viridis","magma","inferno","plasma","constant$2","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","cx0","cx1","cy1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","buffer","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","bx","by","kc","lc","Linear","curveLinear","pointX","pointY","defined","curve","defined0","x0z","y0z","areaStart","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","descending$1","identity$1","pie","sortValues","descending","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineRadial$1","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","pointRadial","linkSource","linkTarget","argv","curveHorizontal","curveVertical","p2","p3","draw","tan30","tan30_2","diamond","kr","kx","ky","star","square","sqrt3","triangle","wye","Basis","BasisClosed","BasisOpen","Bundle","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","cardinalClosed","CardinalOpen","cardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","catmullRomClosed","CatmullRomOpen","catmullRomOpen","LinearClosed","slope3","h0","h1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","Natural","controlPoints","Step","_t","none$1","series","stackValue","orderNone","offsetNone","oz","kz","sz","sij","ki","si","appearance","peaks","peak","vi","vj","sums","constant$1","RedBlackTree","RedBlackNode","R","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","fm","fb","lx","ly","rx","ry","fx","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","_t0","px","py","after","grandpa","uncle","sibling","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","epsilon2","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","epsilon","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v01","v11","v10","clipCells","ZoomEvent","Transform","triangles","_found","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","values0","values1","reduce","quantile","numbers","pairs","permutes","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","di","dj","subindex","ribbon","sa0","sa1","sx0","tr","ta0","ta1","rollup","nest","sortKeys","createResult","setResult","valuesByKey","sortKey","weight","density","Float32Array","wi","transformPolygon","transformRing","transformPoint","resize","cellSize","mousedownx","mousedowny","mousemoving","container","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","sublisteners","clickDistance","image","Image","onerror","onload","src","force","radii","strength","iterations","ri","ri2","prepare","quad","rj","strengths","distances","bias","initializeStrength","initializeDistance","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","radiuses","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","initializeNodes","initializeForce","closest","feature","deltaMax","sy1","kx0","ky0","kx1","ky1","projectionStream","contextStream","measure","pathBounds","lower48Point","alaskaPoint","hawaiiPoint","lower48","alaska","hawaii","pointStream","albersUsa","streams","multiplex","sa","tx","ty","separation","nodeSize","cluster","previousNode","meanX","maxY","leafLeft","leafRight","partition","positionNode","stratify","nodeKey","nodeByKey","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","colorLab","samples","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","symlog","invertExtent","quantiles","quantize","utcWeek","sequential","sequentialLog","sequentialSymlog","sequentialQuantile","diverging","divergingLog","divergingSymlog","ts","yn","s2","sij0","s3","tops","bottoms","total","voronoi","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","wheelidled","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","MapShim","getIndex","arr","some","class_1","__entries__","defineProperty","enumerable","configurable","delete","ctx","_i","_a","isBrowser","global$1","global","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","writable","getWindowOf","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","_this","observation","WeakMap","ResizeObserver","method","accessorPropsType","callAccessor","accessor","dimensionsPropsType","marginTop","marginRight","marginBottom","marginLeft","combineChartDimensions","dimensions","parsedDimensions","boundedHeight","boundedWidth","useChartDimensions","passedSettings","ref","useRef","changeWidth","useState","changeHeight","useEffect","resizeObserver","newSettings","useUniqueId","useId","css","insertAt","head","getElementsByTagName","styleSheet","cssText","createTextNode","ChartContext","createContext","Chart","label","React","Provider","className","role","propTypes","defaultProps","Bars","keyAccessor","xAccessor","yAccessor","widthAccessor","heightAccessor","onMouseEnter","onMouseLeave","onMouseMove","_extends","axisComponentsByDimension","formatTick","numberOfTicks","tickOffset","Axis","dimension","useContext","Component","Legend","items","isVertical","display","flexDirection","flexWrap","justifyContent","alignItems","gap","fontSize","flexShrink","item","borderRadius","background","Tooltip","pointerEvents","border","lineHeight","boxShadow","zIndex","whiteSpace","fmt","BarChart","xLabel","yLabel","barPadding","formatYTick","yMin","showLegend","legendPosition","wrapperRef","tooltip","setTooltip","xScale","yScale","getPos","legendItems","resolvedPosition","isHorizontal","isLeading","chart","flex","minHeight","minWidth","Boolean","widthAccessorScaled","handleEnter","handleMove","handleLeave","legend","Gradient","gradientUnits","spreadMethod","stopColor","defaultGradientColors","fmtFixed","Histogram","gradientColors","gradientColorsProp","formatXTick","gradientId","numberOfThresholds","binsGenerator","resolvedGradientColors","barStyle","tickFmt","defaultMargin","PieChart","valueAccessor","labelAccessor","showLabels","colorScale","resolvedInnerRadius","pieGenerator","arcGenerator","labelRadius","labelArc","displayLabels","handleSliceLeave","sliceAngle","handleSliceEnter","handleSliceMove","textAnchor","dominantBaseline","tooltipValue","tooltipPct","Circles","ScatterPlot","xExtent","yExtent","xDomain","yDomain","StackedBarChart","category","Line","y0Accessor","interpolation","lineGenerator","formatTooltipDate","Timeline","showArea","showDots","hovered","setHovered","xAccessorScaled","yAccessorScaled","y0AccessorScaled","hoveredDatum","yFmt","xFmt","stroke","svgBounds","currentTarget","mouseX","idx","handleMouseLeave"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/max.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-scale/src/array.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/nice.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/Utils/utils.js","../node_modules/style-inject/dist/style-inject.es.js","../src/Components/Chart.js","../src/Components/Bars.js","../src/Cartesian/Axis.js","../src/Components/Legend.js","../src/Components/ChartLayout.js","../src/Components/Tooltip.js","../src/Utils/useTooltip.js","../src/Charts/BarChart.js","../src/Components/Gradient.js","../src/Charts/Histogram.js","../node_modules/d3-array/src/histogram.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/colors.js","../src/Charts/PieChart.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-array/src/sum.js","../src/Components/Circles.js","../src/Charts/ScatterPlot.js","../src/Charts/StackedBarChart.js","../src/Components/Line.js","../node_modules/d3-shape/src/area.js","../src/Charts/Timeline.js"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import PropTypes from 'prop-types'\nimport { useEffect, useState, useRef, useId } from \"react\"\nimport ResizeObserver from \"resize-observer-polyfill\"\n\nexport const accessorPropsType = (\n PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.number,\n ])\n)\n\nexport const callAccessor = (accessor, d, i) => (\n typeof accessor === \"function\" ? accessor(d, i) : accessor\n)\n\nexport const dimensionsPropsType = (\n PropTypes.shape({\n height: PropTypes.number,\n width: PropTypes.number,\n marginTop: PropTypes.number,\n marginRight: PropTypes.number,\n marginBottom: PropTypes.number,\n marginLeft: PropTypes.number,\n })\n)\n\nexport const combineChartDimensions = dimensions => {\n let parsedDimensions = {\n marginTop: 40,\n marginRight: 30,\n marginBottom: 40,\n marginLeft: 75,\n ...dimensions,\n }\n\n return {\n ...parsedDimensions,\n boundedHeight: Math.max(parsedDimensions.height - parsedDimensions.marginTop - parsedDimensions.marginBottom, 0),\n boundedWidth: Math.max(parsedDimensions.width - parsedDimensions.marginLeft - parsedDimensions.marginRight, 0),\n }\n}\n\nexport const useChartDimensions = passedSettings => {\n const ref = useRef()\n const dimensions = combineChartDimensions(passedSettings)\n\n const [width, changeWidth] = useState(0)\n const [height, changeHeight] = useState(0)\n\n useEffect(() => {\n if (dimensions.width && dimensions.height) return\n\n const element = ref.current\n const resizeObserver = new ResizeObserver(entries => {\n if (!Array.isArray(entries)) return\n if (!entries.length) return\n\n const entry = entries[0]\n\n if (width !== entry.contentRect.width) changeWidth(entry.contentRect.width)\n if (height !== entry.contentRect.height) changeHeight(entry.contentRect.height)\n })\n\n resizeObserver.observe(element)\n\n return () => resizeObserver.unobserve(element)\n }, [passedSettings, height, width, dimensions])\n\n const newSettings = combineChartDimensions({\n ...dimensions,\n width: dimensions.width || width,\n height: dimensions.height || height,\n })\n\n return [ref, newSettings]\n}\n\n// Use React's built-in useId (React 18+) for concurrent-safe unique IDs\nexport const useUniqueId = (prefix = \"\") => {\n const id = useId().replace(/:/g, '')\n return `${prefix}-${id}`\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { createContext, useContext } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { dimensionsPropsType } from \"../Utils/utils\";\n\nimport \"./Chart.css\"\n\nconst ChartContext = createContext()\nexport const useDimensionsContext = () => useContext(ChartContext)\n\nconst Chart = ({ dimensions, children, label }) => (\n \n \n \n { children }\n \n \n \n)\n\nChart.propTypes = {\n dimensions: dimensionsPropsType,\n label: PropTypes.string,\n}\n\nChart.defaultProps = {\n dimensions: {}\n}\n\nexport default Chart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { max } from 'd3-array'\nimport { accessorPropsType, callAccessor } from \"../Utils/utils\";\n\nconst Bars = ({ data, keyAccessor, xAccessor, yAccessor, widthAccessor, heightAccessor, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nBars.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n widthAccessor: accessorPropsType,\n heightAccessor: accessorPropsType,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseMove: PropTypes.func,\n}\n\nBars.defaultProps = {\n}\n\nexport default Bars\n\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { format } from 'd3-format'\nimport { useDimensionsContext } from \"../Components/Chart\";\n\nconst axisComponentsByDimension = {\n x: AxisHorizontal,\n y: AxisVertical,\n}\n\nconst Axis = ({ dimension, ...props }) => {\n const dimensions = useDimensionsContext()\n const Component = axisComponentsByDimension[dimension]\n if (!Component) return null\n\n return (\n \n )\n}\n\nAxis.propTypes = {\n dimension: PropTypes.oneOf([\"x\", \"y\"]),\n scale: PropTypes.func,\n label: PropTypes.string,\n formatTick: PropTypes.func,\n}\n\nAxis.defaultProps = {\n dimension: \"x\",\n scale: null,\n formatTick: format(\",\"),\n}\n\nexport default Axis\n\n\nfunction AxisHorizontal ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedWidth < 600\n ? dimensions.boundedWidth / 100\n : dimensions.boundedWidth / 250\n\n // scaleBand (categorical) has no .ticks() — use .domain() instead\n const ticks = typeof scale.ticks === 'function'\n ? scale.ticks(numberOfTicks)\n : scale.domain()\n\n // Center labels within each band for band/ordinal scales\n const tickOffset = typeof scale.bandwidth === 'function' ? scale.bandwidth() / 2 : 0\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n\nfunction AxisVertical ({ dimensions, label, formatTick, scale, ...props }) {\n if (!scale) return null\n\n const numberOfTicks = dimensions.boundedHeight / 70\n\n const ticks = scale.ticks(numberOfTicks)\n\n return (\n \n \n\n {ticks.map((tick, i) => (\n \n { formatTick(tick) }\n \n ))}\n\n {label && (\n \n { label }\n \n )}\n \n )\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Legend = ({ items, position }) => {\n const isVertical = position === 'left' || position === 'right'\n return (\n \n {items.map((item, i) => (\n \n \n {item.label}\n \n ))}\n \n )\n}\n\nLegend.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n position: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nLegend.defaultProps = {\n items: [],\n position: 'bottom',\n}\n\nexport default Legend\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Legend from './Legend'\n\nconst COL_STYLE = { width: '100%', height: '100%', display: 'flex', flexDirection: 'column', position: 'relative' }\nconst ROW_STYLE = { width: '100%', height: '100%', display: 'flex', flexDirection: 'row', position: 'relative' }\n\nconst ChartLayout = ({ wrapperRef, legendItems, showLegend, legendPosition, tooltip, children }) => {\n const position = legendPosition || 'bottom'\n const isHorizontal = position === 'left' || position === 'right'\n const isLeading = position === 'top' || position === 'left'\n\n const legend = showLegend && legendItems && legendItems.length > 0\n ? \n : null\n\n return (\n
\n {isLeading && legend}\n {children}\n {!isLeading && legend}\n {tooltip}\n
\n )\n}\n\nChartLayout.propTypes = {\n wrapperRef: PropTypes.object,\n legendItems: PropTypes.arrayOf(PropTypes.shape({\n color: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })),\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n tooltip: PropTypes.node,\n children: PropTypes.node,\n}\n\nexport default ChartLayout\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Tooltip = ({ visible, x, y, children }) => {\n if (!visible) return null\n return (\n \n {children}\n \n )\n}\n\nTooltip.propTypes = {\n visible: PropTypes.bool,\n x: PropTypes.number,\n y: PropTypes.number,\n children: PropTypes.node,\n}\n\nexport default Tooltip\n","import { useRef, useState, useCallback } from 'react'\n\nexport function useTooltip() {\n const wrapperRef = useRef()\n const [tooltip, setTooltip] = useState({ visible: false, x: 0, y: 0 })\n\n const showTooltip = useCallback((e, data) => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n setTooltip({ visible: true, x: e.clientX - left, y: e.clientY - top, ...data })\n }, [])\n\n const moveTooltip = useCallback(e => {\n const { left, top } = wrapperRef.current.getBoundingClientRect()\n setTooltip(t => ({ ...t, x: e.clientX - left, y: e.clientY - top }))\n }, [])\n\n const hideTooltip = useCallback(() => {\n setTooltip(t => ({ ...t, visible: false }))\n }, [])\n\n return { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip }\n}\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleBand, scaleLinear } from 'd3-scale'\nimport { max } from 'd3-array'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\n\nconst BarChart = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, barPadding, formatYTick, yMin,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const xScale = useMemo(() =>\n scaleBand()\n .domain(data ? data.map(xAccessor) : [])\n .range([0, dimensions.boundedWidth])\n .padding(barPadding ?? 0.2),\n [data, xAccessor, dimensions.boundedWidth, barPadding]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain([yMin ?? 0, max(data, yAccessor) || 0])\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [data, yAccessor, dimensions.boundedHeight, yMin]\n )\n\n const legendItems = useMemo(() =>\n yLabel ? [{ color: color || DEFAULT_COLOR, label: yLabel }] : [],\n [yLabel, color]\n )\n\n const barStyle = useMemo(() => color ? { fill: color } : undefined, [color])\n\n const handleEnter = useCallback((d, i, e) => showTooltip(e, { d }), [showTooltip])\n const handleMove = useCallback((d, i, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const widthAccessorScaled = () => xScale.bandwidth()\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(yAccessor(d))\n\n return (\n \n {tooltip.d && (\n <>\n
{xLabel || 'Category'}: {xAccessor(tooltip.d)}
\n
{yLabel || 'Value'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n \n }>\n
\n \n d} label={xLabel} />\n \n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n widthAccessor={widthAccessorScaled}\n heightAccessor={heightAccessorScaled}\n style={barStyle}\n onMouseEnter={handleEnter}\n onMouseMove={handleMove}\n onMouseLeave={hideTooltip}\n />\n \n
\n
\n )\n}\n\nBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n yMin: PropTypes.number,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nBarChart.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default BarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst Gradient = ({ id, colors, ...props }) => (\n \n {colors.map((color, i) => (\n \n ))}\n \n)\n\nGradient.propTypes = {\n id: PropTypes.string,\n colors: PropTypes.arrayOf(\n PropTypes.string,\n ),\n}\n\nGradient.defaultProps = {\n id: \"Gradient\",\n colors: [],\n}\n\nexport default Gradient\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleLinear } from 'd3-scale'\nimport { extent, max, histogram } from 'd3-array'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Bars from \"../Components/Bars\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_GRADIENT = [\"#9980FA\", \"rgb(226, 222, 243)\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\nconst fmtFixed = format(\",.2~f\")\nconst BAR_PADDING = 2\n\nconst Histogram = ({\n data, xAccessor, xLabel, yLabel,\n color, gradientColors, thresholds,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const gradientId = useUniqueId(\"Histogram-gradient\")\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const numberOfThresholds = thresholds || 9\n\n const xScale = useMemo(() =>\n scaleLinear()\n .domain(extent(data, xAccessor))\n .range([0, dimensions.boundedWidth])\n .nice(numberOfThresholds),\n [data, xAccessor, dimensions.boundedWidth, numberOfThresholds]\n )\n\n const bins = useMemo(() =>\n histogram()\n .domain(xScale.domain())\n .value(xAccessor)\n .thresholds(xScale.ticks(numberOfThresholds))(data),\n [xScale, xAccessor, numberOfThresholds, data]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain([0, max(bins, d => d.length) || 0])\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [bins, dimensions.boundedHeight]\n )\n\n const legendItems = useMemo(() =>\n xLabel ? [{ color: color || DEFAULT_COLOR, label: xLabel }] : [],\n [xLabel, color]\n )\n\n const resolvedGradientColors = gradientColors || DEFAULT_GRADIENT\n const barStyle = useMemo(() =>\n color ? { fill: color } : { fill: `url(#${gradientId})` },\n [color, gradientId]\n )\n\n const tickFmt = formatXTick || fmtFixed\n\n const handleEnter = useCallback((d, i, e) => showTooltip(e, { d }), [showTooltip])\n const handleMove = useCallback((d, i, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(d.x0) + BAR_PADDING\n const yAccessorScaled = d => yScale(d.length)\n const widthAccessorScaled = d => xScale(d.x1) - xScale(d.x0) - BAR_PADDING\n const heightAccessorScaled = d => dimensions.boundedHeight - yScale(d.length)\n\n return (\n \n {tooltip.d && (\n <>\n
{xLabel || 'Range'}: {tickFmt(tooltip.d.x0)} – {tickFmt(tooltip.d.x1)}
\n
Count: {fmt(tooltip.d.length)}
\n \n )}\n \n }>\n
\n \n \n \n \n \n \n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n widthAccessor={widthAccessorScaled}\n heightAccessor={heightAccessorScaled}\n style={barStyle}\n onMouseEnter={handleEnter}\n onMouseMove={handleMove}\n onMouseLeave={hideTooltip}\n />\n \n
\n
\n )\n}\n\nHistogram.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n thresholds: PropTypes.number,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nHistogram.defaultProps = {\n xAccessor: d => d.x,\n}\n\nexport default Histogram\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export var slice = Array.prototype.slice;\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleOrdinal } from 'd3-scale'\nimport { arc, pie } from 'd3-shape'\nimport { sum } from 'd3-array'\nimport { schemeSet2 } from 'd3-scale-chromatic'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_MARGIN = { marginTop: 20, marginRight: 20, marginBottom: 20, marginLeft: 20 }\nconst MIN_LABEL_ANGLE = 0.35\nconst fmt = format(\",\")\n\nconst PieChart = ({\n data, valueAccessor, labelAccessor,\n colors, innerRadius, padAngle, showLabels,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions(DEFAULT_MARGIN)\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const colorScale = useMemo(() =>\n scaleOrdinal(Array.isArray(colors) ? colors : schemeSet2),\n [colors]\n )\n\n const outerRadius = Math.min(dimensions.boundedWidth, dimensions.boundedHeight) / 2\n const cx = dimensions.boundedWidth / 2\n const cy = dimensions.boundedHeight / 2\n\n const resolvedInnerRadius = typeof innerRadius === 'number'\n ? outerRadius * Math.min(Math.max(innerRadius, 0), 0.95)\n : 0\n\n const arcGenerator = useMemo(() =>\n arc().innerRadius(resolvedInnerRadius).outerRadius(outerRadius),\n [resolvedInnerRadius, outerRadius]\n )\n\n const labelArc = useMemo(() => {\n const r = resolvedInnerRadius > 0\n ? (resolvedInnerRadius + outerRadius) / 2\n : outerRadius * 0.65\n return arc().innerRadius(r).outerRadius(r)\n }, [resolvedInnerRadius, outerRadius])\n\n const arcs = useMemo(() =>\n data ? pie()\n .value(valueAccessor)\n .padAngle(padAngle ?? 0.02)\n .sort(null)(data)\n : [],\n [data, valueAccessor, padAngle]\n )\n\n const total = useMemo(() =>\n data ? sum(data, valueAccessor) : 0,\n [data, valueAccessor]\n )\n\n const legendItems = useMemo(() =>\n typeof labelAccessor === 'function'\n ? (data || []).map((d, i) => {\n const label = labelAccessor(d)\n return { color: colorScale(label !== undefined ? label : String(i)), label: String(label) }\n })\n : [],\n [data, labelAccessor, colorScale]\n )\n\n const handleSliceEnter = useCallback((datum, label, e) =>\n showTooltip(e, { datum, label }),\n [showTooltip]\n )\n const handleSliceMove = useCallback((datum, label, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const displayLabels = showLabels !== false && typeof labelAccessor === 'function'\n const tooltipValue = tooltip.datum ? valueAccessor(tooltip.datum) : 0\n const tooltipPct = total > 0 ? Math.round(tooltipValue / total * 100) : 0\n\n return (\n \n {tooltip.datum && (\n <>\n
{tooltip.label}
\n
{fmt(tooltipValue)} ({tooltipPct}%)
\n \n )}\n \n }>\n
\n \n \n {arcs.map((a, i) => {\n const label = labelAccessor ? labelAccessor(data[i]) : String(i)\n return (\n \n handleSliceEnter(data[i], label, e)}\n onMouseMove={e => handleSliceMove(data[i], label, e)}\n onMouseLeave={hideTooltip}\n />\n {displayLabels && (a.endAngle - a.startAngle) >= MIN_LABEL_ANGLE && (\n \n {label}\n \n )}\n \n )\n })}\n \n \n
\n
\n )\n}\n\nPieChart.propTypes = {\n data: PropTypes.array,\n valueAccessor: accessorPropsType,\n labelAccessor: accessorPropsType,\n colors: PropTypes.arrayOf(PropTypes.string),\n innerRadius: PropTypes.number,\n padAngle: PropTypes.number,\n showLabels: PropTypes.bool,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nPieChart.defaultProps = {\n valueAccessor: d => d.value,\n labelAccessor: d => d.label,\n}\n\nexport default PieChart\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst Circles = ({ data, keyAccessor, xAccessor, yAccessor, radius, color, onMouseEnter, onMouseLeave, onMouseMove, ...props }) => (\n \n {data.map((d, i) => (\n onMouseEnter(d, i, e) : undefined}\n onMouseLeave={onMouseLeave ? e => onMouseLeave(d, i, e) : undefined}\n onMouseMove={onMouseMove ? e => onMouseMove(d, i, e) : undefined}\n />\n ))}\n \n)\n\nCircles.propTypes = {\n data: PropTypes.array,\n keyAccessor: accessorPropsType,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n radius: accessorPropsType,\n color: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseMove: PropTypes.func,\n}\n\nCircles.defaultProps = {\n radius: 5,\n}\n\nexport default Circles\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleLinear } from 'd3-scale'\nimport { extent } from 'd3-array'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\n\nconst ScatterPlot = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, radius, formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const xScale = useMemo(() => {\n const ext = extent(data, xAccessor)\n const domain = ext[0] === ext[1] ? [ext[0] - 1, ext[0] + 1] : ext\n return scaleLinear().domain(domain).range([0, dimensions.boundedWidth]).nice()\n }, [data, xAccessor, dimensions.boundedWidth])\n\n const yScale = useMemo(() => {\n const ext = extent(data, yAccessor)\n const domain = ext[0] === ext[1] ? [ext[0] - 1, ext[0] + 1] : ext\n return scaleLinear().domain(domain).range([dimensions.boundedHeight, 0]).nice()\n }, [data, yAccessor, dimensions.boundedHeight])\n\n const legendItems = useMemo(() =>\n yLabel ? [{ color: color || DEFAULT_COLOR, label: yLabel }] : [],\n [yLabel, color]\n )\n\n const handleEnter = useCallback((d, i, e) => showTooltip(e, { d }), [showTooltip])\n const handleMove = useCallback((d, i, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n\n return (\n \n {tooltip.d && (\n <>\n
{xLabel || 'X'}: {fmt(xAccessor(tooltip.d))}
\n
{yLabel || 'Y'}: {fmt(yAccessor(tooltip.d))}
\n \n )}\n \n }>\n
\n \n \n \n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n radius={radius}\n color={color}\n onMouseEnter={handleEnter}\n onMouseMove={handleMove}\n onMouseLeave={hideTooltip}\n />\n \n
\n
\n )\n}\n\nScatterPlot.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nScatterPlot.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n}\n\nexport default ScatterPlot\n","import React, { useCallback, useMemo } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleOrdinal, scaleBand, scaleLinear } from 'd3-scale'\nimport { stack } from 'd3-shape'\nimport { max } from 'd3-array'\nimport { schemeSet2 } from 'd3-scale-chromatic'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Axis from \"../Cartesian/Axis\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst fmt = format(\",\")\n\nconst StackedBarChart = ({\n data, xAccessor, keys, colors,\n xLabel, yLabel, barPadding, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const { wrapperRef, tooltip, showTooltip, moveTooltip, hideTooltip } = useTooltip()\n\n const colorScale = useMemo(() =>\n scaleOrdinal(Array.isArray(colors) ? colors : schemeSet2).domain(keys),\n [colors, keys]\n )\n\n const series = useMemo(() =>\n data && keys && keys.length ? stack().keys(keys)(data) : [],\n [data, keys]\n )\n\n const xScale = useMemo(() =>\n scaleBand()\n .domain(data ? data.map(xAccessor) : [])\n .range([0, dimensions.boundedWidth])\n .padding(barPadding ?? 0.2),\n [data, xAccessor, dimensions.boundedWidth, barPadding]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain([0, max(series, s => max(s, d => d[1])) || 0])\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [series, dimensions.boundedHeight]\n )\n\n const legendItems = useMemo(() =>\n keys.map(k => ({ color: colorScale(k), label: k })),\n [keys, colorScale]\n )\n\n const handleEnter = useCallback((key, d, e) => {\n const total = keys.reduce((sum, k) => sum + (d.data[k] || 0), 0)\n showTooltip(e, { key, value: d[1] - d[0], category: xAccessor(d.data), total })\n }, [showTooltip, keys, xAccessor])\n\n const handleMove = useCallback((key, d, e) => moveTooltip(e), [moveTooltip])\n\n if (!data || data.length === 0 || !keys || keys.length === 0) return null\n\n return (\n \n {tooltip.key && (\n <>\n
{tooltip.category}
\n
{tooltip.key}: {fmt(tooltip.value)}
\n
Total: {fmt(tooltip.total)}
\n \n )}\n \n }>\n
\n \n d} label={xLabel} />\n \n {series.map(s => (\n \n {s.map((d, i) => (\n handleEnter(s.key, d, e)}\n onMouseMove={e => handleMove(s.key, d, e)}\n onMouseLeave={hideTooltip}\n />\n ))}\n \n ))}\n \n
\n
\n )\n}\n\nStackedBarChart.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n keys: PropTypes.arrayOf(PropTypes.string).isRequired,\n colors: PropTypes.arrayOf(PropTypes.string),\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n barPadding: PropTypes.number,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nStackedBarChart.defaultProps = {\n xAccessor: d => d.x,\n showLegend: true,\n}\n\nexport default StackedBarChart\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { line, area, curveMonotoneX } from 'd3-shape'\nimport { accessorPropsType } from \"../Utils/utils\";\n\nconst generators = { line, area }\n\nconst Line = ({ type, data, xAccessor, yAccessor, y0Accessor, interpolation, ...props }) => {\n const lineGenerator = generators[type]()\n .x(xAccessor)\n .y(yAccessor)\n .curve(interpolation)\n\n if (type === \"area\") {\n lineGenerator\n .y0(y0Accessor)\n .y1(yAccessor)\n }\n\n return (\n \n )\n}\n\nLine.propTypes = {\n type: PropTypes.oneOf([\"line\", \"area\"]),\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n y0Accessor: accessorPropsType,\n interpolation: PropTypes.func,\n}\n\nLine.defaultProps = {\n type: \"line\",\n y0Accessor: 0,\n interpolation: curveMonotoneX,\n}\n\nexport default Line\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import React, { useCallback, useMemo, useState } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { scaleTime, scaleLinear } from 'd3-scale'\nimport { extent, bisector } from 'd3-array'\nimport { timeFormat } from 'd3-time-format'\nimport { format } from 'd3-format'\n\nimport Chart from \"../Components/Chart\"\nimport Line from \"../Components/Line\"\nimport Circles from \"../Components/Circles\"\nimport Axis from \"../Cartesian/Axis\"\nimport Gradient from \"../Components/Gradient\"\nimport ChartLayout from \"../Components/ChartLayout\"\nimport Tooltip from \"../Components/Tooltip\"\nimport { useChartDimensions, accessorPropsType, useUniqueId } from \"../Utils/utils\"\nimport { useTooltip } from \"../Utils/useTooltip\"\n\nconst formatDate = timeFormat(\"%-b %-d\")\nconst formatTooltipDate = timeFormat(\"%-b %-d, %Y\")\nconst DEFAULT_GRADIENT = [\"rgb(226, 222, 243)\", \"#f8f9fa\"]\nconst DEFAULT_COLOR = '#9980FA'\nconst fmt = format(\",\")\n\nconst Timeline = ({\n data, xAccessor, yAccessor, xLabel, yLabel,\n color, gradientColors,\n interpolation, showArea, showDots,\n formatXTick, formatYTick,\n showLegend, legendPosition,\n}) => {\n const [ref, dimensions] = useChartDimensions({ marginBottom: 77 })\n const gradientId = useUniqueId(\"Timeline-gradient\")\n const { wrapperRef, tooltip, showTooltip, hideTooltip } = useTooltip()\n const [hoveredIndex, setHoveredIndex] = useState(null)\n\n const resolvedGradientColors = gradientColors\n || (color ? [`${color}55`, \"rgba(255,255,255,0)\"] : DEFAULT_GRADIENT)\n\n const xScale = useMemo(() =>\n scaleTime()\n .domain(extent(data, xAccessor))\n .range([0, dimensions.boundedWidth]),\n [data, xAccessor, dimensions.boundedWidth]\n )\n\n const yScale = useMemo(() =>\n scaleLinear()\n .domain(extent(data, yAccessor))\n .range([dimensions.boundedHeight, 0])\n .nice(),\n [data, yAccessor, dimensions.boundedHeight]\n )\n\n const legendItems = useMemo(() =>\n yLabel ? [{ color: color || DEFAULT_COLOR, label: yLabel }] : [],\n [yLabel, color]\n )\n\n const dateBisector = useMemo(() => bisector(xAccessor).left, [xAccessor])\n\n const handleMouseMove = useCallback(e => {\n const svgEl = e.currentTarget.ownerSVGElement\n const { left: svgLeft } = svgEl.getBoundingClientRect()\n const mouseX = e.clientX - svgLeft - dimensions.marginLeft\n const date = xScale.invert(mouseX)\n const idx = dateBisector(data, date, 1)\n const d0 = data[idx - 1]\n const d1 = data[idx]\n const i = !d1 || (d0 && date - xAccessor(d0) < xAccessor(d1) - date) ? idx - 1 : idx\n setHoveredIndex(i)\n showTooltip(e, { datum: data[i] })\n }, [data, xAccessor, xScale, dateBisector, dimensions.marginLeft, showTooltip])\n\n const handleMouseLeave = useCallback(() => {\n setHoveredIndex(null)\n hideTooltip()\n }, [hideTooltip])\n\n if (!data || data.length === 0) return null\n\n const xAccessorScaled = d => xScale(xAccessor(d))\n const yAccessorScaled = d => yScale(yAccessor(d))\n const y0AccessorScaled = yScale(yScale.domain()[0])\n const hoveredDatum = hoveredIndex !== null ? data[hoveredIndex] : null\n const yFmt = formatYTick || fmt\n const xFmt = formatXTick || formatTooltipDate\n\n return (\n \n {tooltip.datum && (\n <>\n
{xFmt(xAccessor(tooltip.datum))}
\n
{yLabel || 'Value'}: {yFmt(yAccessor(tooltip.datum))}
\n \n )}\n \n }>\n
\n \n \n \n \n \n \n {showArea !== false && (\n \n )}\n \n {showDots && (\n i}\n xAccessor={xAccessorScaled}\n yAccessor={yAccessorScaled}\n color={color}\n />\n )}\n {hoveredDatum && (\n <>\n \n \n \n )}\n \n \n
\n
\n )\n}\n\nTimeline.propTypes = {\n data: PropTypes.array,\n xAccessor: accessorPropsType,\n yAccessor: accessorPropsType,\n xLabel: PropTypes.string,\n yLabel: PropTypes.string,\n color: PropTypes.string,\n gradientColors: PropTypes.arrayOf(PropTypes.string),\n interpolation: PropTypes.func,\n showArea: PropTypes.bool,\n showDots: PropTypes.bool,\n formatXTick: PropTypes.func,\n formatYTick: PropTypes.func,\n showLegend: PropTypes.bool,\n legendPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n}\n\nTimeline.defaultProps = {\n xAccessor: d => d.x,\n yAccessor: d => d.y,\n showArea: true,\n showDots: false,\n}\n\nexport default Timeline\n"],"names":["b","Symbol","for","c","d","e","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","type","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Fragment","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","process","env","NODE_ENV","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextConsumer","Lazy","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","console","isPortal","reactIsModule","exports","require$$0","require$$1","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","join","test3","split","forEach","letter","keys","err","shouldUseNative","target","source","from","symbols","to","s","arguments","length","key","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","text","message","error","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","emptyFunction","emptyFunctionWithReset","propTypesModule","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","number","string","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","props","propName","propFullName","PropTypeError","propValue","Array","isArray","getPropType","element","elementType","instanceOf","expectedClass","expectedClassName","constructor","node","isNode","objectOf","propType","oneOf","expectedValues","validate","is","valuesString","JSON","stringify","value","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","data","push","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","shim","getShim","ascending","NaN","bisector","compare","ascendingComparator","left","lo","hi","mid","right","bisectRight","extent","valueof","min","max","slice","constant$3","identity$3","sequence","start","stop","Math","ceil","range","e10","sqrt","e5","e2","tickIncrement","count","power","floor","log","LN10","pow","tickStep","step0","abs","step1","sturges","LN2","max$1","initRange","domain","Map","each","set","o","Set","get","remove","property","clear","size","empty","proto","add","implicit","ordinal","index","unknown","scale","_","copy","apply","band","bandwidth","undefined","ordinalRange","round","paddingInner","paddingOuter","align","rescale","reverse","rangeRound","padding","define","factory","extend","parent","definition","create","Color","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","toString","Hsl","hslConvert","hsl2rgb","m1","m2","constant$2","gamma","nogamma","exponential","constant","linear","channels","displayable","formatHsl","darker","rgbGamma","end","colorRgb","numberArray","genericArray","nb","na","date$1","setTime","interpolateNumber","reA","reB","am","bm","bs","bi","lastIndex","one","zero","interpolateValue","date","ArrayBuffer","isView","DataView","isNumberArray","valueOf","interpolateRound","number$1","unit","identity","normalize","clamper","bimap","interpolate","d0","d1","r0","r1","polymap","j","bisect","clamp","continuous","transform","untransform","piecewise","output","input","invert","transformer","formatDecimalParts","toExponential","indexOf","coefficient","exponent","prefixExponent","re","formatSpecifier","specifier","match","FormatSpecifier","fill","sign","width","comma","precision","formatRounded","formatTypes","toFixed","toLocaleString","replace","toPrecision","X","toUpperCase","identity$1","locale","formatPrefix","prefixes","formatLocale$1","grouping","thousands","group","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","prefix","test","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i1","i0","formatTrim","charCodeAt","Infinity","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","ticks","isFinite","nice","formatLocale","t0","t1","newInterval","floori","offseti","field","interval","offset","previous","filter","millisecond","utcMillisecond","second","getMilliseconds","getUTCSeconds","utcSecond","minute","getSeconds","getMinutes","timeMinute","hour","getHours","timeHour","day","setHours","setDate","getDate","getTimezoneOffset","timeDay","weekday","getDay","sunday","monday","thursday","month","setMonth","getMonth","getFullYear","timeMonth","year","setFullYear","timeYear","utcDay","setUTCHours","setUTCDate","getUTCDate","utcDay$1","utcWeekday","getUTCDay","utcSunday","utcMonday","utcThursday","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","utcYear$1","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","B","G","I","Y","utcFormats","parses","parseSpecifier","charAt","newParse","week","parse","utcFormat","utcParse","defaultLocale","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","x0","x1","MapShim","getIndex","arr","result","some","class_1","__entries__","defineProperty","enumerable","configurable","delete","splice","callback","ctx","_i","_a","isBrowser","window","document","global$1","global","self","requestAnimationFrame$1","requestAnimationFrame","setTimeout","now","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","addEventListener","observe","attributes","childList","characterData","subtree","removeEventListener","disconnect","_b","propertyName","getInstance","instance_","defineConfigurable","writable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","reduce","position","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","top","bottom","height","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","contentRect","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","_this","observation","WeakMap","ResizeObserver","method","accessorPropsType","callAccessor","accessor","dimensionsPropsType","marginTop","marginRight","marginBottom","marginLeft","combineChartDimensions","dimensions","parsedDimensions","boundedHeight","boundedWidth","useChartDimensions","passedSettings","ref","useRef","changeWidth","useState","changeHeight","useEffect","current","resizeObserver","newSettings","useUniqueId","useId","css","insertAt","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","ChartContext","createContext","Chart","children","label","React","Provider","className","role","propTypes","defaultProps","Bars","keyAccessor","xAccessor","yAccessor","widthAccessor","heightAccessor","onMouseEnter","onMouseLeave","onMouseMove","_extends","axisComponentsByDimension","formatTick","numberOfTicks","tickOffset","x2","tick","y2","Axis","dimension","useContext","Component","Legend","items","isVertical","display","flexDirection","flexWrap","justifyContent","alignItems","gap","fontSize","flexShrink","item","borderRadius","background","COL_STYLE","ROW_STYLE","ChartLayout","wrapperRef","legendItems","showLegend","legendPosition","tooltip","isHorizontal","isLeading","legend","Tooltip","visible","pointerEvents","border","lineHeight","boxShadow","zIndex","whiteSpace","useTooltip","setTooltip","showTooltip","useCallback","getBoundingClientRect","clientX","clientY","moveTooltip","hideTooltip","fmt","BarChart","xLabel","yLabel","barPadding","formatYTick","yMin","xScale","useMemo","scaleBand","yScale","scaleLinear","barStyle","handleEnter","handleMove","flex","minHeight","minWidth","Boolean","widthAccessorScaled","Gradient","id","colors","gradientUnits","spreadMethod","stopColor","DEFAULT_GRADIENT","fmtFixed","Histogram","gradientColors","thresholds","formatXTick","gradientId","numberOfThresholds","bins","threshold","histogram","xz","tz","shift","pop","bin","resolvedGradientColors","tickFmt","pi","PI","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","atan2","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","context","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","curveLinear","line","pointX","pointY","defined","curve","defined0","lineStart","lineEnd","point","descending","areaStart","_line","areaEnd","_point","slope3","that","h0","h1","s0","s1","slope2","MonotoneX","none$1","series","order","none","stackValue","_t0","schemeSet2","DEFAULT_MARGIN","PieChart","valueAccessor","labelAccessor","showLabels","colorScale","scaleOrdinal","resolvedInnerRadius","arcGenerator","labelArc","arcs","sortValues","sort","pie","sum","pa","total","handleSliceEnter","datum","handleSliceMove","displayLabels","tooltipValue","tooltipPct","textAnchor","dominantBaseline","Circles","radius","ScatterPlot","ext","StackedBarChart","orderNone","offsetNone","oz","kz","sz","sij","ki","si","category","generators","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","Line","y0Accessor","interpolation","lineGenerator","formatDate","formatTooltipDate","Timeline","showArea","showDots","hoveredIndex","setHoveredIndex","timeWeek","timeSecond","timeMillisecond","scaleTime","dateBisector","handleMouseMove","svgEl","currentTarget","ownerSVGElement","svgLeft","mouseX","idx","handleMouseLeave","xAccessorScaled","yAccessorScaled","y0AccessorScaled","hoveredDatum","yFmt","xFmt","stroke"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 571fe7e..b9ded4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "quick-charts", - "version": "1.1.0", + "version": "1.1.1", "description": "Simple charts for react", "main": "dist/index.js", "module": "dist/index.es.js",