{"version":3,"sources":["webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///./node_modules/d3-geo/src/centroid.js","webpack:///./node_modules/d3-geo/src/constant.js","webpack:///./node_modules/d3-geo/src/compose.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/d3-geo/src/clip/circle.js","webpack:///./node_modules/d3-geo/src/clip/line.js","webpack:///./node_modules/d3-geo/src/clip/rectangle.js","webpack:///./node_modules/d3-geo/src/clip/extent.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/distance.js","webpack:///./node_modules/d3-geo/src/contains.js","webpack:///./node_modules/d3-geo/src/graticule.js","webpack:///./node_modules/d3-geo/src/interpolate.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-geo/src/projection/fit.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-geo/src/projection/conic.js","webpack:///./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/albers.js","webpack:///./node_modules/d3-geo/src/projection/albersUsa.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/conicConformal.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/identity.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-interpolate/src/discrete.js","webpack:///./node_modules/d3-interpolate/src/hue.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-interpolate/src/lab.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/quantize.js","webpack:///./node_modules/d3-interpolate/src/piecewise.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-hierarchy/src/cluster.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack:///./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///./node_modules/d3-hierarchy/src/array.js","webpack:///./node_modules/d3-hierarchy/src/pack/enclose.js","webpack:///./node_modules/d3-hierarchy/src/pack/siblings.js","webpack:///./node_modules/d3-hierarchy/src/accessors.js","webpack:///./node_modules/d3-hierarchy/src/constant.js","webpack:///./node_modules/d3-hierarchy/src/pack/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/round.js","webpack:///./node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///./node_modules/d3-hierarchy/src/partition.js","webpack:///./node_modules/d3-hierarchy/src/stratify.js","webpack:///./node_modules/d3-hierarchy/src/tree.js","webpack:///./node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///./node_modules/d3-hierarchy/src/treemap/index.js","webpack:///./node_modules/d3-hierarchy/src/treemap/binary.js","webpack:///./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack:///./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/value.js"],"names":["d","Date","a","b","t","setTime","cubehelix","hue","cubehelixGamma","y","start","end","h","s","l","opacity","Math","pow","gamma","cubehelixLong","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","f","sqrt","c","e","atan2","atan","parseCss","value","m","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","document","createElementNS","setAttribute","transform","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","length","translate","xa","ya","xb","yb","q","i","push","x","number","scale","o","n","join","interpolateTransformCss","interpolateTransformSvg","values","floor","v0","v1","v2","v3","isNumberArray","ArrayBuffer","isView","DataView","min","slice","round","genericArray","nb","na","Array","k","reA","reB","RegExp","source","zero","one","am","bm","bs","bi","lastIndex","exec","index","epsilon","epsilon2","pi","halfPi","quarterPi","tau","radians","abs","cos","ceil","exp","hypot","log","sin","sign","tan","acos","asin","haversin","noop","streamGeometry","geometry","stream","streamGeometryType","hasOwnProperty","type","streamObjectType","Feature","object","FeatureCollection","features","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","phi00","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","add","this","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","u","v","deltaSum","ranges","range","cartesian","spherical","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","p","normal","equatorial","inflection","phii","delta","lambdai","antimeridian","lambda0","lambda1","rangeCompare","rangeContains","W0","W1","Z0","Z1","X2","Y2","Z2","z0","merged","deltaMax","Infinity","feature","sort","NaN","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","z","centroidLinePointFirst","centroidLinePoint","w","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","radius","direction","t0","t1","cosRadius","sinRadius","step","circleRadius","ring","center","constant","precision","circle","apply","arguments","r","_","line","lines","rejoin","concat","shift","result","Intersection","points","other","entry","subject","clip","segments","forEach","segment","p0","p1","pointEqual","compareIntersection","startInside","current","isSubject","interpolate","array","longitude","angle","winding","sum","polygon","point0","phi0","sinPhi0","cosPhi0","j","sinPhi1","cosPhi1","point1","phi1","absDelta","arc","intersection","phiArc","sink","clipLine","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","merge","polygonContains","pointVisible","pointLine","clean","ringSegments","filter","validSegment","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","to","cr","smallRadius","notHemisphere","visible","c0","v00","point2","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","B","uu","t2","polar","meridian","q1","ax","ay","bx","by","dx","dy","x0","x1","y0","y1","clipMax","clipMin","clipRectangle","a1","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","first","activeStream","bufferStream","clipStream","polygonInside","a0","b0","b1","cleanInside","linePoint","max","lengthSum","cache","cacheStream","extent","lengthStream","lengthLineStart","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","sinDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","distance","ao","bo","ab","map","ringRadians","pointRadians","graticuleX","graticuleY","X1","X0","Y1","Y0","X","Y","DX","DY","graticule","outline","reverse","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","area","bounds","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","context","_context","prototype","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","lengthRing","PathString","_string","_circle","projectionStream","contextStream","path","measure","projection","transformer","methods","TransformStream","key","fit","fitBounds","clipExtent","fitExtent","fitSize","size","fitWidth","width","fitHeight","height","constructor","maxDepth","cosMinDistance","delta2","project","resampleNone","resampleLineTo","depth","d2","phi2","lambda2","x2","y2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","sx","sy","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","ci","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","theta","preclip","postclip","recenter","resample","reset","undefined","clipAngle","reflectX","reflectY","conicProjection","parallels","cylindricalEqualAreaRaw","conicEqualAreaRaw","r0","r0y","conicEqualArea","multiplex","streams","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","fy","equirectangularRaw","conicEquidistantRaw","g","gy","nx","A1","A2","A3","A4","M","iterations","equalEarthRaw","l2","l6","fpy","gnomonicRaw","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","hsl","color","hslLong","hcl","hclLong","samples","interpolator","piecewise","I","linear","exponential","isNaN","nogamma","basis","t3","defaultSeparation","parent","meanX","children","reduce","meanXReduce","maxY","maxYReduce","leafLeft","node","leafRight","separation","nodeSize","cluster","root","previousNode","eachAfter","left","right","count","callback","call","that","nodes","next","data","eachBefore","compare","ancestor","leastCommonAncestor","splice","aNodes","ancestors","bNodes","leaves","links","each","target","hierarchy","Map","mapChildren","objectChildren","child","childs","Node","computeHeight","node_copy","copyData","isArray","find","descendants","copy","Symbol","iterator","shuffle","random","circles","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","Error","dr","encloseBasis1","r1","r2","x21","y21","r21","x3","y3","r3","a2","a3","b2","b3","c3","d1","d3","C","place","intersects","score","previous","packEnclose","aa","sj","sk","pack","enclose","optional","required","constantZero","defaultRadius","padding","radiusLeaf","packChildren","translateChild","partition","positionNode","preroot","ambiguous","defaultId","id","defaultParentId","parentId","stratify","nodeId","nodeKey","nodeByKey","set","has","get","nextLeft","nextRight","moveSubtree","wm","wp","change","executeShifts","nextAncestor","vim","TreeNode","treeRoot","tree","Object","create","firstWalk","secondWalk","sizeNode","bottom","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","squarifyRatio","ratio","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","rows","i0","i1","dice","squarify","custom","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","hi","mid","valueLeft","valueRight","xk","yk","resquarify","_squarify","cosh","sinh","tanh","zoom","S","ux0","uy0","w0","ux1","uy1","w1","rho","rho4","rho2","coshr0","duration","SQRT2","_1","_2","_4","zoomRho","rgbSpline","spline","colors","rgb","rgbGamma","rgbBasis","rgbBasisClosed","valueOf","toString"],"mappings":"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","file":"js/chunk-vendors~a0714e85.3101af6a.js","sourcesContent":["export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","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 return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"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 if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n 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","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 {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 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 {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","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","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","export default x => x;\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","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","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 {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 {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 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(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export default x => () => x;\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(Array.from(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import array from \"../array.js\";\nimport enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var nodes = Array.from(data),\n n = nodes.length,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n for (i = 0; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n"],"sourceRoot":""}