{"version":3,"file":"js/166-4521b86a5d563fa92e85.js","mappings":"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","sources":["webpack://code/./node_modules/d3-array/src/array.js","webpack://code/./node_modules/d3-array/src/ascending.js","webpack://code/./node_modules/d3-array/src/bisector.js","webpack://code/./node_modules/d3-array/src/max.js","webpack://code/./node_modules/d3-brush/src/brush.js","webpack://code/./node_modules/d3-chord/src/math.js","webpack://code/./node_modules/d3-chord/src/array.js","webpack://code/./node_modules/d3-collection/src/map.js","webpack://code/./node_modules/d3-collection/src/set.js","webpack://code/./node_modules/d3-color/src/define.js","webpack://code/./node_modules/d3-color/src/color.js","webpack://code/./node_modules/d3-contour/src/array.js","webpack://code/./node_modules/d3-dispatch/src/dispatch.js","webpack://code/./node_modules/d3-interpolate/src/constant.js","webpack://code/./node_modules/d3-interpolate/src/number.js","webpack://code/./node_modules/d3-interpolate/src/basis.js","webpack://code/./node_modules/d3-interpolate/src/color.js","webpack://code/./node_modules/d3-interpolate/src/rgb.js","webpack://code/./node_modules/d3-interpolate/src/basisClosed.js","webpack://code/./node_modules/d3-interpolate/src/string.js","webpack://code/./node_modules/d3-random/src/defaultSource.js","webpack://code/./node_modules/d3-random/src/uniform.js","webpack://code/./node_modules/d3-random/src/normal.js","webpack://code/./node_modules/d3-random/src/irwinHall.js","webpack://code/./node_modules/d3-random/src/logNormal.js","webpack://code/./node_modules/d3-random/src/bates.js","webpack://code/./node_modules/d3-random/src/exponential.js","webpack://code/./node_modules/d3-selection/src/matcher.js","webpack://code/./node_modules/d3-selection/src/mouse.js","webpack://code/./node_modules/d3-selection/src/namespace.js","webpack://code/./node_modules/d3-selection/src/namespaces.js","webpack://code/./node_modules/d3-selection/src/point.js","webpack://code/./node_modules/d3-selection/src/select.js","webpack://code/./node_modules/d3-selection/src/selection/sparse.js","webpack://code/./node_modules/d3-selection/src/selection/enter.js","webpack://code/./node_modules/d3-selection/src/selection/data.js","webpack://code/./node_modules/d3-selection/src/selection/sort.js","webpack://code/./node_modules/d3-selection/src/selection/attr.js","webpack://code/./node_modules/d3-selection/src/selection/property.js","webpack://code/./node_modules/d3-selection/src/selection/classed.js","webpack://code/./node_modules/d3-selection/src/selection/text.js","webpack://code/./node_modules/d3-selection/src/selection/html.js","webpack://code/./node_modules/d3-selection/src/selection/raise.js","webpack://code/./node_modules/d3-selection/src/selection/lower.js","webpack://code/./node_modules/d3-selection/src/creator.js","webpack://code/./node_modules/d3-selection/src/selection/insert.js","webpack://code/./node_modules/d3-selection/src/selection/remove.js","webpack://code/./node_modules/d3-selection/src/selection/clone.js","webpack://code/./node_modules/d3-selection/src/selection/dispatch.js","webpack://code/./node_modules/d3-selection/src/selection/index.js","webpack://code/./node_modules/d3-selection/src/selection/select.js","webpack://code/./node_modules/d3-selection/src/selection/selectAll.js","webpack://code/./node_modules/d3-selection/src/selection/filter.js","webpack://code/./node_modules/d3-selection/src/constant.js","webpack://code/./node_modules/d3-selection/src/selection/exit.js","webpack://code/./node_modules/d3-selection/src/selection/join.js","webpack://code/./node_modules/d3-selection/src/selection/merge.js","webpack://code/./node_modules/d3-selection/src/selection/order.js","webpack://code/./node_modules/d3-selection/src/selection/call.js","webpack://code/./node_modules/d3-selection/src/selection/nodes.js","webpack://code/./node_modules/d3-selection/src/selection/node.js","webpack://code/./node_modules/d3-selection/src/selection/size.js","webpack://code/./node_modules/d3-selection/src/selection/empty.js","webpack://code/./node_modules/d3-selection/src/selection/each.js","webpack://code/./node_modules/d3-selection/src/selection/append.js","webpack://code/./node_modules/d3-selection/src/selection/datum.js","webpack://code/./node_modules/d3-selection/src/selection/style.js","webpack://code/./node_modules/d3-selection/src/selector.js","webpack://code/./node_modules/d3-selection/src/selectorAll.js","webpack://code/./node_modules/d3-selection/src/sourceEvent.js","webpack://code/./node_modules/d3-selection/src/window.js","webpack://code/./node_modules/d3-timer/src/timer.js","webpack://code/./node_modules/d3-timer/src/timeout.js","webpack://code/./node_modules/d3-transition/src/transition/schedule.js","webpack://code/./node_modules/d3-interpolate/src/transform/parse.js","webpack://code/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://code/./node_modules/d3-interpolate/src/transform/index.js","webpack://code/./node_modules/d3-transition/src/transition/tween.js","webpack://code/./node_modules/d3-transition/src/transition/interpolate.js","webpack://code/./node_modules/d3-transition/src/transition/attr.js","webpack://code/./node_modules/d3-transition/src/transition/attrTween.js","webpack://code/./node_modules/d3-transition/src/transition/delay.js","webpack://code/./node_modules/d3-transition/src/transition/duration.js","webpack://code/./node_modules/d3-transition/src/transition/ease.js","webpack://code/./node_modules/d3-transition/src/transition/on.js","webpack://code/./node_modules/d3-transition/src/transition/selection.js","webpack://code/./node_modules/d3-transition/src/transition/style.js","webpack://code/./node_modules/d3-transition/src/transition/styleTween.js","webpack://code/./node_modules/d3-transition/src/transition/textTween.js","webpack://code/./node_modules/d3-transition/src/transition/index.js","webpack://code/./node_modules/d3-transition/src/transition/select.js","webpack://code/./node_modules/d3-transition/src/transition/selectAll.js","webpack://code/./node_modules/d3-transition/src/transition/filter.js","webpack://code/./node_modules/d3-transition/src/transition/merge.js","webpack://code/./node_modules/d3-transition/src/transition/transition.js","webpack://code/./node_modules/d3-transition/src/transition/text.js","webpack://code/./node_modules/d3-transition/src/transition/remove.js","webpack://code/./node_modules/d3-transition/src/transition/end.js","webpack://code/./node_modules/d3-transition/src/selection/transition.js","webpack://code/./node_modules/d3-ease/src/cubic.js","webpack://code/./node_modules/d3-transition/src/selection/index.js","webpack://code/./node_modules/d3-transition/src/selection/interrupt.js","webpack://code/./node_modules/d3-transition/src/interrupt.js","webpack://code/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://code/./node_modules/d3-voronoi/src/Edge.js","webpack://code/./node_modules/d3-voronoi/src/Cell.js","webpack://code/./node_modules/d3-voronoi/src/Circle.js","webpack://code/./node_modules/d3-voronoi/src/Beach.js","webpack://code/./node_modules/d3-voronoi/src/Diagram.js","webpack://code/./node_modules/d3-zoom/src/transform.js"],"sourcesContent":["var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","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","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","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 namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node) {\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","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n"],"names":["array","Array","prototype","slice","map","a","b","NaN","compare","f","length","d","x","left","lo","hi","mid","right","values","valueof","value","max","n","i","number1","e","number2","type","t","Math","cos","sin","PI","prefix","Map","object","each","key","set","isArray","o","constructor","has","this","get","remove","property","clear","keys","push","entries","size","empty","Set","proto","add","factory","extend","parent","definition","Object","create","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","m","l","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","r","g","rgbConvert","opacity","arguments","rgb_formatHex","hex","rgb_formatRgb","isNaN","min","round","toString","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHsl","k","pow","noop","dispatch","_","test","Error","Dispatch","parseTypenames","typenames","types","split","name","indexOf","c","callback","concat","on","typename","T","call","that","args","apply","basis","t1","v0","v1","v2","v3","t2","t3","linear","gamma","y","nogamma","exponential","rgbGamma","start","end","rgbSpline","spline","colors","floor","reA","reB","source","am","bm","bs","bi","lastIndex","q","index","one","zero","join","random","sourceRandomUniform","randomUniform","defaultSource","sourceRandomNormal","randomNormal","mu","sigma","sqrt","log","sourceRandomLogNormal","randomLogNormal","normal","exp","sourceRandomIrwinHall","randomIrwinHall","sum","sourceRandomBates","randomBates","irwinHall","sourceRandomExponential","randomExponential","lambda","selector","matches","node","event","changedTouches","space","local","xhtml","svg","xlink","xml","xmlns","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","document","querySelector","documentElement","update","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","appendChild","child","insertBefore","next","querySelectorAll","bindIndex","group","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","splice","contains","creatorInherit","uri","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","selection","select","subgroups","j","subnode","subgroup","selectAll","selectorAll","filter","match","matcher","bind","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","merges","group0","group1","compareDocumentPosition","sort","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","style","classed","text","html","creator","insert","before","deep","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","none","current","sourceEvent","defaultView","taskHead","taskTail","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","TypeError","stop","elapsed","emptyOn","emptyTween","id","timing","schedules","__transition","self","tween","schedule","state","tick","duration","ease","init","cssNode","cssRoot","cssView","svgNode","degrees","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","number","translate","scale","interpolateTransformCss","transform","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","listener","on0","on1","sit","every","styleInterpolate","styleTween","textInterpolate","textTween","_name","newId","selection_prototype","children","inherit","id0","id1","styleNull","listener0","undefined","styleMaybeRemove","removeFunction","Promise","resolve","reject","cancel","interrupt","defaultTiming","active","RedBlackTree","RedBlackNode","U","C","L","R","P","N","RedBlackRotateLeft","tree","p","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","x0","y0","x1","y1","ax","ay","dx","dy","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","arc","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","epsilon2","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","abs","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","sites","extent","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","cover","d2","dc","v00","v01","v11","v10","clipCells","polygons","polygon","triangles","forEach","s0","e1","s1","links","target","find","radius","_found","vx","vy","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY"],"sourceRoot":""}