{"version":3,"sources":["webpack:///./node_modules/d3-geo/src/adder.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/cartesian.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/centroid.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/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/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/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/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-geo/src/index.js","webpack:///./node_modules/d3-fetch/src/buffer.js","webpack:///./node_modules/d3-fetch/src/text.js","webpack:///./node_modules/d3-fetch/src/dsv.js","webpack:///./node_modules/d3-fetch/src/json.js","webpack:///./node_modules/d3-fetch/src/xml.js","webpack:///./node_modules/d3-fetch/src/index.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-array/index.js","webpack:///./node_modules/d3-dsv/src/dsv.js","webpack:///./node_modules/d3-dsv/src/csv.js","webpack:///./node_modules/d3-dsv/src/tsv.js","webpack:///./node_modules/d3-dsv/index.js"],"names":["adder","Adder","this","reset","prototype","constructor","s","t","add","y","temp","valueOf","a","b","x","bv","av","epsilon","epsilon2","pi","Math","PI","halfPi","quarterPi","tau","degrees","radians","abs","atan","atan2","cos","exp","ceil","log","floor","sin","pow","sqrt","sign","tan","acos","asin","noop","streamGeometry","geometry","stream","streamGeometryType","hasOwnProperty","type","streamObjectType","Feature","object","FeatureCollection","features","i","n","length","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","src_stream","cartesian_spherical","cartesian","cartesian_cartesian","spherical","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","k","cartesianNormalizeInPlace","d","l","compose","invert","rotationIdentity","round","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","z","src_rotation","rotate","forward","circleStream","radius","delta","direction","t0","t1","cosRadius","sinRadius","step","circleRadius","buffer","line","lines","push","rejoin","pop","concat","shift","result","pointEqual","Intersection","points","other","entry","o","e","v","p","segments","compareIntersection","startInside","interpolate","subject","clip","forEach","segment","p0","p1","sort","rejoin_link","start","current","isSubject","array","sum","polygonContains","polygon","sinPhi","normal","angle","winding","m","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","j","lambda1","sinPhi1","cosPhi1","point1","phi1","absDelta","antimeridian","arc","intersection","phiArc","src_clip","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","Object","d3_array","clip_compareIntersection","pointLine","clean","ringSegments","filter","validSegment","clip_antimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","NaN","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","to","clip_circle","cr","smallRadius","notHemisphere","visible","c0","v0","v00","point2","c","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","B","u","w","uu","t2","q","polar","meridian","q1","r","clip_line","x0","y0","x1","y1","ax","ay","bx","by","dx","dy","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","min","length_lambda0","length_sinPhi0","length_cosPhi0","lengthSum","lengthStream","lengthLineStart","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","sinDelta","src_length","distance_coordinates","distance_object","distance","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ab","ao","ob","map","ringRadians","pointRadians","contains","area_x00","area_y00","area_x0","area_y0","identity","area_areaSum","area_areaRingSum","area_areaStream","area_areaRingStart","area_areaRingEnd","area","area_areaPointFirst","area_areaPoint","path_area","bounds_x0","Infinity","bounds_y0","bounds_x1","bounds_y1","bounds_boundsStream","bounds_boundsPoint","bounds","centroid_x00","centroid_y00","path_centroid_x0","path_centroid_y0","path_bounds","path_centroid_X0","path_centroid_Y0","centroid_Z0","path_centroid_X1","path_centroid_Y1","centroid_Z1","centroid_X2","centroid_Y2","centroid_Z2","centroid_centroidStream","centroid_centroidPoint","centroid_centroidLineStart","centroid_centroidLineEnd","centroid_centroidRingStart","centroid_centroidRingEnd","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","path_centroid","PathContext","context","_context","_radius","pointRadius","_","_line","_point","closePath","moveTo","lineTo","lengthRing","measure_x00","measure_y00","measure_x0","measure_y0","measure_lengthSum","measure_lengthStream","measure_lengthPointFirst","measure_lengthPoint","measure","PathString","_string","string_circle","_circle","join","src_path","projection","projectionStream","contextStream","path","apply","arguments","transformer","methods","TransformStream","key","fit","fitBounds","clipExtent","scale","translate","fitExtent","extent","h","fitSize","size","fitWidth","width","fitHeight","height","maxDepth","cosMinDistance","resample","project","delta2","resample_resample","resampleNone","resampleLineTo","depth","d2","phi2","lambda2","x2","y2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","transform","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","bi","ci","fi","projection_projection","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","theta","preclip","postclip","recenter","center","undefined","clipAngle","precision","azimuthalRaw","cx","cy","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercator","mercatorProjection","reclip","equirectangularRaw","A1","A2","A3","A4","M","iterations","equalEarthRaw","l2","l6","fy","fpy","gnomonicRaw","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","__webpack_require__","__webpack_exports__","responseText","response","ok","Error","status","statusText","text","src_text","input","init","fetch","then","dsvParse","parse","row","d3_dsv","responseJson","json","parser","DOMParser","parseFromString","ascending","bisector","compare","ascendingComparator","left","lo","hi","mid","right","f","ascendingBisect","bisectRight","bisect","number","array_array","Array","range","slice","stop","e10","e5","e2","ticks","count","reverse","tickIncrement","isFinite","power","LN10","error","tickStep","step0","step1","quantile","values","valueof","i0","value0","value1","merge","arrays","merged","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","name","JSON","stringify","customConverter","inferColumns","rows","columnSet","create","column","dsv","delimiter","reFormat","RegExp","DELIMITER","charCodeAt","convert","parseRows","N","I","eof","eol","token","replace","format","formatValue","formatRows","formatRow","test","csv","csvParse","tsv","tsvParse"],"mappings":"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","file":"js/d3.59ace812.js","sourcesContent":["// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  stream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(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\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\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\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\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\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y) {\n      line.push([x, y]);\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\";\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\";\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 the first and last points of a segment are coincident, then treat as a\n    // closed ring. TODO if all rings are closed, then the winding order of the\n    // exterior ring should be checked.\n    if (pointEqual(p0, p1)) {\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\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\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 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\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\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\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\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\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        // Handle degeneracies.\n        // TODO ignore if not clipping polygons.\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n            point1[0] += epsilon;\n            point1[1] += epsilon;\n            v = visible(point1[0], point1[1]);\n          }\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]);\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]);\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\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\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\";\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 \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import length from \"./length\";\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\";\nimport {default as distance} from \"./distance\";\nimport {epsilon, radians} from \"./math\";\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 ab = distance(coordinates[0], coordinates[1]),\n      ao = distance(coordinates[0], point),\n      ob = distance(point, coordinates[1]);\n  return ao + ob <= ab + epsilon;\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 {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\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 \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default function(x) {\n  return x;\n}\n","import noop from \"../noop\";\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\";\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\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\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\";\nimport boundsStream from \"../path/bounds\";\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\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\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\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\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) {\n  function transform(x, y) {\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k, (dy - y) / k];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [ai * x - bi * y + ci, 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\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.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, alpha).apply(null, project(lambda, phi)),\n        transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], 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 {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\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 projection from \"./index\";\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, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\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    return [atan2(x, abs(gy)) / n * sign(gy), 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\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\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\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\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\";\nimport {mercatorProjection} from \"./mercator\";\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 as geoArea} from \"./area\";\nexport {default as geoBounds} from \"./bounds\";\nexport {default as geoCentroid} from \"./centroid\";\nexport {default as geoCircle} from \"./circle\";\nexport {default as geoClipAntimeridian} from \"./clip/antimeridian\";\nexport {default as geoClipCircle} from \"./clip/circle\";\nexport {default as geoClipExtent} from \"./clip/extent\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoClipRectangle} from \"./clip/rectangle\";\nexport {default as geoContains} from \"./contains\";\nexport {default as geoDistance} from \"./distance\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./graticule\";\nexport {default as geoInterpolate} from \"./interpolate\";\nexport {default as geoLength} from \"./length\";\nexport {default as geoPath} from \"./path/index\";\nexport {default as geoAlbers} from \"./projection/albers\";\nexport {default as geoAlbersUsa} from \"./projection/albersUsa\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./projection/azimuthalEqualArea\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./projection/azimuthalEquidistant\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./projection/conicConformal\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./projection/conicEqualArea\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./projection/conicEquidistant\";\nexport {default as geoEqualEarth, equalEarthRaw as geoEqualEarthRaw} from \"./projection/equalEarth\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./projection/equirectangular\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./projection/gnomonic\";\nexport {default as geoIdentity} from \"./projection/identity\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./projection/index\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./projection/mercator\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./projection/naturalEarth1\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./projection/orthographic\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./projection/stereographic\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./projection/transverseMercator\";\nexport {default as geoRotation} from \"./rotation\";\nexport {default as geoStream} from \"./stream\";\nexport {default as geoTransform} from \"./transform\";\n","function responseArrayBuffer(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.text();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n  return function(input, init, row) {\n    if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n    return text(input, init).then(function(response) {\n      return parse(response, row);\n    });\n  };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n  if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n  var format = dsvFormat(delimiter);\n  return text(input, init).then(function(response) {\n    return format.parse(response, row);\n  });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","function responseJson(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.json();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n  return function(input, init)  {\n    return text(input, init).then(function(text) {\n      return (new DOMParser).parseFromString(text, type);\n    });\n  };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export {default as blob} from \"./blob\";\nexport {default as buffer} from \"./buffer\";\nexport {default as dsv, csv, tsv} from \"./dsv\";\nexport {default as image} from \"./image\";\nexport {default as json} from \"./json\";\nexport {default as text} from \"./text\";\nexport {default as xml, html, svg} from \"./xml\";\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./src/bisect\";\nexport {default as ascending} from \"./src/ascending\";\nexport {default as bisector} from \"./src/bisector\";\nexport {default as cross} from \"./src/cross\";\nexport {default as descending} from \"./src/descending\";\nexport {default as deviation} from \"./src/deviation\";\nexport {default as extent} from \"./src/extent\";\nexport {default as histogram} from \"./src/histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./src/threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./src/threshold/scott\";\nexport {default as thresholdSturges} from \"./src/threshold/sturges\";\nexport {default as max} from \"./src/max\";\nexport {default as mean} from \"./src/mean\";\nexport {default as median} from \"./src/median\";\nexport {default as merge} from \"./src/merge\";\nexport {default as min} from \"./src/min\";\nexport {default as pairs} from \"./src/pairs\";\nexport {default as permute} from \"./src/permute\";\nexport {default as quantile} from \"./src/quantile\";\nexport {default as range} from \"./src/range\";\nexport {default as scan} from \"./src/scan\";\nexport {default as shuffle} from \"./src/shuffle\";\nexport {default as sum} from \"./src/sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./src/ticks\";\nexport {default as transpose} from \"./src/transpose\";\nexport {default as variance} from \"./src/variance\";\nexport {default as zip} from \"./src/zip\";\n","var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"]\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    })).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(text) {\n    return text == null ? \"\"\n        : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : text;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatRows: formatRows\n  };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatRows = tsv.formatRows;\n","export {default as dsvFormat} from \"./src/dsv\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatRows} from \"./src/csv\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatRows} from \"./src/tsv\";\n"],"sourceRoot":""}