{"version":3,"sources":["webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-collection/src/map.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-collection/src/set.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/node_modules/d3-dispatch/src/dispatch.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/request.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/type.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/html.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/json.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/text.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/xml.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/dsv.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/csv.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-request/src/tsv.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-dsv/src/dsv.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-dsv/src/csv.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-dsv/src/tsv.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/daggy/src/daggy.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/min.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/transpose.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/zip.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-dispatch/src/dispatch.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selector.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/select.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/array.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selectorAll.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/selectAll.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/matcher.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/selectChild.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/selectChildren.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/filter.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/sparse.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/enter.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/constant.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/data.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/exit.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/join.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/merge.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/order.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/sort.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/call.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/nodes.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/node.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/size.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/empty.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/each.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/namespaces.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/namespace.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/attr.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/window.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/style.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/property.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/classed.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/text.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/html.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/raise.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/lower.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/creator.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/append.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/insert.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/remove.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/clone.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/datum.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/on.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/dispatch.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/iterator.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/selection/index.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-selection/src/select.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-color/src/define.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-color/src/color.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/basis.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/basisClosed.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/constant.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/color.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/rgb.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/numberArray.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/array.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/date.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/number.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/object.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/string.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-timer/src/timer.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/value.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-timer/src/timeout.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/schedule.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/interrupt.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/transform/parse.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/selection/interrupt.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/transform/decompose.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/transform/index.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/tween.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/interpolate.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/attr.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/attrTween.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/delay.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/duration.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/ease.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/easeVarying.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/filter.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/merge.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/on.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/remove.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/select.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/selectAll.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/selection.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/style.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/styleTween.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/text.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/textTween.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/transition.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/end.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/transition/index.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-ease/src/cubic.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/selection/transition.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-transition/src/selection/index.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-brush/src/brush.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/ticks.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/ascending.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/descending.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/bisector.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/number.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-array/src/bisect.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/round.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-scale/src/constant.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-scale/src/number.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-scale/src/continuous.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-scale/src/init.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatSpecifier.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatDecimal.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/exponent.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatPrefixAuto.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/defaultLocale.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/precisionPrefix.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatGroup.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatNumerals.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatTrim.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatRounded.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/formatTypes.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/identity.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/locale.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/precisionRound.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-format/src/precisionFixed.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-scale/src/tickFormat.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-scale/src/linear.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-interpolate/src/zoom.js","webpack:////build/ln98dgidwzsassisb5w7p2c25sp6wr48-source/node_modules/d3-zoom/src/transform.js"],"names":["prefix","Map","map","object","f","each","value","key","set","Array","isArray","o","i","n","length","prototype","constructor","has","this","get","remove","property","clear","keys","push","slice","values","entries","size","empty","Set","proto","add","noop","dispatch","t","arguments","_","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","name","indexOf","hasOwnProperty","type","c","callback","concat","on","typename","T","copy","call","that","args","apply","request","mimeType","response","responseType","event","headers","xhr","XMLHttpRequest","user","password","timeout","respond","result","status","hasResponse","e","XDomainRequest","url","onload","onerror","ontimeout","onreadystatechange","readyState","onprogress","header","toLowerCase","data","send","post","method","open","setRequestHeader","overrideMimeType","fixCallback","abort","error","responseText","r","defaultMimeType","document","createRange","createContextualFragment","JSON","parse","xml","responseXML","row","responseOf","dsv","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","stringify","join","customConverter","inferColumns","rows","columnSet","Object","create","forEach","column","reFormat","RegExp","delimiter","DELIMITER","charCodeAt","text","convert","parseRows","N","I","eof","eol","token","j","replace","format","formatValue","formatRows","formatRow","csv","csvParse","csvParseRows","csvFormat","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatRows","module","exports","self","daggy","sanctuaryShow","sanctuaryTypeIdentifiers","show","TAG","VALUES","TYPE","RET_TYPE","TAGS","SHOW","tagged","typeName","fields","toString","tagged$toString","typeRep","makeConstructor","typeRepToString","is","isType","from","makeConstructorFromObject","taggedSum","constructors","cata","sum$cata","sum$toString","tags","tag","tagProto","defProp","makeValue","sum$isUnit","sum$isVariant","sum$ctrToString","fs","idx","TypeError","arrToString","variant","val","Boolean","unit","argumentsLength","obj","prop","desc","enumerable","writable","configurable","defineProperty","arr","str","a","b","d","g","h","field","min","valueof","undefined","index","matrix","m","transpose","zip","none","selector","querySelector","select","groups","_groups","subgroups","node","subnode","group","subgroup","__data__","Selection","_parents","array","x","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","filter","childrenFilter","selectAll","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","appendChild","child","insertBefore","next","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","delete","bind","constant","arraylike","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","selection","append","onupdate","onexit","merge","order","context","groups0","groups1","m0","m1","Math","merges","group0","group1","compareDocumentPosition","parentNode","compareNode","compare","ascending","sortgroups","sortgroup","sort","NaN","xhtml","svg","xlink","xmlns","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","namespace","getAttributeNS","getAttribute","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","contextListener","listener","onRemove","__on","removeEventListener","options","onAdd","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","nodes","selection_node","selection_size","selection_empty","attr","classed","selection_text","html","selection_raise","selection_lower","insert","selection_remove","selection_datum","selection_on","selection_dispatch","Symbol","iterator","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","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_formatHex8","formatHex8","color_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","l","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatHex8","isNaN","rgb_formatRgb","clampa","clampi","max","round","s","Hsl","hsl","clamph","clampt","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","k","pow","floor","linear","exponential","y","gamma","nogamma","color","start","end","rgbGamma","rgbSpline","spline","colors","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","source","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","number","date","numberArray","valueOf","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","stop","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","id","tween","timing","duration","ease","state","init","schedule","tick","svgNode","active","interrupt","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","transform","baseVal","consolidate","interpolateTransform","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_easeVarying","transition_end","defaultTiming","selection_interrupt","selection_transition","abs","number1","number2","e10","e5","e2","ticks","count","reverse","step","tickIncrement","isFinite","r0","r1","power","log","LN10","tickStep","step0","step1","descending","bisector","compare1","compare2","delta","left","lo","hi","mid","right","center","ascendingBisect","bisectRight","bisect","constants","normalize","clamper","bimap","domain","range","d0","d1","polymap","target","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","initRange","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","toLocaleString","formatDecimalParts","p","toExponential","coefficient","prefixExponent","grouping","substring","thousands","numerals","out","exponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","Number","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","formatPrefix","defaultLocale","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","ceil","epsilon2","cosh","exp","sinh","tanh","zoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","rho","b0","rho4","rho2","b1","coshr0","SQRT2","_1","_2","_4","zoomRho","Transform","point","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom"],"mappings":"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","file":"js/chunk-vendors~ad7bc508.d81c08fc.js","sourcesContent":["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","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","import {map} from \"d3-collection\";\nimport {dispatch} from \"d3-dispatch\";\n\nexport default function(url, callback) {\n var request,\n event = dispatch(\"beforesend\", \"progress\", \"load\", \"error\"),\n mimeType,\n headers = map(),\n xhr = new XMLHttpRequest,\n user = null,\n password = null,\n response,\n responseType,\n timeout = 0;\n\n // If IE does not support CORS, use XDomainRequest.\n if (typeof XDomainRequest !== \"undefined\"\n && !(\"withCredentials\" in xhr)\n && /^(http(s)?:)?\\/\\//.test(url)) xhr = new XDomainRequest;\n\n \"onload\" in xhr\n ? xhr.onload = xhr.onerror = xhr.ontimeout = respond\n : xhr.onreadystatechange = function(o) { xhr.readyState > 3 && respond(o); };\n\n function respond(o) {\n var status = xhr.status, result;\n if (!status && hasResponse(xhr)\n || status >= 200 && status < 300\n || status === 304) {\n if (response) {\n try {\n result = response.call(request, xhr);\n } catch (e) {\n event.call(\"error\", request, e);\n return;\n }\n } else {\n result = xhr;\n }\n event.call(\"load\", request, result);\n } else {\n event.call(\"error\", request, o);\n }\n }\n\n xhr.onprogress = function(e) {\n event.call(\"progress\", request, e);\n };\n\n request = {\n header: function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers.get(name);\n if (value == null) headers.remove(name);\n else headers.set(name, value + \"\");\n return request;\n },\n\n // If mimeType is non-null and no Accept header is set, a default is used.\n mimeType: function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return request;\n },\n\n // Specifies what type the response value should take;\n // for instance, arraybuffer, blob, document, or text.\n responseType: function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return request;\n },\n\n timeout: function(value) {\n if (!arguments.length) return timeout;\n timeout = +value;\n return request;\n },\n\n user: function(value) {\n return arguments.length < 1 ? user : (user = value == null ? null : value + \"\", request);\n },\n\n password: function(value) {\n return arguments.length < 1 ? password : (password = value == null ? null : value + \"\", request);\n },\n\n // Specify how to convert the response content to a specific type;\n // changes the callback value on \"load\" events.\n response: function(value) {\n response = value;\n return request;\n },\n\n // Alias for send(\"GET\", …).\n get: function(data, callback) {\n return request.send(\"GET\", data, callback);\n },\n\n // Alias for send(\"POST\", …).\n post: function(data, callback) {\n return request.send(\"POST\", data, callback);\n },\n\n // If callback is non-null, it will be used for error and load events.\n send: function(method, data, callback) {\n xhr.open(method, url, true, user, password);\n if (mimeType != null && !headers.has(\"accept\")) headers.set(\"accept\", mimeType + \",*/*\");\n if (xhr.setRequestHeader) headers.each(function(value, name) { xhr.setRequestHeader(name, value); });\n if (mimeType != null && xhr.overrideMimeType) xhr.overrideMimeType(mimeType);\n if (responseType != null) xhr.responseType = responseType;\n if (timeout > 0) xhr.timeout = timeout;\n if (callback == null && typeof data === \"function\") callback = data, data = null;\n if (callback != null && callback.length === 1) callback = fixCallback(callback);\n if (callback != null) request.on(\"error\", callback).on(\"load\", function(xhr) { callback(null, xhr); });\n event.call(\"beforesend\", request, xhr);\n xhr.send(data == null ? null : data);\n return request;\n },\n\n abort: function() {\n xhr.abort();\n return request;\n },\n\n on: function() {\n var value = event.on.apply(event, arguments);\n return value === event ? request : value;\n }\n };\n\n if (callback != null) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n return request.get(callback);\n }\n\n return request;\n}\n\nfunction fixCallback(callback) {\n return function(error, xhr) {\n callback(error == null ? xhr : null);\n };\n}\n\nfunction hasResponse(xhr) {\n var type = xhr.responseType;\n return type && type !== \"text\"\n ? xhr.response // null on error\n : xhr.responseText; // \"\" on error\n}\n","import request from \"./request\";\n\nexport default function(defaultMimeType, response) {\n return function(url, callback) {\n var r = request(url).mimeType(defaultMimeType).response(response);\n if (callback != null) {\n if (typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n return r.get(callback);\n }\n return r;\n };\n}\n","import type from \"./type\";\n\nexport default type(\"text/html\", function(xhr) {\n return document.createRange().createContextualFragment(xhr.responseText);\n});\n","import type from \"./type\";\n\nexport default type(\"application/json\", function(xhr) {\n return JSON.parse(xhr.responseText);\n});\n","import type from \"./type\";\n\nexport default type(\"text/plain\", function(xhr) {\n return xhr.responseText;\n});\n","import type from \"./type\";\n\nexport default type(\"application/xml\", function(xhr) {\n var xml = xhr.responseXML;\n if (!xml) throw new Error(\"parse error\");\n return xml;\n});\n","import request from \"./request\";\n\nexport default function(defaultMimeType, parse) {\n return function(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var r = request(url).mimeType(defaultMimeType);\n r.row = function(_) { return arguments.length ? r.response(responseOf(parse, row = _)) : row; };\n r.row(row);\n return callback ? r.get(callback) : r;\n };\n}\n\nfunction responseOf(parse, row) {\n return function(request) {\n return parse(request.responseText, row);\n };\n}\n","import {csvParse} from \"d3-dsv\";\nimport dsv from \"./dsv\";\n\nexport default dsv(\"text/csv\", csvParse);\n","import {tsvParse} from \"d3-dsv\";\nimport dsv from \"./dsv\";\n\nexport default dsv(\"text/tab-separated-values\", tsvParse);\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n })).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(text) {\n return text == null ? \"\"\n : reFormat.test(text += \"\") ? \"\\\"\" + text.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : text;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatRows: formatRows\n };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatRows = tsv.formatRows;\n","(function(f) {\n\n 'use strict';\n\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = f (require ('sanctuary-show'),\n require ('sanctuary-type-identifiers'));\n } else if (typeof define === 'function' && define.amd != null) {\n define (['sanctuary-show',\n 'sanctuary-type-identifiers'],\n f);\n } else {\n self.daggy = f (self.sanctuaryShow,\n self.sanctuaryTypeIdentifiers);\n }\n\n} (function(show, type) {\n\n 'use strict';\n\n // Names of prop used to store:\n // * name of variant of a sum type\n var TAG = '@@tag';\n // * array of arguments used to create a value (to speed up `cata`)\n var VALUES = '@@values';\n // * `@@type` of its returned results\n var TYPE = '@@type';\n // * `@@type` of variant constructor's returned results\n var RET_TYPE = '@@ret_type';\n // * names of all variants of a sum type\n var TAGS = '@@tags';\n\n var SHOW = '@@show';\n\n function tagged(typeName, fields) {\n var proto = {toString: tagged$toString};\n proto[SHOW] = tagged$toString;\n // this way we avoid named function\n var typeRep = makeConstructor (fields, proto);\n typeRep.toString = typeRepToString;\n typeRep.prototype = proto;\n typeRep.is = isType (typeName);\n typeRep.from = makeConstructorFromObject (fields, proto);\n typeRep[TYPE] = typeName;\n typeRep[SHOW] = typeRepToString;\n proto.constructor = typeRep;\n return typeRep;\n }\n\n function taggedSum(typeName, constructors) {\n var proto = {cata: sum$cata, toString: sum$toString};\n proto[SHOW] = sum$toString;\n\n var tags = Object.keys (constructors);\n var typeRep = proto.constructor = {\n 'toString': typeRepToString,\n 'prototype': proto,\n 'is': isType (typeName),\n '@@type': typeName,\n '@@tags': tags\n };\n typeRep[SHOW] = typeRepToString;\n tags.forEach (function(tag) {\n var fields = constructors[tag];\n var tagProto = Object.create (proto);\n defProp (tagProto, TAG, tag);\n if (fields.length === 0) {\n typeRep[tag] = makeValue (fields, tagProto, [], 0);\n typeRep[tag].is = sum$isUnit (typeRep[tag]);\n return;\n }\n typeRep[tag] = makeConstructor (fields, tagProto);\n typeRep[tag].is = sum$isVariant (typeRep[tag]);\n typeRep[tag][TAG] = tag;\n typeRep[tag][RET_TYPE] = typeName;\n typeRep[tag].toString = sum$ctrToString;\n typeRep[tag].from = makeConstructorFromObject (fields, tagProto);\n });\n return typeRep;\n }\n\n function sum$cata(fs) {\n var tags = this.constructor[TAGS];\n var tag;\n for (var idx = 0; idx < tags.length; idx += 1) {\n tag = tags[idx];\n if (!fs[tag]) {\n throw new TypeError (\n \"Constructors given to cata didn't include: \" + tag\n );\n }\n }\n return fs[this[TAG]].apply (fs, this[VALUES]);\n }\n\n function sum$ctrToString() {\n return this[RET_TYPE] + '.' + this[TAG];\n }\n\n function sum$toString() {\n return this.constructor[TYPE] + '.' +\n this[TAG] + arrToString (this[VALUES]);\n }\n\n function typeRepToString() {\n return this[TYPE];\n }\n\n function tagged$toString() {\n return this.constructor[TYPE] + arrToString (this[VALUES]);\n }\n\n function sum$isVariant(variant) {\n return function $sum$isVariant(val) {\n return Boolean (val) &&\n variant[TAG] === val[TAG] &&\n variant[RET_TYPE] === type (val);\n };\n }\n\n function sum$isUnit(unit) {\n return function $sum$isUnit(val) {\n return unit === val || Boolean (val) &&\n unit[TAG] === val[TAG] &&\n type (unit) === type (val);\n };\n }\n\n function isType(typeName) {\n return function $isType(val) {\n return typeName === type (val);\n };\n }\n\n function makeValue(fields, proto, values, argumentsLength) {\n if (argumentsLength !== fields.length) {\n throw new TypeError (\n 'Expected ' + fields.length + ' arguments, got ' + argumentsLength\n );\n }\n var obj = Object.create (proto);\n defProp (obj, VALUES, values);\n for (var idx = 0; idx < fields.length; idx += 1) {\n obj[fields[idx]] = values[idx];\n }\n return obj;\n }\n\n // adopted version of withValue from https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n function defProp(obj, prop, val) {\n var desc = defProp.desc || (\n defProp.desc = {\n enumerable: false,\n writable: false,\n configurable: false,\n value: null\n }\n );\n desc.value = val;\n Object.defineProperty (obj, prop, desc);\n }\n\n // optimised version of `arr.map(toString).join(', ')`\n function arrToString(arr) {\n if (arr.length === 0) return '';\n var str = '(' + show (arr[0]);\n for (var idx = 1; idx < arr.length; idx += 1) {\n str = str + ', ' + show (arr[idx]);\n }\n return str + ')';\n }\n\n function makeConstructor(fields, proto) {\n switch (fields.length) {\n /* eslint-disable max-len */\n case 1: return function(a) { return makeValue (fields, proto, [a], arguments.length); };\n case 2: return function(a, b) { return makeValue (fields, proto, [a, b], arguments.length); };\n case 3: return function(a, b, c) { return makeValue (fields, proto, [a, b, c], arguments.length); };\n case 4: return function(a, b, c, d) { return makeValue (fields, proto, [a, b, c, d], arguments.length); };\n case 5: return function(a, b, c, d, e) { return makeValue (fields, proto, [a, b, c, d, e], arguments.length); };\n case 6: return function(a, b, c, d, e, f) { return makeValue (fields, proto, [a, b, c, d, e, f], arguments.length); };\n case 7: return function(a, b, c, d, e, f, g) { return makeValue (fields, proto, [a, b, c, d, e, f, g], arguments.length); };\n case 8: return function(a, b, c, d, e, f, g, h) { return makeValue (fields, proto, [a, b, c, d, e, f, g, h], arguments.length); };\n case 9: return function(a, b, c, d, e, f, g, h, i) { return makeValue (fields, proto, [a, b, c, d, e, f, g, h, i], arguments.length); };\n case 10: return function(a, b, c, d, e, f, g, h, i, j) { return makeValue (fields, proto, [a, b, c, d, e, f, g, h, i, j], arguments.length); };\n /* eslint-enable max-len */\n default: return Object.defineProperty (\n function() {\n return makeValue (fields, proto, arguments, arguments.length);\n },\n 'length',\n {value: fields.length}\n );\n }\n }\n\n function makeConstructorFromObject(fields, proto) {\n return function(obj) {\n var values = [];\n for (var idx = 0; idx < fields.length; idx += 1) {\n var field = fields[idx];\n if (!(Object.prototype.hasOwnProperty.call (obj, field))) {\n throw new TypeError ('Missing field: ' + field);\n }\n values.push (obj[field]);\n }\n return makeValue (fields, proto, values, values.length);\n };\n }\n\n return {tagged: tagged, taggedSum: taggedSum};\n\n}));\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\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 {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(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\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","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","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function 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.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(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(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\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_formatHex8() {\n return this.rgb().formatHex8();\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(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(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() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\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 formatHex8: rgb_formatHex8,\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_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\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(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(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() {\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 clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\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() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\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","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 {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\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","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\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 {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {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 {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function 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 {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 {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","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","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 {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export 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"],"sourceRoot":""}