{"version":3,"sources":["webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/pointer.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-quadtree/src/index.js","webpack:///./node_modules/d3-scale-chromatic/src/colors.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack:///./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack:///./node_modules/d3-scale-chromatic/src/ramp.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack:///./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-polygon/src/area.js","webpack:///./node_modules/d3-polygon/src/centroid.js","webpack:///./node_modules/d3-polygon/src/cross.js","webpack:///./node_modules/d3-polygon/src/hull.js","webpack:///./node_modules/d3-polygon/src/contains.js","webpack:///./node_modules/d3-polygon/src/length.js","webpack:///./node_modules/d3-sankey/src/align.js","webpack:///./node_modules/d3-sankey/src/constant.js","webpack:///./node_modules/d3-sankey/src/sankey.js","webpack:///./node_modules/d3-sankey/node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-sankey/node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-sankey/node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-sankey/node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-sankey/node_modules/d3-shape/src/link/index.js","webpack:///./node_modules/d3-sankey/src/sankeyLinkHorizontal.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-scale/src/identity.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/log.js","webpack:///./node_modules/d3-scale/src/symlog.js","webpack:///./node_modules/d3-scale/src/pow.js","webpack:///./node_modules/d3-scale/src/radial.js","webpack:///./node_modules/d3-scale/src/quantile.js","webpack:///./node_modules/d3-scale/src/quantize.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-scale/src/utcTime.js","webpack:///./node_modules/d3-scale/src/sequential.js","webpack:///./node_modules/d3-scale/src/sequentialQuantile.js","webpack:///./node_modules/d3-scale/src/diverging.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/int.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-random/src/pareto.js","webpack:///./node_modules/d3-random/src/bernoulli.js","webpack:///./node_modules/d3-random/src/geometric.js","webpack:///./node_modules/d3-random/src/gamma.js","webpack:///./node_modules/d3-random/src/beta.js","webpack:///./node_modules/d3-random/src/binomial.js","webpack:///./node_modules/d3-random/src/weibull.js","webpack:///./node_modules/d3-random/src/cauchy.js","webpack:///./node_modules/d3-random/src/logistic.js","webpack:///./node_modules/d3-random/src/poisson.js","webpack:///./node_modules/d3-random/src/lcg.js","webpack:///./node_modules/d3-path/src/index.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/pointers.js","webpack:///./node_modules/d3-selection/src/selectAll.js"],"names":["selector","document","querySelector","documentElement","childMatcher","node","matches","this","styleRemove","name","style","removeProperty","styleConstant","value","priority","setProperty","styleFunction","v","apply","arguments","styleValue","getPropertyValue","getComputedStyle","length","each","empty","querySelectorAll","sourceEvent","event","creatorInherit","ownerDocument","uri","namespaceURI","createElement","createElementNS","creatorFixed","fullname","space","local","undefined","currentTarget","svg","ownerSVGElement","createSVGPoint","point","x","clientX","y","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","left","clientLeft","top","clientTop","pageX","pageY","prefix","i","indexOf","slice","hasOwnProperty","none","n","specifier","colors","Array","scheme","concat","map","ramp","t","Math","max","min","round","cubehelix","warm","cool","c","floor","ts","abs","h","s","l","pi_1_3","PI","pi_2_3","r","sin","g","b","range","magma","inferno","plasma","defaultView","a","polygon","area","k","lexicographicOrder","computeUpperHullIndexes","points","indexes","size","cross","sortedPoints","flippedPoints","sort","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","push","x1","y1","p","x0","y0","inside","xa","ya","xb","yb","perimeter","hypot","depth","justify","sourceLinks","constant","ascendingSourceBreadth","ascendingBreadth","source","index","ascendingTargetBreadth","target","d","defaultId","defaultNodes","graph","nodes","defaultLinks","links","find","nodeById","id","get","Error","computeLinkBreadths","link","width","targetLinks","Sankey","py","linkSort","dx","dy","align","iterations","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","entries","Map","fixedValue","sum","current","Set","next","add","height","computeNodeLayers","kx","columns","call","layer","column","initializeNodeBreadths","ky","reorderLinks","alpha","pow","beta","relaxRightToLeft","relaxLeftToRight","w","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","update","nodeId","_","nodeAlign","nodeSort","nodeWidth","nodePadding","extent","pi","tau","epsilon","tauEpsilon","Path","_x0","_y0","_x1","_y1","path","prototype","constructor","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","x2","y2","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","sqrt","l01","tan","acos","t01","t21","arc","a0","a1","ccw","cos","cw","da","toString","linkSource","linkTarget","curve","context","buffer","argv","curveHorizontal","linkHorizontal","horizontalSource","horizontalTarget","from","initRange","domain","initInterpolator","interpolator","implicit","Symbol","ordinal","unknown","scale","key","set","has","copy","band","step","bandwidth","ordinalRange","r0","r1","paddingInner","paddingOuter","rescale","reverse","start","stop","values","rangeRound","padding","pointish","constants","unit","identity","normalize","isNaN","NaN","clamper","bimap","interpolate","d0","d1","polymap","j","bisect","clamp","transformer","transform","untransform","piecewise","output","input","invert","u","continuous","count","precision","formatSpecifier","type","precisionPrefix","precisionRound","precisionFixed","linearish","ticks","tickFormat","nice","prestep","i0","i1","maxIter","ceil","linear","interval","transformLog","log","transformExp","exp","transformLogn","transformExpn","pow10","isFinite","powp","base","E","logp","log10","log2","reflect","f","loggish","logs","pows","z","Infinity","transformSymlog","sign","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","exponent","transformSqrt","transformSquare","powish","square","unsquare","radial","squared","thresholds","invertExtent","ascending","quantiles","quantize","threshold","date","Date","calendar","tickInterval","year","month","week","day","hour","minute","second","format","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","time","utcTime","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","UTC","t0","t1","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","quantile","t2","k21","r2","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","_x","_y","cover","tree","parent","xm","ym","xp","yp","right","bottom","_root","leaf","data","addAll","xz","yz","visit","q","x3","y3","quads","radius","pop","d2","retainer","previous","removeAll","remove","child","callback","defaultX","defaultY","quadtree","Quadtree","leaf_copy","treeProto","root","visitAfter","xhtml","xlink","xml","xmlns","select","groups","_groups","m","subgroups","subnode","group","subgroup","__data__","Selection","_parents","arrayAll","array","selectorAll","parents","childFind","match","children","childFirst","firstElementChild","filter","childrenFilter","selectAll","matcher","_enter","sparse","EnterNode","datum","_next","_parent","appendChild","insertBefore","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","delete","bind","enterGroup","updateGroup","exitGroup","_exit","onenter","append","onupdate","onexit","merge","order","selection","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","parentNode","compareNode","compare","sortgroups","sortgroup","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","namespace","getAttributeNS","getAttribute","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","parseTypenames","typenames","onRemove","typename","on","__on","o","removeEventListener","options","onAdd","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_node","attr","classed","text","selection_text","html","selection_raise","selection_lower","insert","selection_remove","selection_datum","dispatch","iterator","randomUniform","sourceRandomUniform","defaultSource","randomInt","sourceRandomInt","randomNormal","mu","sigma","sourceRandomNormal","N","normal","randomLogNormal","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","I","irwinHall","randomBates","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","randomPareto","RangeError","sourceRandomPareto","randomBernoulli","sourceRandomBernoulli","randomGeometric","sourceRandomGeometric","randomGamma","theta","multiplier","sourceRandomGamma","G","gamma","randomBeta","X","Y","sourceRandomBeta","geometric","B","randomBinomial","acc","nn","pp","pFinal","sourceRandomBinomial","randomWeibull","outerFunc","sourceRandomWeibull","randomCauchy","sourceRandomCauchy","randomLogistic","sourceRandomLogistic","binomial","randomPoisson","sourceRandomPoisson","mul","inc","eps","lcg","seed","random","state","nextId","Local","events","touches","pointer"],"mappings":"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","file":"js/chunk-vendors~3a985ce4.5a1449ad.js","sourcesContent":["import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","export {default as quadtree} from \"./quadtree.js\";\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n const n = points.length,\n indexes = [0, 1];\n let size = 2, i;\n\n for (i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.hypot(xa, ya);\n }\n\n return perimeter;\n}\n","import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n var group = select.apply(this, arguments);\n return group == null ? [] : array(group);\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return this.children;\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport array from \"../array.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = array(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(selection) {\n if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomInt(source) {\n function randomInt(min, max) {\n if (arguments.length < 2) max = min, min = 0;\n min = Math.floor(min);\n max = Math.floor(max) - min;\n return function() {\n return Math.floor(source() * max + min);\n };\n }\n\n randomInt.source = sourceRandomInt;\n\n return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n var N = normal.source(source);\n\n function randomLogNormal() {\n var randomNormal = N.apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n if ((n = +n) <= 0) return () => 0;\n return function() {\n for (var sum = 0, i = n; i > 1; --i) sum += source();\n return sum + i * source();\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n var I = irwinHall.source(source);\n\n function randomBates(n) {\n // use limiting distribution at n === 0\n if ((n = +n) === 0) return source;\n var randomIrwinHall = I(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log1p(-source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n function randomPareto(alpha) {\n if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n alpha = 1 / -alpha;\n return function() {\n return Math.pow(1 - source(), alpha);\n };\n }\n\n randomPareto.source = sourceRandomPareto;\n\n return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n function randomBernoulli(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n return function() {\n return Math.floor(source() + p);\n };\n }\n\n randomBernoulli.source = sourceRandomBernoulli;\n\n return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n function randomGeometric(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n if (p === 0) return () => Infinity;\n if (p === 1) return () => 1;\n p = Math.log1p(-p);\n return function() {\n return 1 + Math.floor(Math.log1p(-source()) / p);\n };\n }\n\n randomGeometric.source = sourceRandomGeometric;\n\n return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n var randomNormal = normal.source(source)();\n\n function randomGamma(k, theta) {\n if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n // degenerate distribution if k === 0\n if (k === 0) return () => 0;\n theta = theta == null ? 1 : +theta;\n // exponential distribution if k === 1\n if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n var d = (k < 1 ? k + 1 : k) - 1 / 3,\n c = 1 / (3 * Math.sqrt(d)),\n multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n return function() {\n do {\n do {\n var x = randomNormal(),\n v = 1 + c * x;\n } while (v <= 0);\n v *= v * v;\n var u = 1 - source();\n } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n return d * v * multiplier() * theta;\n };\n }\n\n randomGamma.source = sourceRandomGamma;\n\n return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n var G = gamma.source(source);\n\n function randomBeta(alpha, beta) {\n var X = G(alpha),\n Y = G(beta);\n return function() {\n var x = X();\n return x === 0 ? 0 : x / (x + Y());\n };\n }\n\n randomBeta.source = sourceRandomBeta;\n\n return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n var G = geometric.source(source),\n B = beta.source(source);\n\n function randomBinomial(n, p) {\n n = +n;\n if ((p = +p) >= 1) return () => n;\n if (p <= 0) return () => 0;\n return function() {\n var acc = 0, nn = n, pp = p;\n while (nn * pp > 16 && nn * (1 - pp) > 16) {\n var i = Math.floor((nn + 1) * pp),\n y = B(i, nn - i + 1)();\n if (y <= pp) {\n acc += i;\n nn -= i;\n pp = (pp - y) / (1 - y);\n } else {\n nn = i - 1;\n pp /= y;\n }\n }\n var sign = pp < 0.5,\n pFinal = sign ? pp : 1 - pp,\n g = G(pFinal);\n for (var s = g(), k = 0; s <= nn; ++k) s += g();\n return acc + (sign ? k : nn - k);\n };\n }\n\n randomBinomial.source = sourceRandomBinomial;\n\n return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n function randomWeibull(k, a, b) {\n var outerFunc;\n if ((k = +k) === 0) {\n outerFunc = x => -Math.log(x);\n } else {\n k = 1 / k;\n outerFunc = x => Math.pow(x, k);\n }\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * outerFunc(-Math.log1p(-source()));\n };\n }\n\n randomWeibull.source = sourceRandomWeibull;\n\n return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n function randomCauchy(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * Math.tan(Math.PI * source());\n };\n }\n\n randomCauchy.source = sourceRandomCauchy;\n\n return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n function randomLogistic(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n var u = source();\n return a + b * Math.log(u / (1 - u));\n };\n }\n\n randomLogistic.source = sourceRandomLogistic;\n\n return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n var G = gamma.source(source),\n B = binomial.source(source);\n\n function randomPoisson(lambda) {\n return function() {\n var acc = 0, l = lambda;\n while (l > 16) {\n var n = Math.floor(0.875 * l),\n t = G(n)();\n if (t > l) return acc + B(n - 1, l / t)();\n acc += n;\n l -= t;\n }\n for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n return acc + k;\n };\n }\n\n randomPoisson.source = sourceRandomPoisson;\n\n return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","export {default as path} from \"./path.js\";\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n events = sourceEvent(events);\n if (node === undefined) node = events.currentTarget;\n events = events.touches || [events];\n }\n return Array.from(events, event => pointer(event, node));\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : array(selector)], root);\n}\n"],"sourceRoot":""}