{"version":3,"file":"js/795-09554e2d8514480daf7d.chunk.js","mappings":"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","sources":["webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-axis/src/identity.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-axis/src/axis.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-dispatch/src/dispatch.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-timer/src/timer.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-timer/src/timeout.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/schedule.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/interrupt.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/tween.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/interpolate.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/attr.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/attrTween.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/delay.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/duration.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/selection.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/style.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/index.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/cubic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/select.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/selectAll.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/filter.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/merge.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/transition.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/on.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/styleTween.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/text.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/textTween.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/remove.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/ease.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/easeVarying.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/transition/end.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/selection/transition.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/selection/index.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/selection/interrupt.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-transition/src/active.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-brush/src/constant.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-brush/src/event.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-brush/src/noevent.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-brush/src/brush.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-chord/src/math.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-chord/src/chord.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-path/src/path.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-chord/src/array.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-chord/src/constant.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-chord/src/ribbon.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/delaunator/index.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-delaunay/src/path.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-delaunay/src/polygon.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-delaunay/src/voronoi.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-delaunay/src/delaunay.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-dsv/src/dsv.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-dsv/src/csv.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-dsv/src/tsv.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-dsv/src/autoType.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/linear.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/quad.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/poly.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/sin.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/math.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/exp.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/circle.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/bounce.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/back.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-ease/src/elastic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/blob.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/buffer.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/text.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/dsv.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/image.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/json.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-fetch/src/xml.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/center.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/add.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/quad.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/x.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/y.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/quadtree.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/constant.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/jiggle.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/collide.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/link.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/cover.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/data.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/extent.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/find.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/remove.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/root.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/size.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/visit.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-quadtree/src/visitAfter.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/lcg.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/simulation.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/manyBody.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/radial.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/x.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-force/src/y.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/math.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/noop.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/stream.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/area.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/bounds.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/cartesian.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/centroid.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/constant.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/compose.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/rotation.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/circle.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/buffer.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/pointEqual.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/rejoin.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/polygonContains.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/index.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/antimeridian.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/circle.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/rectangle.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/length.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/line.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/clip/extent.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/distance.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/contains.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/graticule.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/interpolate.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/identity.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/area.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/bounds.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/centroid.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/context.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/measure.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/string.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/path/index.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/transform.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/fit.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/resample.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/index.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/conic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/albers.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/albersUsa.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/azimuthal.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/mercator.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/conicConformal.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/equirectangular.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/equalEarth.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/gnomonic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/identity.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/orthographic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/stereographic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-geo/src/projection/transverseMercator.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-polygon/src/area.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-polygon/src/centroid.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-polygon/src/cross.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-polygon/src/hull.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-polygon/src/contains.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-polygon/src/length.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/defaultSource.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/uniform.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/int.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/normal.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/logNormal.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/irwinHall.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/bates.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/exponential.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/pareto.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/bernoulli.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/geometric.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/gamma.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/beta.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/binomial.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/weibull.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/cauchy.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/logistic.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/poisson.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-random/src/lcg.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/colors.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/ramp.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/interval.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/millisecond.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/duration.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/second.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/minute.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/hour.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/day.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/week.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/month.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/year.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time/src/ticks.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time-format/src/locale.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time-format/src/defaultLocale.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time-format/src/isoFormat.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-time-format/src/isoParse.js","webpack://chemotion/../../cache/node_modules/@complat/react-svg-file-zoom-pan/node_modules/d3-timer/src/interval.js"],"sourcesContent":["export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\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)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\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      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\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] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\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 + offset) : 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)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\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 = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), 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  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\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: () => {}};\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","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(undefined, 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(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 {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","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_easeVarying from \"./easeVarying.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  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\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  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\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 {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","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","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 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","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 {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 {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\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    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\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      throw new Error(`transition ${id} not found`);\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 x => () => x;\n","export default function BrushEvent(type, {\n  sourceEvent,\n  target,\n  selection,\n  mode,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    selection: {value: selection, enumerable: true, configurable: true},\n    mode: {value: mode, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\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 {pointer, 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\nconst {abs, max, min} = Math;\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\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(event) {\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, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\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(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\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(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\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        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\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    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\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 = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, 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(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\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(event, mode.name);\n    }\n\n    function keydowned(event) {\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(event);\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(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\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(event);\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(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\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 abs = Math.abs;\nexport 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;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n  return Array.from({length: j - i}, (_, k) => i + k);\n}\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  return chord(false, false);\n}\n\nexport function chordTranspose() {\n  return chord(false, true);\n}\n\nexport function chordDirected() {\n  return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\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 = new Array(n),\n        groupIndex = range(0, n),\n        chords = new Array(n * n),\n        groups = new Array(n),\n        k = 0, dx;\n\n    matrix = Float64Array.from({length: n * n}, transpose\n        ? (_, i) => matrix[i % n][i / n | 0]\n        : (_, i) => matrix[i / n | 0][i % n]);\n\n    // Compute the scaling factor from value to angle in [0, 2pi].\n    for (let i = 0; i < n; ++i) {\n      let x = 0;\n      for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n      k += groupSums[i] = x;\n    }\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the angles for each group and constituent chord.\n    {\n      let x = 0;\n      if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n      for (const i of groupIndex) {\n        const x0 = x;\n        if (directed) {\n          const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            if (j < 0) {\n              const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n            } else {\n              const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        } else {\n          const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            let chord;\n            if (i < j) {\n              chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            } else {\n              chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n              if (i === j) chord.source = chord.target;\n            }\n            if (chord.source && chord.target && chord.source.value < chord.target.value) {\n              const source = chord.source;\n              chord.source = chord.target;\n              chord.target = source;\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        }\n        x += dx;\n      }\n    }\n\n    // Remove empty chords.\n    chords = Object.values(chords);\n    chords.groups = groups;\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","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let 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 this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`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._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let 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._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let 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 this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`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._append`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._append`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._append`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(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\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\nfunction defaultPadAngle() {\n  return 0;\n}\n\nfunction defaultArrowheadRadius() {\n  return 10;\n}\n\nfunction ribbon(headRadius) {\n  var source = defaultSource,\n      target = defaultTarget,\n      sourceRadius = defaultRadius,\n      targetRadius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      padAngle = defaultPadAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        s = source.apply(this, arguments),\n        t = target.apply(this, arguments),\n        ap = padAngle.apply(this, arguments) / 2,\n        argv = slice.call(arguments),\n        sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi,\n        sa1 = endAngle.apply(this, argv) - halfPi,\n        tr = +targetRadius.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    if (ap > epsilon) {\n      if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n      else sa0 = sa1 = (sa0 + sa1) / 2;\n      if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n      else ta0 = ta1 = (ta0 + ta1) / 2;\n    }\n\n    context.moveTo(sr * cos(sa0), sr * sin(sa0));\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) {\n      if (headRadius) {\n        var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n        context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n        context.lineTo(tr * cos(ta2), tr * sin(ta2));\n        context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n      } else {\n        context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n        context.arc(0, 0, tr, ta0, ta1);\n      }\n    }\n    context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  if (headRadius) ribbon.headRadius = function(_) {\n    return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n  };\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.sourceRadius = function(_) {\n    return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.targetRadius = function(_) {\n    return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\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.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\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\nexport default function() {\n  return ribbon();\n}\n\nexport function ribbonArrow() {\n  return ribbon(defaultArrowheadRadius);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i < n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i < n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let minDist = Infinity;\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0; i < n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (let i = 0; i < n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist && d > 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i < n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r < minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i < n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i < n; i++) {\n                const id = this._ids[i];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i < n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k < this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left <= 20) {\n        for (let i = left + 1; i <= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) >> 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] < tempDist);\n            do j--; while (dists[ids[j]] > tempDist);\n            if (j < i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 >= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r < 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(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  value() {\n    return this._ || null;\n  }\n}\n","export default class Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n    let bx, by; // lazily computed barycenter of the hull\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (Math.abs(ab) < 1e-9) {\n        // For a degenerate triangle, the circumcenter is at the infinity, in a\n        // direction orthogonal to the halfedge and away from the “center” of\n        // the diagram <bx, by>, defined as the hull’s barycenter.\n        if (bx === undefined) {\n          bx = by = 0;\n          for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n          bx /= hull.length, by /= hull.length;\n        }\n        const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n        x = (x1 + x3) / 2 - a * ey;\n        y = (y1 + y3) / 2 + a * ex;\n      } else {\n        const d = 1 / ab;\n        const bl = dx * dx + dy * dy;\n        const cl = ex * ex + ey * ey;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i < hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length <= 1) return null;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i < hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer && buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer && buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n    for (let i = 2; i < n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i < n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new Polygon;\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 && c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n          if (ci[ai] === cj[aj]\n              && ci[ai + 1] === cj[aj + 1]\n              && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n              && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 && e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 && this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return this._simplify(V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points));\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1 = 0;\n    for (let j = 0; j < n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 && c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    // for more robustness, always consider the segment in the same order\n    const flip = c0 < c1;\n    if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n    while (true) {\n      if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n      if (c0 & c1) return null;\n      let x, y, c = c0 || c1;\n      if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n      // undefined, the conditional statement will be executed.\n      if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy < 0) { // top\n      if (y0 <= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy > 0) { // bottom\n      if (y0 >= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx > 0) { // right\n      if (x0 >= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx < 0) { // left\n      if (x0 <= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x < this.xmin ? 0b0001\n        : x > this.xmax ? 0b0010 : 0b0000)\n        | (y < this.ymin ? 0b0100\n        : y > this.ymax ? 0b1000 : 0b0000);\n  }\n  _simplify(P) {\n    if (P && P.length > 4) {\n      for (let i = 0; i < P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n          P.splice(j, 2), i -= 2;\n        }\n      }\n      if (!P.length) P = null;\n    }\n    return P;\n  }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i < triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross > 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new Delaunator(points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n        .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i < n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new Delaunator(points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e < n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i < n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) {\n        inedges[hull[1]] = 0;\n        this.triangles[1] = hull[1];\n        this.triangles[2] = hull[1];\n      }\n    }\n  }\n  voronoi(bounds) {\n    return new Voronoi(this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l > 0) yield collinear[l - 1];\n      if (l < collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt < dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer && buffer.value();\n  }\n  renderPoints(context, r) {\n    if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n    r = r == undefined ? 2 : +r;\n    const buffer = context == null ? context = new Path : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i < n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer && buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i < n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new Polygon;\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new Polygon;\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i < n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\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\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export const linear = t => +t;\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","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","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","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","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 (input, init) => text(input, init)\n    .then(text => (new DOMParser).parseFromString(text, type));\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, y) {\n  var nodes, strength = 1;\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) * strength, sy = (sy / n - y) * strength, 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  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n}\n","export default function(d) {\n  const 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","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\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      random,\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(random), l += x * x;\n            if (y === 0) y = jiggle(random), 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(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\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.js\";\nimport jiggle from \"./jiggle.js\";\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(\"node not found: \" + 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      random,\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(random);\n        y = target.y + target.vy - source.y - source.vy || jiggle(random);\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 = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\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(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\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","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 || 1,\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","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\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 = new Map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\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.forEach(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(0.5 + 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, random);\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.forEach(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    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.delete(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","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\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(random), l += x * x;\n        if (y === 0) y = jiggle(random), 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(random), l += x * x;\n      if (y === 0) y = jiggle(random), 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(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\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.js\";\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.js\";\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.js\";\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","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 hypot = Math.hypot;\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 \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new 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 = new Adder();\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 = new Adder();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\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,\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 = new Adder();\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, 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 \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, 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 = hypot(cx, cy, cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(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 = 0;\n  X2 = new Adder();\n  Y2 = new Adder();\n  Z2 = new Adder();\n  stream(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = hypot(x, y, 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 = hypot(x, y, 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 / 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  if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n  return [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    lambda += deltaLambda;\n    if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n    return [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 \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  return abs(point[0]) <= pi ? point[0] : 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  var sum = new Adder();\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 < -epsilon2) ^ (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","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\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 = new Adder();\n  stream(object, lengthStream);\n  return +lengthSum;\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 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 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","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","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new 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 = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\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 \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new 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 = new Adder();\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","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n  constructor(digits) {\n    this._append = digits == null ? append : appendRound(digits);\n    this._radius = 4.5;\n    this._ = \"\";\n  }\n  pointRadius(_) {\n    this._radius = +_;\n    return this;\n  }\n  polygonStart() {\n    this._line = 0;\n  }\n  polygonEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line === 0) this._ += \"Z\";\n    this._point = NaN;\n  }\n  point(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._append`M${x},${y}`;\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._append`L${x},${y}`;\n        break;\n      }\n      default: {\n        this._append`M${x},${y}`;\n        if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n          const r = this._radius;\n          const s = this._;\n          this._ = \"\"; // stash the old string so we can cache the circle path fragment\n          this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n          cacheRadius = r;\n          cacheAppend = this._append;\n          cacheCircle = this._;\n          this._ = s;\n        }\n        this._ += cacheCircle;\n        break;\n      }\n    }\n  }\n  result() {\n    const result = this._;\n    this._ = \"\";\n    return result.length ? result : null;\n  }\n}\n\nfunction append(strings) {\n  let i = 1;\n  this._ += strings[0];\n  for (const j = strings.length; i < j; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  const d = Math.floor(digits);\n  if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  if (d !== cacheDigits) {\n    const k = 10 ** d;\n    cacheDigits = d;\n    cacheAppend = function append(strings) {\n      let i = 1;\n      this._ += strings[0];\n      for (const j = strings.length; i < j; ++i) {\n        this._ += Math.round(arguments[i] * k) / k + strings[i];\n      }\n    };\n  }\n  return cacheAppend;\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  let digits = 3,\n      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    if (!arguments.length) return projection;\n    projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n    return path;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString(digits)) : 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  path.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) digits = null;\n    else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    if (context === null) contextStream = new PathString(digits);\n    return path;\n  };\n\n  return path.projection(projection).digits(digits).context(context);\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  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\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 = scaleTranslateRotate(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 {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 {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        if (k === Infinity) return [2, 0];\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 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 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","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","// 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  const n = points.length,\n      indexes = [0, 1];\n  let size = 2, i;\n\n  for (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(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.hypot(xa, ya);\n  }\n\n  return perimeter;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\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.js\";\n\nexport default (function sourceRandomInt(source) {\n  function randomInt(min, max) {\n    if (arguments.length < 2) max = min, min = 0;\n    min = Math.floor(min);\n    max = Math.floor(max) - min;\n    return function() {\n      return Math.floor(source() * max + min);\n    };\n  }\n\n  randomInt.source = sourceRandomInt;\n\n  return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\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.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n  var N = normal.source(source);\n\n  function randomLogNormal() {\n    var randomNormal = N.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.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    if ((n = +n) <= 0) return () => 0;\n    return function() {\n      for (var sum = 0, i = n; i > 1; --i) sum += source();\n      return sum + i * source();\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n  var I = irwinHall.source(source);\n\n  function randomBates(n) {\n    // use limiting distribution at n === 0\n    if ((n = +n) === 0) return source;\n    var randomIrwinHall = I(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.js\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log1p(-source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n  function randomPareto(alpha) {\n    if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n    alpha = 1 / -alpha;\n    return function() {\n      return Math.pow(1 - source(), alpha);\n    };\n  }\n\n  randomPareto.source = sourceRandomPareto;\n\n  return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n  function randomBernoulli(p) {\n    if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n    return function() {\n      return Math.floor(source() + p);\n    };\n  }\n\n  randomBernoulli.source = sourceRandomBernoulli;\n\n  return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n  function randomGeometric(p) {\n    if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n    if (p === 0) return () => Infinity;\n    if (p === 1) return () => 1;\n    p = Math.log1p(-p);\n    return function() {\n      return 1 + Math.floor(Math.log1p(-source()) / p);\n    };\n  }\n\n  randomGeometric.source = sourceRandomGeometric;\n\n  return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n  var randomNormal = normal.source(source)();\n\n  function randomGamma(k, theta) {\n    if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n    // degenerate distribution if k === 0\n    if (k === 0) return () => 0;\n    theta = theta == null ? 1 : +theta;\n    // exponential distribution if k === 1\n    if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n    var d = (k < 1 ? k + 1 : k) - 1 / 3,\n        c = 1 / (3 * Math.sqrt(d)),\n        multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n    return function() {\n      do {\n        do {\n          var x = randomNormal(),\n              v = 1 + c * x;\n        } while (v <= 0);\n        v *= v * v;\n        var u = 1 - source();\n      } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n      return d * v * multiplier() * theta;\n    };\n  }\n\n  randomGamma.source = sourceRandomGamma;\n\n  return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n  var G = gamma.source(source);\n\n  function randomBeta(alpha, beta) {\n    var X = G(alpha),\n        Y = G(beta);\n    return function() {\n      var x = X();\n      return x === 0 ? 0 : x / (x + Y());\n    };\n  }\n\n  randomBeta.source = sourceRandomBeta;\n\n  return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n  var G = geometric.source(source),\n      B = beta.source(source);\n\n  function randomBinomial(n, p) {\n    n = +n;\n    if ((p = +p) >= 1) return () => n;\n    if (p <= 0) return () => 0;\n    return function() {\n      var acc = 0, nn = n, pp = p;\n      while (nn * pp > 16 && nn * (1 - pp) > 16) {\n        var i = Math.floor((nn + 1) * pp),\n            y = B(i, nn - i + 1)();\n        if (y <= pp) {\n          acc += i;\n          nn -= i;\n          pp = (pp - y) / (1 - y);\n        } else {\n          nn = i - 1;\n          pp /= y;\n        }\n      }\n      var sign = pp < 0.5,\n          pFinal = sign ? pp : 1 - pp,\n          g = G(pFinal);\n      for (var s = g(), k = 0; s <= nn; ++k) s += g();\n      return acc + (sign ? k : nn - k);\n    };\n  }\n\n  randomBinomial.source = sourceRandomBinomial;\n\n  return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n  function randomWeibull(k, a, b) {\n    var outerFunc;\n    if ((k = +k) === 0) {\n      outerFunc = x => -Math.log(x);\n    } else {\n      k = 1 / k;\n      outerFunc = x => Math.pow(x, k);\n    }\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * outerFunc(-Math.log1p(-source()));\n    };\n  }\n\n  randomWeibull.source = sourceRandomWeibull;\n\n  return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n  function randomCauchy(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * Math.tan(Math.PI * source());\n    };\n  }\n\n  randomCauchy.source = sourceRandomCauchy;\n\n  return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n  function randomLogistic(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      var u = source();\n      return a + b * Math.log(u / (1 - u));\n    };\n  }\n\n  randomLogistic.source = sourceRandomLogistic;\n\n  return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n  var G = gamma.source(source),\n      B = binomial.source(source);\n\n  function randomPoisson(lambda) {\n    return function() {\n      var acc = 0, l = lambda;\n      while (l > 16) {\n        var n = Math.floor(0.875 * l),\n            t = G(n)();\n        if (t > l) return acc + B(n - 1, l / t)();\n        acc += n;\n        l -= t;\n      }\n      for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n      return acc + k;\n    };\n  }\n\n  randomPoisson.source = sourceRandomPoisson;\n\n  return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n  let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n  return () => (state = mul * state + inc | 0, eps * (state >>> 0));\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 scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\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","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","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","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 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","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(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 = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\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    let previous;\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 = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (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 = (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 = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const 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 ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\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.get(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.get(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.get(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.get(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.get(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  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\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 {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  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\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  }\n  t.restart(callback, delay, time);\n  return t;\n}\n"],"names":["x","right","bottom","left","epsilon","translateX","translateY","y","number","scale","d","center","offset","Math","max","bandwidth","round","entering","this","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","k","transform","context","values","ticks","apply","domain","format","identity","spacing","range","range0","range1","length","position","copy","selection","path","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","isFinite","getAttribute","p","parentNode","remove","filter","each","_","arguments","Array","from","slice","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","value","dispatch","t","i","n","test","Error","Dispatch","get","type","name","c","set","callback","concat","push","prototype","constructor","on","typename","types","T","trim","split","map","indexOf","hasOwnProperty","call","that","args","taskHead","taskTail","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","bind","f","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","time","restart","timerFlush","e","undefined","wake","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","node","id","index","group","timing","schedules","__transition","self","tween","schedule","state","start","j","o","__data__","duration","ease","create","init","active","empty","tweenRemove","tween0","tween1","splice","tweenFunction","tweenValue","_id","a","b","color","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","interpolate","value1","string00","interpolate0","string1","string0","attrConstantNS","getAttributeNS","attrFunction","string10","attrFunctionNS","attrTweenNS","i0","setAttributeNS","attrInterpolateNS","_value","attrTween","setAttribute","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Selection","styleRemove","style","removeProperty","Transition","groups","parents","_groups","_parents","_name","newId","selection_prototype","cubicIn","cubicOut","cubicInOut","selector","m","subgroups","subnode","subgroup","selectorAll","child","children","inherit","l","selectChild","selectChildren","match","matcher","groups0","groups1","m0","m1","min","merges","group0","group1","id0","id1","nodes","size","listener","on0","on1","sit","every","onFunction","namespace","key","priority","styleTween","styleNull","styleFunction","listener0","event","styleMaybeRemove","styleConstant","setProperty","styleInterpolate","textContent","textFunction","textConstant","textTween","textInterpolate","parent","removeChild","removeFunction","easeConstant","easeVarying","v","end","Promise","resolve","reject","cancel","interrupt","Symbol","iterator","defaultTiming","root","BrushEvent","sourceEvent","target","mode","Object","defineProperties","enumerable","configurable","preventDefault","stopImmediatePropagation","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","abs","number1","number2","X","handles","input","output","xy","Y","XY","cursors","overlay","s","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","ctrlKey","button","defaultExtent","svg","ownerSVGElement","hasAttribute","viewBox","baseVal","width","height","defaultTouchable","navigator","maxTouchPoints","__brush","brushSelection","dim","brushX","brushY","touchending","extent","touchable","keys","listeners","handleSize","brush","property","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","touches","w0","w1","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","W","N","E","S","dx","dy","shifting","shiftKey","points","identifier","pointer","point0","beforestart","pts","move","moved","ended","view","keyCode","noevent","changedTouches","cur","point","nopropagation","selection0","selection1","clear","starting","datum","constant","keyModifiers","cos","sin","pi","PI","halfPi","tau","chordTranspose","chordDirected","directed","transpose","padAngle","sortGroups","sortSubgroups","sortChords","chord","matrix","groupSums","groupIndex","chords","Float64Array","sort","x0","subgroupIndex","source","startAngle","endAngle","compare","tauEpsilon","strings","Path","digits","_x0","_y0","_x1","_y1","_append","floor","appendRound","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","r","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","cw","da","rect","h","toString","pathRound","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","sourceRadius","targetRadius","buffer","ap","argv","sr","sa0","sa1","tr","ta0","ta1","tr2","ta2","ribbonArrow","EPSILON","pow","EDGE_STACK","Uint32Array","Delaunator","getX","defaultGetX","getY","defaultGetY","coords","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","ceil","_hullPrev","_hullNext","_hullTri","_hullHash","fill","_ids","_dists","update","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","cx","cy","i1","i2","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","d0","subarray","triangles","halfedges","ax","ay","bx","by","ex","ey","bl","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","q","_legalize","pseudoAngle","ar","b0","al","p0","pr","pl","p1","inCircle","hbl","_link","br","px","py","fx","fy","bp","cp","ids","dists","temp","tempDist","swap","arr","tmp","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","t3","x3","y3","ab","sign","render","inedges","ti","tj","xi","yi","xj","yj","_renderSegment","h0","h1","_project","renderBounds","renderCell","_clip","cellPolygons","cell","cellPolygon","polygon","c0","_regioncode","c1","_clipSegment","contains","_step","neighbors","ci","cj","loop","ai","li","aj","lj","_cell","V","_simplify","_clipInfinite","_clipFinite","P","sx0","sy0","sx1","sy1","_edgecode","_edge","flip","vx0","vy0","vxn","vyn","unshift","vx","vy","pointX","pointY","jitter","Delaunay","array","flatArray","flatIterable","_delaunator","_hullIndex","collinear","bounds","hypot","hullIndex","voronoi","find","dc","dt","renderHull","renderPoints","hullPolygon","renderTriangle","trianglePolygons","trianglePolygon","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","JSON","stringify","join","inferColumns","rows","columnSet","forEach","row","column","pad","formatDate","date","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","isNaN","getUTCFullYear","getUTCMonth","getUTCDate","delimiter","reFormat","RegExp","DELIMITER","charCodeAt","parseRows","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","parse","convert","object","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","NaN","fixtz","getHours","linear","quadIn","quadOut","quadInOut","polyIn","custom","exponent","polyOut","polyInOut","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","responseBlob","response","ok","status","statusText","blob","fetch","then","responseArrayBuffer","arrayBuffer","responseText","dsvParse","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","html","strength","force","sx","sy","tree","xm","ym","_root","leaf","_x","_y","next","defaultX","defaultY","quadtree","Quadtree","addAll","leaf_copy","treeProto","random","radii","iterations","ri","ri2","visitAfter","prepare","visit","quad","rj","jiggle","_nodes","_random","nodeById","nodeId","links","strengths","distances","count","bias","link","distance","alpha","Map","initializeStrength","initializeDistance","pop","add","cover","xz","yz","z","quads","d2","retainer","previous","removeAll","initialRadius","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","step","lcg","initializeNodes","angle","initializeForce","randomSource","delete","closest","distanceMin2","distanceMax2","theta2","accumulate","weight","distanceMin","distanceMax","theta","radiuses","epsilon2","quarterPi","degrees","radians","atan","atan2","exp","log","haversin","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","streamLine","MultiLineString","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","phi0","lambda1","phi1","lambda2","deltaSum","ranges","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","u","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","delta","lambdai","antimeridian","rangeCompare","rangeContains","feature","merged","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","rotate","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","ring","precision","circle","lines","rejoin","shift","result","Intersection","other","entry","segments","compareIntersection","startInside","subject","clip","segment","pointEqual","current","isSubject","longitude","winding","sum","sinPhi1","cosPhi1","point1","absDelta","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","to","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c2","n1xn2","A","uu","polar","q1","code","v0","v00","point2","lengthSum","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","polygonInside","cleanInside","cache","cacheStream","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","reverse","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","cy1","kx0","ky0","kx1","ky1","B","x00","y00","area","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","RangeError","projection","projectionStream","contextStream","measure","methods","transformer","TransformStream","fit","fitBounds","clipExtent","translate","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","project","delta2","resampleLineTo","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","bi","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","postclip","recenter","resample","reset","transformRotate","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","g","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","lexicographicOrder","computeUpperHullIndexes","indexes","cross","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","inside","xa","ya","xb","yb","perimeter","sourceRandomUniform","randomUniform","sourceRandomInt","randomInt","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","irwinHall","randomBates","sourceRandomExponential","randomExponential","log1p","sourceRandomPareto","randomPareto","sourceRandomBernoulli","randomBernoulli","sourceRandomGeometric","randomGeometric","sourceRandomGamma","randomGamma","multiplier","sourceRandomBeta","G","gamma","randomBeta","beta","sourceRandomBinomial","geometric","randomBinomial","acc","nn","pp","sourceRandomWeibull","randomWeibull","outerFunc","sourceRandomCauchy","randomCauchy","sourceRandomLogistic","randomLogistic","sourceRandomPoisson","binomial","randomPoisson","mul","inc","eps","seed","specifier","colors","scheme","ramp","cubehelix","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","timeInterval","floori","offseti","field","d1","setTime","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","second","getMilliseconds","timeMinute","getSeconds","getMinutes","timeMinutes","utcMinute","setUTCSeconds","utcMinutes","timeHour","timeHours","utcHour","setUTCMinutes","utcHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","timeDays","utcDay","setUTCHours","setUTCDate","utcDays","unixDay","unixDays","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","setMonth","getMonth","getFullYear","timeMonths","utcMonth","setUTCMonth","utcMonths","timeYear","setFullYear","timeYears","utcYear","setUTCFullYear","utcYears","ticker","month","week","day","hour","minute","tickIntervals","tickInterval","bisector","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","L","utcDate","UTC","newDate","formatLocale","locale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","string","exec","toLowerCase","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","newFormat","pads","charAt","newParse","Z","Q","U","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","names","dISO","dow","UTCdISO","defaultLocale","definition","isoSpecifier","toISOString","parseIso","total","_restart"],"sourceRoot":""}